Пример #1
0
 def __init__(self, private_key=None):
     if private_key is None:
         private_key = ECPrivateKey.generate_key()
     elif isinstance(private_key,str):
         private_key = ECPrivateKey(bytes.fromhex(private_key))
     elif isinstance(private_key,bytes):
         private_key = ECPrivateKey(private_key)
     self.__private_key = private_key
     self.__publickey = self.__private_key.public_key()
     self.__address = Address.new_address_from_pub_key(self.__publickey.encode())
Пример #2
0
    def from_key(cls, key_data: str, password: bytes):

        # check password
        if type(password) is str:
            password = bytes(password.encode())

        if type(password) is not bytes:
            raise Exception("password must be bytes or str")

        # json to dict
        key_data_json = cls.__is_valid_json(key_data)

        # dict to object & check
        crypto = CryptoJSON()
        crypto.__dict__ = key_data_json['crypto']
        cipherparams = CryptoJSON.CipherParams()
        cipherparams.__dict__ = crypto.cipherparams
        crypto.set_cipherparams(cipherparams)
        scrypt = CryptoJSON.ScryptParams()
        scrypt.__dict__ = crypto.kdfparams
        crypto.set_kdfparams(scrypt)

        # to KeyJson
        # key_json = KeyJson(key_data_json['address'], crypto)

        # decrypt to pri_key
        cipher = Cipher(Algorithm.SCRYPT)
        pri_key_str = cipher.decrypt(crypto, password, key_data_json['version'])
        pri_key = ECPrivateKey(bytes(pri_key_str))

        # new Account
        account = Account(pri_key)
        return account
Пример #3
0
 def __init__(self, private_key=None):
     if private_key is None:
         private_key = ECPrivateKey.generate_key()
     self.__private_key = private_key
     self.__publickey = self.__private_key.public_key()
     self.__address = Address.new_address_from_pub_key(
         self.__publickey.encode())
Пример #4
0
 def set_privatekey(self, pri_key_str: str):
     pri_key_bytes = bytearray(base64.b16decode(pri_key_str, True))
     priv = ECPrivateKey(pri_key_bytes)
     return Account(priv)
Пример #5
0
 def verify(self):
     priv = ECPrivateKey(self.__privateKey)
     self.__signature.init_verify(priv.public_key())
     result = self.__signature.verify(self.__signData, self.__signeddata)
     print(result)
Пример #6
0
 def recover_pub(self):
     priv = ECPrivateKey(self.__privateKey)
     pub = self.__signature.recover_public(self.__signData, self.__signeddata)
     print(priv.public_key().encode())
     print(len(priv.public_key().encode()))
     print(pub.encode())
Пример #7
0
 def sign(self):
     priv = ECPrivateKey(self.__privateKey)
     self.__signature.initSign(priv)
     sign = self.__signature.sign(self.__signData)
     print(sign)
     print(sign==self.__signeddata)
Пример #8
0
 def new_account(cls):
     private_key = ECPrivateKey.generate_key()
     return Account(private_key)