Python源码示例:ecdsa.ellipticcurve.INFINITY
示例1
def from_parent(parent_key, i):
if i & HARDENED_INDEX:
raise ValueError("Can't generate a hardened child key from a parent public key.")
child = hmac.new(parent_key.chain_code,
parent_key.compressed_key + i.to_bytes(length=4, byteorder='big'),
hashlib.sha512).digest()
child_left, child_right = child[:32], child[32:]
if int.from_bytes(child_left, 'big') >= ecdsa.generator_256.order():
return None
temp_pri_key = SigningKey.from_string(string=child_left, curve=curves.NIST256p)
ki = temp_pri_key.verifying_key.pubkey.point + parent_key.key.pubkey.point
if ki == ellipticcurve.INFINITY:
return None
return HDPublicKey(public_key=VerifyingKey.from_public_point(point=ki, curve=curves.NIST256p),
chain_code=child_right,
index=i,
depth=parent_key.depth + 1,
parent_fingerprint=parent_key.fingerprint)
示例2
def get_child(self, index, hardened=False):
left, right = self.get_hash(index, hardened)
point = ((left * generator_secp256k1)
+ VerifyingKey.from_string(self.key.uncompressed[1:], curve=SECP256k1).pubkey.point)
if point == INFINITY:
raise ValueError('Computed point equals INFINITY')
return ExtendedPublicKey(PublicKey.from_point(point), right, self.depth+1, self.get_fingerprint(), index, False)
示例3
def test_infinity_point(self):
w = Wallet.new_random_wallet()
with patch('multimerchant.wallet.keys.PublicKey.to_point',
return_value=INFINITY):
self.assertRaises(
InfinityPointException,
w.get_child,
1)
示例4
def test_infinity_point(self):
w = Wallet.new_random_wallet()
with patch('bitmerchant.wallet.keys.PublicKey.to_point',
return_value=INFINITY):
self.assertRaises(
InfinityPointException,
w.get_child,
1)