Beispiel #1
0
 def __init__(self,
              private_key: str or bytes,
              scheme=SignatureScheme.SHA256withECDSA):
     self.__signature_scheme = scheme
     if scheme == SignatureScheme.SHA256withECDSA:
         self.__key_type = KeyType.ECDSA
     elif scheme == SignatureScheme.SHA3_384withECDSA:
         self.__key_type = KeyType.ECDSA
     elif scheme == SignatureScheme.SHA3_384withECDSA:
         self.__key_type = KeyType.ECDSA
     elif scheme == SignatureScheme.SHA512withECDSA:
         self.__key_type = KeyType.ECDSA
     elif scheme == SignatureScheme.SHA3_224withECDSA:
         self.__key_type = KeyType.ECDSA
     else:
         raise TypeError
     if isinstance(private_key, bytes) and len(private_key) == 32:
         self.__private_key = private_key
     elif isinstance(private_key, str) and len(private_key) == 64:
         self.__private_key = binascii.a2b_hex(private_key)
     else:
         raise SDKException(ErrorCode.invalid_private_key)
     self.__curve_name = Curve.P256
     self.__public_key = Signature.ec_get_public_key_by_private_key(
         self.__private_key, self.__curve_name)
     self.__address = Address.address_from_bytes_pubkey(self.__public_key)
Beispiel #2
0
 def create_account_info(self, label: str, pwd: str, salt: str, private_key: str) -> AccountInfo:
     acct = self.__create_account(label, pwd, salt, private_key, True)
     info = AccountInfo()
     info.address_base58 = Address.address_from_bytes_pubkey(acct.serialize_public_key()).b58encode()
     info.public_key = acct.serialize_public_key().hex()
     info.encrypted_pri_key = acct.export_gcm_encrypted_private_key(pwd, salt, Scrypt().get_n())
     info.address_u160 = acct.get_address().to_array().hex()
     info.salt = salt
     return info
Beispiel #3
0
 def get_signature_addresses(self):
     if self.tx.sigs is None:
         return None
     l = list()
     for i in range(len(self.tx.sigs)):
         for j in range(len(self.tx.sigs[i].public_keys)):
             if self.tx.sigs[i].M == 1:
                 address = Address.address_from_bytes_pubkey(
                     self.tx.sigs[i].public_keys[0])
                 l.append(address.b58encode())
     return l
Beispiel #4
0
 def __init__(self, private_key: str, scheme=SignatureScheme.SHA256withECDSA):
     self.__signature_scheme = scheme
     if scheme == SignatureScheme.SHA256withECDSA:
         self.__keyType = KeyType.ECDSA
     elif scheme == SignatureScheme.SHA3_384withECDSA:
         self.__keyType = KeyType.ECDSA
     elif scheme == SignatureScheme.SHA3_384withECDSA:
         self.__keyType = KeyType.ECDSA
     elif scheme == SignatureScheme.SHA512withECDSA:
         self.__keyType = KeyType.ECDSA
     elif scheme == SignatureScheme.SHA3_224withECDSA:
         self.__keyType = KeyType.ECDSA
     else:
         raise TypeError
     self.__private_key = a2b_hex(private_key.encode())  # 32 bytes
     self.__curve_name = Curve.P256
     self.__publicKey = Signature.ec_get_pubkey_by_prikey(self.__private_key, self.__curve_name)  # 33 bytes
     self.__address = Address.address_from_bytes_pubkey(self.__publicKey)  # address is a class type