def test_vectors3(): seed = bytes([1, 50, 6, 244, 24, 199, 1, 25]) esk = ExtendedPrivateKey.from_seed(seed) assert (esk.get_public_key().get_fingerprint() == 0xa4700b27) esk77 = esk.private_child(77 + 2**31) assert (esk77.get_public_key().get_fingerprint() == 0xa8063dcf) assert (esk.private_child(3).private_child( 17).get_public_key().get_fingerprint() == 0xff26a31f) assert (esk.get_extended_public_key().public_child(3).public_child( 17).get_public_key().get_fingerprint() == 0xff26a31f)
def test_vectors3(): seed = bytes([1, 50, 6, 244, 24, 199, 1, 25]) esk = ExtendedPrivateKey.from_seed(seed) assert esk.get_public_key().get_fingerprint() == 0xA4700B27 esk77 = esk.private_child(77 + 2 ** 31) assert esk77.get_public_key().get_fingerprint() == 0xA8063DCF assert ( esk.private_child(3).private_child(17).get_public_key().get_fingerprint() == 0xFF26A31F ) assert ( esk.get_extended_public_key() .public_child(3) .public_child(17) .get_public_key() .get_fingerprint() == 0xFF26A31F )
def test_vectors3(): seed = bytes([1, 50, 6, 244, 24, 199, 1, 25]) esk = ExtendedPrivateKey.from_seed(seed) assert(esk.private_key.get_public_key().get_fingerprint() == 0xa4700b27) assert(esk.chain_code.hex() == "d8b12555b4cc5578951e4a7c80031e22019cc0dce168b3ed88115311b8feb1e3") esk77 = esk.private_child(77 + 2**31) assert(esk77.chain_code.hex() == "f2c8e4269bb3e54f8179a5c6976d92ca14c3260dd729981e9d15f53049fd698b") assert(esk77.private_key.get_public_key().get_fingerprint() == 0xa8063dcf) assert(esk.private_child(3) .private_child(17) .private_key .get_public_key() .get_fingerprint() == 0xff26a31f) assert(esk.get_extended_public_key() .public_child(3) .public_child(17) .get_public_key() .get_fingerprint() == 0xff26a31f)
def test1(): seed = bytes([ 0, 50, 6, 244, 24, 199, 1, 25, 52, 88, 192, 19, 18, 12, 89, 6, 220, 18, 102, 58, 209, 82, 12, 62, 89, 110, 182, 9, 44, 20, 254, 22 ]) sk = PrivateKey.from_seed(seed) pk = sk.get_public_key() msg = bytes([100, 2, 254, 88, 90, 45, 23]) sig = sk.sign(msg) sk_bytes = sk.serialize() pk_bytes = pk.serialize() sig_bytes = sig.serialize() sk = PrivateKey.from_bytes(sk_bytes) pk = PublicKey.from_bytes(pk_bytes) sig = Signature.from_bytes(sig_bytes) sig.set_aggregation_info(AggregationInfo.from_msg(pk, msg)) ok = sig.verify() assert (ok) seed = bytes([1]) + seed[1:] sk1 = PrivateKey.from_seed(seed) seed = bytes([2]) + seed[1:] sk2 = PrivateKey.from_seed(seed) pk1 = sk1.get_public_key() sig1 = sk1.sign(msg) pk2 = sk2.get_public_key() sig2 = sk2.sign(msg) agg_sig = Signature.aggregate([sig1, sig2]) agg_pubkey = PublicKey.aggregate([pk1, pk2]) agg_sig.set_aggregation_info(AggregationInfo.from_msg(agg_pubkey, msg)) assert (agg_sig.verify()) seed = bytes([3]) + seed[1:] sk3 = PrivateKey.from_seed(seed) pk3 = sk3.get_public_key() msg2 = bytes([100, 2, 254, 88, 90, 45, 23]) sig1 = sk1.sign(msg) sig2 = sk2.sign(msg) sig3 = sk3.sign(msg2) agg_sig_l = Signature.aggregate([sig1, sig2]) agg_sig_final = Signature.aggregate([agg_sig_l, sig3]) sig_bytes = agg_sig_final.serialize() agg_sig_final = Signature.from_bytes(sig_bytes) a1 = AggregationInfo.from_msg(pk1, msg) a2 = AggregationInfo.from_msg(pk2, msg) a3 = AggregationInfo.from_msg(pk3, msg2) a1a2 = AggregationInfo.merge_infos([a1, a2]) a_final = AggregationInfo.merge_infos([a1a2, a3]) print(a_final) agg_sig_final.set_aggregation_info(a_final) ok = agg_sig_final.verify() ok = agg_sig_l.verify() agg_sig_final = agg_sig_final.divide_by([agg_sig_l]) ok = agg_sig_final.verify() agg_sk = PrivateKey.aggregate([sk1, sk2], [pk1, pk2]) agg_sk.sign(msg) seed = bytes([ 1, 50, 6, 244, 24, 199, 1, 25, 52, 88, 192, 19, 18, 12, 89, 6, 220, 18, 102, 58, 209, 82, 12, 62, 89, 110, 182, 9, 44, 20, 254, 22 ]) esk = ExtendedPrivateKey.from_seed(seed) epk = esk.get_extended_public_key() sk_child = esk.private_child(0).private_child(5) pk_child = epk.public_child(0).public_child(5) buffer1 = pk_child.serialize() buffer2 = sk_child.serialize() print(len(buffer1), buffer1) print(len(buffer2), buffer2) assert (sk_child.get_extended_public_key() == pk_child)