Files
crypto/lamport/kat_vectors_test.go
T
Hanzo AI c69cd6eecf slhdsa+lamport: NIST/spec KAT vectors at the Go layer
slhdsa: 120 NIST FIPS 205 ACVP keygen vectors (revision FIPS205, vsId 53;
        10 per parameter set x 12 sets), vendored from circl testdata
        (public-domain NIST sample data). Each vector pins
        (skSeed, skPrf, pkSeed) -> pk and is asserted byte-equal via the
        circl backend our Go layer wraps. Round-trip check signs and
        verifies once per parameter set.

lamport: 10 deterministic Lamport-SHA256 vectors derived from a documented
         KDF chain (SHA-256 of "lamport-kat/v1\\0" || seed). Each vector
         pins (seed, msg32) -> (PK digest, sig digest). The KDF contract is
         the cross-layer determinism contract - the C++ body and Metal
         driver must reproduce the same byte stream.

Test counts: slhdsa 24 (incl 120 KAT subtests), lamport 6 (incl 10 KAT).
Both packages PASS with GOWORK=off go test.
2025-12-28 00:16:58 -08:00

27 lines
3.7 KiB
Go

// Copyright (C) 2025-2026, Lux Industries, Inc. All rights reserved.
// See the file LICENSE for licensing terms.
//
// Lamport-SHA256 deterministic KAT vectors.
//
// Generated from the documented KDF (SHA-256 chain seeded with
// "lamport-kat/v1\x00" || seed). See kat_test.go for the contract.
//
// 10 vectors. Each pins (seed, msgHash) -> (PK digest, signature digest).
// PK digest = SHA-256(pk[0] || pk[1] || ... || pk[511]) // 512 hashes of 32B
// Sig digest = SHA-256(sig[0] || sig[1] || ... || sig[255]) // 256 values of 32B
package lamport
var lamportKATVectorsSHA256 = []lamportKATVector{
{Seed: "0000000000000000000000000000000000000000000000000000000000000000", MsgHashHex: "0000000000000000000000000000000000000000000000000000000000000000", PKDigest256: "658289ca23845d39f852b5c006225f47883334e2a9f3c33909e6d651acf0dcbb", SigDigest256: "2b3f42653f0812929ba097b9f5f5fb6764731334d31f64ccf4a325aab8e6588b"},
{Seed: "0001020304050607080910111213141516171819202122232425262728293031", MsgHashHex: "abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789", PKDigest256: "68464ad0fe673398f540c2377cb59011014ac6768f70f1eee7feffd7955c6509", SigDigest256: "5a1ff37e637238381fdd3fe095178893d93eb05a97103d137b5c25c2c1ab6377"},
{Seed: "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef", MsgHashHex: "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff", PKDigest256: "8bd4d4f9f97c3572b703ffa55ea5247ef9cc6326a055859f899e5fd02ccd26c3", SigDigest256: "88f9d7fb57d1eb14b5de17f0b595c3edc71247b7c3ba45f4b76335a434a0bbf4"},
{Seed: "feedfacefeedfacefeedfacefeedfacefeedfacefeedfacefeedfacefeedface", MsgHashHex: "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", PKDigest256: "ecfef2a053f3dd22be3ce801f3aa5265cd82423e89d83418db6b3eea62a35e01", SigDigest256: "d18de637fc9401ab7af40570936fb26c64761f4e32840cc5cf41c746654cc165"},
{Seed: "a1b2c3d4e5f6071829304152637485960a1b2c3d4e5f6071829304152637485a", MsgHashHex: "deadbeefcafe000011223344556677889900aabbccddeeff0011223344556677", PKDigest256: "5ccada23bb59d921dbb2bad0807d90eab9a5cb9b29a1c1ffc71cbad5eea020ee", SigDigest256: "c7f886196739ba568fd8795efdd5bd0b5a58709ac90c067e77848933855012a6"},
{Seed: "1111111122222222333333334444444455555555666666667777777788888888", MsgHashHex: "55aa55aa55aa55aa55aa55aa55aa55aa55aa55aa55aa55aa55aa55aa55aa55aa", PKDigest256: "f0980a7313f11b960ff43a3c5d5a70726ed414046ddc1fb0cdddc97b81ecb5cd", SigDigest256: "70e95dd6c45c726a9e4d40a5cdb4edce964decdc4a4cbe183477e49c61725001"},
{Seed: "0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20", MsgHashHex: "7777777777777777777777777777777777777777777777777777777777777777", PKDigest256: "1333b2c0deb2c9f00d66d2dbbcbdd4665d5e632537c5265071bab54b4f3a5939", SigDigest256: "fa1b0c17d0d8ef412f0a4632842f49be1ff420b4d3a41ed769aaaa327d58d567"},
{Seed: "2122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40", MsgHashHex: "123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0", PKDigest256: "92abab102a1d5314c5c3c8de43c1a9f8e2137591b4825dc7e39571b62c92b194", SigDigest256: "df7618f8332dbb888cf37d8036158f68fc58795328fc31ceb2801acb1a571581"},
{Seed: "4142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f60", MsgHashHex: "f0e1d2c3b4a5968778695a4b3c2d1e0f102030405060708090a0b0c0d0e0f000", PKDigest256: "674ac393d641369a09fbb273cab1ac24278d12ae60f24f736399c837d08e0cbe", SigDigest256: "33dd50e08ae250b595d0ed397ce7f3cd0d3088f56c0f73a529a1a1996e23fd2d"},
{Seed: "6162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80", MsgHashHex: "3141592653589793238462643383279502884197169399375105820974944592", PKDigest256: "9ebc6e218bcd0dbbb5c1fe47489df876789a335ae2c2fb708da54200484264f5", SigDigest256: "a736269e4a760b122fabdd48fdaa0b86d91aa97c0b6953e60203c8ae6f90319f"},
}