Example #1
0
 def sign(data: object, private_key: str) -> str:
   """
   signs a message
   @param message: (object) message to sign
   @param private_key: (str) private key to sign with
   """
   private_key_bytes = serialization.load_pem_private_key(
     bytes.fromhex(private_key),
     password=None,
     backend=default_backend()
   )
   data_bytes = Helper.object_to_bytes(data)
   signature = private_key_bytes.sign(data_bytes, ec.ECDSA(hashes.SHA256()))
   return signature.hex()
Example #2
0
 def verify(data: object, signature: str, public_key: str) -> bool:
   """
   verfies message with digital signature
   @param message: (object) message to verify
   @param signature: (str) signature to verify message with
   @param public_key: (str) public key to verify message with
   """
   try:
     public_key_bytes = serialization.load_pem_public_key(
       bytes.fromhex(public_key),
       backend=default_backend()
     )
     signature_bytes = bytes.fromhex(signature)
     data_bytes = Helper.object_to_bytes(data)
     public_key_bytes.verify(signature_bytes, data_bytes, ec.ECDSA(hashes.SHA256()))
     return True
   except InvalidSignature:
     return False
Example #3
0
 def hash_transaction(self) -> str:
   context = self.get_transaction_data()
   context.update({'signature': self.get_signature()})
   return Helper.hash_data(Helper.object_to_bytes(context))