initial commit
Some checks failed
CI / lint (push) Successful in 1m37s
CI / test-python (push) Successful in 1m49s
CI / test-zig (push) Successful in 1m39s
CI / test-wasm (push) Successful in 1m54s
CI / test (push) Successful in 14m44s
CI / miri (push) Successful in 14m18s
CI / build (push) Successful in 1m9s
CI / fuzz-regression (push) Successful in 9m9s
CI / publish (push) Failing after 1m10s
CI / publish-python (push) Failing after 1m46s
CI / publish-wasm (push) Has been cancelled

Signed-off-by: Kamal Tufekcic <kamal@lo.sh>
This commit is contained in:
Kamal Tufekcic 2026-04-02 23:48:10 +03:00
commit 1d99048c95
No known key found for this signature in database
165830 changed files with 79062 additions and 0 deletions

View file

@ -0,0 +1,78 @@
"""Tests for identity key management."""
import soliton
def test_keygen():
with soliton.Identity.generate() as id:
pk = id.public_key()
sk = id.secret_key()
assert len(pk) == 3200 # SOLITON_PUBLIC_KEY_SIZE
assert len(sk) == 2496 # SOLITON_SECRET_KEY_SIZE
def test_fingerprint():
with soliton.Identity.generate() as id:
fp = id.fingerprint()
assert len(fp) == 32
assert fp != b"\x00" * 32
def test_fingerprint_hex():
with soliton.Identity.generate() as id:
hex_fp = id.fingerprint_hex()
assert len(hex_fp) == 64
def test_sign_verify():
with soliton.Identity.generate() as id:
msg = b"test message"
sig = id.sign(msg)
assert len(sig) == 3373 # SOLITON_HYBRID_SIG_SIZE
# Verify with same identity.
id.verify(msg, sig)
def test_sign_verify_wrong_message():
with soliton.Identity.generate() as id:
sig = id.sign(b"correct")
try:
id.verify(b"wrong", sig)
assert False, "should have raised"
except soliton.VerificationError:
pass
def test_context_manager_zeroizes():
id = soliton.Identity.generate()
with id:
_ = id.secret_key()
# After exiting context, secret key should be gone.
try:
id.secret_key()
assert False, "should have raised"
except soliton.InvalidDataError:
pass
def test_from_bytes_roundtrip():
with soliton.Identity.generate() as id:
pk = id.public_key()
sk = id.secret_key()
# Reconstruct.
id2 = soliton.Identity.from_bytes(pk, sk)
msg = b"roundtrip"
sig = id2.sign(msg)
id2.verify(msg, sig)
id2.close()
def test_public_only_cannot_sign():
with soliton.Identity.generate() as id:
pk = id.public_key()
pub_only = soliton.Identity.from_public_bytes(pk)
try:
pub_only.sign(b"test")
assert False, "should have raised"
except soliton.InvalidDataError:
pass