diff --git a/duniterpy/documents/ws2p/messages.py b/duniterpy/documents/ws2p/messages.py index 32b049ebf1c9e6d37ac66b027062fb21aff8dbf7..5e03a25f9da6040f8d45c10ff0f9a32372cccf57 100644 --- a/duniterpy/documents/ws2p/messages.py +++ b/duniterpy/documents/ws2p/messages.py @@ -1,6 +1,6 @@ import json -from typing import Optional, Any +from typing import Optional from duniterpy.documents import Document from duniterpy.key import VerifyingKey, SigningKey @@ -21,17 +21,23 @@ class Connect(Document): :param challenge: [Optional, default=None] Big random string, typically an uuid :param signature: [Optional, default=None] Base64 encoded signature of raw formated document """ - super().__init__(self.version, currency, [signature]) + if signature is not None: + signatures = [signature] + else: + signatures = [] + + super().__init__(self.version, currency, signatures) self.pubkey = pubkey + if challenge is None: # create challenge self.challenge = get_ws2p_challenge() else: self.challenge = challenge - # add and verify signature + if signature is not None: - self.signatures.append(signature) + # verify signature verifying_key = VerifyingKey(self.pubkey) verifying_key.verify_document(self) @@ -79,13 +85,18 @@ class Ack(Document): :param challenge: The challenge sent in the connect message :param signature: [Optional, default=None] Base64 encoded signature of raw formated document """ - super().__init__(self.version, currency, [signature]) + if signature is not None: + signatures = [signature] + else: + signatures = [] + + super().__init__(self.version, currency, signatures) self.pubkey = pubkey self.challenge = challenge - # add and verify signature + if signature is not None: - self.signatures.append(signature) + # verify signature verifying_key = VerifyingKey(self.pubkey) verifying_key.verify_document(self) @@ -132,13 +143,17 @@ class Ok(Document): :param challenge: The challenge sent in the connect message :param signature: [Optional, default=None] Base64 encoded signature of raw formated document """ - super().__init__(self.version, currency, [signature]) + if signature is not None: + signatures = [signature] + else: + signatures = [] + super().__init__(self.version, currency, signatures) self.pubkey = pubkey self.challenge = challenge - # add and verify signature + if signature is not None: - self.signatures.append(signature) + # verify signature verifying_key = VerifyingKey(self.pubkey) verifying_key.verify_document(self) @@ -170,8 +185,6 @@ class Ok(Document): return self.raw() -# fixme: the document format to send is to be determine -# does raw or inline format works ? class DocumentMessage: PEER_TYPE_ID = 0 TRANSACTION_TYPE_ID = 1 @@ -189,13 +202,12 @@ class DocumentMessage: 5: "block" } - def get_json(self, document_type_id: int, document: Any) -> str: + def get_json(self, document_type_id: int, document: str) -> str: """ Return the document message in json format :param document_type_id: Id of the document type, use class properties - :param document: Document object to send - :return: + :param document: Raw or Inline Document to send """ data = { "body": {