Files
2026-10-07 03:07:34 +00:00

35 lines
912 B
Python

import hashlib
import pytest
from quantumpipe.kdf import kdf
def test_matches_reference_construction():
items = [b"info", b"\x01\x02", b""]
h = hashlib.sha512(len(items).to_bytes(8, "little"))
for it in items:
h.update(len(it).to_bytes(8, "little"))
h.update(it)
assert kdf(*items) == h.digest()[:32]
def test_str_args_are_encoded():
assert kdf("info", b"data") == kdf(b"info", b"data")
# length counted after encoding: "é" is 2 bytes
assert kdf("é") == kdf("é".encode())
def test_length_framing_prevents_concat_ambiguity():
assert kdf("i", b"ab", b"c") != kdf("i", b"a", b"bc")
assert kdf("i", b"") != kdf("i")
def test_length_limits():
assert len(kdf("x", length=64)) == 64
assert len(kdf("x", length=1)) == 1
with pytest.raises(ValueError):
kdf("x", length=65)
with pytest.raises(ValueError):
kdf("x", length=0)