:meth:`.WMessengerOnionCoderLayerProto.decode` method implementation.

		:param envelope: original envelope
		:param session: original session
		:param private_key: private key to decrypt
		:param oaep_hash_fn_name: hash function name
		:param mgf1_hash_fn_name: MGF1 hash function name
		:param kwargs: additional arguments

		:return: WMessengerBytesEnvelope

def decode(self, envelope, session, private_key=None, oaep_hash_fn_name=None, mgf1_hash_fn_name=None, **kwargs):
		""" :meth:`.WMessengerOnionCoderLayerProto.decode` method implementation.

		:param envelope: original envelope
		:param session: original session
		:param private_key: private key to decrypt
		:param oaep_hash_fn_name: hash function name
		:param mgf1_hash_fn_name: MGF1 hash function name
		:param kwargs: additional arguments

		:return: WMessengerBytesEnvelope
		"""
		message = private_key.decrypt(
			envelope.message(), oaep_hash_fn_name=oaep_hash_fn_name, mgf1_hash_fn_name=mgf1_hash_fn_name
		)
		return WMessengerBytesEnvelope(message, meta=envelope)