Skip to content

Commit d22bf4f

Browse files
committed
updated sp test
1 parent 5d6f3d6 commit d22bf4f

File tree

1 file changed

+64
-12
lines changed

1 file changed

+64
-12
lines changed

tests/test_embit_utils.py

Lines changed: 64 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -437,20 +437,72 @@ def test_bip352_encode_silent_payment_address():
437437
438438
Test vectors from the BIP: https://github.com/bitcoin/bips/blob/master/bip-0352/send_and_receive_test_vectors.json#L76
439439
"""
440-
spend_priv_key = "9d6ad855ce3417ef84e836892e5a56392bfba05fa5d97ccea30e266f540e08b3"
441-
scan_priv_key = "0f694e068028a717f8af6b9411f9a133dd3565258714cc226594b34db90c1f2c"
442-
443-
spend_pk = PrivateKey(unhexlify(spend_priv_key))
444-
scan_pk = PrivateKey(unhexlify(scan_priv_key))
445-
446-
scan_pubkey = scan_pk.get_public_key()
447-
spend_pubkey = spend_pk.get_public_key()
448-
449-
payment_addr = embit_utils.encode_silent_payment_address(scan_pubkey, spend_pubkey)
450-
assert payment_addr == "sp1qqgste7k9hx0qftg6qmwlkqtwuy6cycyavzmzj85c6qdfhjdpdjtdgqjuexzk6murw56suy3e0rd2cgqvycxttddwsvgxe2usfpxumr70xc9pkqwv"
440+
BASIC_TEST_VECTORS = [
441+
{
442+
"spend_priv_key": "9d6ad855ce3417ef84e836892e5a56392bfba05fa5d97ccea30e266f540e08b3",
443+
"scan_priv_key": "0f694e068028a717f8af6b9411f9a133dd3565258714cc226594b34db90c1f2c",
444+
"sp_address": "sp1qqgste7k9hx0qftg6qmwlkqtwuy6cycyavzmzj85c6qdfhjdpdjtdgqjuexzk6murw56suy3e0rd2cgqvycxttddwsvgxe2usfpxumr70xc9pkqwv"
445+
},
446+
{
447+
"spend_priv_key": "0000000000000000000000000000000000000000000000000000000000000001",
448+
"scan_priv_key": "0000000000000000000000000000000000000000000000000000000000000002",
449+
"sp_address": "sp1qqtrqglu5g8kh6mfsg4qxa9wq0nv9cauwfwxw70984wkqnw2uwz0w2qnehen8a7wuhwk9tgrzjh8gwzc8q2dlekedec5djk0js9d3d7qhnq6lqj3s"
450+
}
451+
]
452+
453+
for vector in BASIC_TEST_VECTORS:
454+
spend_pk = PrivateKey(unhexlify(vector["spend_priv_key"]))
455+
scan_pk = PrivateKey(unhexlify(vector["scan_priv_key"]))
456+
457+
scan_pubkey = scan_pk.get_public_key()
458+
spend_pubkey = spend_pk.get_public_key()
459+
460+
payment_addr = embit_utils.encode_silent_payment_address(scan_pubkey, spend_pubkey)
461+
assert payment_addr == vector["sp_address"]
451462

452463
# Test network payment addrs should start with "tsp"
453464
test_networks = [k for k in NETWORKS.keys() if k != "main"]
454465
for network in test_networks:
455466
payment_addr = embit_utils.encode_silent_payment_address(scan_pubkey, spend_pubkey, network=network)
456-
assert payment_addr.startswith("tsp")
467+
assert payment_addr.startswith("tsp")
468+
469+
470+
def test_bip352_encode_silent_payment_labeled_address():
471+
LABEL_TEST_VECTORS = {
472+
"spend_priv_key": "9d6ad855ce3417ef84e836892e5a56392bfba05fa5d97ccea30e266f540e08b3",
473+
"scan_priv_key": "0f694e068028a717f8af6b9411f9a133dd3565258714cc226594b34db90c1f2c",
474+
"labels": [
475+
2,
476+
3,
477+
1001337
478+
],
479+
"addresses": [
480+
"sp1qqgste7k9hx0qftg6qmwlkqtwuy6cycyavzmzj85c6qdfhjdpdjtdgqjex54dmqmmv6rw353tsuqhs99ydvadxzrsy9nuvk74epvee55drs734pqq",
481+
"sp1qqgste7k9hx0qftg6qmwlkqtwuy6cycyavzmzj85c6qdfhjdpdjtdgqsg59z2rppn4qlkx0yz9sdltmjv3j8zgcqadjn4ug98m3t6plujsq9qvu5n",
482+
"sp1qqgste7k9hx0qftg6qmwlkqtwuy6cycyavzmzj85c6qdfhjdpdjtdgq7c2zfthc6x3a5yecwc52nxa0kfd20xuz08zyrjpfw4l2j257yq6qgnkdh5"
483+
]
484+
}
485+
486+
spend_priv_key = PrivateKey(unhexlify(LABEL_TEST_VECTORS["spend_priv_key"]))
487+
scan_priv_key = PrivateKey(unhexlify(LABEL_TEST_VECTORS["scan_priv_key"]))
488+
489+
for label, address in zip(LABEL_TEST_VECTORS["labels"], LABEL_TEST_VECTORS["addresses"]):
490+
sp_address = embit_utils.encode_labeled_silent_payment_address(scan_priv_key, spend_priv_key.get_public_key(), label)
491+
assert sp_address == address
492+
493+
# Label may also be a string, but the bip does not provide any test vectors
494+
embit_utils.encode_labeled_silent_payment_address(scan_priv_key, spend_priv_key.get_public_key(), label="tenant 6102")
495+
496+
# Label may also be passed in as bytes
497+
embit_utils.encode_labeled_silent_payment_address(scan_priv_key, spend_priv_key.get_public_key(), label="i am bytes".encode())
498+
499+
# Label may also be a integer
500+
embit_utils.encode_labeled_silent_payment_address(scan_priv_key, spend_priv_key.get_public_key(), label=42)
501+
502+
with pytest.raises(Exception):
503+
# Label is required
504+
embit_utils.encode_labeled_silent_payment_address(scan_priv_key, spend_priv_key.get_public_key())
505+
506+
with pytest.raises(Exception):
507+
# Label must be an int, str, or bytes
508+
embit_utils.encode_labeled_silent_payment_address(scan_priv_key, spend_priv_key.get_public_key(), label=1.0)

0 commit comments

Comments
 (0)