kopia lustrzana https://gitlab.com/jaywink/federation
rodzic
92e7a95700
commit
670ec79fd5
|
@ -20,9 +20,8 @@ class EncryptedPayload:
|
|||
def decrypt(payload, private_key):
|
||||
"""Decrypt an encrypted JSON payload and return the Magic Envelope document inside."""
|
||||
cipher = PKCS1_v1_5.new(private_key)
|
||||
aes_key = json.loads(
|
||||
cipher.decrypt(b64decode(payload.get("aes_key")), sentinel=None)
|
||||
)
|
||||
aes_key_str = cipher.decrypt(b64decode(payload.get("aes_key")), sentinel=None)
|
||||
aes_key = json.loads(aes_key_str.decode("utf-8"))
|
||||
key = b64decode(aes_key.get("key"))
|
||||
iv = b64decode(aes_key.get("iv"))
|
||||
encrypted_magic_envelope = b64decode(payload.get("encrypted_magic_envelope"))
|
||||
|
|
|
@ -14,6 +14,7 @@ from federation.exceptions import EncryptedMessageError, NoSenderKeyFoundError,
|
|||
from federation.protocols.base import BaseProtocol
|
||||
from federation.protocols.diaspora.encrypted import EncryptedPayload
|
||||
from federation.protocols.diaspora.magic_envelope import MagicEnvelope
|
||||
from federation.utils.text import decode_if_bytes
|
||||
|
||||
logger = logging.getLogger("federation")
|
||||
|
||||
|
@ -29,7 +30,7 @@ def identify_payload(payload):
|
|||
"""
|
||||
# Private encrypted JSON payload
|
||||
try:
|
||||
data = json.loads(payload)
|
||||
data = json.loads(decode_if_bytes(payload))
|
||||
if "encrypted_magic_envelope" in data:
|
||||
return True
|
||||
except Exception:
|
||||
|
@ -67,7 +68,7 @@ class Protocol(BaseProtocol):
|
|||
def store_magic_envelope_doc(self, payload):
|
||||
"""Get the Magic Envelope, trying JSON first."""
|
||||
try:
|
||||
json_payload = json.loads(payload)
|
||||
json_payload = json.loads(decode_if_bytes(payload))
|
||||
except ValueError:
|
||||
# XML payload
|
||||
xml = unquote_plus(payload)
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
def decode_if_bytes(text):
|
||||
try:
|
||||
return text.decode("utf-8")
|
||||
except AttributeError:
|
||||
return text
|
Ładowanie…
Reference in New Issue