mirror of
https://github.com/aljazceru/nutshell.git
synced 2025-12-21 19:14:19 +01:00
Dev: Update ruff precommit hooks (#434)
* update ruff * test * update ruff * only ruff check * CI rename
This commit is contained in:
@@ -12,38 +12,20 @@ from cashu.core.crypto.secp import PrivateKey, PublicKey
|
||||
|
||||
|
||||
def test_hash_to_curve():
|
||||
result = hash_to_curve(
|
||||
bytes.fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000000"
|
||||
)
|
||||
)
|
||||
assert (
|
||||
result.serialize().hex()
|
||||
== "0266687aadf862bd776c8fc18b8e9f8e20089714856ee233b3902a591d0d5f2925"
|
||||
)
|
||||
result = hash_to_curve(bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000000"))
|
||||
assert result.serialize().hex() == "0266687aadf862bd776c8fc18b8e9f8e20089714856ee233b3902a591d0d5f2925"
|
||||
|
||||
result = hash_to_curve(
|
||||
bytes.fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000001"
|
||||
)
|
||||
)
|
||||
assert (
|
||||
result.serialize().hex()
|
||||
== "02ec4916dd28fc4c10d78e287ca5d9cc51ee1ae73cbfde08c6b37324cbfaac8bc5"
|
||||
)
|
||||
result = hash_to_curve(bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000001"))
|
||||
assert result.serialize().hex() == "02ec4916dd28fc4c10d78e287ca5d9cc51ee1ae73cbfde08c6b37324cbfaac8bc5"
|
||||
|
||||
|
||||
def test_hash_to_curve_iteration():
|
||||
"""This input causes multiple rounds of the hash_to_curve algorithm."""
|
||||
result = hash_to_curve(
|
||||
bytes.fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000002"
|
||||
)
|
||||
)
|
||||
assert (
|
||||
result.serialize().hex()
|
||||
== "02076c988b353fcbb748178ecb286bc9d0b4acf474d4ba31ba62334e46c97c416a"
|
||||
)
|
||||
result = hash_to_curve(bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000002"))
|
||||
assert result.serialize().hex() == "02076c988b353fcbb748178ecb286bc9d0b4acf474d4ba31ba62334e46c97c416a"
|
||||
|
||||
result2 = hash_to_curve(b"\x92g\xd3\xdb\xed\x80)AH?\x1a\xfa*k\xc6\x8d\xe5\xf6S\x12\x8a\xca\x9b\xf1F\x1c]\n:\xd3n\xd2")
|
||||
assert result2.serialize().hex() == "02076c988b353fcbb748178ecb286bc9d0b4acf474d4ba31ba62334e46c97c416a"
|
||||
|
||||
|
||||
def test_step1():
|
||||
@@ -51,57 +33,63 @@ def test_step1():
|
||||
B_, blinding_factor = step1_alice(
|
||||
secret_msg,
|
||||
blinding_factor=PrivateKey(
|
||||
privkey=bytes.fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000001"
|
||||
) # 32 bytes
|
||||
privkey=bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000001") # 32 bytes
|
||||
),
|
||||
)
|
||||
|
||||
assert (
|
||||
B_.serialize().hex()
|
||||
== "02a9acc1e48c25eeeb9289b5031cc57da9fe72f3fe2861d264bdc074209b107ba2"
|
||||
assert B_.serialize().hex() == "02a9acc1e48c25eeeb9289b5031cc57da9fe72f3fe2861d264bdc074209b107ba2"
|
||||
assert blinding_factor.private_key == bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000001")
|
||||
|
||||
|
||||
def test_step1_collision():
|
||||
msg1 = "272120214382734463759987987430654107405"
|
||||
B1, _ = step1_alice(
|
||||
msg1,
|
||||
blinding_factor=PrivateKey(
|
||||
privkey=bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000001") # 32 bytes
|
||||
),
|
||||
)
|
||||
assert blinding_factor.private_key == bytes.fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000001"
|
||||
B1hex = B1.serialize().hex()
|
||||
|
||||
msg2 = "\x02bae688ad7846ebf38ffa040627d4f12c"
|
||||
B2, _ = step1_alice(
|
||||
msg2,
|
||||
blinding_factor=PrivateKey(
|
||||
privkey=bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000001") # 32 bytes
|
||||
),
|
||||
)
|
||||
B2hex = B2.serialize().hex()
|
||||
assert B1hex != B2hex
|
||||
|
||||
h2c1 = hash_to_curve(msg1.encode("utf-8"))
|
||||
h2c2 = hash_to_curve(msg2.encode("utf-8"))
|
||||
assert h2c1.serialize().hex() != h2c2.serialize().hex()
|
||||
return
|
||||
|
||||
|
||||
def test_step2():
|
||||
B_, _ = step1_alice(
|
||||
"test_message",
|
||||
blinding_factor=PrivateKey(
|
||||
privkey=bytes.fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000001"
|
||||
),
|
||||
privkey=bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000001"),
|
||||
raw=True,
|
||||
),
|
||||
)
|
||||
a = PrivateKey(
|
||||
privkey=bytes.fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000001"
|
||||
),
|
||||
privkey=bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000001"),
|
||||
raw=True,
|
||||
)
|
||||
C_, e, s = step2_bob(B_, a)
|
||||
assert (
|
||||
C_.serialize().hex()
|
||||
== "02a9acc1e48c25eeeb9289b5031cc57da9fe72f3fe2861d264bdc074209b107ba2"
|
||||
)
|
||||
assert C_.serialize().hex() == "02a9acc1e48c25eeeb9289b5031cc57da9fe72f3fe2861d264bdc074209b107ba2"
|
||||
|
||||
|
||||
def test_step3():
|
||||
# C = C_ - A.mult(r)
|
||||
C_ = PublicKey(
|
||||
bytes.fromhex(
|
||||
"02a9acc1e48c25eeeb9289b5031cc57da9fe72f3fe2861d264bdc074209b107ba2"
|
||||
),
|
||||
bytes.fromhex("02a9acc1e48c25eeeb9289b5031cc57da9fe72f3fe2861d264bdc074209b107ba2"),
|
||||
raw=True,
|
||||
)
|
||||
r = PrivateKey(
|
||||
privkey=bytes.fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000001"
|
||||
)
|
||||
)
|
||||
r = PrivateKey(privkey=bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000001"))
|
||||
|
||||
A = PublicKey(
|
||||
pubkey=b"\x02"
|
||||
@@ -112,17 +100,12 @@ def test_step3():
|
||||
)
|
||||
C = step3_alice(C_, r, A)
|
||||
|
||||
assert (
|
||||
C.serialize().hex()
|
||||
== "03c724d7e6a5443b39ac8acf11f40420adc4f99a02e7cc1b57703d9391f6d129cd"
|
||||
)
|
||||
assert C.serialize().hex() == "03c724d7e6a5443b39ac8acf11f40420adc4f99a02e7cc1b57703d9391f6d129cd"
|
||||
|
||||
|
||||
def test_dleq_hash_e():
|
||||
C_ = PublicKey(
|
||||
bytes.fromhex(
|
||||
"02a9acc1e48c25eeeb9289b5031cc57da9fe72f3fe2861d264bdc074209b107ba2"
|
||||
),
|
||||
bytes.fromhex("02a9acc1e48c25eeeb9289b5031cc57da9fe72f3fe2861d264bdc074209b107ba2"),
|
||||
raw=True,
|
||||
)
|
||||
K = PublicKey(
|
||||
@@ -154,69 +137,45 @@ def test_dleq_step2_bob_dleq():
|
||||
B_, _ = step1_alice(
|
||||
"test_message",
|
||||
blinding_factor=PrivateKey(
|
||||
privkey=bytes.fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000001"
|
||||
),
|
||||
privkey=bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000001"),
|
||||
raw=True,
|
||||
),
|
||||
)
|
||||
a = PrivateKey(
|
||||
privkey=bytes.fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000001"
|
||||
),
|
||||
privkey=bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000001"),
|
||||
raw=True,
|
||||
)
|
||||
p_bytes = bytes.fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000001"
|
||||
) # 32 bytes
|
||||
p_bytes = bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000001") # 32 bytes
|
||||
e, s = step2_bob_dleq(B_, a, p_bytes)
|
||||
assert e.serialize() == "9818e061ee51d5c8edc3342369a554998ff7b4381c8652d724cdf46429be73d9"
|
||||
assert (
|
||||
e.serialize()
|
||||
== "9818e061ee51d5c8edc3342369a554998ff7b4381c8652d724cdf46429be73d9"
|
||||
)
|
||||
assert (
|
||||
s.serialize()
|
||||
== "9818e061ee51d5c8edc3342369a554998ff7b4381c8652d724cdf46429be73da"
|
||||
s.serialize() == "9818e061ee51d5c8edc3342369a554998ff7b4381c8652d724cdf46429be73da"
|
||||
) # differs from e only in least significant byte because `a = 0x1`
|
||||
|
||||
# change `a`
|
||||
a = PrivateKey(
|
||||
privkey=bytes.fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000001111"
|
||||
),
|
||||
privkey=bytes.fromhex("0000000000000000000000000000000000000000000000000000000000001111"),
|
||||
raw=True,
|
||||
)
|
||||
e, s = step2_bob_dleq(B_, a, p_bytes)
|
||||
assert (
|
||||
e.serialize()
|
||||
== "df1984d5c22f7e17afe33b8669f02f530f286ae3b00a1978edaf900f4721f65e"
|
||||
)
|
||||
assert (
|
||||
s.serialize()
|
||||
== "828404170c86f240c50ae0f5fc17bb6b82612d46b355e046d7cd84b0a3c934a0"
|
||||
)
|
||||
assert e.serialize() == "df1984d5c22f7e17afe33b8669f02f530f286ae3b00a1978edaf900f4721f65e"
|
||||
assert s.serialize() == "828404170c86f240c50ae0f5fc17bb6b82612d46b355e046d7cd84b0a3c934a0"
|
||||
|
||||
|
||||
def test_dleq_alice_verify_dleq():
|
||||
# e from test_step2_bob_dleq for a=0x1
|
||||
e = PrivateKey(
|
||||
bytes.fromhex(
|
||||
"9818e061ee51d5c8edc3342369a554998ff7b4381c8652d724cdf46429be73d9"
|
||||
),
|
||||
bytes.fromhex("9818e061ee51d5c8edc3342369a554998ff7b4381c8652d724cdf46429be73d9"),
|
||||
raw=True,
|
||||
)
|
||||
# s from test_step2_bob_dleq for a=0x1
|
||||
s = PrivateKey(
|
||||
bytes.fromhex(
|
||||
"9818e061ee51d5c8edc3342369a554998ff7b4381c8652d724cdf46429be73da"
|
||||
),
|
||||
bytes.fromhex("9818e061ee51d5c8edc3342369a554998ff7b4381c8652d724cdf46429be73da"),
|
||||
raw=True,
|
||||
)
|
||||
|
||||
a = PrivateKey(
|
||||
privkey=bytes.fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000001"
|
||||
),
|
||||
privkey=bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000001"),
|
||||
raw=True,
|
||||
)
|
||||
A = a.pubkey
|
||||
@@ -229,9 +188,7 @@ def test_dleq_alice_verify_dleq():
|
||||
# ), # 32 bytes
|
||||
# )
|
||||
B_ = PublicKey(
|
||||
bytes.fromhex(
|
||||
"02a9acc1e48c25eeeb9289b5031cc57da9fe72f3fe2861d264bdc074209b107ba2"
|
||||
),
|
||||
bytes.fromhex("02a9acc1e48c25eeeb9289b5031cc57da9fe72f3fe2861d264bdc074209b107ba2"),
|
||||
raw=True,
|
||||
)
|
||||
|
||||
@@ -245,9 +202,7 @@ def test_dleq_alice_verify_dleq():
|
||||
# C_, e, s = step2_bob(B_, a)
|
||||
|
||||
C_ = PublicKey(
|
||||
bytes.fromhex(
|
||||
"02a9acc1e48c25eeeb9289b5031cc57da9fe72f3fe2861d264bdc074209b107ba2"
|
||||
),
|
||||
bytes.fromhex("02a9acc1e48c25eeeb9289b5031cc57da9fe72f3fe2861d264bdc074209b107ba2"),
|
||||
raw=True,
|
||||
)
|
||||
|
||||
@@ -257,9 +212,7 @@ def test_dleq_alice_verify_dleq():
|
||||
def test_dleq_alice_direct_verify_dleq():
|
||||
# ----- test again with B_ and C_ as per step1 and step2
|
||||
a = PrivateKey(
|
||||
privkey=bytes.fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000001"
|
||||
),
|
||||
privkey=bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000001"),
|
||||
raw=True,
|
||||
)
|
||||
A = a.pubkey
|
||||
@@ -267,9 +220,7 @@ def test_dleq_alice_direct_verify_dleq():
|
||||
B_, _ = step1_alice(
|
||||
"test_message",
|
||||
blinding_factor=PrivateKey(
|
||||
privkey=bytes.fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000001"
|
||||
),
|
||||
privkey=bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000001"),
|
||||
raw=True,
|
||||
),
|
||||
)
|
||||
@@ -279,18 +230,14 @@ def test_dleq_alice_direct_verify_dleq():
|
||||
|
||||
def test_dleq_carol_varify_from_bob():
|
||||
a = PrivateKey(
|
||||
privkey=bytes.fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000001"
|
||||
),
|
||||
privkey=bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000001"),
|
||||
raw=True,
|
||||
)
|
||||
A = a.pubkey
|
||||
assert A
|
||||
secret_msg = "test_message"
|
||||
r = PrivateKey(
|
||||
privkey=bytes.fromhex(
|
||||
"0000000000000000000000000000000000000000000000000000000000000001"
|
||||
),
|
||||
privkey=bytes.fromhex("0000000000000000000000000000000000000000000000000000000000000001"),
|
||||
raw=True,
|
||||
)
|
||||
B_, _ = step1_alice(secret_msg, r)
|
||||
|
||||
Reference in New Issue
Block a user