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)
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
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
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