kopia lustrzana https://gitlab.com/jaywink/federation
Deprecate receiving user 'key' attribute for Diaspora protocol
Instead correct attribute should be 'private_key'. We already use 'private_key' in the message creation code so this is just to unify the user related required attributes. There is a fallback with 'key' for user objects in the receiving payload part of the Diaspora protocol until 0.8.0.merge-requests/130/head
rodzic
157423efe3
commit
ddc14cfab1
|
@ -1,5 +1,6 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import logging
|
import logging
|
||||||
|
import warnings
|
||||||
from base64 import b64decode, urlsafe_b64decode, b64encode, urlsafe_b64encode
|
from base64 import b64decode, urlsafe_b64decode, b64encode, urlsafe_b64encode
|
||||||
from json import loads, dumps
|
from json import loads, dumps
|
||||||
from urllib.parse import unquote_plus
|
from urllib.parse import unquote_plus
|
||||||
|
@ -54,6 +55,16 @@ class Protocol(BaseProtocol):
|
||||||
self.verify_signature()
|
self.verify_signature()
|
||||||
return self.sender_handle, self.content
|
return self.sender_handle, self.content
|
||||||
|
|
||||||
|
def _get_user_key(self, user):
|
||||||
|
if not hasattr(self.user, "private_key") or not self.user.private_key:
|
||||||
|
if hasattr(self.user, "key") and self.user.key:
|
||||||
|
warnings.warn("Using `key` in user object for private key has been deprecated. Please "
|
||||||
|
"have available `private_key` instead. Usage of `key` will be removed after 0.8.0.",
|
||||||
|
DeprecationWarning)
|
||||||
|
return self.user.key
|
||||||
|
raise EncryptedMessageError("Cannot decrypt private message without user key")
|
||||||
|
return self.user.private_key
|
||||||
|
|
||||||
def find_header(self):
|
def find_header(self):
|
||||||
self.header = self.doc.find(".//{"+PROTOCOL_NS+"}header")
|
self.header = self.doc.find(".//{"+PROTOCOL_NS+"}header")
|
||||||
if self.header != None:
|
if self.header != None:
|
||||||
|
@ -63,12 +74,11 @@ class Protocol(BaseProtocol):
|
||||||
raise NoHeaderInMessageError("Could not find header in message")
|
raise NoHeaderInMessageError("Could not find header in message")
|
||||||
if not self.user:
|
if not self.user:
|
||||||
raise EncryptedMessageError("Cannot decrypt private message without user object")
|
raise EncryptedMessageError("Cannot decrypt private message without user object")
|
||||||
if not hasattr(self.user, "key") or not self.user.key:
|
user_private_key = self._get_user_key(self.user)
|
||||||
raise EncryptedMessageError("Cannot decrypt private message without user key")
|
|
||||||
self.encrypted = True
|
self.encrypted = True
|
||||||
self.header = self.parse_header(
|
self.header = self.parse_header(
|
||||||
self.doc.find(".//{"+PROTOCOL_NS+"}encrypted_header").text,
|
self.doc.find(".//{"+PROTOCOL_NS+"}encrypted_header").text,
|
||||||
self.user.key
|
user_private_key
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_sender(self):
|
def get_sender(self):
|
||||||
|
|
|
@ -13,11 +13,11 @@ from federation.tests.fixtures.payloads import ENCRYPTED_DIASPORA_PAYLOAD, UNENC
|
||||||
|
|
||||||
|
|
||||||
class MockUser(object):
|
class MockUser(object):
|
||||||
key = "foobar"
|
private_key = "foobar"
|
||||||
|
|
||||||
def __init__(self, nokey=False):
|
def __init__(self, nokey=False):
|
||||||
if nokey:
|
if nokey:
|
||||||
self.key = None
|
self.private_key = None
|
||||||
|
|
||||||
|
|
||||||
def mock_get_contact_key(contact):
|
def mock_get_contact_key(contact):
|
||||||
|
|
Ładowanie…
Reference in New Issue