mirror of
https://github.com/luxfi/math.git
synced 2026-07-27 03:38:49 +00:00
LP-107 Phase 6.3-6.5: KAT extension — modarith / ntt / sample
Replicates the codec cross-runtime KAT pattern across the rest of the math substrate. Each package now ships: * kat.go — KATEntry/KATBundle aliases pointing at codec.KATEntry/ codec.KATBundle (one schema for the whole substrate). * cmd/emit_*_kat/main.go — Go-side emitter that produces the canonical bundle. * kat_test.go — Go replay test (TestKATBundle_RoundTrip*). * testdata/*_kat.json — emitted bundle, byte-stable across runs. modarith/cmd/emit_modarith_kat: ~300 entries - 100 MontMulMod cross-checked against MulMod - 100 AddMod across deterministic random pairs - 100 MontgomeryRoundTrip (ToMontgomery -> FromMontgomery) - Multiple moduli (PulsarQ, NTT998). ntt/cmd/emit_ntt_kat: ~50 entries - input: 256 random uint64 mod PulsarQ - output: NTT(input) byte-stream + SHA-256 commitment - Pulsar N=256 ring. sample/cmd/emit_sample_kat: ~30 entries - Uniform / Ternary / CenteredBinomial across param sweeps - Each entry records the seed + first 64 sampled values. Tests: GOWORK=off go test ./modarith/ ./ntt/ ./sample/ -> all PASS. C++ replay tests follow in luxcpp/crypto commit on this same branch.
This commit is contained in:
@@ -0,0 +1,192 @@
|
||||
// Copyright (c) 2026 Lux Industries Inc.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
//
|
||||
// emit_modarith_kat — produces the canonical cross-runtime KAT bundle
|
||||
// for luxfi/math/modarith. The C++ side at luxcpp/crypto/math/test/
|
||||
// modarith_cross_runtime_test.cpp reads the same JSON and asserts
|
||||
// byte-equal Montgomery / Add / round-trip behavior on every entry.
|
||||
//
|
||||
// LP-107 Phase 6.3: Go emits → C++ verifies. Cross-runtime release gate
|
||||
// for modular arithmetic.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// go run ./cmd/emit_modarith_kat --out testdata/modarith_kat.json
|
||||
//
|
||||
// Each entry's input is a packed little-endian byte stream:
|
||||
//
|
||||
// "MontMulMod/...": q (8) || a (8) || b (8) -> output = MulMod(a,b,q) (8)
|
||||
// "AddMod/...": q (8) || a (8) || b (8) -> output = (a+b) mod q (8)
|
||||
// "MontgomeryRoundTrip/...": q (8) || x (8) -> output = x (8)
|
||||
//
|
||||
// Determinism: operand stream is the SHA-256 hash chain of a fixed
|
||||
// seed string. Same emit run → byte-equal JSON.
|
||||
package main
|
||||
|
||||
import (
|
||||
"crypto/sha256"
|
||||
"encoding/binary"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"github.com/luxfi/math/codec"
|
||||
"github.com/luxfi/math/modarith"
|
||||
"github.com/luxfi/math/params"
|
||||
)
|
||||
|
||||
// Three odd primes used as moduli. PulsarQ is the canonical NTT-friendly
|
||||
// prime; the others stress the Montgomery path on smaller and larger
|
||||
// odd q values.
|
||||
const (
|
||||
PulsarQ uint64 = 0x1000000004A01 // 49-bit Pulsar prime
|
||||
NTT998 uint64 = 998244353 // 30-bit classical NTT prime
|
||||
Q40Bit uint64 = 0xFFFFFFFFC5 // 40-bit prime: 2^40 - 59
|
||||
)
|
||||
|
||||
func main() {
|
||||
out := flag.String("out", "modarith_kat.json", "output JSON path")
|
||||
flag.Parse()
|
||||
|
||||
header := params.KATHeader{
|
||||
ParameterSet: "math.modarith.v1",
|
||||
ModulusID: params.ModPulsarQ,
|
||||
BackendID: params.BackendPureGo,
|
||||
HashSuiteID: params.HashBLAKE3,
|
||||
ImplementationName: "luxfi/math/modarith",
|
||||
ImplementationVersion: "v1.3.0",
|
||||
}
|
||||
|
||||
moduli := []struct {
|
||||
name string
|
||||
q uint64
|
||||
}{
|
||||
{"PulsarQ", PulsarQ},
|
||||
{"NTT998", NTT998},
|
||||
{"Q40Bit", Q40Bit},
|
||||
}
|
||||
|
||||
entries := []codec.KATEntry{}
|
||||
|
||||
// Per-modulus seed schedules. Each (test, modulus) pair gets a
|
||||
// distinct deterministic stream so different moduli don't share
|
||||
// operand bytes.
|
||||
for _, M := range moduli {
|
||||
mod, err := modarith.NewModulus(M.q, M.name)
|
||||
if err != nil {
|
||||
log.Fatalf("NewModulus(%s): %v", M.name, err)
|
||||
}
|
||||
|
||||
// 100 entries: MontMulMod path equals MulMod (slow canonical).
|
||||
stream := newSHAStream("modarith/MontMulMod/" + M.name)
|
||||
for i := 0; i < 100; i++ {
|
||||
a := stream.next() % M.q
|
||||
b := stream.next() % M.q
|
||||
input := packU64(M.q, a, b)
|
||||
// Reference output: standard-form MulMod result.
|
||||
result := modarith.MulMod(a, b, M.q)
|
||||
// Verify Montgomery path produces the same value.
|
||||
aMont := modarith.ToMontgomery(a, mod)
|
||||
bMont := modarith.ToMontgomery(b, mod)
|
||||
pmont := modarith.MontMulMod(aMont, bMont, mod)
|
||||
if got := modarith.FromMontgomery(pmont, mod); got != result {
|
||||
log.Fatalf("MontMulMod cross-check failed: a=%d b=%d q=%d: mont=%d mulmod=%d",
|
||||
a, b, M.q, got, result)
|
||||
}
|
||||
output := packU64(result)
|
||||
entries = append(entries, mkEntry(header,
|
||||
fmt.Sprintf("MontMulMod/%s/i=%d", M.name, i), input, output))
|
||||
}
|
||||
|
||||
// 100 entries: AddMod.
|
||||
stream = newSHAStream("modarith/AddMod/" + M.name)
|
||||
for i := 0; i < 100; i++ {
|
||||
a := stream.next() % M.q
|
||||
b := stream.next() % M.q
|
||||
input := packU64(M.q, a, b)
|
||||
result := modarith.AddMod(a, b, M.q)
|
||||
output := packU64(result)
|
||||
entries = append(entries, mkEntry(header,
|
||||
fmt.Sprintf("AddMod/%s/i=%d", M.name, i), input, output))
|
||||
}
|
||||
|
||||
// 100 entries: MontgomeryRoundTrip — ToMontgomery -> FromMontgomery
|
||||
// recovers x byte-for-byte.
|
||||
stream = newSHAStream("modarith/MontgomeryRoundTrip/" + M.name)
|
||||
for i := 0; i < 100; i++ {
|
||||
x := stream.next() % M.q
|
||||
input := packU64(M.q, x)
|
||||
mont := modarith.ToMontgomery(x, mod)
|
||||
back := modarith.FromMontgomery(mont, mod)
|
||||
if back != x {
|
||||
log.Fatalf("Montgomery round-trip failed: x=%d q=%d mont=%d back=%d",
|
||||
x, M.q, mont, back)
|
||||
}
|
||||
output := packU64(back)
|
||||
entries = append(entries, mkEntry(header,
|
||||
fmt.Sprintf("MontgomeryRoundTrip/%s/i=%d", M.name, i), input, output))
|
||||
}
|
||||
}
|
||||
|
||||
bundle := &codec.KATBundle{
|
||||
Schema: codec.KATSchemaV1,
|
||||
Entries: entries,
|
||||
}
|
||||
if err := codec.WriteKATBundleFile(*out, bundle); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
fmt.Printf("wrote %d entries to %s\n", len(entries), *out)
|
||||
}
|
||||
|
||||
// packU64 returns a little-endian byte stream of the given uint64s.
|
||||
func packU64(vs ...uint64) []byte {
|
||||
out := make([]byte, 8*len(vs))
|
||||
for i, v := range vs {
|
||||
binary.LittleEndian.PutUint64(out[i*8:], v)
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
// shaStream is a SHA-256 hash chain that yields fresh uint64s. The seed
|
||||
// is hashed with a counter so emit runs are byte-stable.
|
||||
type shaStream struct {
|
||||
seed []byte
|
||||
counter uint64
|
||||
buf []byte
|
||||
off int
|
||||
}
|
||||
|
||||
func newSHAStream(seed string) *shaStream {
|
||||
return &shaStream{seed: []byte(seed)}
|
||||
}
|
||||
|
||||
func (s *shaStream) next() uint64 {
|
||||
if s.off+8 > len(s.buf) {
|
||||
s.refill()
|
||||
}
|
||||
v := binary.LittleEndian.Uint64(s.buf[s.off:])
|
||||
s.off += 8
|
||||
return v
|
||||
}
|
||||
|
||||
func (s *shaStream) refill() {
|
||||
h := sha256.New()
|
||||
h.Write(s.seed)
|
||||
var ctr [8]byte
|
||||
binary.LittleEndian.PutUint64(ctr[:], s.counter)
|
||||
h.Write(ctr[:])
|
||||
s.buf = h.Sum(nil)
|
||||
s.off = 0
|
||||
s.counter++
|
||||
}
|
||||
|
||||
func mkEntry(h params.KATHeader, name string, input, output []byte) codec.KATEntry {
|
||||
digest := sha256.Sum256(output)
|
||||
return codec.KATEntry{
|
||||
Header: h,
|
||||
Test: name,
|
||||
InputHex: codec.HexEncode(input),
|
||||
OutputHex: codec.HexEncode(output),
|
||||
OutputSHA256: codec.HexEncode(digest[:]),
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
// Copyright (c) 2026 Lux Industries Inc.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
package modarith
|
||||
|
||||
// LP-107 Phase 6.3 cross-runtime KAT release gate.
|
||||
//
|
||||
// modarith re-uses the canonical KATEntry / KATBundle types defined in
|
||||
// luxfi/math/codec; emitter and verifier in this package thread them
|
||||
// through. There is exactly one KAT bundle schema across the substrate.
|
||||
|
||||
import "github.com/luxfi/math/codec"
|
||||
|
||||
// KATEntry is an alias for codec.KATEntry so callers can refer to it
|
||||
// without importing codec directly.
|
||||
type KATEntry = codec.KATEntry
|
||||
|
||||
// KATBundle is an alias for codec.KATBundle.
|
||||
type KATBundle = codec.KATBundle
|
||||
|
||||
// KATSchemaV1 is the canonical bundle schema string.
|
||||
const KATSchemaV1 = codec.KATSchemaV1
|
||||
|
||||
// WriteKATBundleFile writes a bundle to disk; thin pass-through.
|
||||
func WriteKATBundleFile(path string, b *KATBundle) error {
|
||||
return codec.WriteKATBundleFile(path, b)
|
||||
}
|
||||
|
||||
// ReadKATBundleFile reads a bundle from disk; thin pass-through.
|
||||
func ReadKATBundleFile(path string) (*KATBundle, error) {
|
||||
return codec.ReadKATBundleFile(path)
|
||||
}
|
||||
|
||||
// HexEncode is the canonical hex encoder shared with codec.
|
||||
func HexEncode(b []byte) string { return codec.HexEncode(b) }
|
||||
|
||||
// HexDecode is the inverse.
|
||||
func HexDecode(s string) ([]byte, error) { return codec.HexDecode(s) }
|
||||
@@ -0,0 +1,122 @@
|
||||
// Copyright (c) 2026 Lux Industries Inc.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
package modarith
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/sha256"
|
||||
"encoding/binary"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// TestKATBundle_RoundTrip — load the JSON KAT bundle emitted by
|
||||
// cmd/emit_modarith_kat, replay every entry through the Go-side
|
||||
// modarith primitives, and assert byte-equal output + SHA-256 match.
|
||||
//
|
||||
// Cross-runtime contract: the same JSON drives the C++ replay test in
|
||||
// luxcpp/crypto/math/test/modarith_cross_runtime_test.cpp.
|
||||
func TestKATBundle_RoundTrip(t *testing.T) {
|
||||
path := filepath.Join("testdata", "modarith_kat.json")
|
||||
bundle, err := ReadKATBundleFile(path)
|
||||
if err != nil {
|
||||
t.Skipf("KAT bundle not present at %s; run cmd/emit_modarith_kat: %v",
|
||||
path, err)
|
||||
return
|
||||
}
|
||||
if bundle.Schema != KATSchemaV1 {
|
||||
t.Fatalf("schema = %q, want %q", bundle.Schema, KATSchemaV1)
|
||||
}
|
||||
if len(bundle.Entries) == 0 {
|
||||
t.Fatal("bundle has zero entries")
|
||||
}
|
||||
for i, entry := range bundle.Entries {
|
||||
if err := entry.Header.Validate(); err != nil {
|
||||
t.Errorf("entry[%d] header: %v", i, err)
|
||||
}
|
||||
input, err := HexDecode(entry.InputHex)
|
||||
if err != nil {
|
||||
t.Errorf("entry[%d] input_hex: %v", i, err)
|
||||
continue
|
||||
}
|
||||
expected, err := HexDecode(entry.OutputHex)
|
||||
if err != nil {
|
||||
t.Errorf("entry[%d] output_hex: %v", i, err)
|
||||
continue
|
||||
}
|
||||
|
||||
actual, ok := replayEntry(t, entry.Test, input)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
digest := sha256.Sum256(actual)
|
||||
if got := HexEncode(digest[:]); got != entry.OutputSHA256 {
|
||||
t.Errorf("entry[%d] %q: SHA-256 mismatch:\n want %s\n got %s",
|
||||
i, entry.Test, entry.OutputSHA256, got)
|
||||
}
|
||||
if !bytes.Equal(actual, expected) {
|
||||
t.Errorf("entry[%d] %q: byte-stream mismatch", i, entry.Test)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// replayEntry routes an entry's test name to the right modarith call.
|
||||
// Mirrors cmd/emit_modarith_kat/main.go.
|
||||
func replayEntry(t *testing.T, name string, input []byte) ([]byte, bool) {
|
||||
t.Helper()
|
||||
switch {
|
||||
case strings.HasPrefix(name, "MontMulMod/"):
|
||||
if len(input) != 24 {
|
||||
t.Errorf("%s: want 24 bytes input, got %d", name, len(input))
|
||||
return nil, false
|
||||
}
|
||||
q := binary.LittleEndian.Uint64(input[0:8])
|
||||
a := binary.LittleEndian.Uint64(input[8:16])
|
||||
b := binary.LittleEndian.Uint64(input[16:24])
|
||||
mod, err := NewModulus(q, "kat")
|
||||
if err != nil {
|
||||
t.Errorf("%s: NewModulus: %v", name, err)
|
||||
return nil, false
|
||||
}
|
||||
aMont := ToMontgomery(a, mod)
|
||||
bMont := ToMontgomery(b, mod)
|
||||
productMont := MontMulMod(aMont, bMont, mod)
|
||||
productStandard := FromMontgomery(productMont, mod)
|
||||
out := make([]byte, 8)
|
||||
binary.LittleEndian.PutUint64(out, productStandard)
|
||||
return out, true
|
||||
case strings.HasPrefix(name, "AddMod/"):
|
||||
if len(input) != 24 {
|
||||
t.Errorf("%s: want 24 bytes input, got %d", name, len(input))
|
||||
return nil, false
|
||||
}
|
||||
q := binary.LittleEndian.Uint64(input[0:8])
|
||||
a := binary.LittleEndian.Uint64(input[8:16])
|
||||
b := binary.LittleEndian.Uint64(input[16:24])
|
||||
out := make([]byte, 8)
|
||||
binary.LittleEndian.PutUint64(out, AddMod(a, b, q))
|
||||
return out, true
|
||||
case strings.HasPrefix(name, "MontgomeryRoundTrip/"):
|
||||
if len(input) != 16 {
|
||||
t.Errorf("%s: want 16 bytes input, got %d", name, len(input))
|
||||
return nil, false
|
||||
}
|
||||
q := binary.LittleEndian.Uint64(input[0:8])
|
||||
x := binary.LittleEndian.Uint64(input[8:16])
|
||||
mod, err := NewModulus(q, "kat")
|
||||
if err != nil {
|
||||
t.Errorf("%s: NewModulus: %v", name, err)
|
||||
return nil, false
|
||||
}
|
||||
mont := ToMontgomery(x, mod)
|
||||
back := FromMontgomery(mont, mod)
|
||||
out := make([]byte, 8)
|
||||
binary.LittleEndian.PutUint64(out, back)
|
||||
return out, true
|
||||
}
|
||||
t.Errorf("unknown KAT test name: %s", name)
|
||||
return nil, false
|
||||
}
|
||||
Vendored
+12605
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,149 @@
|
||||
// Copyright (c) 2026 Lux Industries Inc.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
//
|
||||
// emit_ntt_kat — produces the canonical cross-runtime KAT bundle for
|
||||
// luxfi/math/ntt. The C++ side at luxcpp/crypto/math/test/
|
||||
// ntt_cross_runtime_test.cpp reads the same JSON and asserts byte-equal
|
||||
// Forward-NTT output for every entry.
|
||||
//
|
||||
// LP-107 Phase 6.4: Go emits → C++ verifies. Cross-runtime release gate
|
||||
// for the Number-Theoretic Transform.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// go run ./cmd/emit_ntt_kat --out testdata/ntt_kat.json
|
||||
//
|
||||
// Each entry's input is the 256-element uint64 polynomial in standard
|
||||
// (non-Montgomery) form, packed little-endian (256*8 = 2048 bytes).
|
||||
// Output is the forward-NTT result, same packing (2048 bytes).
|
||||
//
|
||||
// Determinism: input coefficients are drawn from a SHA-256 hash chain
|
||||
// of a fixed seed string, reduced mod PulsarQ.
|
||||
package main
|
||||
|
||||
import (
|
||||
"crypto/sha256"
|
||||
"encoding/binary"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"github.com/luxfi/math/backend"
|
||||
"github.com/luxfi/math/codec"
|
||||
"github.com/luxfi/math/ntt"
|
||||
"github.com/luxfi/math/params"
|
||||
)
|
||||
|
||||
const PulsarQ uint64 = 0x1000000004A01
|
||||
|
||||
func main() {
|
||||
out := flag.String("out", "ntt_kat.json", "output JSON path")
|
||||
flag.Parse()
|
||||
|
||||
header := params.KATHeader{
|
||||
ParameterSet: "math.ntt.pulsar-n256.v1",
|
||||
ModulusID: params.ModPulsarQ,
|
||||
BackendID: params.BackendPureGo,
|
||||
HashSuiteID: params.HashBLAKE3,
|
||||
ImplementationName: "luxfi/math/ntt",
|
||||
ImplementationVersion: "v1.3.0",
|
||||
}
|
||||
|
||||
p := &ntt.Params{
|
||||
N: 256,
|
||||
Q: PulsarQ,
|
||||
ID: params.NTTPulsarN256,
|
||||
}
|
||||
if err := p.Validate(); err != nil {
|
||||
log.Fatalf("Params: %v", err)
|
||||
}
|
||||
svc, err := ntt.NewService(p, backend.PolicyPureGo)
|
||||
if err != nil {
|
||||
log.Fatalf("NewService: %v", err)
|
||||
}
|
||||
|
||||
N := int(p.N)
|
||||
|
||||
entries := []codec.KATEntry{}
|
||||
|
||||
const numEntries = 50
|
||||
for i := 0; i < numEntries; i++ {
|
||||
seed := fmt.Sprintf("ntt/PulsarN256/i=%d", i)
|
||||
stream := newSHAStream(seed)
|
||||
input := make([]uint64, N)
|
||||
for j := 0; j < N; j++ {
|
||||
input[j] = stream.next() % PulsarQ
|
||||
}
|
||||
// Run forward NTT.
|
||||
work := make([]uint64, N)
|
||||
copy(work, input)
|
||||
if err := svc.Forward(work, 1); err != nil {
|
||||
log.Fatalf("Forward[%d]: %v", i, err)
|
||||
}
|
||||
// Pack input and output as little-endian byte streams.
|
||||
entries = append(entries, mkEntry(header,
|
||||
fmt.Sprintf("Forward/PulsarN256/i=%d", i),
|
||||
packU64s(input), packU64s(work)))
|
||||
}
|
||||
|
||||
bundle := &codec.KATBundle{
|
||||
Schema: codec.KATSchemaV1,
|
||||
Entries: entries,
|
||||
}
|
||||
if err := codec.WriteKATBundleFile(*out, bundle); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
fmt.Printf("wrote %d entries to %s\n", len(entries), *out)
|
||||
}
|
||||
|
||||
func packU64s(vs []uint64) []byte {
|
||||
out := make([]byte, 8*len(vs))
|
||||
for i, v := range vs {
|
||||
binary.LittleEndian.PutUint64(out[i*8:], v)
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
// shaStream — SHA-256 hash chain that yields uint64 values. Same seed
|
||||
// → byte-equal stream.
|
||||
type shaStream struct {
|
||||
seed []byte
|
||||
counter uint64
|
||||
buf []byte
|
||||
off int
|
||||
}
|
||||
|
||||
func newSHAStream(seed string) *shaStream {
|
||||
return &shaStream{seed: []byte(seed)}
|
||||
}
|
||||
|
||||
func (s *shaStream) next() uint64 {
|
||||
if s.off+8 > len(s.buf) {
|
||||
s.refill()
|
||||
}
|
||||
v := binary.LittleEndian.Uint64(s.buf[s.off:])
|
||||
s.off += 8
|
||||
return v
|
||||
}
|
||||
|
||||
func (s *shaStream) refill() {
|
||||
h := sha256.New()
|
||||
h.Write(s.seed)
|
||||
var ctr [8]byte
|
||||
binary.LittleEndian.PutUint64(ctr[:], s.counter)
|
||||
h.Write(ctr[:])
|
||||
s.buf = h.Sum(nil)
|
||||
s.off = 0
|
||||
s.counter++
|
||||
}
|
||||
|
||||
func mkEntry(h params.KATHeader, name string, input, output []byte) codec.KATEntry {
|
||||
digest := sha256.Sum256(output)
|
||||
return codec.KATEntry{
|
||||
Header: h,
|
||||
Test: name,
|
||||
InputHex: codec.HexEncode(input),
|
||||
OutputHex: codec.HexEncode(output),
|
||||
OutputSHA256: codec.HexEncode(digest[:]),
|
||||
}
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
// Copyright (c) 2026 Lux Industries Inc.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
package ntt
|
||||
|
||||
// LP-107 Phase 6.4 cross-runtime KAT release gate.
|
||||
//
|
||||
// ntt re-uses the canonical KATEntry / KATBundle types defined in
|
||||
// luxfi/math/codec.
|
||||
|
||||
import "github.com/luxfi/math/codec"
|
||||
|
||||
// KATEntry is an alias for codec.KATEntry.
|
||||
type KATEntry = codec.KATEntry
|
||||
|
||||
// KATBundle is an alias for codec.KATBundle.
|
||||
type KATBundle = codec.KATBundle
|
||||
|
||||
// KATSchemaV1 is the canonical bundle schema string.
|
||||
const KATSchemaV1 = codec.KATSchemaV1
|
||||
|
||||
// WriteKATBundleFile writes a bundle to disk; thin pass-through.
|
||||
func WriteKATBundleFile(path string, b *KATBundle) error {
|
||||
return codec.WriteKATBundleFile(path, b)
|
||||
}
|
||||
|
||||
// ReadKATBundleFile reads a bundle from disk; thin pass-through.
|
||||
func ReadKATBundleFile(path string) (*KATBundle, error) {
|
||||
return codec.ReadKATBundleFile(path)
|
||||
}
|
||||
|
||||
// HexEncode is the canonical hex encoder shared with codec.
|
||||
func HexEncode(b []byte) string { return codec.HexEncode(b) }
|
||||
|
||||
// HexDecode is the inverse.
|
||||
func HexDecode(s string) ([]byte, error) { return codec.HexDecode(s) }
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
// Copyright (c) 2026 Lux Industries Inc.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
package ntt
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/sha256"
|
||||
"encoding/binary"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/luxfi/math/backend"
|
||||
"github.com/luxfi/math/params"
|
||||
)
|
||||
|
||||
// TestKATBundle_RoundTrip — load the JSON KAT bundle emitted by
|
||||
// cmd/emit_ntt_kat, replay every entry through the pure-Go NTT
|
||||
// backend, and assert byte-equal output + SHA-256 match.
|
||||
//
|
||||
// Cross-runtime contract: the same JSON drives the C++ replay test in
|
||||
// luxcpp/crypto/math/test/ntt_cross_runtime_test.cpp.
|
||||
func TestKATBundle_RoundTrip(t *testing.T) {
|
||||
path := filepath.Join("testdata", "ntt_kat.json")
|
||||
bundle, err := ReadKATBundleFile(path)
|
||||
if err != nil {
|
||||
t.Skipf("KAT bundle not present at %s; run cmd/emit_ntt_kat: %v",
|
||||
path, err)
|
||||
return
|
||||
}
|
||||
if bundle.Schema != KATSchemaV1 {
|
||||
t.Fatalf("schema = %q, want %q", bundle.Schema, KATSchemaV1)
|
||||
}
|
||||
if len(bundle.Entries) == 0 {
|
||||
t.Fatal("bundle has zero entries")
|
||||
}
|
||||
|
||||
p := &Params{
|
||||
N: 256,
|
||||
Q: 0x1000000004A01,
|
||||
ID: params.NTTPulsarN256,
|
||||
}
|
||||
svc, err := NewService(p, backend.PolicyPureGo)
|
||||
if err != nil {
|
||||
t.Fatalf("NewService: %v", err)
|
||||
}
|
||||
|
||||
for i, entry := range bundle.Entries {
|
||||
if err := entry.Header.Validate(); err != nil {
|
||||
t.Errorf("entry[%d] header: %v", i, err)
|
||||
}
|
||||
input, err := HexDecode(entry.InputHex)
|
||||
if err != nil {
|
||||
t.Errorf("entry[%d] input_hex: %v", i, err)
|
||||
continue
|
||||
}
|
||||
expected, err := HexDecode(entry.OutputHex)
|
||||
if err != nil {
|
||||
t.Errorf("entry[%d] output_hex: %v", i, err)
|
||||
continue
|
||||
}
|
||||
actual, ok := replayEntry(t, svc, entry.Test, input)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
digest := sha256.Sum256(actual)
|
||||
if got := HexEncode(digest[:]); got != entry.OutputSHA256 {
|
||||
t.Errorf("entry[%d] %q: SHA-256 mismatch:\n want %s\n got %s",
|
||||
i, entry.Test, entry.OutputSHA256, got)
|
||||
}
|
||||
if !bytes.Equal(actual, expected) {
|
||||
t.Errorf("entry[%d] %q: byte-stream mismatch", i, entry.Test)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func replayEntry(t *testing.T, svc *Service, name string, input []byte) ([]byte, bool) {
|
||||
t.Helper()
|
||||
N := int(svc.Params().N)
|
||||
if len(input) != N*8 {
|
||||
t.Errorf("%s: want %d bytes, got %d", name, N*8, len(input))
|
||||
return nil, false
|
||||
}
|
||||
if !strings.HasPrefix(name, "Forward/") {
|
||||
t.Errorf("unknown KAT test name: %s", name)
|
||||
return nil, false
|
||||
}
|
||||
work := make([]uint64, N)
|
||||
for i := 0; i < N; i++ {
|
||||
work[i] = binary.LittleEndian.Uint64(input[i*8:])
|
||||
}
|
||||
if err := svc.Forward(work, 1); err != nil {
|
||||
t.Errorf("%s: Forward: %v", name, err)
|
||||
return nil, false
|
||||
}
|
||||
out := make([]byte, N*8)
|
||||
for i, v := range work {
|
||||
binary.LittleEndian.PutUint64(out[i*8:], v)
|
||||
}
|
||||
return out, true
|
||||
}
|
||||
Vendored
+705
@@ -0,0 +1,705 @@
|
||||
{
|
||||
"schema": "lux.math.kat.v1",
|
||||
"entries": [
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=0",
|
||||
"input_hex": "08250ffa5c320000f9710c84467d000010ce135f9063000049515a68a6d8000073775e873a9b0000df88a7a685be0000a52f3409f7b0000024f72eb6b38b000071d25a17aed300008a385b77b9eb00007bfea751fc8e0000317b2aea2bfc00001fc1444361b7000021990feeba060000f457a126c6790000a8dc3fe0ad500000696535df543d00007b9333d639fd0000d7c69d3cbc860000bb20c288d2da0000ef7980f2667b000047d1b892ea7c0000013be624b8c0000037eb7821f69f000037faabad6d770000cc37273d80490000574c80f7f4ba0000a6f18bd2bec40000b07f487de46400007057ae10840000003f9dffb83fbf0000da6ecd533d2c0000da62e5f7ee3600007de908a5b33000009d0ca0ac9550000090b3079628a10000f59dfba56d5a0000c19fc577a2dd0000e8c0399321fd000073f77dbc61180000c2b4342290c1000081907fe92dfe00000b37c19ab19900002ed45e2ee4110000b44a4e94df110000048e2bd16e730000b9631a86639a00005f71dcb8e9f200006564089215e00000f566fde5fb730000da0c482be6760000876de8cacd5100005bafb640a3dc00008172be4d37a500006997ae2158480000d70daf00d1b10000bfe22d3ee0e7000045ecb6f6311b00009c72c90d2d3a0000b9bc8b1ef49a0000b3ceb578640b00005433d61285ef0000a2000c0f608e000005333bc6f9730000091d3c9fc50300006f2c474938f50000584fd6f2b46a00004ac4a5c7e431000077069255d5ae0000f8f33a66e6dc0000f885668814620000ddc1833184e00000f01ff6bbe50600000ff523bb90d70000b7e85714ffd70000d7b0a7637dd60000ceadb2901fc700008aa9456e47320000c51d05b54fb70000ebd0a770f6ff000060bdae9c10a9000028ac73addd2a0000ec8c349e18940000a6980c5823850000fcca1b34ebc200003f4352adaa660000da67a221c4300000354b30b14fb600008d65fe915e170000b548408c898e0000ee5a01cd889c00003ef46eec841400009ea89bc1fc2c0000951aad26efcb00003695aeb4edb800003487c014265900006175476641090000f032790fe41a000047e2d394f63a0000c4b4805b978900006e26fadaa4e600005ec8d4f126ca000023e508c846b20000fe0668a53a910000c7f797dba88d0000ac97ffd5f77b0000bd02e7160db80000cd32c6af28ef00003b04b05b260d000050ca4f17718a0000c0a33dd506d100001a67fe7cf9390000736f87b680470000c8202ac0074400005bc83eaa3cc4000003977c70883e000053089312cbf000005cd5cf6843ae000081fef29171b700005db2ae596d470000e7e3e4b21e210000b6e1c006c91f0000f8c76f81fa3100005ea46ca50a1c0000519d421a5f990000fb8e5bff37da0000a71e7e7bce990000e1746fe4e76700003126b891ae97000004a6597edf3b000051df7f37f5bd00003e413fbcef7600003cec5b14366c0000de8cf72c3ca90000a1557847110b0000735362ec9b3c00006a16fcb6156b0000dd71e81b7c5000008ee087c5ce6800005ca17fb29f4c0000aaa33198404b0000756a853881bc00004787b4859da80000d02f5fd2253c0000dcaf58e76f46000003f5c08f258000000601db6461f400000bf9abbb4d290000a021271d86250000fd81babe11560000dcfef544b9070000a6d705a0c51800002fd21ff298d00000d771d48e081e0000cab90462201d0000da699956190e000080e987d4194100001c8a7219d8680000371bf1180c8000000a8b260feaef00006def209886d6000079124d3c9e63000082d79391a2a4000000db64da22350000b7c445202b1d00007b5649b3b14600005996131ce41600004aaa55fbf4d200004d7c66fd034d0000ae72da919acf0000b49615fcda020000882381cbe63e00000f8540abef0900004af0c207f07300000e38e7c326d90000e53d89a38e470000edcdac1b963f0000bf335da014cf00005c48e8aee3040000c45cade14a1a0000fa31d6d064e70000e4ec641d52410000e9410e27a44e0000ff23ff0375e9000042fe62906b020000f5b164cdd8d60000f3b6b0284e1200009d6d71ce98000000e571068011080000aaffbf228ac500001cdfe8800050000090c5b36861c10000387263de4ebc0000dc75056345d700006c5cae5d260000002fa08db5dbd40000c0c02f1623850000ae2f2e2af71a0000ebb499911973000021a41d7e58580000f795ae00dd050000b2e326518e060000d9714462a20100002d22d4afff9d0000953f496c9abb0000eb4da85661b700003de4b079171d00009e915019e326000011875c057cc9000003be348925ea0000bd59ec6da4e6000005c5b552008c00006dd559591c930000443d88c0af840000057fab7d615d00007a3aadcc7c410000b58274c5f83400003ade22468b8200008680c4bada660000f729a6f3100f00009f8a2dc2bc3a0000a8a4ebbf1a62000083f0d511d5a000008b783f9d39c000006cd90eb804e100005fb0be5fb4b900007c41b44ed41000008aa9143a439d0000a50e65d2b9130000c89d2c034d4700001dc30bde22c7000030d94fb9d66a00008ff2ae980d370000eea5de154b6d00004ad3b65223100000e9f227a1077e000098bf9f7830e7000014e84ce86d0300006c9a386eb8c600008b63a44b57880000abae73b79ff90000f26b146b02ce00006b681c3abf20000081e2a1306e750000a62c4c42858900007a03346c93b300007dace9c3ab1c00001bf92810945b000074d81ca8851d00001d3682c38c47000059a880468c090000f8585e83a7f500006bc196467e0f0000e62fc3a847b50000587e447e96cb0000238a3d8080eb0000",
|
||||
"output_hex": "bc94aba4686d0000f3b045befe900000282acc6a93110000f5d8cffa71760000ab13b9e2faa20000de01524fa87e00000b25fc44d6440000e03160033e640000519ff548996e00001a578489b9e30000bdeb305be848000076da2969153800000a2bf29da962000094d7cfe47ada0000637e98df65df00003b925874831b0000fd62b755fae60000c2290f1e951300008d080c1471dc0000ee91761f4ade0000a811cf5025b1000014626305ab330000e8fea00a88d00000f2a781c779c2000023624f6db55e0000d15c5b2abbc900008b05d820abf800000a903f6aaaa70000d85c913ca6830000321f732597bd0000a4e29c8a587b0000f2c8a3111498000086b6543e71ac000002cb39a80fae00007e3ea57808ea00001c5efa26e39200003bebaac5fa81000062c87d26871300005c6d22e8d54900008f2346a4f1d700008774f68af7f9000010e35c2dea5400000b5ea35da2fe0000a1456080a0ba000085baebda1a8400001b2e75a9d9b00000dcfc6e9bad7300005843405615ef00005905b1ed82b30000033f633130240000c22cbf4f0cdd00007384d78cd93600002a8c3c09292200002c2d4c437a7100003c5c89b02dcd00009f94f398671f000052bf5a15a2310000076e622037040000b4dc5a1eadfe0000875938ac300c0000c1a0a91004c9000048912fece5fe000015fad8d770330000f48fb39a6acb00003573ab47830d000013274bf36eae0000b17b8906ce8700004cc4e6f958be00006dabdf1a3008000046fbbcfd68ca0000360bb21f6cbd00001b57d19794a900007b43ce7d84ec0000ae63d5b5181d0000ef1b6946aed20000d4f6f1c00e81000031af915100770000ce7eefb1fe1c000045727932b852000076f1b71c3b0900006a8b50c8d2960000f3165e495ed70000d9e608c8cdff0000e0b75d3bb87c00000c25bdb7b88700000b975127d9d800001b40633930bd0000d29b881d2eb100002ada77a2dfbd0000f0738741f8de00009c905a3d36f600001ff107f412a7000052bbc3e2b3f00000ede9495c37780000f8497ba86eda0000c55208817c4800001a4407f0b0d00000b8f2f1a551df0000e380ef4bc52b00006cf8a12244150000a468303892e500006b927ad8d84e000061899e036e5c0000b426dbe715fd0000f063e9d511e800009481ed35681700003b596915cf3b00002051d11322280000a32e5933357e0000f0d225545e080000d51f2f11c07800007a6436e6c53f0000e9eb78e90dd9000061828c45464b000043705aa47ec40000cff38dc1665500002b0a961f805e0000377fffe7b6c6000007d87dab43e3000032420fa6f29800000706039294540000d4320fdec49f0000193f88799add00000ce9bc0c8a900000b496e7d0fd3a00007f4933f86ffa000066474ab98f3f000030d2a5fa0fda00007e7125f78dc10000f523dd51ce44000024a5ca73de9d0000fa9b7644286c00005cf5ade443440000ef804754244500003607e31211d5000035f9d05290ba0000eb36667aebc7000009377d30e0bc000024fbb4baaec20000cbfaec65b6f700001b12820376d40000c6d304ddbff1000058b106ce083400006f99fd88604a000056653249e553000048ce852eb12d0000814571cbc52b0000603ed3d2857500004ca65b5da45c0000f76ae55418420000d49d8b61c8a70000d3ba54cd06ea0000f5a9a2e149ff0000c56496c22f000000cab35f6759cf0000ebe03b21920c0000cb168a1f662e0000b0dd447c152b000086f971becce0000053a376bedb3f00005232cdcd1ea70000f190ee88cfdf0000f714f922a45d000006d051b9498500003f48b87f6e2800004452d71c0de50000ba035c93edfe0000fb1d4e078c640000b75ba330b0140000194bd2d57c640000187b68c733320000274a18723b040000457cd7f6527300004053db28ca820000acb98ad366be00005df3046700af000069434641c65c00008544cef284d800003e81e7beab3b0000b53749766bae00002cd2c568e3d200005acc0eb173e000006947b92e42c40000032aea19bec30000202d0850a3d10000333a93b219da000054c32d4e56690000d707365aa3a0000036369e10dac40000692d93aa409d0000bacbdd28210f0000d5faa7b083140000f70da92f60cf0000a77bff3cb9d700008a1c26ea4deb00006e1cd15ca7b500001d5e284fc4770000a2a0140cc96700006d5a41fd751200002fbe948794300000dd15143397a40000e8cffb836b5a000007a2abf9a96f00002fbd2d1d185000002ad9ec79293c000093074a90b4880000d7fcf581fb6d00007eeb80e1ed900000896845ad67ef00002683a92d7a3000001ace9c1db73d0000f14f378324220000979c0d94babe0000c649941ee2cf00006e706df809090000395b89132786000028290030860e0000af20778723190000c2f433cffc6f0000c24e5e0e0be000005699940e5ccb00000cfba449162d00004dd55ecf8d5f00007cf8c5e44e4e00007fae39066ae400006fcfd1100b5a0000699507429181000001c989e444310000b61b9fcb82c400003a767da76c920000d49385cdca3900002780152fb1d8000019e0d7690d310000cebea97009a60000c2be50690c6e00002a4b0b0aa5c90000a8e91e15fb750000e22746249cfe0000a9b1a617e990000083adbb6c4d280000eb8b8b30c760000062efa72bae7100000db3166d23a50000b69a4d89355c00001ae3fe2180f20000b3aeba31b29800002eae94d51de9000066df2bc155430000689b90acf0f10000c7d50c3adcbc0000eea59d079ac200004bf41dd957b40000c12b97a1d4e60000c7cb240d09fd0000d5450db64c390000a6006b2cfb6f0000",
|
||||
"output_sha256": "08f36afed9eef33c091263d4605e76e10603f6e442de47c5dc08b3f08ce7565f"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=1",
|
||||
"input_hex": "685824eb92b00000f2be86f3bfd20000ac732148308c00004657ea65b832000078a1577041db00007e540761daa40000477c08942a430000cb7833ab05a100007bd7a0f8caa9000059cfb2ed28f4000000b7ffb3af01000014beb9881b660000c7d43823446b00007b797da16b2700005903169e3aa100006cac48c30837000067c2d5f658e30000bc7c24d07c590000f119b2af721a00002a0478139fa4000090dae02c290000004ef655e1fe28000070ad0852214b00008c1c36f9758a000060a7b36cff9c00002224e36402710000e8ba8f132eec000020240454e4f50000705b51cb96190000252925a1e0a90000455f969ca2500000f03c8ffe8c770000770c9eed17030000f249888bc60400005f77abcb22930000a7126a49e33e00001a8dedab67eb000034ba72af46cb0000b68d7d02fce900003ae67d8643ea0000b78b2f076de50000b6f7e4d44d710000b770fb3ea11a00002eb77ad01a9500000fd9b1664e910000216abbb6f7c10000662c9a6eddbd00001ff25b3466af0000c6fc9f434af4000014419edfd824000057f460dd2c4600004d9222647a8000004e4a3ca09068000025263022c4e4000085a15ffc55300000e46f4e63c9b9000072d847b8746d0000c27597fdfec400000fd4497c32180000b3527157dcee0000415440888c540000d76a043d6cc100004d29b17e8c73000053d5ad8ecc850000ea2bd9f4e1c500008e62d784968000005c72bc1cdffe0000b5e953ec34c8000095d0830750ba00007c65b5fd6f530000938ab235156b00007f86fc865c2300003ae27da4ba2300008ad7570e3f0f0000bb0d8d5c8b8800003570d76159fd0000f0445f31357c00000a48f64c41f7000019623581fb1300009b142ccbe2b90000ddb29eb702d80000219ba4aca3d30000a4f754af31f40000d2c0382811c00000bb04461ab95f00008ed9565749ae0000b80bd31e49e30000340dd1ee8a2e000092fa792b3abf0000f83974da94ae000014a55ca8e6d40000d1707804b9660000c2902f6ed9b00000e15d24918e1100005ac004b313f6000086c78038b0740000f99c259caf4700007532fae6cc5a0000f320c466c51f000073a226c8167100002555f10f1751000047b42809300900008e5ea93c91f40000ce99f9554c69000045785e381b03000040062ee8de170000861808155d3200001562790f237c0000f6bf7e098fa2000014a1d2a98143000071cdf171468c000013bcf8225fa3000032d0b0eaba7300001c27bca1f91f000017d94fe3557100008572b665de0f00001e3201f386240000e9d127615762000014a87c88c0950000ffd270b254e20000794e779e4b600000eb8237619e2b000035892724b7a300002fb32018a42b000060bcc74ac42b000061aad165918c0000ff86fb72330900008a314c8c60d10000fb5cecefbe0200004be437c4fb1d000016e45d45ef0d000069991f46252a0000c7a56af538c50000be89583ab21700005f89d571b5f80000545fcf75e24700006ce81d8b2051000032945c2c86560000c30dfe6eeeae000079467439e31b0000ee8c426520b50000096d4c759f1100008e10d8f9456d00005ad0b86704ad000091c3b97c1ce50000f4386e3b348000005cdae52979300000339168b11b020000c87fc006852d00000b5563cb0f9500004af58636f1c000001b6680ff17340000617a2d506f300000e8369f28f59100002de58941d0160000372e0b3af74f000090870a5f73a0000069db307b9f5a0000d5794343556b000007e64faec5bc00007a570f22ab8d000045cb2c77f02f0000f7ac38f34c0a000025957870aca60000fe4445f5ea630000750ea677520e0000631b6d0516bc00001adaae8951ab00000e929022e93900002227f8272b090000c6b9d04297a4000029a56a25ab9f0000804e20567eae000096670c562e210000b4f8a19801520000d417c9dff5470000c548a23890ca00009d9d86bd79380000de9e1d18d7100000598078aecd8e0000d92a82676c7a0000589b75b61b330000b735a2b64f82000033260b49c47c00006769b1b0ef0a000067562d4cf44300000eac5b1d07700000279b414dadff00000cba5a47ac2400005355f1390737000007d5f453a21f0000503b6afab0a00000f5eb25d7c81b0000d6efe421978a0000efb310aa25040000ca709c72619f00007c88596f71bc0000416bdb552f9500008835b046d3be00007564e005507700003f43800ddd5700006c79e674d707000019c4096d21210000a7d1dc7120ac00007e710b2a0f790000669e50d75aab00007a37fac355ed000009b439b6ea7d0000af838ee883f1000024035593c3aa000039b80b9467070000f5b516a0d5110000b85e2b5802660000cd6cfa193f2100008c6e456f9de00000f0701139d06c0000323e4c952ebd0000797447bccdf200003a68292c126200002232111064dd000064178836ab40000014d5208639530000b676821d24b300007844a4e0e3c40000e417d5df643f0000a4d1776cd0fd0000b883098384aa0000381679a398e300003cd05a5c9a390000d6a8556f507100000be2a1f5052300008ce3c6bc620d00009a1b55295a5d00006bb92acf18830000022871b28364000084eb0d2db583000029bfcf424bd4000023ce116825240000dded7f41a01d000083ab67e62a9c000017ef5849a09500003c0966d99063000073161fe71b810000e7abebda33500000f66f389dbcb30000ed5ca08d0974000064541b9154a40000ec8be6170a430000b2b374aca3d900009e7039b662be0000cfda6f75389b00002d4151667a000000606bc7cc72c8000030cb58fecad7000015c39a9dc448000005fc7141b46b0000",
|
||||
"output_hex": "89497ab2b50300009e00c2b9e2120000a277854acc9f0000c949874d35200000ae11112957d700003ce0a7cc5deb0000fa5510a083590000a6b8b1080ec6000097ef2fefc54d0000679a86c686a400002edd45b0bb370000f5c6607dc161000076662f81f5d00000c72c287818ca000098f7959c2f130000b8bf8baf4f9000009fd98736472d0000cc8d2263f7580000b560144d976d0000d03f298e01340000acfe6f1042c60000b9db8e91f4e800003943e68216250000e9c01631bc670000f93f25c71f6400007530c2aadbdf0000f9e25b27c5ab0000df73bca60eb5000010b260b6057b00005d5215838d0a000000899ebf8b920000b3c230d218ab000058da520a76fa0000318f431fb8c00000e3583c304f29000031622774f03b00002f097451f1870000a99c9718b83c00004aa56ef8bfe300000bf2bb2bb19e0000919c0ab373bd0000e21319063a7c0000bd43b85d737500000fe59ad4ac56000098bf5f90cc1e0000eacdcb99b0fb00004e3edfaf5eff0000f96b0bf297410000cd870626a9e90000148d58eca27e000009d123a8392f0000e08b80c5beac0000cbf08424543c00008479b24db2b10000203a85b6b6f700000a85cee08f5f00006778169b8c420000418f312ea1a000002abce35929740000acfcdb291029000087f0d3bf6bb300003adf00104bff0000270077711e2600007c008bafc9880000feeef4d103b50000b1beae8674c50000874c409ec1ae00002c1bb2ca501800009710b15fae6b0000782f56ceeabd0000fd31370843dc0000d75075465af2000056b074cd9e310000da0a7d904544000045fe3721156d000016cda3f04ead0000c5356644a97000005541513af82c0000390f81df199200003ff93a46dea30000d43c07d91ce800009d8bb5a57cb100001d436569e448000002560317cbd5000054fac88328df0000ed73029f50ad0000f3fd22fae21a0000afee8f146589000079d2afa6e4c80000366dc508418700007a5d3b571e880000fb1c87493bb00000042deb0815dd0000b4430780fa4d0000be7f284d9b410000e816391a1fd700007c610bb5f8d600004b845209c54d00003ae2d61776f90000ede9a5aff58c00009e2b573def480000e77def0923cf0000a4c0d28ad712000008393400a1c50000e042ec13f8a2000075ccc9e3af3700003cb48a0b2c1e000041e92a8b3fa500004be949984a5a00009cee1e2b95a200009d920ac76878000097ce29b3bac10000ba16f9b9617a00002c1ee3606a340000a8c7c2e68d340000999feef1cfbb0000243614bae81800002a73003e91090000d21479ffdfd20000e3697515532d0000b06c0a28fb460000b8d70a64942900009863d074d1ff000085b5161ec4230000554cbcf523a00000eeb44a3fb12d0000783e305d7c7400006767dd6d8038000027e2ac7554360000e46939d381190000b11c1e9898040000a9f86b1913ab000016f0349170f60000f3a92f9f5b06000064ac7bc2e78e00002cdefba70c140000547bbc20c92b0000e5578425507f0000dd6ddb838f3100001418c71e0276000065f1683fa9a50000592960d4ca24000025918249ad8d000033105a13d5e00000e13a20ee2d89000024319a068d4900006a7466237d000000a5f258b9bdfa0000a782d23069f3000051fe46da52cf000035e428390d22000054e08f82cb1000003bb281ba3d460000d938f1cc2e3b0000f3158335723600001cb2897396370000e05c1faccf53000054ce289e9c4700008075761d345100007a888e5e424e000019c3e3319072000080fbe535790400000b0297083cc10000b62b3829f1dd0000e1cd84b08a3c00006c0cb6022b0f0000757c16385c3e00003fe369bec8aa0000749c4458966e0000e9c00b16a7fa0000a65f1290bf6900004d3ac21aa1f200001c0ffbec7851000094852bc9aa7c00001aad8e13d4c50000699954777f090000eda2537b29550000fd6eb65bab680000f3215aec1ba90000f4b30983d4ca000027ab8949e4450000be27a44bd9750000042e1a18b73f0000722fca38147e00002f38880ef81200001077b129d30a00004084b557e1c50000417503b2bfcc00003a4226756ddd00007d2ef8ce800800003ccff504a8dd0000725aa78272800000a2b54a81435a000087f638d7eac30000560e27b50fc200003091bfe535810000c225f1fd7b7400003319eac3d2fd0000b50439a1fbba0000ed5491d80cc4000008edb68858d5000043aaca7c9b5c0000bf64d589546a00005339b0d25e16000007e1428f9bfa0000302a72328e680000720243adc5a30000a6d0982c0e050000e3b3373dfd8e00007f45e9a482c7000084a48a1ee4700000741a524a449c0000ac895bf5fa0d0000653a92b7be4600003a4f2d818aeb0000396aee6da0380000e2573efa01470000c048c247f5aa00009650fcb6776e0000da3b1593add400001462ca5c3970000097c0a046022a0000c617e72d34210000b944b4fb2af80000b07421cfebc60000c601975959130000c742a7d44b11000096374a97c8d200001707494f76ef000075714b289e5300006772addf78510000d244f61e30ac0000b3eff72d7e1f000046fa454d9b6000008a491b82a2f30000bd488edaf16b0000cb61ee0aabc20000743df20bfe310000b6e7340a2a420000377efc4001750000c1869c22cfe100005d70d2132dce00009cf67d43fb49000030bb2a7f4cfe0000556ed73bf81a0000aa48ebe667920000208479cba67f0000bc47551131850000dcb48ab7ce69000084d1fcaae88200006e58ddd7e3430000ef939b927eef000074bfa0f5c0750000744b39a217580000bd2881f68378000071f58544e9a10000",
|
||||
"output_sha256": "488994311717698a890acf3365a35e08fce9fb38701f0dce7d6239f67986c5e2"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=2",
|
||||
"input_hex": "1d866c805a760000b389b52c693b0000da070b6c4eec00002bf7c929d301000010139043c1b50000750cc8ecc48b0000c65499b92dfa0000542bbdcb25fe000025615f0967bc0000f4fd09d19e4f000089b39e920ea9000099d54cb29fae0000d45aff773ac60000cccd6e5943f10000dddfa58e5e220000f026f0b1ad6d00005a1ffa06d5ce000038af96369ae500004b1505c575650000a6579019342d000045e90c04bc730000f3021ae8e6460000f6bfd682d5d2000077b257cf4ed200005412776495fe0000335cc8add8900000c16444403055000045b980b67d1b00008b2ddb15a3a10000ff932d11f14300001375f26ee79e0000873e7a86392a00001bf8287808ad000090de0513095900006275d20589bd00006f1466ad90a10000e176ae17794300002f6a67dd6bb400009c3591bb1ac90000db0be46c8e1300002f0ec0da5b9f0000314134044ef700005987a1d03d8400006392efb86b530000b6898212a760000062ed0e0624cd00008e5b64a7886300009893c1c4efc400002fcaa7453088000066fc4d00a76600009d854eca05220000dfe3f74bfacb00004f69ae7d9f4c00009ef5148f85fc0000e6be01110fec00001a66908d2371000044e7085e31380000bad5f566f89b00009fc49b70d1d20000a83c3fd19b05000023178617e2c100004a19ecd08e180000fb7b983106680000e2ebc9a22e80000014e51a736a0a00005d819ab3af2300009582a31574a400007510b7f82f7900001e40d0e1852f0000f7b1e10a697e000058787262aab50000d18bad7cd670000057ade35308900000dfe6f3362e4d0000d359466c4acd0000fe3c1af94ff30000ab0c68f1531a00005550ab3670b300006dbcacc99b49000051e0401d1a3100007999a726931c00006b94ca9b6186000057da4c1557680000315161c27a090000f0c5ce5874e80000278a59c4d119000087e48b73e53d0000d0aa1c5c1ff20000c51d1d838ef30000175bb4ab175d000022c1a4391c7400006bca330057b20000110c2155c4fe00009f335a4af35d0000ca51d7d376780000573fb408206c00009c003525bdd800008d4d54ad454500009d820395a4d80000697e4d99a62300007f76f844c99c0000574610d9f9e30000bd24ca65170800009279f2f849f000001342a47900cd000053ecbb207a71000051a8e1599eaf00000bbf0c873f100000d861ebc0a6330000c9356a85c28b0000e7cdcdb72d3400008b75ccab359c00001c5642c464b60000279dcd1160ae00001cd2dc5e043600003e60f486f9fd00006323faa4a6080000edaf421d8b920000ee8cdc4804cc00006c48b1124bcc0000430bd3b3837a00001301080afb590000b42f61856b5600003badf6fc5f690000b39a7ee12ccf0000f5082b60a2bd0000d360e53bf284000011b539e870420000ca0266e0d2380000194fbda18ffb0000c4b9094427650000af14a79e083b000089a4a9e590a30000bfd54f72184e0000e799a4f2f8190000bc14c724f923000076526c48ec510000993cb1858ead00002d465034357e000084cb628ef52000005c3ef8078e9d000002f927e6a9a70000d9f34c1f0c9800007548599d47ca0000002a0747201600003c6b756090d000001cb6fe063ea40000af5a1e5832010000de36871f685d000071379a676e9500008bec2bdd3a7f0000caec10b9ad800000c071ca5be3a700008a792d58bc2500004384811898f30000368ed6ea3233000055df6e0822f70000c20dc25daf6700007d748a23d11c0000846abe4e111c00007a9180dcce7a00000f673f7c82c3000023f45934a3fb0000835502929ee20000428a35d9135c0000905fb77915ae000034cc740f793200001fbba183b8650000527fa980fd770000ff586ade99250000858dffd2851200009c027379a3c30000d685d237d76200007b317d50560d0000f836ebdf43e300001294741bff490000c1644fa3001c00002380ff311654000024d40634668f00004c4c2bed53ae0000a5a2ba934a31000026e6a77823490000cb0bbd4c5ea7000009211f6fd9f80000213409524f11000050d25a7d6f2f0000a33695d953d20000519d108363df0000da3e7d36e1130000023d977f217a00004063c5793e6a00006fdee7b5d0990000f2e6488d6b500000d9413b008f4f0000b639de30d350000075bc7a7a135b0000f0121927621e0000ae19581ccb6b0000a84b794df7e8000099a05b58e6620000c332f09eb7130000681be82d0dd000009938cc76753e00007c47caf6158c00007bcf1ebdcd430000134423c00204000083bc076bc5e40000ca2f70c7006a0000de18441f6b9a0000f6dd39d3494b0000807ae29215e50000c31eca48617e0000de63c533b91f0000e0a1f1c531e100009dcc8fd7e4d6000048e3125358c800000fbf419235590000cbc73e9a0c0b0000b7e4e3924f9a0000b84bb9216a620000c37c3acab3cc000031892a310f3a0000f796717d44430000d3df2c05d4ca00001443c76daece00000284ffe6d72e00009abd9a7f264f0000c1c3673335a00000964cb94d62e800000af2654f2330000045f746afc96600002fb0db73bdae0000020928587b9f0000d0ff9d77a95a00006046ed51e76b0000c4ba2f907e340000e4cb1a828747000095f7001f0aa500002f66af942f9900003f3cd7b5ba5800002c698a0b08750000df202271a4e20000f0b3857d18840000d8fa2e6902ba0000474df88e3996000098fd92492db80000b966f131fcc100005f29663e18c100009f007d9d559400009537b4811c7500003e42da8774b900003f00e55469010000c58dcbc54c1000001a65c967d1880000b3e2a56e30d80000debc2c3567b70000",
|
||||
"output_hex": "9ef9f4427c2b00004867be093a5f00009a29a803ccad0000741ef47427cd0000a112d81e2a370000bb604b7500a30000c4068023166300002027538f3f6f000089c5650d6c5a0000bfa7f3648f120000ebd065574f370000c3f23690b77a0000e628989c113d0000d33d2f55e0460000553967388dd30000541e5d325f440000bd070629bb9000003903ae8d051c00004a3bbc8af2d300001966f201467e0000f393917ce7220000b872335423db0000fc5ee9cd6e500000f59a59c3e2e900003677c41e461b00003e4c0609bf9500002028de0d401000006dc291e0871d00004b636ef4cb29000029dbfd09ba1f00009de2f62f8be90000394124d69d860000c7d573a7b3b20000569e94d7d95d0000c4bbca1f598100001bf40cc0cb8200004295539705db00006f7c3e3826a50000edb7f2ed539b0000ac4bbd8529aa000098ec600fe792000016cc130fef7e0000caa89d8a65260000f0930cd51da10000353a67bc226200001e079276cb9800006b8384690d0d00006d8e9056160800007607f3d1d6cc0000d6cc3075e02a0000e1802f71f98600007f14ac24be320000dfac2c7857b70000cb5f6c9309800000cb8816f472aa000072e3ff97daac0000b5d4fbdccb5100007160fb81d4f200009a617563fdc200000763a8e6a9410000dba8b0de7579000022156e0016830000220d99eff85d000015824303e15200008d86e8c133e60000ab5fb2a4d9010000ea83e02889d80000287d8962536d00008efa565674170000f8e1b26faa6400008c396b5681f30000b4c9771bece200000e34fa6f0b6d0000d04533b4e72a00006ed65f3c43800000d263f249de4400009986f5d9cadd000056c3cbb0d6980000ddf396b7c0590000af1942ec36b900000a5116c218ac0000dd2cbd1c26580000427b78ab625b0000bb88f919bc190000d2dd890f6e4d0000ceb88eed39db0000a5ce7bb2ef4700000798759dfb1d0000af86eddfaf5100007b2a45c36cb10000d83eb71d91b2000044be3113105b00002798934ba64e0000b8ebee844bdc0000aba85d7349fe00001ebc91ff09ce0000413f1d9942740000956a211a0ba10000f80b88975c2500002b0c6952dfb80000babe510df5fc0000f9f06b493b8300005615112c161e00004ca9d0ccf44c0000bdbe74b757ed000056ae55a255a3000078ab7dab7013000038fc2f7012ee0000b4382317384900009271ec3ab30b0000d9c7c0fed1d800006d0211a79b170000ecb2b254d0200000050072ffdb37000085968f0a262f0000b061c13434670000fd7414e0b90e00007f4ba1310ec00000debc57558bf100004b3dfe1fc4a20000963811686880000071aa371d95e20000493b8df91634000060dd2be623450000ca6b0b305733000005d28388689f0000ecd6540376d80000ad13ce59eae80000f622a54c89880000194b9eebd66e0000e831a3e9585c0000a04406ecc9a900003b3fb81ce4950000a81f9615079c0000f2c69fbc40410000daf0f6bf1b27000005cbf579a61b0000a828d8676e85000083b299baecba00000064be75983100000c6e82e440fe0000437ab78145c7000056daec51d1410000e589419ca9ce0000b97aff167f8000004570cca2e9aa0000074308cb1aae0000162ccfb7855d000052747e2ac63e00007bedfbca33f600007ea5f68cf12a0000f9863a459b3e000009245d0e9b3d00005ca6c20d7b9600002545374f376800003f5ba9e7ccd40000d64f943802450000b9068207cb77000089ac0dd3304b000005136c9ccac20000a648fcb98a260000a21fd53c8bdf0000d74f6edc93fe00000cc46f7bb1db0000f0a8774ae9490000e865ad657cc9000093c325c3a88d0000d38a63713d8b00004a2ff27d26ea00000e5d50756f8a0000aec7cd35331d00007d16abf4a2cf00007bd241e957d0000098070371004c000023b21c69b5660000c5e76a3fae7e0000cedca50b7eb000004de29aeb19950000d527bc0227ee0000b17e95f8c42a00005c2eb6b215110000af49782c8a9600008086931143200000e62765d7d7e40000db97e2c1cb7b0000fa4770b09b18000014d9ac1afc580000a9f3726854da0000ffbabbdb5531000026c77d4c07690000e99053550003000001a3439b49450000fb489c177a27000064d990506b75000005971113eb2900007325ac07c2060000432b61205cb9000054d39378af5300009af05244643f0000e9f56f7a53b8000036fa82bb97ee000023ba97aab0410000a522a9c46bac00008acb2c253338000066a693ecfc0b0000eb91bbc7f22a000064d22e403bc10000181e8d161e810000106dc40c22810000e8333267bc85000005775994c8f100003c2a6de89eb6000025697274c5af0000d8f792b3b66a000009aef7f508f200004d82752842810000fba161fae67b00000ce37cddc3030000feadc3ecf4a000008c5489fc282600002ff57fdef8f300009a24dbcfa48e0000243304b9954d00001c7446b6de4a0000cbc3390deb180000b5fcf32a13b500005f604632ed4200005dc7472a02480000125d0e4cc46000005e94cbeb1b4c0000e7356d0f8098000098bee751c05400003d305500b76500008a9c3f00eb520000df03f50873cd00006759fd1a00c9000004be4d4fdc1e0000b187940ca5f30000bb459861990300007dd95594333400008a9377a5f1810000dc1c3f644fc30000626eba2709ea000036ae8036f64000003ecf2f5d719e00005b66204e37060000065304347ab30000a3c135d4b28300000bb0ab7e358900008ca8189263cc0000f6a3a4ef4d2c0000f70ac88816ce000003e9692054e80000c5e3cfa19e14000058c8f45b917b000037a25cf176c00000",
|
||||
"output_sha256": "711d5496e89f51a1e3ba076554e822dbab71a8eaeb485633c4bcb5516426ac83"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=3",
|
||||
"input_hex": "782315cc7aa3000054fc6b02e289000091de11d66f820000021f923b40ef0000922c6b9b93680000f6bcb67af74a0000da753e1a609200005da0cce988b5000024946577b6c60000e7972eb9388a0000be5cd8df3fb600008964a30b254e0000df8c77304f7c000087a58a888f890000fb1f24d15e4800006ee2595af03300002c7f0cae19d600003f0c1d177532000023e0447e5baf0000d07234ea0ba700002109f25afc610000f29b4a90b0de0000ace32b94fd2e0000f83a30d1182c00006dbbc5febc3f0000e21027f3d34e00000dbbf9ede25100001fa17108aca700008e5e700fe3a300008df363dd08150000c329909a103c00008b2e7fb6ca4800005bb6bac6b41d00008cfc6fb2f3fd00005cb01426705000000e21d2b15a2000002b371f6493e50000fea1add1bb640000e7e6a066ec890000c14290dd08e40000174e115ec6030000a069145377ae00004a7347f77c5500000820f97d682d000018fc7965f18b00002836455daedd0000edf9d93e88a500005d1b5e1d755100009c34a39bee150000de081ea695b40000ab9873fb019500002903193e2a550000c38bee9170b50000e9921833cf7500002a6cee4fa6de0000eb140be796410000ca95c63b06920000e8c0bd8d47530000a00c48e808e60000ca975ae946870000a6847aabf33e00009ec8bd68e7b100003fca5fa19f3900008a8aa064e7be0000a2df153b0502000098784111450c00002bea66ff6c3b0000b971c6a5337200003ceca4caf6120000efd41d8b36c70000661a9aa50eac000053b7a4d326c400001f3ac1178f0900004abfbc9fab480000bebf972fa2b600005fa7e295d23a0000defd7186772d00006272c5fbed6d00007aa924146e1a0000bcb6ad0f1a910000f7631842b23b0000fe8eedea31dd00006faa0730e62f000058fac3368b04000074f056805f3c000058814db86a4e00007d5c66f382490000636ea9eddd8d00009a0e4179780c00004e3767f5eb3e00002e93b7e7a258000063d04ff4e38a0000df01156275e600005907c3e4d731000099ff0bfa84b0000042128a31e75f0000c058b9512b4e00008edc7e1a56ab0000cac56daa6fbb0000fbeffe8645c300004884f8c6a91e000091a17f30e44c0000ccf7d58f5bce000088c015b245d00000ac8c08d7c9050000b254712e211a0000b8a2cdf39abc00003ffa77071ff40000350bda1f51280000aa1088c617b80000192a554de42a0000bbb2d08757cf00001a8d93a0cae100002fd8271cfbd10000e89bcfcd031f0000998657d04f2f0000c781d040eab70000d6887f47eef100005738d33e9f530000fc18a58d611b0000bac0cbbe7ecd00009e15b022213f0000241bca99829900004f046f7d8aaf00002f1f63ec2c3700006b352661f5bc0000db2e40bdb6920000f40040f12e2800003d4f216b978a00002771875e5e320000ec82d7e5a30d0000e13687fa5eec000028c987519a520000a7fcc3eb47820000120c852637d1000062c8d489986500007ce5d1eeced50000196157eca82000008c15b20f36720000e820aea5c6af000084ab8c10fcb400009a96b6fe3b640000c5d9ec19729000005a4309a3b538000043e8bdc18b1e0000843c310e0ffb00004049038b21310000a789c442e2f200005f92f0f88c850000995e266660510000b73ea4bd6bf200006ebc3f5cb5700000136ace208bfe00001f0447f9ac4b00005997663ae0d10000c00715af48360000973da6b7abde0000da5d547339d90000eececaa805710000e26173f660fd000091a6819b05550000a34087cbb8d30000ebb63242b11c00000f5d12d655c20000e2bd30bb2eb80000719ef471103f000017bc6b918dfb00009ba09d12b6160000f7cb2264026100003da928efca940000bdc55f36f9460000a56f2b3410d70000f988f551d81500005f177b66a7e4000075cf91571a9200001451bd4ebbdb00002dd2a3d74833000047dfdf108b84000038df163773db0000800fa9652a200000da9c513b103b0000ca1e75f674150000e3928a4b53e000009d104ec39eba00008f29a0f17b810000397c639dbcb30000a83d2e7abfa700009ee900f0e24000001b9f91fbaf7900003352879ce3c00000eeb486ef940500002647bc36d7090000eae1861727b600009ecb44595cac00008108d705761c0000321b5eef51f00000ff9e2f866508000032f335967936000015488be9f3260000269fa05f72c700005295b1a06b3f00004ce8321c47900000391a880ceb510000e8d3cd0adec4000092bda4b6b39f000089297d112731000043684bc559c30000c5746df8669c0000b9603ba53f6400000a9595306d2d0000e5385593c8ed0000db77be814e540000011fcef18662000061cdea8e76f10000125c8347f171000025505254bd3a00000db8ef279ad60000e143fdf795c900006f16fe2dded10000f7969d7fffb6000071e12fffa2850000204b81b63c7b00004883930a7b360000692f3183aad60000c2e382b5990800002e32dc70ebb100009c57d3dca55f0000426296bd870c00002c2187d2002c0000907e6d6393de000060d3093d2ee2000008a8a3ea0bde0000cc2fe4254898000046443cc1261c0000b6d97937cd920000a915f05249190000430b830a24d10000f640aaa0c5ce000089421626bed60000c9c19e52962200004041e87fc0cb0000f5bb686c6a6000007e6454ff34f20000cb80ebfb432a00009f20ef345d2c0000a6e7b55819570000dda5ad74d35d0000b23d2bd2f1b6000009e186d590260000926071c003fe0000755e83c7f67e00009dfb379acc8500003fbb91d51dc4000076f2cc108c9a0000e3eb2b9d20150000d29cedba2e090000",
|
||||
"output_hex": "1fcc661da34b0000dc1e978dc2920000dd0dd14742d600003b3dd621b657000027ec7933b1c100009698df5be782000051ba51aa7bd100002a1faf4e13ac000056a031224a6600004b0b68ed5066000021969f3fbf1900001aada2ef97bb00008ee677c23471000005b3b77f96ec000058bade266f9300009bf8069a26330000b3a7e428f3320000a8221e10e732000025fbabfc74d100001fbf1adc315d0000c5b62577758e000012c843e1640400008ad80e27ffce0000cd6c5353b444000022c9263e96d10000e20a4ecc7c0f00004bd638bf774d0000336f6063de4a00009f5d7e4727780000edb2b8fe37bb00007db87c5589b900008d1f4a95be150000ba27cfac017900009c2efa3ec91d000061abfa71cc010000719e111e201a0000cf549ea920ce000091ab9d4c99a4000061fd0e0875f4000089a09c46e60a000025bbf03a2cd900006c463d4e1bff000005bb8aced39e00000e61372f19e7000022647ddb3dfa00003470d77825a3000063dc9b8a36d700007e6c7334f79f000035c6cd052fa60000e0793cae5e6f000095bdf16fe08500006a1544640616000076c4da722f740000c234ab895783000069cbec62c1fc0000abc0aecab97c00004f3854a381a10000f185fa59e54a000036a0f7f996de0000624942604a6b00007580e1eaaeb50000c53ce1dbf2610000f197d5d63db7000047c790476a500000abcfa376b0fb0000b6a23cffb4f3000088946d72d793000014f2a3cae71c000033e64d62983b00002b972da8c65b00001e3547b99b8c0000299e7d4046a500005767a7b5774c0000d1c91476cc170000b8d117b0c98b0000653a451788b200006c8a573924170000adbf5902069300004b72884d6d9500005a4903dcb93000005edef72a4b310000e6ae69f9359400009b10d2a392d0000034531bbb04e90000b41f65ab9a5b000091b46d8b2d7700001ba24838cbf90000ef42c5951b710000a0b5137fd4ee000054e007ef09f50000aabcc21314050000cc83d6bc59f700004451b55d50bc000065fd13e886530000855709633a360000b67501af3e77000022b81579d76400007518081b41c000007f578818db110000175933f00aa500001da5abff8607000076af118ec33a00007734b9821061000089f2970747ff0000f1c8068215e100003c1b799e2e0d0000d3d1dcc092cd00004c4fc62f8cc600001516521b9aea00000b97d18583d8000099e6f56e8adb0000f370155b487d00000469a6fd1ebd0000272ff6f57a2d000044ad6bbdfc710000111702c76e880000b7637db7f9da0000206e57dbc0730000babe1b2321bb000071f21a6fe1e0000008e9de65cc020000e3596287795e0000e9aa3b062b85000065125d709400000000dc6825b8040000210f5e47f45a0000abacaff95f2b00009bd28a05e32a00002bf9ceeabff30000461c18de2e4c00002ff56cc3a0b700004a1a45cebf6000005eea14dc381a0000eb52ea648b0d000001e38f0f61e0000031ab5023322b0000295b55200fbf0000c72ad6dfc9aa00007f47ce3c12230000311628c710350000973bcffd739900001360675f8b5900007f51edb73de200007449803661f10000f88526f942f800003be74bc65c4600003735490e18f00000b67d42de7c3c00006e455c791a330000e28046e4e8620000fd6c5ee10fdd0000e5d10e754da300004abb67abc1af00007762389660c10000e3f5d59deb65000033260f0e9e940000da6f921b421900001787c736d5b100007d2e3de757140000d19c7c9437880000df9e1fd3a51200005fcd292ccf6b0000e0b87ec33bfd0000daf40110d4850000be32612bc987000092f2dc58bafe0000998a62c745040000dea2e08868ce000011326df396aa0000c06db33a63620000f55a1f0f19b40000db0183e6e80a00007035b259256a00008ff63cb842f80000af495c6fbdad00000bea9a12136500009cb7829ce79a000031a986ecc57c000052a1cc1cc2490000e9cb745943f40000e976c45efe7600004a4b7454864f0000e830ef11bb350000db76992444f000002700af0aa0c300005aa919509a0c00004fe76a28740c0000ae46b4c0fdb30000f7a39e4b6d3b0000104089dbca84000051de0f22a0520000bee64c2e1ede0000c6800e68acd4000004096b151556000049a7c9d195c40000caf65d326af30000d9014292b6bf000083cf9ce786340000147daf2246dc00006249a525840a0000274f7ed76b8f0000ad9da73067700000bc2a8233a0bb00009b5504e84be60000d6c169f6d7a50000f135ba9a967d0000984681234b5e00002b0d5d51760600003306771b467900008fc65aa17bea000072a8b91ea4ee0000ecaef07d37b60000fc9dc90acf8a000035bba3d1d0a30000b4f5e02dfa23000061e861c825310000bc7818f5d26d000092fd430a7ed600005a9fc142b0ae00006179d8c9f531000069e1a3b1111f00007e1e3bc105af0000a11a26fbe3a30000fa41feada6bd0000f1742686a0f20000c338281fe0b700007b075fadeccb0000ee194213cd5200008e4a791ef1f200009f02e485a701000044450af18ada0000e8c986cb8b690000558ef0159f7900002070304cc2520000c2c66bea12510000adea18a68e6700004ffcb9910d930000c333d0b83465000061d4ecc26cf20000ecb56af7d9b30000a9e50381f2510000a78f4d03cfef0000faf1e98d69d700006d2a6d13661a0000d1f663081330000015b64c874ea60000c7e8d7fef8c900009993ec0c34a200009b234270d4300000d043488330ef00008ebf85a6a76100005b3bcef52c440000f9c88e984c30000017ae389e8e9000001f3bb87d3b480000e78e181ab9c20000",
|
||||
"output_sha256": "b1f2ac81ec91466c02492052ac0431a5182703e8642624cf4b33d3bdb914f553"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=4",
|
||||
"input_hex": "bd0ed322ef040000d32926d50feb0000546f471c79680000dc870e70312500004d2d8a743b7f0000e2779fdee5f90000da2c7c6f44650000ff714f71865c00004033bcc9d2730000bcef83fea0a70000b3003150fc4f00008e027e33a6ff00001780713ced1e00009ae5e5197cf9000050dadff0e4870000f44cf0c8596a0000c72825ece39e00008716899db4240000176d3bc5ab98000052977a2c658300004e5032d6f8c300001deac5f8a71d000046a39a1409ff0000784ac68f92cb0000fe2cc72005a900002c2474e1b42d0000e0ecdc1521bd0000bda2a26f8ad30000e7b1c4693304000049722b7925b30000689cbc53074c000098f9ee14eabe00009463ff609fec0000642751e7b37700001b7ed6a30504000027be6174d7530000f70ef2a2dd5a000046311798be04000046ed3c20039c000089454e5c79a100002be823579b5b0000d6d0b31540ee0000c85095f9244a00001660d9adabda000013e9b341660700008f9cd5e74cd000002cb3f41196a20000b8f39dc0185600004afc639d8e6b0000d5d4cd723fef0000fac228381f3a0000fcbe7604de9e00006a2b4940059a0000fd6cdf4902780000d404cd8912120000b8d66c7c062700005ce6f6b204190000641e831102300000e74c22ce0c490000a389f63ce7140000e2f94c6be15b00006ddb9999cba20000afceffe150840000266d0697a8ef0000860c2b791ca40000ef848255ebe30000da4ea998727b0000d15dfadf84810000ec048c25bfc100003fbbc48dbded00001a63f6d83f710000c1c0e88b0f9d0000fb86155ed0740000d214913aafa20000908986823b190000e9b51341ff1a00009481a114772900007e54b6211c4100006c1633e238c800002a8e9ea8f9c20000f477e14e1bce0000ae87b6f32fa100009e3eb49bc94200002715c93363e80000d0c36d7883d00000eb953ca8f3f20000b51548c9234600007c1f77bd6d210000d2e7166633d10000c2b25ed30b4f000065058262f23c0000c8cab4267e55000080fdd824518300002deb28832ae7000041a642fe9afa000038bdbd19db1100006ad36423e8be00006a734ead759a0000d10df82cf63c00000752bf73eded00008216e4eaf8210000888d183f0a97000065c16deca7350000fb40d4269af0000054d16d6b4ada0000242fee7a0c9500009ab5f9c09078000095821eeba79800008204170ad5720000f1b550960eca00003e1b1f04c96b00004a829978807f0000fa348a38f7b80000c96fd6bde4f90000310c2348c79300005c8f1c4942d100005c572d57aefa0000db91465e42190000db38742937e70000e98c6cf3a6920000dc43b464e65c00004d50df92e0a100004c690324646d000031e456c4ba550000a6ca4c6bca580000e0d505939c170000016c6adaee650000ea4edc80419100009499d7c446e500006edbf66ff01c00009bdc5fbdb6b700001fd869aec182000045b9e596e74f0000e1e6066d86af0000acaaa9f0c7380000e1fedd6ed2930000343fe6379e6b0000ddea036fe0ea00009e612fcec8d50000c088ae6c651d0000bbd783bb6c200000c5afb0b8e16d00002aec35898a1600009fa608501b4a00001b50c333c8aa00001e11dd5007b80000a0a02835b8bb0000f9cfcfb0e4340000e992bb72701e000052c7088c09ae000055f1243c0c62000090cf561f3eed0000113ada0d93690000a63e6e712173000051dcc8a5c1e80000b38de99dc400000089e7c3f45496000004ddbbd32b9100004f7272af054500005b9ca4d4e25100002f8db97e0290000030aa9ea6c14000004b0ef895e2f70000aff41d25f72600009765e00be82f0000afaedf65f2b80000cf778c6035fd00006d399754615100000c4b464c6cf000005e24c71f293f00009645475b6adf0000c95466ab80f600001e2a47b747d2000092be9b2cbd5f00008b4289a431a0000068a52fec2e22000071cce9f6d4a2000040197d93a34d00000abb33a039550000a7dbe9fef404000088fa6bd177860000b766e29480d7000072a365bd55160000f574c3734f550000c7a47a561de0000076b81f9bf8e50000fa269b2d21ce0000c3bc539d1a680000652578a9652d0000a8852db4dff900009b8006c65acb0000fc87a90b86200000b958e729602b0000eb9c4a8af8f500003262a46b7cc7000079c7932f993800004ea7425d453100006cbe50ba16510000be3719bc472d0000fe72d6d75ec50000f5aac3e8ccfd00009cba7488dec30000d35070db97f2000064d99252091100003e2785de62b60000246a2874ac080000c17bc8a5d62d0000b84a8c72370d000086c0bf6d6fed00001f35dee9c7a0000075cfe94c8fbd000055585d0bb109000028432804430a0000123a000d621700008efbdefd65eb000049602e3db7de0000609ce224270f000098c7350692d80000f7e1f83cc8f10000ea11bb52458d00008c3bc52b217500004273258b4df7000054cee3bfecc3000097dbbc06275400002d535792bedf0000f1ad6977391c00004977ba4f0e0600003d0aff19f15600002b85e0e2a6030000981a10e386f500004eb300aa2c050000fbca503a0e610000720ab7ca3bed0000fb19fea8e6d800007965bee3cd070000c6c43353e2a800005fcfb19876b40000f946d216fb0000000562822fb9e400003dfac029bda50000facc24bbdf2a0000fcaa0e4d4b86000098529f70a57f0000c0ace323bc7a0000ab512ed87ff200003cfed0f6b79d00007e5ee44a1b7e00002fc931d0a83300000d63f34237950000d3dd2a0d32a60000a86bb22fc01d0000ebd332f517420000e14de21f83e700007495a574b87e000058d17fb9e4da00005f6cdf23e1610000",
|
||||
"output_hex": "b05c5cf3b07c000076ddf1a86e840000f868ebba991100009da9f7d1558a00003d272bc3739600004c06e2970de80000472a373bdc540000ef722e04cb810000bab812a1b0f90000e910976d3394000012e7f97339f30000ff82c47fdd740000d356e615e5380000d569b76276f80000a8f3e5b8a5670000936527728a150000e5bea7edb5360000f4928faa0810000070a3c28badb5000041ce5cacb5e6000058218067170d0000a5e3dd88ad740000a410c638f76d00001e5747bf2aab0000453c9aeff836000043574cc42a210000f636258ed62c00001aae1e6b0e830000a84a7df7681d0000b885b44a7b82000063e7206fb803000074b8de2e7fbd000089e018964d8c0000415da0da0ec600006a1446c40f370000ce986019e7ea0000d17d9236161e000072fc9507ac4300009a80c0b5465700000ed388e7f3f3000052923b4c3b6f0000a349ca15f4510000a35115a7f3ff00003d39f2022e9e0000373c32f118680000372406c5674800006d2d9867dd0c0000ea47515a65b000004639ca3efd56000049b37702b3d60000d7b65c16eab20000b1e32874ceff0000eca3bc1173550000edd6fd0abf6d0000e837efbb4d960000ce5d65d31d2600008c253a330f29000042d109a831e10000d3789894c2af0000a153fbf9fe9c0000d2c901002c4400001ea5b6a630560000e95c04fd5b92000043ac904e1d250000d4ac73b1dccd000065b622952bff00008b2203f20d670000724d1ddb3949000064c2bd71e4fa0000852b07e5eea30000558d1488be980000470b979b05cf0000c6094d6ba60d0000e52706276c6e0000ef9c1585c01700000abcb1c8432f0000dcfd6a6f92db00000bb852f95754000034a929a9fd0000001c2ba819a7170000075c9fd0921200000e59f6ffb6780000c0e595b83db600007287048ea1bc0000337f8472db6e00009eaf16c8bdc20000753d0ba1171e00002ce5b971b0300000d66bdbd6fde100006a9896a0d79300006611c4a22e64000063b06c958cca0000763e693237b700001cacd3e66b09000026512e46a578000082ad8cb7f13b000077455b82b9f9000038834a28729600005dd170667a2f0000b7e3dfbb6b2c0000d923bbe8eaca0000f4871642e08400009fc3a3aacdd50000bb07fcf5b67300008d2373d481400000d3eae235c34200005dec8e2cc4430000ff1776804af50000bbc3bc2464e00000143cff34b05e0000be672bd4f8ff00002b564664b1cf0000b91ff6d3dc240000ab8b1278cd220000c83e3740497a0000e30e19f3eae90000147d96d837c60000e66b07289cd10000699c044dc007000090d3bbe844430000688dd1aaa7500000fbf5f104c55200007a801c247d0d00005ec6b9a832c200007cbdc58b9a3a0000c8090f2dd10a0000943a063ec0a000004d2e2625389c000079d0e7c0090b0000af93ddb9d10b0000b86534ae541e0000f92c00bec51e0000a19ffc5029850000f718107e6e0d0000a948a28889e80000b44d7d89da2100001bb4205115290000891bf33dbd8e00002619214ac7de0000ce575607fd6600007b93f523952b0000f15733c6cbef00003f9ff2014a2800002304538b291e000010e9376791f300007282b27da4ec0000a27e08dea052000090ee90e613a700009d6cbef3240a000027c99fd2cd5c0000cb164b4ef0710000783bc49635c900005c50165b8934000034195ad57a62000049a50c87bd8c00008c766f26286800000e2823f95ee1000036224948d5810000cb7f9a053ab40000b08f6ca317b800009be35cb4139600004dc863582222000004f5d44c01ef000016554434af86000053fa1e43e4a100006e43672824b600000dffd78858fd0000edcd1e9eb42f00008a03d4428c9f00000bfe0732ac9400006eff09d0b4da0000eaea4f5a53ab0000df28a58fe9c900009d3b662b80e30000cf6bbd2e43db000013e3a8a31bde0000146923ac983200005d5c53a486b900001dcc2517d64f00007312069e53510000e95a27512aeb0000ce9242df4a0900002735f52850c900004a9b5649ad3100008c60fc35311c00006c43c42b4e880000ded976dd67d600003f7378d5e79f0000bdc60b9e4bdb00006f8eb93c4f02000077141f0b2c4000003990f4069ce10000b07136543cdc00004e50ef9b57c400006ca70cd5a3aa000019331bddf42b0000621aad0a173c0000c4a358c9a17b00003b4a707e0dc500004e7b2ac40e4f000018a91097099600005f8493796fb9000013c9cafffff2000055104542a8e60000218cab374cbe000099c465806c0d0000bacff90b947f000087a009c58b420000905657772e0000000912b47a76050000f2a674ec30ce0000293fdfce10cb0000122a9e1f492f00000382f54f42de00005c6fcb752c680000d80c1126c4b00000b265ea85383c000031905edfad120000ce29dc01eaf70000c201a998103d0000220a3d647b3e0000504ff1fb60510000706119a760540000e39a2c4d58c30000b4b5fa6e713e00008df22dad0bd400008679ae2137990000a5594cc273ed00009a69eee96d56000076247585c42d000005429f318d080000080beab09e32000072a19780197c0000c6975a9be3a80000077917212cda00009ddcb42e01530000f6cbb40626b70000b83df30c1ee500000a97ee327c490000cddab22204f800009d02fb7246260000a879fcdf14150000b115592efe5f00000db8411ed5e200005232e57bdedb000072a0c3d27df200006e012a7942aa00000134f6c59f330000194e7ce3333c0000130253edcafd00000a54eb3c4fbc0000d8c85f96607100009164f3734ce60000fa3fcc7bb23900003153efd181a3000014e7c81bbb210000",
|
||||
"output_sha256": "262227a1c4c358748601038e9b0d7c8294fc6bca1da3b49240570a274aa7082d"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=5",
|
||||
"input_hex": "28ad7775a14500004d4ea4511098000087e6d78390b5000057e0e5bd9ed80000b3d1c85ad08b00005ee4406b1e6900001596edb9431d000010860254c024000038055a9cefcc00009ed09883d55200007bf0534796f60000d81566c4af800000125c48e58d2a0000d38413fecc2b0000aa85d2fbbb920000f3da3e4c130b000058764912c75000002a83fb9c239f00002d34bdabcb0f0000f90513a0d70b0000a02000bad0c2000083e53d8721b800006409acfd9af30000d6c7bc15e4630000d6a09149a07c0000910e021cc3020000df55f0ec57170000522b6153498b00008a28339b43e9000079be54bc04be000029fd5162a143000007e895f307fd00009b31cb2d60df00003db81b732cb800007ffd7df11a060000e65b6668048a0000d03936de611f00006372d6e943a300006df63491395e0000b463305a3dd50000c5c6b3124b8b00001920181d39710000bdfabebc7e7100009825e2a684dd00001650d247a443000037d8c3e3342f00009426ff4b1b780000580a300ad91a000068751be986500000e8fa1572f9b600006818bd6d25690000b2ec0c085f190000dc638fd057cc000098ce69c4bf670000bb289443f3e1000055e92f3adb49000012bda7c932ac000096aa9fb540210000b47389669803000094612543b25000008d16758581390000a14504cd0b6e00001ab29a9cc1e10000cc9edbc3306d0000e6dfaaaacf860000d2c15026a8ac000057b0300a5f820000db70ccc43c8d000068f0ae864ce30000c6f76a8139dc000079a185d8530a00000f84d2d84737000085da26bb1f69000027aa1f21f98b0000d99619ae3be50000fa5060c4a2c700009b8fccf7b5950000d29fe1c359f100000edc60834ed600001791ed79a77000003f9f87d2a0a300005a3f745675510000cdf553710a930000c26198a83a130000ccc86499c01d0000d81e3cbb44dc000026dcdbb3a7f00000b29da074c34900009e5b7366d7040000bc7e12b59f200000cbd1f5eccb4d0000c39bda16779d000012d33fd170de000080e81c4e6b1d0000fba1eb903b6100007c503bbd54e800004c7f99ed0b8b00002bd57d988fe70000312e3281561f00004e91eaad809800006f16d32969080000c9171edf704a000080f4a5fe5b750000b13c27c2d8a8000048f42f1459ce00008095d87a81ff0000168bf682c1310000e0118c3a983a00002cc3c5ca693c00006928ef03e9f10000a7cc48e8f277000082c95919d8bc000098d176a3b8a2000094cdc2520b3c00008901ea727bc10000fa61446a30b700008f86ee99d115000028e4479315500000a02b6f8bea8d000060246c4ee6a40000f553165640510000cb90fdadcf060000bf5d90f9dfdb00007ae12101995d0000539bcf43679f000080fdca9815030000fdfa8085f44600002763432dbb6800001615202dd753000045f4c8f6ea1c000031d87d8bc53c0000edecf89aee3700007d1c034ae0980000402ecca79e1700009bad86f224960000ca0b620e755d0000622ca7c09ced00003fd1c47b4c1300008e3ef23439a40000ea034969470d000057779f6f35930000b2f0f6f87e2b0000b982fc1f4aab00001796e8302d7d0000c57c72f03ead0000893853543cd300000f9c2296d3840000dbf7d5837b8d0000e4db52752a330000f630c2dcb0eb0000bd6b77563dcc00009e31120ca7090000a69665b1b0750000c7111197ed8d0000deafb95e4e2c0000281149ab94d90000a4411d4c9fff0000f9caeaa17cff00003b515ddf1db80000a1a3bff87c010000be7cbcc9ce2c0000ec336e579d0d0000e02f3529fa040000c0548ebd72c80000c6ebdff2e1660000c1f663f654ad000083dc3d5c4c660000ce0ef09a7b260000a955f8784e31000022368a4ed1180000ccb598c2152000005ff3c34e86180000426728091fb1000019bf1251af6500008f2445001ac6000058da7bdb3d99000067fdeef3715000003dc45b70c12400007f9fb354bf5b000082485b9052dc0000de7b25da54610000d9dde54d1d1000002a6e73f4d2e500007f92e7c01d480000d0194a0e27cf000004c0d498473a000095e2513d3057000076db6dad4a93000051317c331f390000bd20d4b13bf40000728f00249f510000c648d65928540000a43b4c2102840000fbc4d577623a000071d2b8d362920000b9767c8db670000094bf53477f890000597984739c020000589ec351017a0000a99ba8f5128200005728fc6ebf53000006d38f6eefc900007277868e12950000ecee3c529c830000377d0e732add00008214dfcf1d2000002967701c196b0000681f5354765c0000ade97a8d41c00000ab3a6fd852a90000ed0fdf6846a100008a46bf7708dc00002c9119bd9092000072d7d868c97e00005facb2bf2f0c000052c84432f0720000cf8f77339311000026c19595d0710000bd895a3b675a00007f95b256b7aa0000f8b04cee1de200000598ca454a9600007fbc1878cbef000076c8967de92b0000fa584ed588bb000070fc8068b1550000d9161b64b0cc0000eb6b5b19221200002683a948e7d20000a5363e8597350000b25a4f60660b0000f3e37268c18f000014d51eb170f000009314ffa7ca180000f3c0ce6dd0bc00006b2a306ff2cc00005793dff7c73b0000efc5baf730ed00008f85b8f0d2a1000053243a7e59030000ae7223a37eaa00004bb08b7bf0b50000ab1c0d4d8dde0000b0c4547b40d600000f52fb5881d7000061b1174410060000d0bd05aa5653000097b03861a35b0000a5f0f87650f500000555f29e50fb0000772a2a5bfbcd0000c7f3a3d422b10000215113532ab70000de0f0519215a000069f82e56db07000032a3acf631a20000",
|
||||
"output_hex": "ff6e979a9fe4000054d7fa7c29740000763900b9dbcd000066a794623b8800009bc570a55770000078e55313ce60000070365027d60100001878a0612aaa0000e58aa18f0e2000004ebd0e95b36d00009c14bfc2e3600000cd848b40dd0e0000a37967f593f900006f63d2cba6db0000c65cf6d18e250000a578bf75709400006dfaebde6f3d0000194d4250c6980000cc413636edd30000cb245837568f0000f45dfe8b32bd000099c8932840fd0000de9acd9b2b4d0000b011503a3c0d0000390920839b70000034eb074bac7200009b43691df8f40000fad2adc01fba00009dd92d5c808e00001a89aefd0ebb0000fc4b3afcefb00000ed5aa03c92ad00002cf7887dd5fc00004e295d4767a600004ab4badc885d0000817ce23537a20000c1a1808b26f70000377596eea1320000d640b06e7cde0000e44ebd61178f00005795b428c4aa000095d502cfdb800000291e4f8382c4000014f8498981bb00006c5c6dae99e600004f53bef8984c0000a30540c3199d0000018f4f6a1e170000b221a209e6ea0000b6f5f6c88ab7000093fb39b14cc400000eec6f0a06cb00004f1a3e7056fc0000526a51b3c4f40000ff4f48b01bbd0000f3e8749900e6000092aeebe12a640000dc06af4f18ad00006c4521445f75000056104293dfb20000ece84a6bd5450000cf7bd1af05570000de501b09afe400008e1fa92c5da200009b906d0d5ec40000b9e880274f34000089c6add76f8800007ad2396d02e000003afe2c6d973a0000635675ffb3d000003f10ea7a82a500002d6b865f68ee00007fb722a24a0b0000e6d3b34de9780000f6402fafd67c00001acf07fbac5b0000063bc94dc3650000e1871c4a07010000c15c36c7b58f0000cd2424c77ff0000060a24151f08c0000d1252f00fe310000e36d588c7dc600002479f2b9a6dc000048a2f2f931dd0000a8851f414b990000f467d66b1d4600002bce99c106bc0000276a413b807400003469e34f98e500005e521f7823490000ca3385df30990000ff61d9b958230000bf20234147d20000dd9a9ff309be0000a786f5f38fca0000eed773f0b1af0000798947d4e626000020778a7b3ad500001f77503dba0600001629a6919dd3000042593e118e6f00007095299675120000e6a484ec527600007c9f1501f1f800000c982f2a29fd0000af36ad410621000047672d038d5a0000d393b0a1f4000000ae8597b9ab8a00000ea1df33180b00005a2bbf52c3f100000391fc97658b0000ee3b951324c50000e097606944c0000048728e358a9700002e6a920180cd0000dbb27e57e54300007279904bc26500001692752dd64f00008593bc217b82000001054b401cd800006a98513eb00d00006643bc0ba9f80000414e1930ecce000018e1292a44db000096445d1dd9b000005e1548013de80000f8a5babfb2a50000b3467f432a020000e9b6446d0e330000888451bb8a9a0000f58cb58a727600000daf1718341f00008ffc3d11c4c000006debd8153e1d00008d366ca5bec50000bb727a390e62000079b42b8141e50000efaf6338c2930000d70d37abd05100005e98139de239000027e71702208d0000047fedf26bb600001a2db60e9e0f000001389dc514ad0000b9823f5895ca0000a73ff0086a050000de66fd7ea70300005a7a60f0168e0000edc7e2f298170000ba27d06b9df300004f777de05eee00001d9e5dd7da260000f10d6293bca60000f0ebb09005f80000db9c66357459000036be585919f100004b1e07b99b530000ea93a589357e000014843da34bf200006b47eaf810c60000bdbf7b85a81f000049053967d537000082fb6a85406f0000ae32e3a93bc10000bc43302f37a00000086eaea1af9400005b75ce3d214c00000682cd184ac40000b2b06d73e1a6000018947305683000004416aedf1516000070b9284ef8bb00009a2abe28024d00007806bf53710d000031c3c8d1ffbd0000258a254b2e710000a560bb87c9370000b08d63de95b000004674f5ce6e2600003c8265cc944e0000360619b32e11000030c61af114e900008bec4b775e3f000050d49ffbb15e0000d0795b4dc02e00000ccff9538681000005b51bfac27e000049e45dbbf2b5000036358d529edd00005e4e323165970000e7fa57810a2c00007287a8f103cf0000ad45683c8590000020dd811f12c60000b394e68616420000c17a5261f23700006e2d3931c6770000793da7efb14f00009eb3678a43330000a0f77598da6800001405a2421b2400007797fdc94dcc0000c43e738991cd0000174e81f234d00000b7424b53af0a0000e7133c2d4c0f000016fdf6dad8670000e79a4e83dd500000c53ebb4a0b420000f9cafc572dff00000af48f0707180000343765604733000032088f75328d0000540cd31b3a990000d980dca29a5a0000bd70bf86002c0000f438f8545596000057eadb1802ee0000a7b7885868260000114dcb8fbfd6000057f3d6c699790000da1366ae6de50000522b3b0d0a0c00000a82c93ab0440000ec5136c1f7230000066820a27ce40000e5aa3e6db5480000a70cd2e421be0000ab59cf1968930000f4c34294b93500005d33c7d2a09b000060ea64b993570000f14dd401c21500001c33e8bda7f20000d496cdc729410000826d551f23b0000013b7965481ab000012d301b419bb0000f660f64de77d0000dc714bc2d5010000d7f875406b9a0000b8847809dce50000b97f80ac72bd00002dd85e7013d400005c6bdd1c71640000848aa158d67c0000bee2c7f3f8ed000049276864581d0000bf7c543ae4d60000f88a6e60332d00009c0f79f78f450000e336c1bcb34b00002eadf66bca600000aa68fc33c3120000",
|
||||
"output_sha256": "e834d2feca599216da0b2be34440e582c37faee1c5d972b9789d79623fe88874"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=6",
|
||||
"input_hex": "b77de7024623000042b6a8a6df8f0000d706123653ac00003c8bcc018b630000a0529eb01076000027c9296fb1d900009615d431cf630000ddc1ed6d792100009c09d7cc85640000b2205854b0a80000c21ee7d7d4580000e8ea74f35c240000e1dd8b0137bd0000cbc7c57f850f0000f79d3f55ece10000f8b9c933e9510000e0617a1f12c90000348ec92b52a3000014f411fe97190000ad6814b124570000b50f9ad65b15000070c54d29d118000055e9e4c46df300001de1a6fccb2b000009763aafcce4000030e3e3c01e6e0000a80469398b6600001978c750b7bd0000213977b4ee350000a4e4a1ac9d0f0000282682005f4200008470907ead6a0000747123962c7a0000eb9ac4d36c1000007100a8afde0100000ed61e53e31e0000fbc809d98f0700003e1bc783abf40000fd8f8d733c3c00004f8c1ca363db0000cdac5b74032400001817a1e8f43000003af5ce9c9dd20000f5c0fe8bcd1100002edcfc45c586000015e0e47c912200007cc239e01e2d000014d3a7852dad00001bd38508bee20000cf72c558e33000000641e1d775ba00000dcdb4f24f3e0000190ebad3ceb10000ec7a12887dbf00006d76f5c38b920000f1e853a90778000039423194764300001ea8b4d5329a0000d9029e0bedd500001dbf566c53470000928d182e25760000f7eee66e1aeb000083db7dc2a28600000e73e066c04e0000153167d766fd0000d27ac2cf308c00002e8a9047684d0000c473b9f835dc0000629adb10641a000051f2d820c9480000d7b8c59fbf1b000027cdafce0c9800007b5f599b939f000097a0a17fab1e00002c9347fe61ea0000e24daca0a9e900001c4d7ce78663000061424646d40d0000ae0909dd3728000007da8447aa9c00002fb46e003e63000003ced8d3f7d20000f97a5bce9eb0000084d102a57f270000483a6ab491430000621cc40dcf3900007c808d9875c90000625944579ce900005f2e637c9cf80000cafa6b3088ba00006e01068b0b3c0000fd6c6a0cfacf00005a6d13deb719000091b50baae76f00006f13d9547aca0000e76005529d2a00005c868c6d1ef2000072dd6e01261e0000bf1fa96f5ab6000091c0db7dc4ae0000cc18ab18d6300000f96bc335f4db00000ce4decc2bb10000366cd0509822000052e9438b2a6600007c5845cbb1fc00007f14dfffef9c000051403df41af00000d2ad76163de100007bdf0805dd9f00008d7fdb77b4690000ef375cddcda700004ce856858642000073ad2f98e79a000044ad3f05b1a90000ad966c91ee6900005373d25eadce0000a93be49b85a0000033a23c402fce0000c280595b7d7e00001b152faf46f800007d794adae5840000a6330e1970b60000000755f190b00000427a6f21c5450000820e9bb7da790000bc74636774a30000c93c1b746a8700008a2b49a935d700000b5a17fa60800000d3fcbe12835a0000353efbf696fc00004e5f68dd146f00002e9ceb6ed0130000415301b91f310000c6d7e1e60c040000e7243f77d9300000f9cab3c911160000744cd00420680000d18c528772120000beb6c62804d00000a8ce24cab6c60000f060d752cc8000006d4741a12a9b0000a786e856ac3f0000f2ebe270700d0000052e4ff193510000b7affef879be0000423f0b5e7df000007af9a082c38f000044fee52a57c80000e29ae99efeca0000f5c403a0af5400008d44824ea8560000604bc589618100001174ab9476230000122b106362c3000046f43ff79b6a0000e3d4e365bd0a000098aa4b1aa4d50000b88f3eb7964100007ed56ad0c1460000ae47b3df790e00009781bcd8ea680000d8281e43e42900007bf0a7d40e8600008f946fa039dc00008a9070816c760000c212c04baecb0000b8f40a60b6960000af2f6c9b7f840000d707ab84aba800000ca58e084313000093239a5729440000af26c297167e00009ed60cca58180000f1cb785dbc790000977fad0194250000a3e099cf1e6200002bae80cbdaf10000fcc42a2174a300005b813e44ce790000a9e2059e5d160000ee66ccd31d2c000069f1a7f761560000f5682f7aa17200000eb73e07a2b00000f5d1c008044c0000f1a5018054d20000a93f81a06d8e000026ad123da2bd00001a4e3db59fdd00005deb015c3d540000c41e9e304d1900005b823c5619770000dc7b43d1ac0f0000b2bc3438e89a000043262be2bb8e000058bd9d793af2000062e05f64d85b0000b188f4a902e00000727fc1f23a6c0000caed95db35a5000010fded57b2c20000fba792b243830000245665c1f61a0000fd83f0c0b2390000d9fab2306755000022f24b8b8fdc0000eb1f8ef23c190000b4a8b47d8b45000005fdc0ede41500008318709a98cb00000934ce4328640000347ce21e06210000bfbb205fb38700009c99921da01700006894b9c0bde00000e2894d4c8a9e0000aa6fd32ac53f0000376d1a9cfc50000009e42f63f4440000ca4f5006647000009f738bcf3f0c00005913c2378839000054626b483fe800003039eb85fe1600002febe64dcf880000a2027deb41c800005c26891c1b7b0000573a2787fc6d000012516f4d1c0d0000f7cf2ff893e700009c715eebdace0000c57d0d51bbe300001dde64cbc4620000871b325e3d6e00000983b9e1e9680000b789df20f86c0000adf4622d5520000074817211f68f0000a1b1ffe11ee500009901073b5822000065713cd647880000a9ac570de6e50000826db580f56e00008974b23ff28c0000cc8aab799dcd000046cf07ec4343000091ca2d0e20ed00009c5beb56068b0000a9a9cffe98be0000dfde111285ee0000a272a39a45100000c78a44818c47000089bb73eb8e7d0000",
|
||||
"output_hex": "e33833581986000046cae0b3b16400003b21dc4cf17700007acc0932150300004a405b02ca430000a3c6522eb06d0000baf8d7b30c01000066f81ec86b9e00002eb690840f70000002f25c4f11a0000076ada1fb618c0000c23093570e5a0000ab5ba05225e2000095aa3e94376e0000bce5719a17c90000b3ce45e9daef00005e7a6e7a5e4700002d25e9f19ccd00005a31156a8c5d0000a1b5d5d4ce4b00007f5e85d7395d0000cda3a0bacb9d0000513855e499180000a5b95bad0c8600002718965e76c500007faaf1d2d081000093f30d6ef36100003e53971251bb0000bf1f81e0319a00006f8ce8165055000034851c6fe89a0000967c4b0d596b0000b76b85a846b100000e6e47da9a6c0000833747e3a4100000d819ed256ec700002a42c97b76ba00003414a50d582e0000be2b3529855d0000568b2075bffa0000c4f8e8c730d800008ee3cd6e801f00007406ed9be77d000055e0ce1c9cf30000aa9a137ac4260000aa1ffa6ce3e100007f37172208a80000f17c4c5367b2000090be069fb7b400006082533fdaff00006188592713820000fba26fb7a37e00006401ec21209a00005cc9742fad87000016676b73943f0000e812f79c9475000004337a18fa5f000004ba0f2677ed00002157d85d7322000093e5daf99e9500001089a59e43f40000a0c2dec759cc00007a73a642cd290000ce787854d1440000b8b5f1d733550000f7f425b6911b0000acfb9497ba510000861336fbfedb00003560fadc61850000a3777167f6b800006229a242e6440000a04df6011fcb00000c734c6398220000b4bc22f633c900008652f86f123300002ad54a5934540000fc1bd43c5d7b000030c37980683f00000af3a201f7080000f707100e00f30000a7997fedd36000004b8ad79453bb000012a957571e8e000065d25c8ac44c0000c16a08b71cdb00009694ee41ca3800007b17377d36fd000001140921f6aa0000f3544dcc26220000816a85c0ff3d0000a15107562cba0000e29994f8a4d1000005b47b1433a40000ec3d00d7b59600005a6bb36d429b0000859a7299a3430000478cb0dd166d00001b541a7e72fa000070edc2c076ad0000e1890cb5eabe00009ced6e4412c400005f7114fcd832000021db7af8bb440000468eea19ecac00006a1ffbc926520000e97faeb767c10000be61df7460cd00004b1c76ff73900000207a38718bf20000d2f45fecff840000633fb9a3c9b70000773dbb013f420000fa038636fe43000089a8ce20594000006240b158c3220000bca8a1a19ab0000071f0626b6342000085fdff878d0600008527333a25020000894ed00757870000e73d620808b70000f6d5aa933ab40000c95010beeaf000000429aafff24700007a2f25a28b170000d26d531585cd00001246bb4a2c980000ddedd8526e2b0000e514e54b98f20000e8a1912c3fbd000072b9cdeb34910000337e8590c34f000031602ab157a200000f90e2c1a0ec00002b76daae1ecc00004de8ab6e5fd300006fd7bb57438f00001c82294d0c9a0000b79db7a484960000defa259c4c580000740d9e261f6e0000a6c17a89152b000033e327f1a53c0000889556d96e9f0000dd7081e63ff80000272978c10c5400003152e997be8a0000bcb5e1e602a000009ece7ea679c800004a0dc8f4a6da000023f87297c7100000f431425e4aed0000ba149df1650900001a0e04eb05d60000c1f97d84c7f80000878f153369cf0000f91db09578810000112516d961a7000000c8d0e465d200003e6ac63126f7000010d441022cd1000051ef0624704f000044930bbbe30a00003e6865f315b400005f439cacfedf00003f5dcf5e76900000c26e239544d300005a80c4b375880000aa08d3a0141500008e9fbf01d63b0000ef16c479f31f0000618e8149775e0000b32f13da545400002e7763a8b6060000bc5dd5157ea20000de2054c384ef0000a2d3e25672480000ddce985f94f6000079abecaea51900008855d250e8020000c1ec29352dc30000d35c457ee6600000dc7a8aaad3690000825be0265750000015262b41be9f00005a6d9ee8a70d00000b0e2844e1f300007b4e2e4751ef0000ef71587ea31100002b59c725b7dc0000654ab9854ec10000f353c2f5f1c00000eec921de6ffe0000f8210dd5b5ff0000896f6eeac71300000e677ecefbe1000070d431ee2040000031ca081bfa67000031f4bfe32aeb000099880f779d6500001757c8edd64900005c436d6892c3000075fc52a64bc00000bda01c4005300000fe777ce5fd44000032a4a34c433900000ca43b9e109c000064b6c4d9b1fa00004775dfaecaa70000c63666e4cb0600009878b31fb6210000f7c76175c0b50000d186aac391d80000647e3d2c86c8000023ac212ab31e00004aac53beb9410000ac518e66b00f00009710f6e4f0890000da31a0a9998100005d26a60e3a7f00002b54970eea910000a9793da8e9c5000079d4a7f39ff4000018e1e991c560000085b5f19337640000a11307a94d0600000ad57bf16ccf0000cb0823eec7050000aa1fa904c49e00001653a6a95853000020c585d539d6000051dfd54088f0000014b2dd449cbe00002e23495803340000e40eee48ec070000e15a7a07376800006a59279a7b440000853365c7e43d00001bb7f796c7c2000045527e20e1b50000741f06547c5e000067fd6431827b0000abf269f41589000072b944da792100004a20f90795fd0000132e165652ae0000c52021e1db3c00004111e4d4f0bb000072370556142100008730799d72350000cde6bd7770fd00007fe1ae0a93220000e98efcddb649000020f02a4951f20000ba3b32f5a1050000bcc3dc34f9890000",
|
||||
"output_sha256": "15e5b7929ed0331ea15a69e6972e0e33769f4df282358b629eb3cbf477050b15"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=7",
|
||||
"input_hex": "745cd308ff3900008e8b6bff105000006e82a8b768790000d98ed8aa24200000604489a7c90900009a6e4694f8220000dfef1604eb9000008879b0eaf0820000ff9bc36fb40e0000876ff1103b62000079b7a1c813fc000080fd661f22eb000059e6aac94a330000df59784af1e2000033097700550f000050ad48b5604e000019ded3ac6be20000506b370dd0da0000baa2a878060d0000307ee56bd5b000007857dd0056550000017387af0ae00000193ccdecd46300004ea3facc21a60000cfdac66319a90000b65156ceb80a000015c9184260df0000b172424bb77c0000d6712c8893d80000680f4d287dd90000361f26089dee00001636cb4195290000b12ef36d80870000e598881213b50000e2b00813cdaa000040cad80b23120000f52c24c650bf00000bcae67aed5c00007f644ac65e620000877ab60cbd700000204ff90c2da800000d357adba21d0000cbc13ab843860000cc1c015f39da00005fbf8d1c4cd100007743f130d31d0000bc964e7a855700000633bc52d0c2000022f1f03ed15d0000746f9cadaac70000c38aa2005bca00002641af98af650000bc9f3ae0c42600002fe1faf95fd300006c8598ef2a680000d379c5c064c000003d792a9d9a1c00007fd5c0511f6e00003d90db383f9b0000da5f346e708f0000d8467be4e195000042890b3a8c0b000065c5886b247a0000217df5bd7ee400002714faf9d4d400003f02f858ef25000048f1f2050c9c000072a8ec284d0e00005d0747d2cd4e00009706872c93250000a109669e49360000fb1a338f17030000bbe2e82064fe0000fd8cf0db1d8f00009bce59a101a5000014d0e2ccab480000f1f2645cc4170000798dce55a9460000ff92c7f833c200001488e5181f17000026b04b3ddb0400005a3f7b830e8900002d5865086bd700006ec217b85d3800007309fc25850f00008455cd4db918000047420d7120b300004d056ae1111b00004b0ec7f9e00700007f7f9c8f846b00007b79552259d000002dfef095eb6d0000392848c9944500001c4a564e5a210000e01e849b2ed80000465eba76280600000baf20b77df60000d22901760f5800004e14b21883a20000bd3fa7c7329f0000e7a3459caba200008595bceb2dc8000005b2759bc702000028a612e75afb0000d46d64c8b62d000045bcebf1e5400000c522a9e90e1500001839ef4b7f1d00007abbbafadf3a000096b5ed5eaa69000004e0336c414b000082e0298bfa44000018d2031fd27400006954053bc19200008a0ff7b291e70000d2a31bb1d99700003a94c02cfd0400003bfa517d81130000da579efba6a90000d1768b97c67800007504cf0ef6bb0000b717f3fa84de00008482574f4f160000a3948571e99b0000493a9117921700004d98efcb958300003941dfa3e2fc00004608ae3fc10f0000069d525622690000d3d62349afa300005ed96744f05200003a64e1f41e3d0000a556d2dc8d6c0000e3dcd10358d20000c6e9dccbb0da0000d98853013235000003e97dd2bee0000050658cc4abcb0000ccd40257c7290000b6cb40a50b2e0000507b9b9ac2dc00001221ca8d32a90000877bf1edea0f00004d502d33825d0000b542fb25b03b000040cc753bf2ec00007f1a408bbb4b0000e02c01ff6d4d0000e2f25996932200008452b4ae17ab0000000cef94b50b00001488ec0b904b00006a8dff7aca2a000059164c30fa6a00004b82d0d9ae5d0000cadaac54809c0000f6e8c69ea00f0000bbc74dd4547a00003e6bcb1a8c8c0000e3a52126a04500007c5e7bd317c2000010e301f70dbc0000d428646a3ef400005e4cb942962a00007c75a6cf667f00008f7a3f63281600001b246e27fad90000200cada5b3480000f25b8e59c5c800006a9f2120ac500000208c2d51587b0000523923d4e030000083407897239e00003a2edfaea3170000ffd70b010caa000052ef1b36ba1300004ad245b64eab00008184d46742a30000a1d0712833be00003090b9607ef80000d1d7e98c6d2c000051360aa97c0c000099cb89f0f60a00008c1c539838750000e2939f32739c0000e65d45b2460b00004358a635a02e0000d280dd8efddf0000e9e4c14abe100000d7f9c8eca83300009a6315dbd8800000921e1f9d2c9f000053a321ca9904000076b7753e32af000049adc3a56a3800008ab7f4a42deb00003e866629ddd5000014f0e015ee300000fdce6d11195300006d3dc3142fce0000b64a046170b80000bca9158bd90400004acfe5e8e397000047e973c23da70000f27b655926a300003320a335afa000003bca17ea01b100006f4cb08eb69d0000c68768eab1b40000b3e730f12ebe00004c39e55f6a0800003e14c3162408000003e3c56e06200000e4cf1a7bf6e900008fdbabd6966b0000cd8e79edd6a1000088727dcc1ac30000df0436f6c4cd00008e9c9eea4d410000acc1fe83bd3e0000ee506fdf0aa200003082c6ab88ed0000caa09829d5dd0000149f647d3f3c00007b7d102ed9490000d6860c71458e000023e9d818b0f3000089884dc28ccf000002ba169b7e46000085569f080b480000a64c601dac8900002f0490970def0000ffcfb358d3bf0000f49dafc9fb7c000092a54dd4dfe60000f3e221823566000008b174f90e5700005fa997ae592000000bb8daabccad0000656f6219b77a00003c7ed86f17540000bb9ba421b1700000da1952fe86c1000031d007f01f000000cccc34a25ae200008aa096f8530000006b5a24a692e50000b3539279193600002aada782e75500004a3e8c3370710000cd58f0f9aa670000a6f2dc9d0bab000020cc2e4561a10000470e589d323c0000ab851b2e4f9c0000e91344c176830000",
|
||||
"output_hex": "3030ca12a40a0000e23ced9c330400003a005b8c8f130000eee44a86f71f000078d5514235450000179a0f27580b00006e3ae155939b0000ad1ca6237bc20000f394b68cf6ac00006bbf9401ee4f00007930713c4602000028c3f898ce610000994ba1a7ae570000309def20623e0000e34c25e0487b0000259e635858210000b668f41875c90000f551170f2cb40000408c92e659d700001dcbb25494bb00002d8da28006200000e0639bd2008d0000aabed5ec114d0000f54799bb9a1f00006a72955f000b0000d84d264df605000070b7ba0f914d0000c0db8d3744440000f937ba7e6b4e00006ae2fc13e85300006410429a890300009ac082da12bf000022d3716bfec500009a36b7796c410000c3556164621a0000a8186b9ad82b0000487a5209b97c0000a4b1a6a1915500008cf90d27887e00009aa6923c57bc00002e1452a9008500006ebba846dc9000002a74294c6d87000041e67b19e2bc000011317dff3e080000e75a8948595d00005ee5da8445c70000d4a994aa76f80000bfb8d7ca1e0f00002e1c118f6d810000fd98ca73c0ba000088cb45c8f64d0000bfbb64d167140000e7df6f0ffb4b0000db2dbfb1e86d000088cf726dd69a0000d1595167ed550000654d5e2eff9900008435930d2c6b0000b09f43a239ce0000bc984b7b2aae0000a0a3bd96bbf8000044cff2ebf46400002d9bd899a70400000dad2fc09907000088a92b0199de0000be698c73cb720000d57e99a7f8d000007d3c069cd9440000cb8a3ae481a500004608d0bd97900000527d8e463d3c0000ab93bcbd1a6b0000b2c4808e36c500003628742ca3cb0000f1e4f41200000000a5fb08bc582d0000905cc38cd7b300000c24f7d64d0600009974b4182e7400004a09c1c866480000bd3192feab5b0000f92c49df372e000023b20b482e140000ee28f9555ab000008cfe1eccee420000f81157b2c9bf00003ae3a0f4757500001136fe9e286200001ae39a758f640000df945ed76ca300009226b4e84e920000e86b5e53927c0000dd848d246d7700001db00f4752f900005d36be334a67000000bad512689f0000fbd3add68f7b0000c22bd2edc0bc0000192e320a767c000095dec4276df30000e079115b1ad00000dc26db48eebb00004cccff67e3720000dd738657503a0000cdb9036b61950000808a75a1ef660000924171342d630000297b15537794000027117db3daa2000087035d7f4c320000e44b48be1a7a00004db13e2e4e2d0000500bda8d43d10000b1a27c9a347d00009e7e919dd2a6000081120f1b48510000285269b1f0b90000c9813f20c458000040f56c27d1710000e27ddce68172000085a36aaac2b60000d52d2718982700006f4885b5a59200002bbbd10f173c000045f5e337d98a00000da3f2b9c10700004554b99e5e3a0000db77a1a797ba00008ed59fd517b300002fe881fc97790000f148a7a52c4b0000e790828380430000be1cde9d62470000ec3d2e829a610000a9c4e9cc5676000035985f20c3430000e9ea600ca05c000013b0b25eb02c0000732022d12bc500007026e6a61b2c0000734cce0a5e5700009273eaaca45c0000ff478b0735fe0000be7f8f97effe00003100b3d71fca0000d1b7a9bcc8f900004446c081c93b0000fa16306f215f00001409c78307a0000085291d0142d2000002cf0ab40ab00000b6a7820c070d00003799dc46c109000018a434f7dae000003b0184ce9a1c00002272a334a2550000aa132aad4b5a00008c2827fcd283000062709e4dea2b00008bb722a1ee6d00001e19139754f40000d88fe3be6b21000074b90e73efd80000c668f8758a650000096bd2de78e90000b9d79d442cdc00001845471c2853000097cdfac227a50000a5ff0070b41b00002e4ef7364d7000008889736a5fd7000085ff1433771b0000ffc7ffa580b60000031c00917e360000b2442fd95ac300006aeefa6bd2ec00008bddb9211f25000064d5292a9262000013c43cad22400000d68b935396840000e19ab2e1b97e000028b479238cc300008710a078705f00002d53f4636ec1000028495790dae00000750bc6212c060000e75597034838000075e7ec973ab400003cb30202647400007e8cda639ed100009b638a1c82250000645c3fee86c00000b702ec279b7d00007bfc1e2e05fc0000b1605087fdfb00004af93fc250f40000791fa25568510000af7fc86c0c740000c79fc3fa5c7f00002c242534bde700008b1ec633fa9c00002221d9dab5a50000026e2f3d838400008c4014a83df20000c056fc41c0c700000b57eed4c44500008583ccbff2c100001299ee2dfd6e0000babfed6fd00b0000634e12f1910b00006dee1fd12239000070761b47191a000051c8f4cd5e610000d4370954aeb20000d687865043090000d85224f07d9e0000dc1f8410ea89000060ec172b3652000053005d4715cf0000cb8941573e42000086811769507a0000700a5bf4a3f90000f0126be7a7520000a0634ae4eb9d0000a00129bd51760000061483317b660000999ab44e11ab000089707cb31c1500008d9aff6b40a80000d40daa6231d5000018775b17fc380000e611361817460000e7b2cc985c530000b7b364d5801e000012d0a7c6629a0000ad7153dad951000018e7f85ab5dc0000280db39e4f4000008dcd28e512b4000056770080c0cd0000e2989cc666dc0000eae987fc8a660000c9f5a17e1c4800003594cd417d390000a3237a11a2af00001927f9d008b8000096441e4e233f0000df6109f33fc10000919b2499e28300009a894811b83b0000b4870f66b4f80000a6dc872b6c450000579eed29775b0000657718b5eb6200008e169498db240000",
|
||||
"output_sha256": "977b8107f9dc9fcfebc3a9f76473fe0759f0961b4eb6cef392cbd0c00347a6ab"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=8",
|
||||
"input_hex": "02e62eab10a400006cbcc30142240000d807508ff106000047d43ce37ee500004f7e8aade64b0000bc8cde167d420000d37a236fa59f0000226efc87eed90000fbeee725f36f0000ce50bdd121530000371d60ef7b1f0000e25550a2843700005108ba73e78f00003ac01edfc3020000211df3676396000059bcf4ff8af7000029449f84308c00007857e2889639000090583ed5ece20000480b5b9353540000a2928db830dc0000a133f926ae2f0000d0af11981c820000cb8c07f42e460000b61394aeb278000009a46da6594c0000b95900db9b08000058ce2dff78f20000a682c4732ded00005ffecdd3ea4c0000c12199ad9e050000f1a88b3a965800008a6d8c4eea4600005db0a58a9bbd000060394c71887300008920fed5a5c800004e76d3678de20000f2c02cbf13ed0000c70810f9fe2900000dac2cfd2d5500005e4531c8f82300008df3aec1e7c90000142ec76e868d00004471a099388b00001a1f1fd3d1330000cb0e0eca2a910000b85f8d8fd38c00004a7a9ae9ca12000040a98a4897870000f25f006bdf76000012aa92e568ee00003de1b61da9fc0000bf6e69cb936800002b00e542c7ef00009533c17684d100002873884daff00000fb3effd2dd9800004af6bd35ffb600001e9024cdc3170000439fa2b53aeb0000c11a95a973b80000eeb0ed56c56000005403e640ff630000b6c4093067d30000f2aa9fd11f9400007ec80f7c742c0000210c0dbb32120000e3b7bbd2e9a700007220c54ead350000a3ed3cc273a60000ef3dd7052df60000ff20382c87060000f872a9f4008100007aa1b8935eff000060d08bd0a9af0000b915262c25190000266968cec88200003fce3fdaab980000707fc973bc400000df593e0b78610000f5df4884f3b000006314af4402a50000a79002e6ea5d0000101a55b741f7000021090af1b8cd000003ee62f1ff4b0000250308e327960000b37e0a34983300008be16804d7fa0000968f7584ed0f00007a1550a98f4400003543081430a40000de01d548c9500000f8dc18c83ca00000aa28b716b05e0000078a121aba030000113e02db4afd0000b9840da2ab850000883f1eaad02f0000ba32370868ab0000320006bd075c0000513e3891decb000060dd3868e0b10000057e22eade4600007d2ae360e6e300006fd411ac783400003ac609be3d09000071ddf414d63a00009984e1f6e97a0000a620d849f5c300001fea053e21db0000fa009902cdb700002b9feebf98e700000b52075c71b5000079afd5c3b263000058d35d47e95f000033500b3ee8fa00001efb8edfc369000068ffeabf86ad0000098c205a4f2800003eee3bf5e64e00006624232a698700000bb0311d48b500008498cc9f42390000c71e574a0fbe0000df72be71828f00004e225f748050000044e25fec40db00001515533a44850000d4ae404431800000b8abbd9380520000cef013fae56a000006aa5df216020000cf8bcb8376f700002dfe59622ce70000def2568de8f50000b353c64192f30000c6fd41f28a9400000312f464df150000a34ab9bb224c0000ecfafb9c11c70000a06369175a3300005f4c7560bc160000f2c1e3d166520000fa36c07114760000180fc21ba4cc0000fc610fc80574000051f14787d456000077ca0e0abe370000d2d8bbc0c0ec00003637e74a820b000056e0829452c300005fa604b88c420000d656237fa3bf0000b4b5333a854e000045fe255691b50000f9d6a3e8e74f0000b1ace575dedb0000f5e860d8aed40000ed07255a95840000285720be213c000070df364e377a000008bb6b6c713e00006ccb3da969c30000ea418bf99a2e0000c49d55270d4000004560a532a9be0000b1d0afb2b1ca0000282614e6f98e00008ea3afc48dd60000d028040bd0ef00008f28e1f327310000ca64b3b4ae73000010bba4b3ac9e00000c15ba81490d0000abc12a83cae9000090912c03a36300008a566d9081bf000068b85b812f4e0000ad407f95747e00002c865c5bb7b200002c51ab2b66420000ec6e3d10114400004286547e26da0000b0f14788693100004801151604ef00001f52d572d6fb000000014882d8060000979da66549580000e92265c2eb5d00001b5c785136c60000af5993674e54000060e4d1e01d7800001cb7f995ecd0000056bdf7c009b9000063a945e7394a0000e00dd06583480000f954f07543130000e1d5f3feafc4000032913e3758e000008daf3a864a470000d0fc364ed185000062888592b7a50000124ea32c448500007ba1e5901e890000dd0db155e8470000018037b160150000c7bbf3e3678f0000615bb20717360000f9d4e1cfc10d000096bfff155d460000dee3564c13c40000171197f3f3f40000835239448b7400008726b60ae7f700003827b2839b2000001d6799b7cba50000c8494d3f06540000bcd747c373ea0000f2098ec13066000022f2c6af79a000000e1fdd08b79100006ab2e0976a710000b82e2d49ce9b000094308765e9590000cec771bc5938000058f30780b44200002742d66c90600000fa45be556b7100001b1f2d99a8320000d0a831462f5f0000b2908c27ae260000430671988750000044ca617bd1f7000013f144bf9b730000c3e81f073a5e000049aa6f081d9e000039cebae0000a0000c4b6a323d8b100000000e0701d0c00007f2f39db79590000de73834d26cf00008c9c383cd60a00004f42e3e9fb650000ce3e38cf8d98000069c812a87c9a0000226e368392ba00007b9f7092704e00001bf01ecce8fd0000d12d4426cd5c00000043486567fd00007d1a80283ca00000abdb66c86aa8000058248302e9ff0000562ce209a263000034b3768ad51f0000",
|
||||
"output_hex": "c4a89af73a6e000003fe16ca158800002d9842b4452a0000f2a6bbe5cb6c00001f3155c3c1fb00001648b0b6b0ae0000dc23724b61cd0000f94488833ea400003d04c1442618000019b0be62face0000cc218101181e000090fe678be26a0000d1d79dac53a8000028f1204ad4930000b0d5aa24442100000a8580fcbe08000087aca3476bbf00003a4553c3146b0000cc1c9cb8552d0000e80e63947717000019aca2e2e40c000013addecaccb300003a14d7db1e940000df33b33a1f040000f85711b41c65000018a1b53e8a580000420dfa1a7a020000b4e222d545910000ce93ef5a31d50000eddd0701ec140000aaeb871b05180000dcc0e3ddc87c00007316f190bb890000ffa4006712ca0000ab5f1b10702900002f48d73d17f80000e29b5982719800003c4423aa8f2400004d73465b1d440000fb5d6ff254110000e2d09d6da63a000024b4ea13f74400003503e1073b370000e34fee5f2c37000005b20164622a0000363dab8919640000e5c7cea7612a0000d81fbd8d790000008a59e51c344e0000e1a3f5e79e43000060d600f2f7d00000000e1e791a5b0000527c9907ef9a00001546279bbb280000bca2e112c0a60000ba004a1537c500008323949b43ff0000fcb2023c3dbc00008b25c1e2a8bb000020dba8c99d640000f24a7c490ecd0000f8134aece3ff0000bd50d608023400002c66b23c2cdf0000537dd260df680000abe26c0143280000d11c67da099b0000f7751cb7bf9c00007ba12708f2d10000bf20c4937e140000b51057aac4440000fe0d2dd00eed0000bfa78861cc540000316aaf6c9e9400001e14bc4c1dad00003cea48b2924300007fed6f7ff4b200004f0698ce24c70000e15d0be7354c0000fb6b3c0a72b90000f2cc776878540000e69b7100e26200002d3d729a45e0000047147c3b786d0000942f340f88570000f426f04906bc0000a132577661e5000073324f24191f0000802b3f001cfc0000822b2a383f03000055d748035ac80000e15f175eb77000005ca46b9242040000d33cf408d30e00006dcb1d9b974500002dcc8da5e5aa0000d77a24b3a2710000cce0ad1837060000a6f7543819af00000261b0f5ef4d0000e7b6bca1d868000096d8c86f9c4f0000ec6afb239baf00008c4e00682d3e00006a68cf08b1210000c8e3107c5c570000a05b25aacdac00000f3468d1660a000019dc227ce1c600004b3fa3182ea70000aabbf29c94a90000733bb93daf0800007d0bcae6c11000003faa86293dbc0000cc83cc34bc780000dc8f9e2cd6690000bc1c9c72997e000030d6871b238d0000a6df0438af7f0000b41a3846c2d10000919663f4a52a0000bc8779f80fda00007211d96cef0e00002c72fdb4fbed000046fae73f602700005234e489239b00009498a8fa8da000001477af2e72930000779dc307c1680000f280db7ff94100003e602e7b11c200004a785fa042200000ed17b9704b8a000067e45be47db70000089299a01cba00007ce060acb015000053e464cc42c6000069bc6aa196e300002f76c068f8500000c18c0b5194d50000e146ae24054c0000dd7637ba6acb00008592ce5671c30000b44b527ef43a00000078deb884ee000049df2a3a84c200007085e2277b7e0000795967eaa4990000bc9a7f4cf4270000ca47a970028600009c38c009b1980000583715fd94610000f11b76712b3300003909b42aa81700004df06a5adfc90000b8907ffaa0760000e1cf51ebf0f80000e5e72a6dad710000b43452d00c0200009c85be60666c00000c7588767765000058680661c713000076b8f97ff2e200005f807c87b9040000150cec8027e1000056bfd405fc170000a676bc3b9cf800006e51a925f854000001009795d20d00002f179578b5300000c20d89c6ab10000069e98240ac1f0000e2208bd44c3f00009950760ddda900004622570e44a70000b2ed84df567e000059a9191ab6290000cc8f01289c9b000069663173a8a40000b9ec7419b3d0000063d60db9498500007734a2ba610a0000d3ca82df2cfe00001bb6fee6a3530000847e48fc5e3700006c390a2877ec00009810ddec57fc000037d5c2ee52fe0000259729ee19370000c0d1385b01c10000ff4e4c2dca210000a8e5e73b57450000ddfa606e143900009ff3b7957d8c00000365ce9514d900007ee8d39c6f3f00003bc24542179a00000fc39c37c2750000be69240adfa1000041c3ba327ec70000f8a6516819000000c5be1a58a98f0000c97c566127e2000087924862c4100000682586a7c01b0000c00220c5c4670000938ba05306bd000035279e20d8c30000c58022bf66070000cfbe13323c540000ef6ec6bb6fa60000c57e1e303bc60000c78cc252510600003d9deff1380000003e1cb2c093e5000076bc237d5e0c0000ab917993b90500003ab7b9494b4d00009a5112c937780000e6781b1191f60000f25c78905c330000242b84f158d8000014e7a2919d5500003611dcd0d143000008b078dfc3930000ad4e6c6b7f800000dc6d020d2e1f00003e3326b6e2f900006376efff276900006af15a1e048d0000a4936b745ee700000ab6a11953080000e9e6857f11be0000734d5e6cb4eb0000d5ac8310b3590000e78bf2990bbe0000b126998b377b0000602a3fed08a300004fd77f2793b800009290c7217e30000095d38852156b0000638de78fde220000cf66ff9bddb300008cffe6d2b6790000180895e2bfb40000fda672a9c80c0000e89f535e4747000025b70709d038000070845b80871d0000cd1d210b66870000c09620f0a338000046d1e472a22e0000e4d5a1afbd0600002787500608890000d1cdae9d79de0000db4611e869a70000",
|
||||
"output_sha256": "1f6b6f51ca32da49f690f49b9979f6f6e873f523f84f2fa2ad35c4b4376fb4ab"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=9",
|
||||
"input_hex": "78e3f7219d86000002e8a4289eab0000c444180760df000071784fedacdb00005c436772645c0000d0487772839700007f196b7bf3240000e93a601707f20000a4ac858a94c60000d5c6a620b61300005c921880d42d0000ebaf8263a4640000eec00d6be27600007cb57c7d61b400002fbfc7f8904600001b6f592dcb370000a5ae79a7132d0000cbf9bb5edf3a0000adf86a766b7d00004208512682f700000ecdc951df8b00007aee51463bc0000017e01dbe08e400002b6af3801bda0000e2b1363769f20000ee88b1a66011000026748629bd1c00005862814bf91a00009b951864e78c0000d9df0f4b9bb70000f91641cf54010000657f1ab056a900004dab3a3d43de000045f7cf07e8dd00000c93f37f7ac70000f84b87ff82a30000b6662b9e6c7b000025ebc6d2d9090000eb801e1edda2000009fe1c041a790000e9c42d95839e0000b2a5921af1bc00002d7ffd761e310000f4e8071aa3eb0000fe80f725a52d00007a5febcedf0600002cdab101180000008c2aacee9aba000079066c7fa14a0000d49bfb4c015f0000b20495fc5d330000af87b5b1069000009f89f5765d5b00004799f71a30ed0000fac831c4abb800007ceef4c22a11000030e466fd48bc000080abcbdcecd00000b2b07b1d29210000d118e21acf960000cc358444c3760000d760ead83dd70000177ee44432c70000e8ef14c1bffe0000bdc6e47585140000d579101087bc00002612df2f741b0000459183e9f5c30000cf740bb6f1b900004281ff125efe00000695e69ce5190000b162058e8c460000308d931bf6b50000cf89f1cf14c8000070cd5310715f000003ec1907f56600009705a265018500009f20051e1eb900001607a54a96da000017a5c25939a60000c795d8e12fef0000cf9a2e023aee0000d0c356c8057c0000575c30b11b900000a0f0f2115c150000ec8073e360ea000004a4674bf934000061f3658ab9f30000dd1e9b0b3ec500004ea79dc1bb9100005ec15980f39f0000a8ec67d1049e0000b4973026959e00009a6ccb16666f00009ab4adea8d5a0000f59eaedf90be0000ce7d9d45ea650000c59621d722240000f84f7b6ba9ba000057d6df4a0e750000be3f529467500000f2da1a853d31000096c99edca1bc0000e46efad06ed300000c7cfb7d8d16000027b16d88aa1c00000b7f973917d2000036d8ccd38c190000efb975db70da0000fe2b373e04f9000009089389ac1e00004610758f372000006fdc864e9c1e000032e4a51678f9000019c1fc68ec1b0000393e37c952ac00008d8c6b7c2c420000bd44dc513e6b00000e88ce9f7f7f0000761d8f579acd00007de6962617870000a873b75a654b00008a312f40b0150000b8d86d110459000009598e0bccc00000d79bb83fd6d200002dbb45e8ce9b000015f951d3407400002e1d6f42d45b00007fbb73121fe00000305f3170a1f60000a560e7f62624000080e9e5d904f100006b266184e0160000678c89d63db700008ce808cbabb900008b679a226795000029d38fb6983e0000f3f833a4381a0000c5416028599800008730dc04a3b100001daa338207f400000a24469510d4000040c0180eb1d000009c1512fb4f840000987bcab7507500002d47d0978e5d0000e4c0e30712780000d8c9ac0c3f7600007047ac02bcd2000099038afcb7c7000041fad7a1ca2000007704e22abfc50000a0b6a13c90d200004e5ea5841827000043d295eb35ef0000566ddee6ce5c00000300d480bad900007a088537aadb00008bc5b00eb4ee0000f3ee9b42bdb100003f42a93ce2270000968e138e63650000e5b5ccf168b50000872985e058aa0000bc78988989a200005bc224d4d73d000039b1822e896b00004d5bba3cbdc800005734d7765ea00000cd83e0aa98450000fd714e88449000000bda52ff73ea0000f0b8a2766d0f0000bc370b13f08a0000d2c4528547710000ad591ec95c220000c7add7b706b9000003f12eca533d0000a1fbc90b6218000010bf350474680000c598cab247450000178b5f006b2400000815317887120000f8360aaaf4530000262ebda200a000002011865b60a70000020902c0699f00000bd04594a2a2000091961d2263f30000ea05f77708840000762fdb632dbf00003da4b71963540000c67acda9ad320000112aefec0fbc0000e86cbcf7dbca0000e7de26a7fe5300004da30c34b73e0000bec3e59066cf00009ee2683b590f00004edb9bf139b20000708152ad5dee0000fa21af47b16b0000ad1e6a7229220000831836a3fd4e000045babb754d22000034af3504881700008197d6c337b100005e6da18aabfa0000418fcf2fdf060000ca3c69c3861100003efee3652a2700001aff716733e50000f25aa38036e800007c0864b29c1f000023ccae27edc3000017e88ffe8f0b0000f3ca64d790ee0000504a6c37b77f00003c1a2312489d000040f37763ffa70000d5081a75369c00007d3911e1044a000057786fd8cc4700002bee388a6770000065d12d34e5c6000025f22d531337000088732139dfcc0000e194c1d1e4690000aaa1f86aaa320000aeed7d69d28600001ffe4989c14e0000dcf8351a2fef0000af2c315aea53000076aadc04942600003fe4efcca77e0000ee9af0dfa7320000c8e0a5ee1331000065e3a181df5c00007a20783442550000f11a9e95b38d00004c7e0cbfe6ee000042de4c41efb100002295b820079600008d32f3341fb800006c4a4cadb82a0000b027485d541d000044621bc394ae0000b0672c01bc9200005a6348d0424c0000a740bdc727a10000c881c4fd62920000600ea7b6c15e0000b3d8bf0414ce0000577e3a587be20000ff6ee63b19280000",
|
||||
"output_hex": "d11b9003f2550000765448952e9100009f676be48d0d0000ed6209f84fe20000e800075d57c900009ffafc685e4700009bf232f0f72d0000e09c305fec7d00008a60a18fde8a000052ec0b01c74d000073c8f6292e7d000052333245183e00001805141bc4c90000677f2f4c9306000095db7015c9de00008a357b5126430000c11c7599a37e00001e53ab1a23d00000bf73ed06a48c0000f38db8bc961a000037e4587b8132000073946a64c08b0000a44fba20b8c7000033f3f9704c1400005755c7b4b28e0000adf6d91f068c0000f84907c9226f00009dd4c8ea01ca000068a783d06d06000048098fbae14f0000e62c28b2844c00008eed623e7093000029deefa722bf000080e6452ac7a900003ef2840e12b2000050b827357eeb00003e050905b91000009f9c463466060000a2e210a1433c0000d85260b1fd540000060a364aae3100004b8d29e551b900004b495e2a38820000b03997d8df2b000091ecdf1afd5b0000b8568769a34d00004b82fef9c64600006bec876df5fb0000c7d280be27170000f28f02a681ec00007de862e03f1f00005fc117fcfd9c000034d17e72a95000007840c88938af0000fdc2a77c8ec9000074928626f27900007868d942cb8e0000e516e571f4a70000c8e6953e90b600000bbc1e858ffc0000545caef932e700001233bffd670f0000894fc0dcc30e000035b478f474d1000001d8cbf5a25c0000707341dc3d8b00008851c63985d7000068fc53f7db430000c40dc39c12f3000091647c394e56000038aaabc92b00000063b3c2176e4d00007678a863d48b00009b106ef0a7750000146851f9c9d700005ec91c9c85560000d9cf84e338530000fce80c6282760000cdc5f839d8d90000ceb851f86d730000cc9aab2b5b150000d97aa13993060000dbbf5c2ae12500004fd7997ee4d6000058f89a34707400002f9421b18843000026071a022f150000f2e8cc8b86ba00008c3a97fc413e0000649919594ab20000f0b467808f7e0000d416fd99262200008edb677adee20000d62123b341a1000000468351bc200000e6312a00ef720000e27e7045c4df0000f32208e62a2b0000805198bcdb10000050c9b010ce140000a7a3bbe2364000001ed3cf12626c000071e7b032be95000021687930cf620000c705a1d52bc10000c3939abfda1a0000c11dde0a6382000018169a99bde9000007608e113ac400009425d6cfdbfb0000bba81fbfdf0b00006988fd0159f00000507c7cfdeac400004ca08fb3fe7600006ade80bf0a21000082138688e1730000db19c8475ff900007ebb2f47d20a000016642d51667900004d3ecd946180000065685c8556ea0000081e7210d1bb0000144042b2f73b00000871da7a63c70000f974e48dd27c000017e697259ad70000e9308c9f16100000017339e2bb94000059df05d93aae00009a715da41f3f00009e6e3305cd4b000027e819d04f0500004fc8db58e32100009895038b4dc20000a0003214626000005d924f4f3c7c00004f21d72de6450000c9ad4717354c00006e215753a14d00004f76705990bd00000d12aecf2e1100002dad49d3db29000045831f9d6ede00001fb0792cbdde00008930a99b9c4300005d3c8a86daec0000507e1e5d2cc00000ea986b11c7ec0000aa1ad951c6fb0000fad00be46fd4000084817ba25d21000060bdcb133d390000b1531db2c2e50000c00678f3ed44000065e0144a2df900007fa58136496e0000c7bc841da7690000e329d00f4324000015410c74fa950000ba0f06699bda000024ac748ec8eb0000e2a5a6ae9c220000d472b9a6aca50000b7e9dda06c7d000057a5c487e8540000fb8e3da4533b00005baad0ebed9d00009bb54e94a363000005d8ee6abff300000cba6120f3a50000050a39bb1df60000d55cbaa4526d00002f963afd362a0000d3926fd8a3a9000045375454877a00007f102984fe6c0000390a0dbd9b5500002decd6ca1163000001dc453719110000e927fc5ba1390000d1b8159b480600008a3b8f3551d200002d908e8953eb0000320497e692020000e33d9a23bb770000e13cca4c8ac800007f4cda1a620400006f6bad20473f00003eb0985f308e0000a979ee5409ff00008a79470cbde40000029a0104d82e0000f52ef47fd7110000efe2f84b1de70000a0bf925eed8000008e8ccc54222b000005648205d72c0000273b41146c0d0000f6b0750d4b72000070b259442a8700007a86d8c847d7000058892061731a00007ae64d4524f000001614f44a8da500008532547f4c6100006eb13b4dc3020000b8a385b8d909000031e6d2a0078d0000235da63537ba0000b273c7380091000000bb5039f549000028e6df4453730000c6f9f069a436000040b63527be430000046d98fb48f20000913818764a5500007543b5679dda0000b11c5aefd65d0000bf52a0c5bb6a000006cfddb4d9db00004a27dcbc1621000003def275794f0000c6acd9d29b68000056a72e1150030000d0311e6923980000bd335f349e820000f034280bd0ea00003a1413ecf7df00005cc0cdb20af0000014d6318c0aaf0000d9eca591f0b30000661d0460b7a50000f6cbf6c4ec42000020c8bd1b8c4e0000c0e11139810b00005b7bab7e11dd00000b52ad40d15c000088dfc7cdb3520000c851c43345be0000ad945e95b530000060e776d10714000074291007df9900002ed7caebd8480000574a3aa67ce90000ab2eb693172f000025c8538254bb00006753f72995eb00000bfe20966ad50000e25cbc42c84f00002573f1dd721d00006bdd38d5153700006fd6e0a169d70000ce2a92caa4310000a4830cf0b8ef0000e0cbfa00b66e000024bacd05dd520000",
|
||||
"output_sha256": "64adf0d2a95f7aee2cefe12b56fdc47493cbdc20ee2b1082eb1a7b8489541962"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=10",
|
||||
"input_hex": "a285fd5419200000e20073b6a7b30000aaa65c03aa8d000068c541bebe8d00004d97f436a7f600007bba0339d86f0000d37ce86f0bc7000025562c0df34700000d9e2f339c8b0000ed2dad696dbe0000cfb5b455bb8f00005149b634a88e0000e388bccc5c1b00001bd2a5573be2000042b0615be8b000005d6a11b123090000775e4d1a40d70000e731ffbf732100004585b819682d0000cef7f0f7a1d0000068865a4fc3c70000d4d32659f3a80000b6cdb7b420b20000cf045380975d0000305422b68f850000f4d3fd5f1f9c000020ab3768fa1d0000c9794e93f08b0000642f607d41e800000d41c8c05d400000fb284995d4c20000b55e6306eed400004a59c7fed5120000d54fdd5758e30000e503b793ea9b00000e9a15b2fac20000a9dd10df7e0a0000803ae01d7fa60000f960265ba282000080abbf3f9c2e0000db90f07e496000002946e139a7dc00000166e9f02d1c00004351d46f3a3f0000a3f7d7b9e54b000083bfb9079e97000011c5a3d837e90000c5520281f1640000ef38bacc67540000f8e84ffce88400006286404410a80000248a5f3a95840000e26a007b3a1300000e573ae7ae780000a5c5cb53d80e0000d7c3407acf470000665e507073080000039b8832f3a8000070df4bf314230000c386045b911e0000573dc044fb9f000039ce1169a5900000468d1ffa3b470000b6b8da27cf980000af3d7788860100003ce0ca037cf5000057f9e459c491000006b2ce61ce080000cef628db733b0000390b3b654a400000192095253966000027adf45c8add00000911043eb37b0000fbd7f557531b00002921addedd5f0000b98bd78af0850000f174a940a89c000091dd69cc87910000b7dc70c16a860000c1b56cf556030000a6b5204cee620000b0339518314e0000b9ff5ce28e9b0000a699a61dca71000007c65c277ab00000d6e9fb439029000097e38a63eb910000e9f7407cfd0900007beb4e6fece90000fa2b3bd43f63000045978b6b15550000ee356d739f7c00009211ffe56ee90000155dc003fe300000378b06f0345f0000438d577068290000a78eedaf341d0000e89a460c2f830000cbc55c4f585d000075f673550f470000156251c140250000073579c2a121000090cd5b5f712000003a4b36c7ecdc000057343d83a20900003523893b269100007b4589676f09000075fed88cb14000002b78a6be14550000ff649a5e683600007cd08706eb4d0000827c243e10ce00005f28749c825f00001797d03597d30000addc2d0e4636000075d440c6d1d700009beedb77519800005dfcd7c0be3b0000875f8b0f60640000f954481a5f3200002d4097562afa0000bd87d37ed0ff0000505334ed9392000049fb9246f20f00003ac56bd022f800003f556885b1bb00000a2799f4464300006f3acd36fe5000008b952915bd2a0000d6fb29dc3b440000092e11e2461200009bb7bb54ec4400007d7ffa1b36420000e0edf709efac0000414f7553e399000055e2f56e5c1400008e3d2b4e66b50000df232b376cab000097976faef9df0000923f45af8f2f000027dc3aa6d5a300002e2e8d563c17000070432b9c45f40000b8cd218c711d00009936f280d8d80000ebca5bc63f3b000096ee2c5b31a00000fed05660470c0000163171927f610000c89b493910270000547db83807d50000b002dfcda93f0000943b14a135880000255ac62f6efd0000cff07df6f3d60000c29c21533bec0000bcfc3fffd4410000599a030aba7e0000ad493420aa5600001dc22f9dd50c000057e94c8fd92c000015be0b70cad400007e87378545b4000054b0ddbb3e0d00007732ebd0bd4300004bdaf917bc4e0000f8365d34e4e80000e08b75ab62cd000074bf1a01ddfb00007b8853cf020000005efe7891e2c30000f257585b3bea000075564764fba0000029429932251b0000661bbf2d56ae0000fa5d5658ff020000b95cf4e6e77d0000b669a9ac31530000334401f8cc97000055da7752175600005dffba02f6380000a99b3957310b0000b026e0b16bbf000035a1dff63c140000d54133126010000011d2a2b6bcd60000971984995f44000083907b66ce640000b7a4a26436b40000778206f732e20000078dcc83e9ce000098b5e76189d800002d118fc174c70000a99435ea8cd00000f060a3c6abbb0000e4267f48933e0000e9915a69a0d20000dcabb73ebe850000a1a079aed47d0000174ec6ebba970000f248ec959ce500000d1727115ee000001d5c531655c500002dc5a6785645000057afe1e662970000179a55ba0b5b00000fc74275e13000009b1008d5b92e000064638f6ffa05000067ea7fdc49e10000f185e46541950000980835b8c42100007f0dbed82b280000183aacc45396000030af90c19fc20000efc2e6e0c5750000e489c137b10b0000b1acef0757df0000be665e5f7d8b00006a4dfcd4d11e0000406d1d9da628000043cfccb145c700005b869c2adf2000005d883b83e5b500008bb032af30940000f745701bd1be00000382c4ebfbfc0000114e6e5363630000f1a306bc324200003cab2abedf74000057264aac90940000e8261b10ae3900004980fce102060000674c308402520000c459773b663500007b120f36d7b90000f02ccd4cea2800004c438e4c66bf000056c6e03aa13f00001db66058d14c0000b3521661b4da0000aa477a3772f40000c96403273ceb0000bb9b1ecea20d0000b21898052eb5000004b1882c62f10000c3cff74a11ad00000095857c87c40000eb1b044f718600005cf27e080b0b000098b9899f8b1d0000d7e71588849200009562d93d06860000433bcd5253e8000043bfa7e0ee5b00005031d17c24d60000",
|
||||
"output_hex": "4af35a031f500000eaa217db7929000038f88564d13f000064677721bca00000252b216ce7770000c1e84793c9fd000059c0bc0b8cc200006b812a1ca91e00004fcdc036a93900001bb8ba2d7bab00001a10a605bab30000b7ea32fafd5c000038954d48d573000050f36d1ddba000008794199177a400005ee9aad9f13c000080b1be71c7b00000f09586b9ce1a0000efc1f7399ca10000af432f61a76d0000553c92555d9d00002e59a57c83cc00005efeebf1159500001c0664c2ad4f0000df37c03f51600000c26451fd52680000b01be415e54b00004796d76c305b0000e976b01e61ee0000813b66d2279e0000ede788fbeda700008c15eb28a5020000c451130b0e1f000043f3918db96b0000909db62246c500005eaa9b9c69b900003ad195eb55ce0000421ec62e6e0100001179ae3a35630000ff3a0ed2c0cc00009e8e88e2a54b000020d02e52a8af00009d76b4f89e8700002742c8e47de2000083731242d4090000eb2e4b3879a70000b79a1d8a7e620000dcfc8bb3a260000094950db3b97800006d5d81e3bc0d00005a940ecdeab20000e4bed5c7eb0e00006de72b1f2a1f0000813d3fed976d0000eb622f29b5b300009dcfe10ec9530000a5167e808582000054c4e2e39a7a00006d295fe41e060000b0a1fbaa5515000055f07ec4b0200000fba122e4e5070000488df13a3b49000002a453fe026c000076cb5ab7f52e0000d2960c5e48a400007f0418022c5900006eca0e8f4cd60000c3d42eec7360000030bb8765717000007917f7ccdb2200006cfece0a05200000aaa64d7dad090000b4e805046489000035df3ec29f9c000099333146fc7d000034aadf20b1160000395237ef15520000b661acd8e24b0000928a7208764c000023275629a9110000a0227c6191e2000021b91d0f64c600000f64238382080000892692fb6bf600001f6d36fe115700003b85195418450000bcd0ccd174f90000438a54f74ffe0000301191eff3320000740ca80d368c00002a6135ef9a7f0000831ee714beed0000d4aa9640a30c0000676bd0688c2b0000ee47003b77e300007048aff50e1c00000a1eda846c250000d54decfbf4b400008d8760e8fe220000f3bd06c92aa10000a2c14710245100006c6d9f758395000074ef6895fdce0000766a825c3ae70000f8ac6383d87c0000304a771fdc680000d8d2e185535000000c7e89ea8e270000d6890f942506000035c9f46819af0000be9e7abe9d040000f8ec178f43db00003d795ce06d8a00004d61598ce6670000de5ec39db3d00000b078748d7a77000051b3711ac9bb00001f4abbf17319000053069b5f4ab100006fd7e1eed713000095775e0f4b7600001644bf27fede00006ef3ba438f4b00009c3d427fd4d6000036615d04750200006e5c380853e9000033bf334226f300005f2c99c083f9000054e4409486fd0000fc23c295dffb0000a940a7db8f77000020577154cd270000b6a1775fae910000833f16e5e593000014eb486727bd00001d9839128d120000a4a2e8399b2700004996309aea050000631215fe56ec00006256f567044500003e5ff7a93a610000d9d03e1ec0a900009a72212123d10000f0afe74350e70000eb5de24d18a70000694431f6a542000062e53947536b0000aaeb7251c40900004deeac38ef520000a58df6fd16180000f401127e918d00008039e03a55ac00003701e6e761780000c64151715106000024acaa804214000061535a10cf310000b09269359e490000063ddcfce5700000a3e1617f72160000640fb10f42490000e644d4651c430000ddb417620b690000cf4684cd926f000099d8aeea50610000573710edc47d0000f8346ec3babe0000e64139c5621200001ceb8ea5ac460000d140cbf3444e000030a716aa01980000fed2aa847c0800008e0ea014545f000027799f3bc798000054eed500870b0000a15c554101d400000011a60dcaa900006a3bd7306760000040c95cc0393600002267c7ad8d210000e9b20a4d316e00009018c752d1f600007878b60131eb000039373551907600002badc845ceb600005d325e16a0a400000407e072edd70000c4b56164abd500001be744be14d000008f2e2c4e77a900008c3096c146db000034727eb01e8f0000458b786fb8fe0000b9ba202f19dd00007028d7048d4e00008a2f87a7e3e900000d75d6d460f700009419a8dbe83800007ad7ba3a2c7900006b7bb493885f000093b29efb8dc90000d170036978b000004fbb6f9c319900009b045bd0e852000050cbadd862a800009dc071a8f2f2000089d70ca317ca0000f4b9ba90d1b400003712252debf10000da2ef6ae0bdf0000c309d1cf435800004ee5a4d78558000038965b76fecc0000b5dcbd3ef3e9000075c412c9fe210000138430df47ca0000e4abc77393d8000040f2a8f448bd0000069da0f88c1900008951446e30cd0000a36194c0635100000202f5d043e4000038d5633d7a2c00004df13636239c0000152d7e6aad4700005bc18edaa5020000a4df5baa613300002fad4f2c62ca000040cba79328e00000fbdd28bdb4040000598c505d7d320000e93cd2247aa0000026cfac4c0ddb0000d90bd0f15dcc0000fc8c2d5a71f70000f81aaace61670000adcfe8e261620000812f711e3ee50000ef494a1900090000454716a264f80000ff58040772af00000c22da649b0f0000358ef0bb8a61000050afccbac7c500009e505e488e55000064e2409e38e2000044e68393f3c90000ff2ecbe568440000c1abd7b0f97500004c0a5dabc48000000b872a67b60400004d90df58573000006abdb5c780240000718b76720cd70000c351082944e20000fffde9b93ee70000",
|
||||
"output_sha256": "70f59300c9f4df6a30a15d3494ada741c3cc86fe3793f5fb71e502877b848b12"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=11",
|
||||
"input_hex": "2ca2c204de12000032624818a8320000dc339a1a684f00008217c87904510000b9e5369683800000c63d01b3d90f00006ef50dcaa45f00009a3d8cede654000087b6727d272f0000eb7113d346e200007eecfccf0ccd000024c84a81256e00001cf263459a560000f7083d6f4ebb0000104fa0cd291a000081f7ff2767c60000587c6f55c34c00006916640e3172000073c4380a1de6000026aeb784d99500004cfbcd37171e0000e140ef434c210000ff74eb30511b0000ccd59971ba5b0000a49a46e475ea0000da10fd9f8e330000bb81177660b9000094ea128d65f600006774b6e994ee0000fc70d954a9d7000035a68c537f37000037492b986542000056c183022c100000977c91e799ee000003302ce349e30000960174c572ee0000a222a95e19bc0000c60d27aead7c0000fc3dfa3cb5bd0000296571f18661000079e57b8e68eb00000ee4d0e56e8a00000f8a410b0c4b0000d52e34540f8e00005ead927b331800003b71d746e9920000d30ad50d9a2900001887308cfa5d000049987ec5ca260000347efe42d1370000296c2ca457b80000fcc721a01e9a00005a5de0c0950e0000f52c6d27a7580000eb7eb589fcba000069a74280d0ba0000286f59aff4440000cd926cd59fb100009f62569c4f390000931593cd5931000080c868d07d110000778625b58e140000aec30005b91b0000c08524a891df00004051b808b2b50000695a431d58a700004284ea47984900003301917b2afd0000d18e90bba11b0000f9ceca2bb781000015768ad7e27500000923566394450000f5cb7ddfb046000081a7f667ef3b00004e70a5ca240a0000bb4d9147bc5b0000bf08730057fd000036d279764d2f00000f33f29233b900001c77913e0447000063b8267049490000348a8f9c75610000b39895d0053f0000fab22faa76d40000cb78ebdcd06f000079322052edf20000e40fce43d419000056a42c19a9110000ebacbdd5de760000a54c379449a100002b50b47509ef00004dbad38abcca0000574d88b8f1f90000cb06609b195b00002354641f294b0000fbfd5be110680000a6984cc13fd500002f865ccf15e6000006c2c7d9cb1a00004af1157ae03b0000543ef4131f1a00006bc44e7797420000e7aa95fc3ec0000028d0df1fb85b000070dcebdd35850000fd0e8a47e2b100000cf3aeadc9f500007e0334b10fa20000338c09a1bf830000c21e0fea94c400007c182de5b8c80000c2ba1a57eb50000049d9a74e5d0b0000fc6f25ac1bdd0000a30e4739453900009da8e18a4f3c00004e88842209120000d4427aef252e0000d89fd5e581980000f95a8020280700003d1b8e399c8b00000ac1d422e76e0000bc31fef0890500009c110e29bf39000076dd2c896e2200003eba77c335320000d5457547858200009de382805bfd0000401d6cb461820000458d80780a200000d647ea268fd60000884840f9aa520000762a734bdf1c00006c1537efbf5e0000330910f4279b00004a4892d4abcf00003524bbb3acdd000059f7ac8b92ed00005d11e1d4016400006c48a76ba7f000005c7967fcb7520000e97ac4d4be11000096af7d5a378d0000199f3c1a857a00001341d7313cf3000091c984261c46000029631e3f7d79000060d822610ca20000e8548b6a30a00000977ed5f36cc10000a6b82ea7302200008162bce218a100008ded89946d810000dd74e422fe760000538d5c1cc14c00009cf13badada600000f1b234ccb440000fe114806765e0000bc456e5a668c000040f610bf36b90000450292dd690e00001230cce7d1630000be9355b968e40000b14f06a55f710000830164fa387500002ec19dcfba4e00005bf8894043f900005cac227c5bdb00006cc00c7b3ed500004b9530dc68300000dfce7d848be1000053b9f6f0fd010000f68b120855020000aa3c4c4efe2600005d9ed80535d1000019442b704aa000005e17c2d0962100009ae99fbd16dc000063068840aa2a000000f1826d58f900003e6462def7c500008c660d883eb500007248fe94b92c000003bc4df4afea0000ca5f979b2594000081e9df1e082f000095a8052a0ca700001d26999d148e000059fa49fcbae90000d0fcc34871700000d20f5eaaa0a9000048b05af87021000013e81671edf50000bd8083feaa80000076a21db51d520000ddd5db777237000030eb161aca990000381f8b225c32000064a8190776c200000bcde19eb0d100005640973c3f730000a930eb13bc2c00008d388fc376d2000067e582bf9f1f0000dcf638a190f20000bedf3b5bd1210000d2ef4a9475520000526ca0030430000053ab5816725b0000d46655c217c800008c2720b51e6b0000c112eb0584b100008364d9e678d60000d70c58fbe48b0000824b39b257c60000707b68ccb450000021983984aab00000b20f37341415000016f40add1ee10000353ac16d1be600007decced689c70000691008a70c410000e2b63d20441500000189822687830000e4c44ba277470000ed4e9d061b310000779a7a7eba180000c0f83ceb9f790000303b7bc1f0d80000395a5ba5b89f000035ebea530bb400007582502a4bcf000081cd43777a6a00000489b0b0a354000081248fd3bdb0000018ebd95b2f460000de3bdfd6106300003fdad3dcd2fa0000533f9a6b136e000051e7ed3c1f8b000027f05f8717740000a3dacca0cf7000007984ba900a6d0000ee0ec09426c500004ea7c7659358000033da0e609b5600003728acf40189000078fbea3d7c990000f65344f36a2900001530a9a869bb0000506e5b1d227e00007e117196184800003b102dc019ab0000e7e8ec38ce4400005d758347af4c0000c15de7e3241f0000",
|
||||
"output_hex": "8730c2caf3820000f8152575b5c20000dceb9f8553af0000c790cc264c200000ecb54f8f92650000a77b88e4099800003f690efe24e500007463748611cf0000c15a8575aafd00004a160a660be1000008256e342ab500006b91c884b4550000b556008c32e7000081923a9d926c00009969ef3c21690000c04fe94623b10000867961562bb200004a92748cfe0e00003a885a4e8c750000f3fc9845241a000094a579cf40ef0000560668c0a19a0000c919fa5ef64e0000f246048a00ab00002098ca0d16a90000d0424ca653f10000dbf1fa9135cc0000efa3bacb7f6b00008f420b4920250000f67244afb6c60000e36db3e710ee00000ad4739ed949000017f32b1ad8a70000df9b9be638c90000ca32b204cbb7000056045932e9a300004156b71d87310000da68102d383500006b0a6843d99000000db4500fab4200009a85e14f5db60000eb1d2e822e32000018a04f9eeed7000072b9a0fe3bd70000a13798cd177b000081379d42ef2600001b6efab5bbc90000282cf0133a910000c5053cdc66e80000e10531e25e73000004a0fd4199aa0000bcf0bd3a75d10000782c0c75e6ff0000a3e0e028bace0000d1d91a65bb040000b1840eb1b37a00007856b09a9908000085beb0a99f9f0000732d046fd7db0000167386309c6300001e226b92824000006008ce39dee60000b43c5bf707ba0000b15ba249641b0000f3ffcc8b74c00000b63ec515497e0000cf88caddba90000080a1f36f0002000015d360d093fa000098c19b8a9c10000079587fc87a9f0000ff901b0f9860000058a36b1fb7ea00005b6547ba8cdf00002604f44c771a000043bfb680078600005ffae44bb2b70000122fd96bd9a5000087bdc80eb120000075119670983000004b8dffb6cb2d0000ebfcf64c17b9000025a5dd07b369000074bff68eec480000d96c5ef843c7000095b6de2620f800009628483632390000bebc93ddb80f00005ca26d3a159d00000c5f03c81e61000014f214c59c680000b593b323d79a00006ad8bf6e959c00005134ee7e1d2b000058e5f09cba58000066a08ee9c64700000ec34cd42afe0000fa05d85f618200000630bf4e94b10000749d9a485170000082ca87a8b9320000e9bcdaf8ae0b0000943d42113eaa0000b013115063220000dc663126cc3800006ad7527726d90000ca860d52bdd60000a1c5a82430600000c545444fbbb300002f2e1c33d29e000043770a65bf8b0000e0fe37e176a20000a86eb8cfd48f0000320b5208341c0000ed88f4e7fa10000033fdd5d94a670000697d35d4006d00009309d47b26b20000f02e1a10b7fc0000244d31f3361a00003478539f6bbe0000865d6c3f913e0000ed318efee2050000c1b98f5a7e9e0000e5241cc4c7c60000aa311c425ecb0000f781132945dd00007f900eb48fa40000f9c67f70e0d500009cd5c1d68e7000007d658dfe4be6000025764a39a9400000e3f622dc22df000069a6ca5492f2000080df2cdd9dbf0000f9aafc8d5aea0000e912a015e87900000c1e9f65dcc7000095ada7ca872e0000f9da0d716a620000efe03074a283000060f649fa86b00000a7e54f62623e000059d038f1d550000000a11ee253aa0000f1fee8977b6d0000d0ff024c67880000de6a97793fe30000a0d8cbc5efc60000545e71023dd50000fbed441468e600004613cb3517f500009c5445ff922900008bdc1d1d055d000051ea6e19345b000018d7d1576ed10000251d94a16d4b000054563c30d4850000530b08f4b5d900007e84d4ae828400000dcf9fa24b6400003f38cf493e0d00008f1156b227050000841c11d3baf100003488498163220000a64819d55cc60000fdaeece552900000e7e260df47540000de90b21dc99a000093bb1177b8440000098dd0d6690700002f1e1843d1e40000f218a66295e400001c75fde1bc0700002e338c1c80310000b9a773eddae900006f04bd42b645000056a8ff4e49220000b7b1e9e8899300001701c3610ecb0000311924da5cd20000aad2c29aaaa600005263bb6b247700004826f84f801b00007c53a5ddb8fb0000cbefe6333ba00000a0a079050f6b0000208e4d2adcb20000a5499047757700005e12310e21570000d42b11c388f100002b7d6c43e2b000000d5bc3f5113d00006ec22cad32ea000023559e7009630000a03d64cb304400004f596af85a2000002de2ec9691d800009298ce0da3640000439f2d3a62050000c8c5f3b4772b000096f73eb89db400006ab7d9324c1c0000e074bc0d27e80000d8a77d997769000041d2db76c47e0000bc0f001504a600007686442802140000db12f6fb38a30000e8ea9b7e12280000432f4280049500008d0aa3b296be0000c95ef1601e1b00006ebd4a6b9549000056b98cc4e0590000362b648a0ab80000e22d0cfd49ba0000ee94687f503e000091252dd82ae60000d71acc7c7cab00009ed100b59fc000004aef89a016eb00007d5daf7c8f330000e1b28dcf5987000079d06908fb850000dc5f138d57320000e0b47d6c06dc00007063e6331dac00002bde3266d9e5000076d10ed1a97900000999604d69ab00001e6cefe0c2a5000054bfde8715cb0000f1afe47ba6af0000ffd57f3355f80000cc3cca14b1b40000ebd96fbe99890000ba12df5fcb3400009e6ffc4e3489000099f4ef9f78ac0000cae86bbdf07300000bf45428580d000075bbaad1d767000028978d0a3b1800006c4f3b4b8624000079bcb40747f20000db597810807200007951bff4c73900002a4231c6d6980000adbfb406aa6e000080600ad2829600002c055d843ed00000824678c0cc5c000023847bc29c3700002f539a5f355600005f09421c76f90000",
|
||||
"output_sha256": "5a093854ff6be7136ef81a6b0894325cc0fcc412bbfb9581cb6747c519883db0"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=12",
|
||||
"input_hex": "7d1548aa9782000084ab1907902700003a2af870ab8b00000ab100cd04f50000cc7fb57f2a560000e95e8853716b0000773a7dd7a3f9000064c06a01318000008bc3e4780f8b0000ea4284063059000040432c69c6bb0000e2c637bcb6e10000f77ae65d015f00009df8335a80ed000082e305dcc4f80000c3863bc64e8b00008f0ed057dee20000f3318f0d04bc00005c80bcec424f00007e593ba0cab20000efca6c1d339600009bba0597505a0000918860afb808000031136e846ca700003825fbb6ba1500001ed2aef5c7230000b14ea0a8398a0000c771f845236e0000a3093810c6ab00004033b6aded6600005fd8b80d236100004e1c53e87630000065f1721aa3c100008c2f1ad07b8400000f6ba8187b13000068a97b6b65910000c030d25366c40000f0b2a367d094000094e67ad65f3e0000014df6c0b12a00007797d3bf0075000022a398fe0b9b000003d7fde3bc700000d5a1ad245cba00005ab82821798d0000169f833ea24d000091e0eae265110000715a402b40ac000022ccef9172ef000024582f171d2300005e30898792620000c5c90d7e067f0000f902628ceb6500003be0cffb637d000053d3e9e740c900003f2d801c2f52000026d4492c76710000f870a78b353d0000fae9e5523b5d000074f1770b7fd500004b5b8c8ae400000003c7702aa28a00005e7554f5379b00006501a971b6e80000eb965cf9b937000005f8ab16120e0000d0a0f2a74e9800003898d7e3a853000090388106924100006f898d3137b70000b87792636f5d0000d7c3409cd2b10000acf1aef7ebcb0000f2414c46e4b60000821586f28a2c0000df36996f50be0000c9ce8eec4f3f0000623418ae39b7000089043be1413d0000558f4c66fb7a000044b7c839566b0000aed0e6d49d9b000027a4d3d3061d000060e8f165247b0000d97c305ff3d6000032cca5fc9eec0000588fdf287fe8000034b4b21d9564000026e12c18d8a7000047b82fe8d83d00000ac06b96aa52000080790e0e03db00009861720f7b100000df61b5c230240000d3ed68c202590000c7297e1e6ea100001f0cd91f1819000078910a1ca3a90000f3019f9a69620000fad06648ab1a000036834af940a80000f5af2ef58a8c0000fe2a4c65dfec000034010f3615740000c152c932c0c900008a933f2a487b00002bd2b7eba0b80000c46db9593a5a0000fc122403c89900007614b95b53660000101bfbf0e54d00000532b73788eb0000c53dc69b86e00000cef3e6f462a70000fd22bcf39a840000afe6bc7a3eef00008c9560dc325b0000271410065a540000e21a93e2fbc80000b0768d98ce630000ab79580b25bf00002b6bbaf0aeb50000368bd238a9b50000db72c792e3020000ec6d7cabdb580000441e35329721000008f4afdf90ff0000e9c3e35368c30000978f4b9a19f8000055aa13a6746b0000d3ec5ee393490000456738678d1200009704ecaed20900001cf667ae9b490000dae1b6f904ed000043a79d1763bb000017c9afa409030000337358b550880000e43879c4394e00006d87ecd6a1280000944aaf4d7b68000070aa1ee976e800002f356210f8d00000131b2d317c590000ba3244da25ab0000a3dfef8c32d80000594ba0ac4978000064cd78d44d0f0000dc60e16afcc900003021b38b7bc90000ecb9647da6520000b2daeb71be5e0000be4d52d50f2600006fc3d6dd571600000603ea782c77000007c7d84930f000005a457cd230480000604bf31ed5280000ace01af2ac440000d6906fd7c05500003a9d02ac09ca00008b7d8a8df33400009e394a4b94610000f836e67fc78a000038c1f4c4f8100000feb72627ee530000afe6b51312bf0000a0984ae2681000008109206d245f00000ec92fa3cd790000a072b84c9ada000010a52c7cccda0000cc70487ac0c900001488a7a49a080000aae221e149750000d53fc175861a0000e9ca0e0fb45a0000de14f6a7b5860000fee8e4a50cfa00003e9f72970b320000f1363e32110f0000e2c108786972000013c8083990160000953250780f9a0000e30bd4dcd4c1000082979a53957400000c912774e33c0000b113d5d0ac010000fb5cd2d6d4ad0000e8b73f9cd9630000009e7025e8f100001ff36514d4270000ef3b2bb167d70000ae2f59d624aa0000b597278dcd080000ab29dc56f83a0000830897d824bf00006c8848673d120000f23d1ffe20ab000085e3cfe3796e0000d752a77f153700006e15b1bbe3af00001f62bc8948c40000ab7376f879e8000081e6da0ef30100000cb756ee67b4000023566a25ddde0000464a37c8bda50000ab7a1e28ac4b0000cbdb0138057a0000def4c1349f7900003597de64d9dd000035d06b21767c00004052e2e6e08e00004a0a82e89ebe0000a79773378c6400003037d5849b150000fab41275b9ca00007ed4ca3aa97e000079a13a5010cd000005fa75850a960000cf8e6a81e46f0000defd4102bffd00004d132f62b23f00001c399e122a320000ebb4cb1262420000feae3adeeed00000d073f9c7e3e500002fe4db8a955e0000311ba5a85add000038c440fde7860000f6e28f6a8b3b0000b7dc74cb70e20000fe78089ac4790000ebf1018fb9bd000084c6741f295200007bc7d4539e4f00009c116b0124b60000e26cc794f6c20000642e5f40990900003853307a2b2d0000b3689075fe0b0000f6190eb3f0d1000023aa316ee8210000fdddbe6eb9bc0000bffa2bb6833200009e6c2327644f00004427c7f451f40000cbe8a0ad96b20000fcd6ef5ee1e30000bd231ef421ac0000e21befe0986400000d9d2019e8310000504410624f4c0000583ff9c698810000b81e98d310260000",
|
||||
"output_hex": "fc0538416e190000f9bb0382891500009c32426c706c00008350828b24f70000a73338edc94a00000c8f0d0ce99f0000a0a782e4c15600003f771ada50300000560bb51f9e860000875c4bcfab0c00008304dca2f9550000e9cad1c3512600003490dcca14a800002098c8ea18b80000fcaf7313a5ed00001a66d1808f90000031a44a0b3edf0000dac950718a9d000082c3179f660200002b01d6b0d5bc000023588ebff7ac000093504ec83ab200009598c572cf9b0000e9f2715ecf9c000017d78ea5e08200000473f956e8b800003fa1a06e7906000014a5f65ea45b0000979af3f7fc70000092847398cbbc0000d735a56edec50000137cf276da4700007c9c9af8f27d000088ed8791f3fd00009ecf6daee5060000b83400ab405b000089c3113308130000006c4b53a5330000ccd86d2487300000df306bcfd3320000ab0631b4e526000034f206a4e0a90000188255990e530000a196a0ba97aa0000bfa6b273e4f600002dc0471705bd0000f0559de63850000000ae6480e30f000017d59d6c5c6000008e71fe177efa000057fdcda6bfe9000008b098b95fed0000571e3fb2fbdf00004bb765c732b1000049eacadeb21b000087bf84aae97b0000811795fbfbed00000757b8155ac300001ef9cc60b4c30000259d99e4c29c000063a6f7d261620000104be2dc20c10000de26051e3a680000c98aa217f57f000071c206c3666a00006c2108e0024200005411bfed7e7d0000783f31d9d3c00000642f4338ba700000f34ca8aee8710000b10583ff8bad0000775faad9f72a000098ffd2b8659c0000584625d48ecb000035ce844c54370000db709af83b72000040303bc016310000027ae438dce30000b9bc607bc78e00001a193449fc250000b1d87cbd02c5000020b7cf8ac88c000053f4a9f3ecee000083def7bfb63c00006d295359c7ae000023253df10af1000061e07c9681ff000090c1c014cf4d0000a09dd2d8991f0000c26734a4f4d10000ba0dd18bad620000a21f98b3302f000054ce79d185cb0000c156a999d7fa000026d8b28d04290000bf3fd1e987b80000cfcb92715f63000032b465ce11c60000761fdcd5bf82000015538f2fdf5d000014d5568d7d0800004cfd3f21832f0000f9d35fa0d548000023fe8c50b38100006cd0529b875800002e9b8517472700000941ea18c1f10000d55aa7ac317e00009641d605c019000052f253a6b4a8000083e4a47c53a8000068c82855d917000003cd48771b5200001d913c38b2ce0000dec9a1a6651d000087579ee480de0000815bdbeb1dac0000d6091294290500005eb70cf3831200008f95effd25ed000084c7bd8d20ca000092f1cfc384900000079551cc2bb700004a7609d4ccf900005731af10c69300006cf58c3786b900006fd5647d0c160000acc26858de2d000004259aa257a00000295b05fb329c00005255e018ff460000a5497d6ef62d00003e8d0776438e0000d2c78b0b835e00006c709fc938900000e283d2385f400000b72b55145043000025c978750b480000c519a799542c00008fb9e581329a0000f2c3fd7503a50000061b129af5640000e771bacfc99e00002b16dc094e750000064af52a4d98000046b58e22b03e0000a70111636b620000e00604bcecd00000f884e8fc88160000249e5dd6ee620000da2d238c5ccc0000774182140e7300002790b8bea96400002f2f3c40a094000041720b49420e000047e1bc9c7c110000871d7d98525200008bbd85e0a6d2000030b722cee3d30000c66bfaa8881a000093d993a05a060000f05034627a3800004e7ad758208d000035e279096e2e00006fa1d1e67f590000b1dbd0bd852d0000504f6b66798d000027adecd6899d000012e6058a36c6000026d82e28368b00000f47fd31b9e10000940cf991f7380000048a6a51fdb10000f686afefaac0000036fcd9b4e5fb00006f2f5ee7839900008cac31b3c3f6000040bc8c1eb2070000f331f8b820390000e68369955916000088d27fcb7be10000fb03cc0dd1610000b2d2d2e8d314000083fdc21704420000291d0df30e090000affdfc9e203000009d1409f4964a0000b958de58d97a0000f4956ecad1920000be698c6419810000d093f696e8ee0000550c3aa1c870000073b41b1ef4230000d67dfa9ae24900005e1bc0e59f5500007820569841d9000003df702dfec3000063837f0f370800000a0a367787a700002ac954774a0e00007d06aced71e40000e5993ee2d8110000b04c726e556e000093041d21c8f80000c49c38b117240000fff61b8466df000031ac6d8d88fa000007c53d07d3980000834d485a1f800000d8fe568bebc50000d898832a1cf80000fd83597273ce00009d545b90736f0000ac14e16a780c0000b387d862bb2d00000dccab050daf00003c08152d1f57000039f376ccd7b70000cf5bddff67940000cff0f1300da8000047b47110b9ad0000dba4d136fc810000f74913b4212d000052cefcbb3ece0000d97d12fa471900009bb9ae1bd40400005d4f9326ad3200007da445ba23f70000d00f8de88cf300003a75a1dbbdf10000e7bfaedcf67700004b1c163a256b0000aee8840b27970000ee7c143513450000475fb10208c30000bca31a62ddd10000984e875b576e00000a6cbde612730000514e715c7b380000ae907820efc2000037c9320e256b0000231a47cb848400006549e088d46800007385b1fe5f9b00003a8794f0e478000077b494a107540000609a01de805a0000c4c5ab4ebf1500009db32c87d8210000b5a92e22c1a500003b2254560f0f0000edf7514a2b7600007c99052deec60000b5b4911a3c3b00008a28b9953c1b0000e825a23410e30000",
|
||||
"output_sha256": "d2ecd06af393cd8ce81f538e33f9b64897053753a426e6b12115c33514d923eb"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=13",
|
||||
"input_hex": "7897f1a3406e0000115f0dfbe7fe000003d3adcb2f930000b15f858cfcbd000024c02365d7b50000ee7b11a433600000d3c43c4e77bd000014fa320f07bc00001485fb36baa30000bc6fe303468c000044b0de2600200000c30df0c103dc0000aa5c08b0644d0000b2d2f32cdfcb00007008f66ff15e0000687fb07d9fa80000d8ca9eaf0ba20000b72be4713ce30000205f204dc4c9000051a8b4cb637f0000e5d7f48b2a310000e8d4e7a5e247000004306da54baa0000e93116621643000057a1c057a2b30000b2033edf6c3600009ac1f44eab5b00002ffabc8aa4750000a48cf1ae4ab2000051a4f3f044230000cf93bed4ad47000016dd07c4f45700006d662578b5d6000025b1a5314c3b00003d449cd3e8b70000eb5f2995ae6b000040897f76ff1700005c2ccf04f23600005973f783029b0000eefa417b48980000ba55569b46740000614512dd3a0b0000cea66a55db1900005673ff9bfd850000666ece57ac2e0000109f27e3402f0000b1af5b92006500001cfe7b1baeae00001ee546ca9356000051b4f9743b9f00008d63e0e5757f0000788ae45bf7d200009f307f85dc20000069f2950721f50000e90c1ea1c9540000eacc3fd3b6b60000dabf0445b3d00000df2a4754e6c800004aa2f539c27e0000cececa0ef6e7000092e63a834d510000a8f29b9986090000a824c88ce3060000ff67a10bd9a4000018dc18433a020000748f3459c6fb00009ef010eb729e0000c15358a3588f000022ff0d2c1d990000c9927b9279660000dc45a42f78ec0000caf78d14377c000094f5b487e3a90000a48014ecbf1c000036ab06b5d9f3000089b58576ee150000281ce17074b6000057e899e1b1530000569433cbc3a20000bd21c756df4700007bfb05e933ed00007cf87b2c6a9d00009f91b8f00e190000b51d4af85b58000070b3363397ca0000ac90a30965120000e1cb8604399d0000c6e9e4f85539000063e4861bfc1b000044fb2be0e56d000078205a0a1ed300005362876287f200003ac4a6cea8430000180b3fee15f00000faad4160ed2a0000de190cda192b0000b772726313fe00001c1be28a07ae00002aa4c9017edc0000d7c0f68c8e020000cac6b703d68300004ac78433b8ca0000e05adc87efd900003a341240354a000047f5bfe7beab0000eecdf3cb751600009d00f40630010000f018dfa578940000b471c066b41d0000cfefad9da7230000a9064e0891dd000022f449f147600000e8b2a236b05400001c1f9a75b19d0000e723dcc9553d000067b5eef3f6b50000173db397bebf0000dce61023a7580000cfe0a309c9ba0000c280c7579d3f0000bdb343c1f6720000595c8f2ffd6800006a80bceb51010000c304bc21f9b60000d0b354bacc2d0000b7ede943fbaf00004f1090c84ea30000d377d68302a90000aaa1a4e2df0b0000e45e7cca3d1400005af8d762eb7c0000fac222e4ff90000067dc793d1e350000a65696d87636000058087076b08b000058e6f97eb93c0000f90c1ef9fc22000013f18097fb49000079be00a76ad00000f4edb003e7480000b53b3dd03a50000004281662c0b00000a5712138e342000026562da7398f0000f06c538c4f640000dfc56bf1ffd900008f743f3e8fd00000277712ea655400002f18328d549c0000e7091613280500002358b5b151c00000b5d3dbaf940d0000edec240197e90000c16672085b0200001b9c0ec4e8f600001374eff92fa200002b86c481863d00009afb038281dc0000cded693c010800008dd334f3c70d00003e10556275560000b88e40ebc68e00007c5d30d7cb48000088d6e254defd00006239df4f75070000541237691c670000dadbc41c0c610000d79d2418773b00002a5432a7f13300000e0148989ddc00008f91296f7c610000b02764c7a12800000b9c15c5f52000006669a7654aca0000639db98ad14a0000fdcb45f84ea10000f8d85c9141e4000077fabcafc0380000d2ac4b3104840000433a039ce9e3000047aa7fa0a17f0000b96d2c019abc00005a7176f9c9d80000f7658e838a960000711cff7aa351000042b2d6d9a8f300007b1eebfc5c660000ea1190df4f230000beb40e41017700004a307bb4a16000008d7c880c05c6000064a67fb2cc210000c4e31486bc490000fc0431cbe35700005b33f786865d0000c2583e45081400005fd1fc1c13000000e8561348847800009c74445cc42f0000d1a1e95828c000001790675736420000ae54714deadc00001d79330474ec000014be5f34ce8f00000e478e0b36c70000d8e2961c0423000024c4e1550c250000b105a287eb0500001d65a3722edc00000d53c9c2115b00002b157ebca911000036df3ae2c96f0000e75fe20e4e25000056442d6476920000f80a70adeed20000748f87fe2a6300004fb87ef6dfef0000582ed53ccd2d00000caba879649d0000efa2a79674cc000000054a6560c30000015e67a77e7900007ebdeff00f30000017bf1a2cd2210000075dc427fd1e0000fac9a2ec1cea0000ac2e07bff498000015f7e49b329700001758439c05a400008ed5bf56e26b00005930520d3565000043ea75dcacbb0000cf30f3ff48d10000046b800c439400005ae8cc77303000006f8b70d2db31000034b8e1083f61000061232dd6ddd10000122b551059450000221bebf3fb0f0000982caf881c9a000043eeaf32ecb000009fb7b69526af0000b5aede5fa58c0000a792fa4b7fcf000035249c8539d00000e774d7b011d4000069bd09ee400d0000c1f6f1fe39ba00006185971431ff00001559c6fdaa710000c24868be14b20000da1ba8d436b90000a6a5371c82c00000754ee575a3e60000a85826d544cb0000",
|
||||
"output_hex": "3e3623f7e69e0000a143a22b246100001821826804480000fee7bbbd0c3f0000832a184b155400005b7f7376f9d70000b819f79f18510000e93e7ae52f8700004e4b71b0cfeb0000b2e30bd8b5190000a15ef74b0d1e00003f094beb612b00007a2a4ffb14480000b9dec95267e500009230bb8835310000f1d0bd01573500009e48505b85160000feb38412d96d0000e64c7f7b57740000614e8eae81de0000c35710013e6000003f6676da54960000f84cfa4d51f800006184b1cd78690000ac65c628ad6900009d004e1db9240000d67bc55c3e120000b07ca6ba69d80000b8e6855544dd0000dbad116ac03b0000dc0e458eac7100005d9d34f700f5000029bf0568c09700007ccec79132a40000069ad94feb100000be445a74bcfd0000df3425865c2e00009148d46c57ca00007bf2454ae1cc00007f15a378ab590000e5e1f4c8743400000c33a53f47510000672de7ea90800000caf9f63cb8b500007cf1b9ef82a70000bad8e604f1820000e319972d74fc00009cb8b53df00f00006fc943ba8fac000080ad2f6aecd60000799e453301960000ea9610d236860000943587237b0b00009c6767766c7a0000648a0fcdf4a900005e451f66f8a20000b8cf71728d420000ef6a3073392d0000209b81d750830000c53ec192b5c70000a5a983adf7220000a37e4882f5720000b30d737b9b810000366d0ed4f4c60000b8df30828f600000eccbf43533690000940089aaadd200008d8b457d8fa400001b59b1243ac1000004d31d32e8330000835f1f5d849c0000fb0654e62d9700005d56ed9087800000d1429e24f8b200004f0337c410e20000947560950f3b0000d779fbe27cd5000006e8277d79540000fd6d8c7c63ef000098c52a1a1c2d0000bc04fd83768b0000064b463553cb000092e992fd22b40000349be12360570000e7f4aa11461b0000ecdd6fc7acee0000dd17a2e89c9b00009ccc1843c5b90000ee48f87cbbf800001365a4a45a7c00001f96729916270000b742905062b30000ecf72943a82700000c63548f1e400000bc01753ae60a00006284facac3410000e162058f5515000075cf183c401e00000fe3a3258e6300004609559e6c2600004406e94fc8c70000c07226e8d8640000b6a5c29e409b0000ebfa3dfca0b90000ce78707159e900001403d7f6d0660000fa9e236209680000975f996309110000e509ee6356020000b62fd4862fc7000058331e12070f0000e44a2a640eb70000ec5bfbba26f800001506dd2ab0480000542e7d43d8240000e93466bdadc90000e43b99fc16960000ecd8dcc2c1b60000c21bddd37d8f000034630eaaf7a00000bc155b86d6d10000a6079bdb6f5c0000f3b79a7693810000d2a8800b23f2000036d8d2a5fff5000063eaf93f6ace00008ca674d488480000ed5f8bba593000008bea7cf876b90000b0a00b64f8d200006761a9f22b8700004b523f2677bc00006a46d131f9410000c9ef4b813bb40000307a038f76870000b0322f2b7a100000893345afcf8a00000eed4bb102df0000fa2281e310080000273ab5d78e9000005531ea0c41610000c3e1867313570000e378f17aa560000088d1cda35a380000eaabe950f499000001c09f32addf0000a883045a685c0000d4b3830f9cef000099723afb35c10000af76c6604c5700006484d850e2940000bafd87977d860000211723747d830000fcec5e2719d700000a4f6e4270290000138893056ece000045378ce181d9000067f910b099f30000780852b7f92e0000f36afe9ed6ad00001c2fcefe7965000043c6a59d2d7b0000c3fb15c69a9900001a82ef9490bb0000a7fb22cba76d0000432ccb9319f30000ea9fc1eb410a00007cc3253462250000cf43d747c8720000589b540d40ac00007ae4c3226cba0000bc514ab981e40000a261bb2b7d150000c7da188c35f50000ad3741ff94bb000012581f5c4daa00007595151f61a700003a0b94b2e0af00005a559fbda4b9000006b34f67a510000025da1c67826e00003b00ecfece2900002bb2be1b4815000062dd3ae1ecd100009cfa6998096a0000b90b4b03ecf00000388b765d85f5000018db3dd1af520000d104cc10c5500000a3488b2579bd00003976999964260000702f25350eaf000032b3201f5446000002c3802b025c00009886a783c4e800007340f16381100000b1a7e1bc732c0000141ccc6fcd4200003a7c5a46f12e00004f396d3e8c0d00002134ba162cea0000e1c71f83d6a30000d9c709776e4a000077024c4af81b00005fb8a435fbcb000024e8c96181ea0000acb2b61b69530000af4b752339510000399085957cae000027785ea971990000b565d17dc89c0000ace09a1f62a00000e433ef8a571200000d3669329f3700006f435f8f482c000004054dfdc95f00004e373cc9d9690000a6cee61ec28e0000cec5a20331f20000147609d5df4100001e723bdfb5a900008226f304d5b800009602cbb677d30000b1a1dcc70459000048dfbc5496460000c873f42602440000292dc2915c1f00007ca09c4e6df60000e9705871b5dc0000850bfb0f481700002a02f8e6376b000015a415095d7e0000869baea72b0100000ae38a74b69e0000ae89984032df0000363e4ed6e242000082c6dbb220c70000326352953ac700003a11d09315f90000a85082d0388e0000787ef24daf410000cef54ce8846800006270ff3ec0aa00002306a34599f70000759c557f68d100003e119364c6ae0000c820bf24031900008fc9d39dd847000061acc3de10170000fde3e096ca950000849755960f180000a7354f1f43eb00001288b969b5af00000244ad4f7a2b0000e73f1f1abdf000007dca953048e50000",
|
||||
"output_sha256": "27b008f686d072ed82aceed10c19727eb0123dd588df13d5dc176db12009faf2"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=14",
|
||||
"input_hex": "c03f6052d4f1000013a17da9f4e400002d7fea34253e0000dad67c4dcf4a0000abfd5d6b35220000271a350f1a180000efbb403a5b770000dabf733fdfbf0000fd43d96f8dd000001c43123171eb00005d19250996d70000987684068cfa000040cd2e21ba9600004893ea672b5b000059db1ff07d5400002e65f93c3ae30000157dda52087a0000a947664d576500006187f8936a1700001306e72cdd7b00005214963714db000065129a1a427500002de36db3e1f00000d98ea0aed71d0000e0fd2473f04f0000825dd24283b40000008c393eaaa600006999a8dfa54b000096741e7b3323000035b6a295b0900000fa3ad844331f00001d0b73d5001100000de0fc5cb9c300007e3e105399230000409e008cacf7000038755936cb8300000f35a262d8b400003df58dedb5c40000b928a9c75c280000cc1148ff29d800001ed7e516da8d00004111448cc59200002ec8eba7ff380000cb29704710a2000011c48e02e84e0000c63263e49a9c0000c091f946162c00005e951469eeb900004dc3ff1c46570000a30e3338a029000078441e04484200007ad0d6539d10000034a7c406c88400003666845290460000c6016469f214000003cfd6925cec00009eb9acc0ac18000023f16754db210000b0748c8d9f270000e7af98f29df8000044584eaa550800003184406ab1d300001b581b874ff0000046f85af196800000bd7dfa30ed4a00001852ccc0688c00006efacdf41a7700001a24bc15b8cc0000bfc96ccf9bc300007f2fc16ac9ee0000a1ea9f45f055000004d9d0300a560000ac64c700a22f0000142feef5637c0000535d804f4d1a000025730cc3751e00002ca4be7c34a70000f462a8a4ae4f0000330a8f62f5230000f8da042f985e00000c19e3ed96b00000048c32d1266b0000648b491e8a4300007ef22d211c88000075012bdd3af80000b31e583fc368000099788f8b93b60000ac2567daf0310000fd668a7db88b0000dda7dcfa66e1000045b00a9a06d700000a1f11ddc40500005efff7ad44d400002564ceddd591000017564e49a3a50000fad1a2d0d95f000050a175e1631f000063347b2ca73d0000175d07e2cb2c00009ab56552ab34000012e023c522380000b7cabb010ba10000459b92b8efc300008c00d1f09d7b0000f0f11be784e20000b7745913a079000082253ae0568200008f222f7d60ea00007767912113cc0000ac6ce5cfd31e00002d90e16ea1840000a863d111c54b000030f7f7f89e480000604de6118fdf0000da811f2a8c9800009e817dfb57d90000a0f315f64d48000010524c1ff5730000b867b01ca5830000a5042aff686700001649cc282ff80000934c07c9156d0000e929b409a5500000454f35c927420000f23ed1f65a990000638e5906b07d0000add7e67baed300005f599f1bf0b20000e41d37e33f000000688b5f5c51a80000a9a21dc31f1f0000aebf97136d6800007e14a6eb58a400004f650cae0118000004c9cc3134ab0000fdce4772eca10000a0f7681673e10000ecfde3543945000005b913d7243b0000fe543055ddee000060e5b5c1dac600002d08be8f261d00002b7027f3f5f400008f834668ac990000bf5feb884ac80000dcacfc1a2a120000e8f861a96c630000f777e3b36f510000a27bfa76b5a500002a8ce98d08cd0000f834a6416d660000a10a6419485c0000f79ab66612ce00006f4d8b2945000000289dc0ffd0fa000035b6d3de49f8000011d6e52ec0240000fe0dd02371f20000777ffd233ab20000ecc1d5196a9a00007d0dcb9a5c3700000db90a9a7ed40000ec05d75b605800004cfaa97572f700003bbdad54c9710000666f69b53cf5000045580de8683b0000252277175aac0000183fc73ba7c500006adb0862531a0000bad965ef8c3f00004ab5ee8dcd15000083cf46de5bf400002909373d9a5a00008817344ae2a10000fca2cf6b0f4c0000f38e7c8a234b000090996ba74abc000085397a31a82d0000308987a5f8b40000fcb79f56b0b10000affe143d0a9b0000082061f123440000061432ad7b4a0000041eec2cac0b0000f5bba03c64200000fa0f491641880000bbd9311643160000648b33c16a620000a0f65c70102000006c46eaaec6860000dd68c5e5a3fe0000eebf7e4e69010000f7edeebb76090000a6a80a0068100000d6a9a6d22f42000037e9b0b527240000869a5516422a000052a17a8651a10000b78fda6352170000a50269a8a197000075279bcfab98000019c37c854ecd0000ece1bf31323b0000438592c733eb00005294c6c2e93800004f8a573e34ce0000510303e77579000024b98b3a9b4400003813bbd431160000e1e1d290ada10000a25a231982c000002a710bfcb7e500001b522c91b83100002bb99953975a000017d3d8cfd9e000009e60a10159e100006384e04cdd82000058b1afe9ffaa000063766952e43e00005a9c7019e966000032cfde0af62f000065808de42ba300008e26962932880000832e242b1c0e000042ae266c3cca000093a1feee636400009113a5eb0258000069d1c89c36c80000c5ed94641a8a0000440b24ec46f000000975a34f44810000cfa0c7e4fd9f0000591a573072c9000055385c77d23900006c641f6ce9eb0000d7526b7ff4930000caf45f598c6100000491fa9bb2fb00001d1b126739e90000ef797055a2a40000b8aee8f3a4c50000c33c64e5dd28000008dd6697ebc70000bb7a72f1eeca0000b337cc06e9c600001bdaf9557c88000071091007eb740000c450085d87660000857b53c1feda0000888139bc3ff3000091cfae165a1c0000c00309091d9f0000de5bfffa5373000017a4594a09c40000b11bb01fd1210000",
|
||||
"output_hex": "641fff02f70c0000054b8fc8943c00006201cb3019670000fbac8edf2ccb00003609ff2f81aa000031e272d25b940000d920cb5772510000f128a181253d0000bf752dd68da60000bd323e0073c700009fca3a50ae2b0000abed4a42784f0000518535a4b8750000ff9da7321bf900008a0db6a5a7070000c08f66d6835000000abbc4f5aeda0000976741fc06bc000056e941f3819300005ea3101d0b1f0000708960fb71ee0000b24c6f19db00000063aaf74b448600003ae96beae0b7000089408a59ec5b00003d951476e6fa000037304e11773a00006633566b36690000276a32ff51de00009d8306bb89c6000091d874d800dc0000d8322d026f240000fbdafd7d0177000041c6fffdaba100006e224000d5d30000663a5e4b6c7e000069f4e1700cd8000014b3258905ff0000e3271e4ca80b00002874177617c7000056fd61d9805100000b02e0df4a0000005823a2d04c2b0000f0189038285b00009155b7d371f40000dcedc9b701270000ccf5c345c66f000069b17d90c13600007740f747eb990000fb0d5669442a0000a4b1ba83e2ee0000ef327666b81e00006c05c1022aef00007bb34bff3f6900001ce352aae6290000cc37743ce37f0000a56f1782ff1900008352db77ea840000aabd5c4a8bbd000049584857301c000027aa11ca96780000d894129d7f6100004ba7122850830000cc4737d81e7200001be6a5ad0cc10000e5d0eabb1b4a0000729b5fa84bed000027848ee5301300004989a3ddb6be0000b2b76262a5bc0000c91a32f67c720000cf8f2d91bda00000f7d8aa90b95e000083d06e10309300000ba52f04a5790000093529a5c91c0000330ca697b7bf00007e9125bc13bc0000c8af06551e8b000067dbca9a276a0000a2b32428f4a00000d356485c1c9d0000aabfb759b2fc0000be4eebbe86480000b73745a40e0e00001b585823b9de00002bf05433065900002c3530c2c085000041bb61a5f2c100003cf485b7345400002aee906aeb00000024aea9a208ac0000b72e5e4813a40000258af500a5530000725723e676a500005ea303442d51000011dd79c7c40700009cc9467f3bbe000050fd3364836300006531864c44ac0000da7f6ced10050000b40ad73db5f40000fc8e237e2b060000addca542019700008701c741d51d00009dcd686e64eb00007b88162241e10000f9a2442d5a42000030cd314f1a0500008e0755cc6396000053198286481100002e6c4b1629700000060aeab3c6f400005c07c544162200004e2eb77b23280000f19266498d8000005d71f8b3a9dd0000b53e60673a6200005aea12ccfb030000b09e29789be600000bd4d32f7a2e00007df7636c9be0000050aa96195a49000074fd5fb167b90000dcf06ba9f47d0000bf5126fe62860000198400369ffb0000d2d4bdae9de300002dcbe2580a9700009cc627d1ebde000010dfbdc920d0000038734532b7fd0000114ffa37f58b00004d8a93f302380000cd78eb4c89c0000072cf956a38c70000f6e1c0140aa70000ce1b12e92c680000c7af4974518800002e651e3c305f0000a2f3f91d3ebd000037291147e28b0000b6cd7370f94f0000cd012384a79100001721810651e800008c5f75e8afe10000c34eea97cd3d00009539bd8c83b500005952f5dc91ee00005128c35e549a000056de4b54801700003adaf51fa4f70000756c76cc5507000021e15b8b20160000216507b67da800003a625169edc4000054af9640661400005685cdbb2890000054e9e48702c90000eb568ab6b85800000fca10d462d000001e971944712200002872f8339a2900007929d5078cf400005bf8befae2e20000d315a0582c38000060123df947080000ba015137d976000051bfd882d87f0000e72f87d2e8c5000024a0d9fd0bb20000eab3c0b709620000093bcefa57750000062bcfc41f180000ab280eacafef000087ff4fb5b01700009e416c1b79bb0000c2207c56e0830000e17c8ec1cbb90000a5e53a2649720000efabbcbf40bf0000386affc9a46c00005adec34cb8d200003c005a8f1fe800009e6d1681a0e60000e7fc233743bb0000f45e8b6d795d0000731116b345860000270b77ade76a000009f70b2d4b4400009a3bd3e8e66c00009c1801d70fc300003150b3445488000067a32bcac7330000e1ea96d96e59000099729aabd2aa0000c9e7f6915bdb0000410856cd356f0000afa11fb889e80000646da92295de0000561057f27d5000002c6965a6a0e000004da3123aeeb10000c0fbe41333d20000ae761fa890230000cb4c1a09072c000006485ee08035000015622e0a03ed0000e86c150e007300002953cde7efba000093140d0c340300006624d78e9e13000073179232c0fa000076482caf526600003367a25fc53c000016ccf836a6e200003c264cf5e2d100007c7af1c4903a00004846fa666f6600005ce4ea30bbd000005ae346ef69d2000067d1858ee0300000f97dbf1652fb000071214d142fea0000b1222d878f1d0000d61d0a9d8641000091af71fa19b10000a072b3c162920000ef22a0977f100000e3bd561cd20200004f7415ae5efb00009ea03d1df01a0000a1726804919f00008c73e33d31500000f691fe4ae8a600001697f3be7cfb000021937e4d92a40000f9e5ab8dc0ac0000ca7659f32ecc00009a4a6b3eb85100000b8f5c1b4c6f00000f9570d966b1000037bc4027eaf40000df578fcd861700002679e1dca50700007224f97e01bf0000b717b753799f0000a1e290785c980000b6218589133100002da204ee738f00002b5b32c75fcb000038a61360a4500000f6dba5b89e70000012bb83119e2a000080d8191b81c90000047dc0fc62010000",
|
||||
"output_sha256": "6a458f964e8dbbc7d868d5e8284f5e13b342ab8baf8e50dacfb4da27bff0dc75"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=15",
|
||||
"input_hex": "7a80bf1cebd20000f82a8f273b420000f63feac16f85000087212faedf9200000506079782550000e4ffd0bc80cd0000152583443d7c00005d2075f3cb3a000040004ed47f390000f7ff55b45ee400009a9437c27f80000039cb0543186d0000771080c6150900002dc1e31fb12300002cda9b3d609200009851e20167590000c07b13374d56000054a02700ece6000078adb927f466000008696898e24a0000b8aa72de02170000a43596adc83b000099371f5390530000ee31bd292a460000e9acaaa20b200000f394affea835000005e00191959500007067bf3c65aa0000da683fb9b93b00006407582f6da70000736063f1ebde0000f8778525f530000087ff0cd9849c000075e1161a858c0000b87faa0f70690000fdbc6f772cbd00005fd5d158fe4700004e8ed35c57e50000e5f287eb454f0000ea8d18aeb1b20000b76169ecb59a0000c71cd79d1e020000fdf8582a485a0000fb50457c7b0900008bf026ab28960000b4db7e3daa9800009cf0b12fcc5a00002812b0513af60000590d102882b100003eb32e99d07100004b032e174df70000f5291dfee33a0000db0b74a9548f0000c41573b32336000048bdf884e8070000a10faf3ec6a50000cd0638dfac8e0000ed2e9b6e85d20000a40caae067f300000c24d040e202000083b8d0cf5db50000116ab56450cb000090b03a8576870000c8a8fbcb79900000cc629a19625700003c6084f600640000cd62daae122600004c9cfb01714a0000fa53295f22b40000d64321d01dcc00001b0552d3ab010000523c41a8fd0e00001c70570520a00000cb67ff864b68000053cf216fed440000694c8e498506000083dbd13e1297000018cfd6e194dd0000c94d14844ba80000e25e811813240000474b1e55a62b00007a95089971a8000011563c3ef5f10000f6f9bbd43fdf000016913c29745c000038e62b1ce489000047ecf170baa30000631b7d05c1fc00000c4318c6ad5f000045b212eeebb400003787b78039de0000f01a4cd6751e000052a87874809d0000abfe23d069e0000043f04c91154100005a0c2e9443af0000259059796126000043bc317ec46a000025648a19df29000010b56bf5786c00000d36e775821d0000b7b334fc0af8000038cb2609a16e0000300e3ece348500006ca229c432ed00009a64e979d2e40000a56c0ded12b50000fae7ef632a410000d122e6f57d47000035ce27dba1f40000399677534fa100000951bee80a160000f7ed2d16a5fc0000ce801c14ec83000099d83834f70e00009619be527f8000005b200e29013d000077e5cf582a4b0000a094324acf5f000044a3cf3e2cc6000007f69f862a3700008561ececa5ae0000cde6d1a5a3b50000007843b924d60000d451dcc961750000d754d51b8b9e0000a85b2842c44a000039f71cd3512900002b3a41bbac39000093f6e16447ec0000e67a3cf431ca0000f2fc3559b83c000021c7859df41800007cef60a4559b00007203e4478a6c00008bc9484d1dbc000043f87e3d33b10000ee5f798ac3230000dfd6df3a08b400008812ffbf25160000c031e220dd4e00005b4cdac3c54c0000837831ba956e0000a6259b973d2b0000dd13b2d218470000373dfce93d380000cfb2004673af000063a445171abf0000352c410539de00001a86b3530a070000951947ffdcca00003b5fb7580a8a000067bc1959cb6a0000229fad38969000003f97d40924a3000090078bd2aac900006347dd181d820000388b655a411e0000589779c177af00008c6e24aeea4b0000742afd63562500004076682dc7f800006658ca5df72d00007c5cf0fece81000021e8d4e05880000025ee79c6e44a000056e0979f5dde0000f4adf6b00d51000085608b2ce644000061d66fcd809d0000f97fdefddc220000d274502bd3e3000044a85286561d0000a045fb088f1a000080671025ad5b0000c25f96f69f3f000083da204fd1390000edf74b32f19a000074bb24c0093500005304a7c8b06600004e485e0c3ba10000cc42191f7d440000ab0412b3547b00006e9e1f020bc400000b2543c0ea8100006bc89bd8fe740000d6794c10c12d0000763272f8f4cc00004866ee76db1b000009d90009ba0200006aa9f2665dc2000031c7db3220450000e837722d70d50000ed306a67daa000005dc9e352b5320000ced6ee15d5ff0000aec5bc55304c00007c3a41bbcaba000093d67be8c22300003ee6c977864100007c679810fd1600000d99234685f90000673ef79ed7df0000dde3487991f800007a5cb4910bd000004ebc2b63f0840000f31a4ab926f100007ad63a16b71e0000d6cb4c6793c900009242b5cf5a660000cbc67fb76c050000d4322f6d112c0000fca34c90c69d0000b118fdd2f99100000c783b5f8af7000068296e81b47500008db83a5e410e00008d0239224e58000033e21daa6d1200009356530a0b6c0000ecc31c5f006700000022a7cfb1310000975a4d08c557000056c33555cbb900002c1e0803c1c400003195a9a9a59f00004ffc5b921e960000172bc5b80b4a0000228b93b3137c0000ee0b431ea1be000067a64e5c92f90000019c77c57490000072573c70407b00001e710a31910e0000eeb6c4f0e99e0000872373269dc10000133c986d72a50000604c894977000000c58ade63715600007623845de9970000c44e9c40675400003393a236a9ae00009df826e520770000dfc397a1723b0000f0a4a52802d70000f92f2e956b8c0000a8c5988e32aa0000eee0919d5d6d00002216a64c859300002a6d697adf2000007a3370c95f9c00004ebc672edb5b0000d541fb81b441000001ede381e4e40000839b050d6f8900005b31a3a2d9ed0000",
|
||||
"output_hex": "49e7bda3bbae00005c22e595ac960000a430531895ef0000d07c0c8ddce600005668a77f55ab00001657f339e9f0000064ae286817b700001471221d51870000a090fded604100002a0a8f4c21b700008824224b051a000080a90148eae60000504dcd9e3c4800009193dc7bbe790000179ba166aacc0000d76a02a0114600004086305768360000cbaccb3869e200000f2fe38d50dc00004a7fa2b8ae310000f2051c6d99a700006275f2193f240000129f52d7cc3c000008d4a1c50cf6000041ad185f1b9b0000759e22448dc60000e3cc647a9e2e0000314cfa1d52ac00001b1da4726a4d00001c690847f55b0000eec7ec21918500000b3dc713490d0000262b10cf90020000f156e68450f70000b01dda8bfdb000003420cb1ec2a50000c0809cef468400002466455fb8c0000075cb9b2dc6960000bd98d303c7880000c1566e65e04d000078e6d168a90d00008707036adec2000051830fed813a00005ddf5d16a8080000e2a94a078d7e0000ecd4e3b9112700008ec6332552d100009ea01be51d810000fc617ddacba700004ad56e99ddda00004eda30923f3d00003fbf1e60e0750000e19f4c9f57850000183fc467a45a0000adc7d58d3e710000cf37442520800000e4951373df720000e187a0188a720000c7b0cd7bd9170000b4afa7104db500005534608a48de00003dd97ecec0860000c89db1a617800000759acf1dac5a00003571de4ae72a000031ae1d012fe80000c53309b4242600003b03510443030000afeadb879993000009e664e6cd9800002c6c1b24d88500001f53a17d4b470000e313395c2df90000b178db3400960000351d47bf81780000a2e125c8355a0000481a123c05ba0000abc3f570750a0000625ad010ddce00002006cc0389db00003f4d6590b1c00000e56daa94f7d40000e4c2f71f4f980000bf4397c24a870000a47e0e131d7c0000f09eff1995cc0000a3c1b9b163a80000e1d110a59bab0000e0b97a7eea530000166b464fadc0000074aa6201c2b900008aa4b46577570000ae3627584a2200007e5b2e57e078000016e0a5e4ad02000074fad9c13b940000e2fdf1932e6f00008a8feda900220000a3f65f50a4b0000021d7fdebce7c00000a9ebe82c81700001ace967aea41000032fe3af586f700009f0ef27ac4e800005f290e062e5600001b900e2b724200000b89cc9e796d000011b9598aca49000061d26def9f800000ba3933359d650000fc3647fd77f300004eca6a63736d00007cb09fff0fcb0000997e89556c230000740f0a277de300002bf6b64f58650000314e9de91cf8000072c79721edef0000f2306ba7618500007bb6f2bd48de0000533fdef196f10000aa0cb8f6110d000006846e7a1b9700007e70061cc50d00008a383daa258a0000fbebd79eebf90000aa0488c9365a0000b83e473784d200005945d36ec2ba0000e736bbb3ae1b00004f9b334c41d600008667404316e70000b2bc718cf5f50000d9bfa0d59a2300006e99d21456910000d40c47e4c12500005319b4215fae00008b92a16bfec000001cb7c5de0cc20000cee6845974340000056d8b4ecfeb0000de7e668a767e00008be6764e38790000c19e5961679a0000d4d0eba77e0b0000761388928f590000f8eea5bc96d300000dccec48522f0000300d3cfe4f200000f60419332b590000c81b0b78f26400000e0b07c554780000fd1465095e3e0000379971a3b22400005517e300b603000025ade1f2bba30000e870aba9e8da000072a1ea0247f10000f12dd8af148600004b9a28fedca10000b8383c002ea40000fdc5110490aa0000942e461135500000a33ab5388d490000c26d445f3c9a0000b11febd1c4f50000446a3c004a4a0000998c7835684f0000262d36845f7e00001dab3fca174a000017125fd99ec500006afc763f63920000ca2270e0ed0d0000f4c927d07b970000c2f68e0038ee00009c02dd24646700003b442fd29eec000089e94c9d21bc00007817447ef0c90000c04eebb8232d0000585a65ac4db40000f254530ac12d0000e1d207b305af0000221d8800220b0000eb8e71a27e150000cdb30302689b00003df03bd7fd26000092e84a4b43ae00001c8baa26a06700000e3a04b0e0cd0000781b78ed190f0000db5ae00da0c900004acaad2929b7000036c2ea8d8774000044472e3ca0940000583af1bb87dc00009ae84824e15c0000f7c37c84ec51000014d45362de130000b370204f9334000046a769fd1e4f0000b2f5b71feb970000f686b76a33280000df7125d34fa1000047e8b9d64db00000dc652c7f5b490000c25601bda02000008e8c086099d8000065938a14fe0c000062f01da2c230000056eab57b5f1700004ced6d8c31e60000004e247b06a600002e620acc6ca700008868ce7c27460000a80071d4c8ab0000969523c934ad0000aa5d4597f9eb0000e386bd8715e0000016da202f932f0000ab707c2982560000eb55646a64970000b4633383581800005085e8bf159900003a2f0aa1338a0000ebee3a9e54c9000077aa06dc663100007d2742f8152b000082a96d08d77c00004211cf280341000023f50d91ef0e0000dff07cb73a7800008b19c7bc13150000ca7e47fd0f6700003bb00f652d20000054929b93fbc4000096c82a6e9ed700009c4fed32916800007e112d68259600001b36c19171520000c4934076fa830000bf13ef08f38200000014f4be83e800001215fd37ce710000d3b512e6bad200003dd73b8c4985000080cb569b9b8b0000f2053b9e85b40000386800c93c99000081a1a73f86fa000037e7abe6f4e00000883a2262a51f0000c13e1bf0cee100001ab109fa7389000041d2dce7d9f10000",
|
||||
"output_sha256": "c94f07286685998c8d2479d8b35554714d98d5d39a1562315ab0d5656401413c"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=16",
|
||||
"input_hex": "e3fdd30bd3f60000da365c91703500004f64f6614d2a0000a4ca8296ba8e0000a83dceca66a60000bc6b7c525c970000a84cfbc7c0ac0000321b568891660000ba636c9d8509000082c755154a180000290c24a8937a0000192834789baf0000209f889fa5a0000064972c5f76800000095ce2f095d90000637d9053bb270000222e184e1d9d0000245dbf8b0640000069a4c7baaa360000f866875862fb0000ec2e532ad6c60000f69877f06c990000ad1cf33114a70000ca31da5e2cfa000034ebb902d4a80000f8dedacbbdf90000e74671f88460000060b22a8b66d400009875ed811c150000a3241ddf503b000066c98354923d00009091280ddce00000cc6c39af579d0000bf2a6c211cfb0000c866c2b473a300005a1b57561276000052229c8c007200009d998ad708c20000a21b95fbb6da00006c17e36cf5050000900afa87b27600006396dad8655b0000b43fc597a79400007d6ac8e2ad6d0000fecd50a4762d00009eeaeba053a800005e2cb876cab50000e629a4db6d9b0000acd33777cee1000008767076f45f00005855e8d4c32f0000e0273c83cbc00000c3fb97f55eb80000985e3701d45c0000f928d6e8f42b0000d8284d8970440000a48119a0e9180000ce87fe39597600002309d1a7bdf700008675809e26e30000d9634ae6e7e50000bb0346808e3b000001592db660180000d9344d6a63170000377b8fd55e5100009b3f498c937000007bbbdc319d820000bf43e4d9f8220000fcfeb2172c0b0000bba83a64405100007e83c57dad5400005b4553cd072d000000f567ec5bf60000fcdc0cbbe34d0000ddb2b90747ce0000bfda17c4f619000013a2a54c7ed10000bd31f6aa34d3000050e2e0872da400003809e3fc044200004c6af354c55e0000b6c9afac8bc30000b5243c382635000003d63e301fdc0000205ba49eb1040000d1698a9caae800006d41796cd342000094532526f3f20000ce4c33b0134d0000312547a2c71b00004c1b8c66d9da000020c71c86bad10000d14a5f571a630000ba888baeb72900003e5b27212180000061f8df8a92b50000ebd7a11d4ae60000093440b92f2a0000e1777669ca32000059e02e7f0ef90000cf65ce3e6d3e000041fc91dfbe550000b4ad7e9aa0870000e7909666a7e10000d3de13127acc0000f19f8bf9b1920000dd18623ceade00008c0374eca8990000f58312098d220000f51474cc007a000041268dccd7560000d799b3a1aef0000042593d571807000004db30691c07000083ef6714992d00007a70b690b8b1000049755a5bc80d0000f8ca013e04020000bda753c64aeb00004b99124a66d30000e784e14cc7410000eaa0be0714c20000419106b6c14b0000c5b628b0b0c10000d254999578940000010bd454ed31000045bfc08ba15b00002bd3a5da76530000fb2e10a7a532000056a596373e920000e286ff8044d50000caf0c2faa155000080dfe3b3177400006b2ea41c1f35000089b1fea204e000009f7528599a91000084f16fb5b3c100007f263cae8b4f0000d0808554b06d0000da42f290b9110000bb6d2361507d000099857937c9d40000178b439367b700000826efb87173000073b5464e86970000a60643d2bcfe00008ef43622d37000009d5319d76a2e00002b69320d8aab00000adaf04d83f500009d81856f3af10000976c7fe6d08200005bb0adf0a30b00009a69c3becee90000e445bab374470000b7f1fc884c7900004009ac4cb36c000078ba0cdab3dd0000c060f0a2b8340000996e2886d7e60000522fa63f2ce40000a5a6c5c32da800008c4359e1888000004fcd894ab17c0000831e3420d06600008e9c4bcd0e8400008a0a9f31e9d80000d6f9403fbb890000117f3dfe4b0a00009ef03fb2a2b60000def1cb3547fa0000c628ef88b9600000147d0f114a010000730761af902300006ee7345a2a360000e40d43decd2f0000673ced96b6690000a5c787df2bd70000c7646611639d00004cfebf1c69dc00003093ad29360b000079a4d5f3f235000036f10caa3bf20000979b1091cdaf0000e73c622dbf51000010a8b4104ae6000030051d0f98dd000044fbf2c183750000e33f107dec7100006f63cb14fc48000049a4ef62e99f000033a71bb60fab000097a25ee218a40000be4c3c3102640000764c7bde062e0000a0f38a31dc840000454000ea219f0000c64cb173abed0000ad74907bb2d8000009a77b5733220000a42f19b989330000fc2df9fb676300004c8f31df286f0000744a90c2966f0000e3843801c17900005931b538c0a30000e1b7f70e4ce30000cb373d4cadc700004102981df57d00009402736659e4000002bf3278aa0e00009e6ada128b39000048ef018dd6990000cd631dfba9a20000bb03c676a9e50000195f101578420000da4b16d911d80000e8684bbb64650000acfa076a74a70000106e0002c5020000b9a5e4420b830000308acdcae0960000c5dce5ccfe23000084429a56ba8f000098cf883a0e5000007ff1d2a2e4740000d08dc70be0720000c67a56206bdb00004648e4ce36b100002592a2d236800000c99043658fd20000bfdc89194b53000063792d13ce400000d0168e2a639b0000fbc2cf547d370000fc1fc50028af00006fb7401b0c31000090005ce1ed5200000255e2ef7f58000079000bc5f82d0000e1cb0f7de5b0000003d0d50a892d0000d4b1595e1c660000cd0599da575a0000ac3b58081fdb0000453779db3741000035e89a8dfe2e00000640ec5e42480000a3a97abf004a0000b68878d17cd9000083caeb3ff30c0000b51a41e5d23b0000c515825e7e1900003677577d05ed00006045d5a0b1070000a88e7c2cd55a0000",
|
||||
"output_hex": "e4242b4ffb20000004afd34799e80000916fc56a6e260000ff14ff920a450000058c938f556d0000bb7d47a6715700000566983a9c260000d8bd2b55d3c30000c39060dad9ca000033388e3660310000a88742a4c3130000c982b6990a6c00008cf30f6a6ab80000dd6caa0d78c80000baf2185f0c2500001ac9e56de64a00002d555ba9986100005d10d796ef9a00006fef77869a1f0000fb731a7955a60000e2bdc352a444000097e736ca3cde00003b89f3437ed40000226f6ffd2eb200009e6ab1893736000062a80a3238350000a0441fde88430000407e2aa1e5f800001745363f730b00001c13ff49ef830000cfc8ca84826500000026c4720a3b00005c888cab184c0000a07747acab9700009290bbd4851f000076bb62f50e81000026420dac9036000056472f4459580000269e49eea19d0000ae11e8b9b0ef00001443e5487c4e000092be90a941fd0000eeca8f28aaeb0000453f59d58aa100000b46ba1a387d000001d72a833aba000030dd6b1ba6710000e97c288fae9e0000c2a9b0c64da600007054688869f200009c2c32f313830000e30d1c5e8e2400002634806ff9fc0000609eb18c52040000cbed82db52d00000bd6c65bd8a790000a2b4ce46429000006cc1e0e1c1460000f2cadf558c85000020e8d445c10c00009fe97c48a0210000647e77ef1aba00006523b06b99b500007d2f15001ec60000c7c2dafed4600000131f215ffda7000039e8f2530530000059424cd302a400001e5f4632c5b2000031bc6c9c24ff0000e735373f37170000c3adbca6e5fc0000921db3d253cf000050b10cc512d20000a834696c959a000079a114e74098000010641b15e7ce0000465413ec4f470000fac64d8f885a0000138a904e86750000a5902669f39000007912c680698e0000c464090a4adb00006d310cbde0520000773eae9f703300000ff8e8e2c3250000b2eca5e91e2300002584f0d3b5c700005f6b44c2b1990000b4e2cb2edda600000f8481efed8200007a7f64b944f90000a212fa417df20000f220f033525d0000c5d02a0481b800001b8f6513ed720000a84069116f6b0000c661cb8ab6fa00000464cf08f14300001cd6755bd47c0000ea93d516016e0000220006f9cf06000008603319bcb1000085e2d6b7b0d500006c84db88417f00003f06d46141db000080058f79269900001663d4d2c154000019e9532fd3210000193814b225710000b550adbe1fb70000a70028ce2a130000a20497b2be700000a219bb704b050000c9a5d7c6e9a500005840241b11e00000fce6de6118e400004c9f0e8f2c13000073256e8fd69600008e72510531e8000049bb69769bfd000079f9175e13640000c65d184e98ed000038d5b0b8bb2e0000a8d3502a42de0000fe3d166b6b990000d9b1734abcd000001041e7d29b18000015023b3ac51300009f258801c07e0000034e87e82bf20000cb047914a9f50000f8fad845864f0000e4d498cc1c3d000037449e5f587b0000c28f1d27da230000ca7b45c1c48800000063e1eaf27b00008b9cbf739bbe00008881426d55df0000d1cd46a6578200004f5a11af1d2400003a5261955f150000229691b337f7000054625785d5ec0000a05e0722feae00009713f479fb110000de92260885de00006c8e113f09d20000d5d96fe9fbd30000bb38ee80bae30000e711d19ece6200003fee2b49fdbb00009c614f73d59b0000f0a3e2e3019500001cfed10a8c3b00008ed4939139fc00002303c17dd76700000c1d5b1e8a2e00005933322258d800001d384c397b3200002698ae54913100005d009d5dab480000ee173f9b396000000b676a78ccd80000f50f682a76dd00000ec7506b2478000017b158175f02000002cc54cc1e1700002a85c9d607fe0000d92c8bc8462a000063f5cd4a5be700009515acbdb5e0000027651fdff3a80000379f2ef37f740000dbac77247a360000fb6a05d3236c00006c223689a9150000269f342caec2000045d4021048dc0000cfacc2372d2300007f67aa03e3860000b33dc42d3ccf0000e18ea554fa8700003305eb04b1c500003f360931f17600004391e5eb8fc800008e99c809ef930000d26d27e82d9a00001f0a59c3be4e000064484adfa1760000941bda9ac6c4000081cf5ac90ca50000508f9736129f000077d913f8240b000008d7bcd1037b0000995ae4bc16d400004a5d947776ee000014f3cf7e902a00003264867b356d00004acdccdeffc0000067d6fdafaebc0000e3b63a58fe6e0000e55df98313ae0000c9361abaabd20000a60b57b03b4a000012fec94507db000075eb44ebf51900004fbcce3c95b000002dc2c00f75cf000038731a69b3330000596a16a995aa0000754e6f077b7000008d6f07d69a100000ea40a8e0467d000065f0846b01e200004c3168b96a0f000035a32e5ae54a000034bbb93d486900009f5083b921820000f0ae45a25338000091945f1eecce00008a583ce2a7340000a3589828dddd0000ec8d27c85717000096b70b85730a0000cc191e6eb8d200008472962b47990000be685243d59600000fe43a9f1a8b0000136e150e2949000071e7f23dc0850000919a4ec3e0bf0000be9288f991fa0000fa769733e3cd0000a9c5b3bcde460000a37c81839da10000835abff26c9300008259aec514ec00005c3ef1fe470b0000bc41c7cabd430000893ef38397430000a31aff500c7f00001d9a5f16cd47000071d2acefd3b000008625d2c290c90000d5a2db1de4b8000035a6080ab51f0000372bf92a5f860000c9236905856300008a7cbf4bf88b00003b1aa1a24ae70000fe43fddff1a70000cdb6e4511eff0000633c7c22bb0000007eacafb6c89e0000",
|
||||
"output_sha256": "185e0c7a7031af72f545280b5701263d7f74a1f4e211a851e82730a96893dadb"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=17",
|
||||
"input_hex": "2597bcdcb69b00001726844133d9000000d3b296b0110000e744f4e2cd5e0000b76730ea0527000006f5fd149bbe00003327fd92746d0000bb941a5605d00000feda7b6b082c0000eb1c748a61c00000cc347cb1663700008ed1068504650000802c202f9f750000129f6e6131b8000048a6985b6b82000003f269dbb45c0000495f4d2ea9770000035cbd2436820000edc86801243c0000a3a0a08ba62c0000e2ade9514095000050e1334663fc00008bc939888766000059698465de73000024eb3b424f8b0000851a6ae14c340000fd745bb0a1e4000087caa4cddc92000007ce04344df8000033b3e51a7dd7000028ab8bb67e910000945a04ab21f200006876551dd7020000e2e47a62de6400008bd680789f4800000e9559ec9e590000335f83ab495a000040d6ba1476c50000ed4d677351c10000d496af6eb9c1000033bce8c6d51e0000410d2c92ef6c00004555a634f786000074f996f6c5f6000096ee88fbfff300004ee8af2980a20000bc5d1271d0270000cd3b767fcbd1000068515de9c1f50000fa037da994570000f57fb0fe48fd000078a181682eae000023e5b6a5305d0000bbe19c38260300007c41d39ea8c600001c05a0db82b70000658a382a75d4000057f529f803b40000136714bd4a28000030576aed7e5600008a1dfb5533570000440b367dd5d500008959978587930000d0efb68085b1000098da9b5efcaf00004bbaf592a50d0000ff0755addfa50000d6044377e22400004fc2cd2c13710000a3a47eab267f00004cb3f11474540000ff12773877e600004e2b06d5639d0000842f501f707200001446f0c48c4b000040cee9b5dce50000d36d6052423c00007d79ec19cf880000e25121ecad0b0000d32f9286712e0000c5d974dfc91e0000d8ce74930a8d0000ad39964b7d0f000035a15fe13d430000f39abf1ea05f0000ff721ef389d1000085477bd9cf8500001d2467a6798a00008207cf4a4ea8000095182208ea300000ae765957934b00003ccf8d60c74e00004b7a2f4274730000b3d3938bc51100002a97816cf295000012d579e9aeb00000380906221e1c00008d4c002eebe900002bdf2be36c550000a9df9269d393000075ccef1dba2d00008dc84a7b81f300006fdb7793b9f30000133cb35b958700006ad10fc64b450000d67249ae46800000aa1877e4416700002726420b4e9b00009ac1cff6c3eb0000b40033d333b0000008501c994265000009b1181ec3a60000e0705b39e4470000a1ac7f0d8b59000067f0f19b38820000f89738a8c968000054d8bc98a5c20000da1fa134395a00009f5baa781198000074ba5dce8cb90000a5ba65fff9bc000035b7a1f2b8af0000e204ca5809ad000092cb864eb3c100002d282fd370c2000058b44c62dc4d0000befb7c49abd30000b0bb2a1a5c840000c04e740a62d400007a5f4c2712e60000f5fbe0e4fbab0000ae75d958b86900002d85bbe6439f0000aca5c878c6ef00004a987e7e188f0000c5a695a777410000e06d37bb6e360000fe4903d1e090000069cc8db627370000bdd9438c052d00002956dc6ec60b0000392816e883a900003caea10263730000b77304f0cad400005860b7e389ed00003d02c628194c0000bfb5637bd0220000046e00573af60000f5b703c8e5f900001df98f7439100000ad5ab62fa21100004ddb99ec3e490000c279e747ca010000f30f192982eb00001a227fa1e08b0000896e16cef97a0000848f9337f1230000c29d679f9bd200005d01d547c693000074067e5369e80000f3d1f2bc3d480000bf03786a7bbc00006b446e0549b80000ad7fad028e1700001b0e74d5993f00003dc812e15b240000d05369cf203d0000d321630f040f000052942b453f170000553aa7ae90300000ef5bfeb08fa3000093ef6cec47ba00006f1b3759592600003387888d7ec300002ab5356522d70000999865e172970000efd0ebc55b2d0000de935f22a2b9000092ea5ac0e86700007b965ae7f38b000010102e25d87c00003fcaaea0e84000009de64233d3960000cb24d1211b110000f170ef9e306a0000089c9768357b00006f34f4a68ca70000692bdf5cafbf0000dfb0f7f2a9e300003d1f44775c010000d1e5998f01570000f610a3b5076a00000f1bb6dd309800009596a930dcd900007bad1ab50805000008541501ff03000015a7e1cf78cb00000b63e66e3f61000088be8b0ea7190000ab5fe2429d090000760c6a00e92f0000ae77d684929700003752d8896a3d0000b57b7a3808eb00008508b3ab779e0000ac0a6226eadb00004dc8191c20740000d938a891dd6e000008d3ce7f9d8c0000f3a1c50ba51a000063a64a9417be00008ddf2d8af00e0000d6f4ad91f56b00001e59c06b58890000774a998f629d0000883cd2c2232b0000b5bbb83bd21b0000388798fd89300000dd139ebeea4d0000c8374acce78500001df50c54d95d000012f79b53a3540000c335026b683900002b6863dbef22000060baf8c58da40000dd9419ec915000005fabc0a6a9a50000200beb3914340000fc96183612e800006404d352511a0000616b9f727a790000ccb6b81e5404000049386a19b3d90000d151b8dd75b300007acafd43fd060000b05490a3ce0600004f73228e886d0000098dad48391b00003358f1c814c80000d55ee703e60d000031fbc83025d0000011d6d933e79c0000a481f610e5180000e8a4f3d2c60e000090cbcfe4c0e30000977f5c0365d200009b9b1beb951f00008da90cf78e07000065f797bab527000023222a106644000069b87d6775230000baec684137000000471506ef42b500003d0fc396dd2b000099ec4210966d000049633d1241f30000",
|
||||
"output_hex": "d8747c58f92e000012d16e451a0e000098afe63fbec4000022d4d3c3344b00004894e70fbf5400008271bc12f020000022a101cb4d3300008592dcd1d73000007e30ab90d1c000009cdc996936920000025d0fefb4060000e23ed63d31bd0000058b4b26d7440000d4ef17e105f90000ebf6e58558de0000dc9befde94e10000903eaaa8ddfa00003cc6e7f81ebc00008627c2cf97a90000f8a8096ed34c00001f02c3f1b29c00002db064ab43180000f3d66b521a050000506301faaec90000d77a062551fc0000d75c6ca8c3c30000abb56fe2988d00005fc0bd33994f0000328e9fe9ab9b000057db568aafcd0000db7325ea0ae0000030fa629600800000cf2a501646c7000035256648cbc0000006bfa5dc2c2800006899a5b0b853000069b55bbb6c5f0000c40ecff81ce200000df0b89ec06300000de5f81929f5000052804376105c00005d831d7425860000fd7587d66ba30000dc4a373a2e660000aa47909f1d820000c6f21a417ed00000da5ceba9f39700001a84725964b70000158e1a7f39de0000d7b902be987f000006d7e9ee6a9a0000c200581fdf8c0000bea8a4c4a1200000a2d562cd6a6e0000c750cd245b3d00007a31c4c6dd7700002bd17ed8d83e0000aa4d129ab3f200002f3b8aa7d168000062f70d0bad9a0000f1268f689d4300006db37e7e595900002188cc12eec10000037be29186bf000076a8ec1eccad00002229ff146c57000016cafb29e5f300008e5b8cee410e0000d0e5022221460000b147cc58e02e000092bceddb317e00008de4ad1bb76b0000cf6bdc36490f00008b5ee1550c600000c7a337dc468d0000747212ff85790000893decd5f2940000f699484ea12f0000bc4555e42cf200007c771e9ca5dc0000cbfd066f34c400003cea0d9823c60000f197dc65c1c7000092d1318e17570000ecd4d15a773d000024c88202edeb0000ff7f6ac405f700001d0e66ef703c0000584bc40c09f1000089392dd114e90000ca112b5daa4800005227d6eecd610000248310ea234c00000f2ce6ca11c50000dcbd4946c60a0000c896831560f80000809bf777aa3900008776fad10c7600006f482e91a597000007ef1c9be3730000241ce6b8ea05000081790744a70600009ef4724e9b740000e47ee47747d10000088912137acf00004b1483c8c98d0000a1d8b676da6d00008d3f6c6c3f7e0000f15b35958a040000210e39a52a1e00001c963ac32ccb000042502e7caeb30000dd54d8ddce9e00003193d62cb55c0000ae38e1dc412800000292f02fcb640000c750275eefd40000a082aa038a4c0000a8c41a2cbc99000097406d1c1228000061b3cdd82eb800005f11caebea5600000e060feb9732000023b5ff9c8755000094e8f58690db0000188fd0b1ae8f0000a96856d954ad000092113f66146900008928ee453bfb0000b4f6a1da9189000097956e8d9030000069847a13fe30000058ef3f0e9011000047c00caacf250000b8ee2c95283800005cbe2e68a3b10000cf15c45dc6ee00007ccc2968f25600008a418d154f92000032030ba5a8f60000d30fe5b640f500003c715dce11a5000021f0d52ee18c0000228d71bec7990000b4724c985a5c0000ddd3c0af65e000002796c96a70600000d27c3f21f7dd000085750fb86f0f000046e7f8f4cf2e0000cc86521bbba0000028b4bf71606f0000f6244f0630420000304d75c274850000c5882152389500002792e856938300006e7cc4bdf2f700006e467a3faafb0000be362a5ccb110000fb4bb76946ed000056fb3c47e14a0000e179e25dcf5d000022c035ec62b800005dda501ae6b40000702044beb7970000ebe29129af4c000091abf38246f10000580572d6f53c00003dbc09341659000033e60078fb890000bfa644e8b0150000db7d0b9af0c40000c6e09669d2a100009280dd9295330000f6aa5c811abf000050ded941b3eb0000e5413a7c1ca9000051af158973e0000082ea6c9680e3000030b2876ab4be0000b6f75afac4e200008e85465e9e1e0000aee754d605bb00007c5a685e8dea0000858f2e7808230000f407a6b1fd4f00002752e422c5630000a5185992161a000094b72e8f16510000638d1196a19700001e353d48b2540000449b34fc7e260000dab065a845fc00002ded96c53dd40000f61fd46a58dd00005642796c0b0b00001f0fec3c161800006d0ebf11b5190000a7bb1d3be17100005e08975aaa500000eb5e5641a2230000134ca0fc4f700000c0cda00560d40000655b468d6d4300006719c52c3e4a00004be227ce051e0000a121349581730000e2862ed0b26b0000ebb41e43879a0000912d6de71c540000deb2a972d21f00004433a2daf5a60000a7fcca131cb90000a24e944a9e980000cdeaf349273d000068e9966eeca80000f5e385a7619a0000921defd0144200000717af7b02c400003ae2a14ff70d000091a4f320e8830000d61dd17b91c400004ce1c8d6eb580000ea6e4658923b000080bb166f6d85000017b71d29935f0000c22698b5d476000027020aea00b40000ed76cfd4ab1e0000286dea03859800000f62071995b5000077e7422dd1ab00004ad3a8259f5400003ba18f59595f00007d15e15aa91900001bc7fdaa163d000083da60ea9d2800003e813557ee5e000040f84f29b347000033dba89b3f8800000762539ed2a70000db052bc57e900000dcf7b9bd0e6f0000083d83844e4000006895c7b62f2e0000daad2ace54d80000eb738a3a20bd0000c25c1ef3f99c00009fe86e7a304c00008ed6992b698400006740a7949d3a000058bec2bcbe8b0000e5be9edeb268000031be23c6ac380000c7beb5612fe00000318ef7d2ca470000",
|
||||
"output_sha256": "a0611d73aab38e6f39fdbc614b974b1088935410c1461aaf42211e750e4d4f6f"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=18",
|
||||
"input_hex": "70c89410cdba000052d9c6bec1350000c6339a2893ea0000845f175c022300000e1ca406f9ef0000bb7dfd61cb2d0000be3fbd050b79000049010c9862ea000012527538c96300000f75bbbc836d0000eb8b15fcbbef00002311909be79a00007db3e057dfca00004c2b5578ec510000bf93a3b51b0000000100fc851b43000094b65b0086bb0000ba13b082b3c50000942e71ca945c00006689219d4a6300009ddd12061b1f00008e20f38051810000ff3bbeb4bd6e0000f0a0e0b1571c000001c02c528bf1000008482c7a2e360000900eec02e4d30000040148e0e439000019540b6c24d200009702a08ca80800007f050e25a9390000f4631327eb620000e9dda871687d00001757e47b6b4f0000e93bdf154aef000082be3ee7534e0000d07ec7d11e760000f6d11c26384d000092cf774e9a370000bef2c41862690000182d457210b0000098d23ea45ca90000d2704ce64843000093d1630cdf080000a35eb2cc80be0000e1fd0514c52e0000b8ce3ad55e1e0000ceca0656345a00008492f1c677cd00009b00ef61bfa8000098e17c4a57f7000024fb403f0c98000083db97e1483b0000e6e020faafc70000a86a2cdb77770000da8d7380721d0000bf494b796bc200000b515aa370460000e3ff2da55f31000093d5788d44840000aaff1fd913aa0000da4ee40ee7cf00009f17e0a44287000076f48c1761b20000ba47002e4de000007ab537ab5806000068f0d4a4fdc10000da907156d5e90000af51f160df4d0000cee86d8a357f0000e4d6780945470000381e91b82aa40000781b26569c20000020558c3dfed500009bbba2cc74fd00009351c66d757d00001d87b714864a00008f6164fa67950000ba87b436f5920000b4671df32439000050ae466c6819000055906f272b8600006ba1f53f63b00000026d45144ea600005d6bf1a8a2060000f748eb4b23dd0000956ae514a1da00006477a0590b1e0000e7d3331e9de50000374060d421610000b8f7ed79bd920000305f4d66473c0000d022b31c9f7100002f01e0d150f90000e5a68d88b95000005e19ce58c9df00005fa75b3e04dd000081adad85d9e000006df74a7e7de70000e7d48ab638cd0000e58e2a49195400004050486afe6900007a61c86a223a0000c726fdb2c7da000096c53c028a910000380d41f36e89000061d1592598c70000c16c59f6908100006e85714d3afe000049a416d4f95e0000a7c47f53801a0000a106fae04b2c00009f2bbc4cc1ee0000d717164eb0eb00001241831924040000321f442b6d8700001c2587431ea3000042e6e535b37b00002d62fcc3da700000a9b674c0abf60000e2cf52381a330000eab93618dc3e0000614925df44380000f85ce310376f000017e48c279770000011f748e0d7e3000051a1a48ea4f60000551d321be7e40000b217ee688b6f000053f7ac61e6a200003e5d2ebc00060000e2e80eced81200009e1eb1e9a2fd0000f9b05cefbe8700009e48c67a40de0000a1a92d1a5875000045d580d98c6c0000c2fd93a10f2c0000eb7d9fda3ea50000a3fa83c8d31a0000fa35c10a5a380000bf486f5935c9000061791310a99f00004128c954d91500008480b6c164e90000432375074d5600005d3bded359900000749f9bb8583b000075d7fe8ff848000023a7cf1e3571000091ea58b943cd0000520b239801e300000dd5f5b73adc000027ddec25224e0000a478762798ab00007bd1c10fa19700004c91794a44730000a8edf0163b850000b3f12e67b0770000fb4b488d8294000056c0f4b129400000011776474da600008f02ffd4bb50000097623645ee110000f34c3f03805c0000a5fa4f85cbdf0000a0d1dd2366980000b7154e40d2220000b34da4c27c3f0000c692c2b067b30000fe7aca51daac000046f5a09e9abe000057c044d0da390000f75b00106f6000006f7c678b836c00004b13ac58193f0000e008661c9cd600002d95c186eaa90000f9230877d02100000c6c15ad9ddd000071c6ba6ba14a0000eed88cde8c890000823bb06b91760000bc627d54a0fd000087e2edb1f0c7000086479c89ba0c00002d60013ec58b0000ecbdf68b4c760000ca5920e86f2a0000a3f821fb1ec900004c8de0d91c6900005a83d2f7ec4f000079213ecec19700005b2b9609abd00000cb2f49ada89500002214fd15398000001a019ccff23500006e00debf924d000053dfa026874e0000f775c3bcaacf000042aa9754a5c900000382bcbf17f30000382e53160382000088d9bb43ee1f000017ea52958f960000d48b0b5198e2000096ee8ece52920000c0b376f9bc9c00005ac9d6d62bd50000cb2f177d03990000dfa0b3d3d58f0000c55507c03ee90000d83a0b30bf0d0000c00beb5424d000006b09ac57399b00006cd86000dce90000d086963ee4a60000ff2c3cbed5d10000cdc33d2ede7c0000042e3128c37b00003f5bd1214a0c00001cd6aa5d13b10000527ab218f07d00005d4fc3d784f800004d597863215f0000c49b586b8e9d0000b6079b6e891700000f0d51777ac200000ac7dd250014000019a3e3fd6bbc00000ecda24a20b60000ee23400c21d500002e1d018db8d9000043616a05daa70000dc2bf0ae8fa800004092e4c35b1f000090e7751985e40000033631c0bb1c00000ed5f0082cb00000dddba6fbdbb400002272466099b800008205132d4bc6000092a2031eca8b00001c7d2ddbbc2b00008ec3d4190fcf000089d8ecd66bf5000074e9e3d566e3000092457bf38e8a0000b160b62c86c7000008efe718e58b00003fe836a6f1f100008ba47e603aa900002f161961477f00000fadcf082a53000078c7cbe210b700000510b7cb557a0000",
|
||||
"output_hex": "b71fc420e16b0000ff149ba633690000764f048081c90000dd8ddf91e1b50000066fc1fe921a0000ec2ed64c198600008a60f32969700000dd23c90e788d00007ab1432e6db000004fc4cbbc7a330000df40df99c3a800000aa67622ee6200002be0e59e0b5d000006382359a45f0000a4551dd060f100009dcbcdae6a0d00006b9b2af39bef0000881ebd78a1030000147aa735f0900000b71ab2306b0200000b8d5440bb660000045d803d2dc60000bae274c2b1090000492a14a2556800000ec65abc4d450000fccb42d60cf90000acbcb9842970000031d984fb8ee70000fa6333f50ee4000010b3a989c8a80000b654ce1db1b500002a8e376b71fb0000573cd52d8dc100004eca6f7e43cd00000b6b76f7dcb20000702c5854094a0000106e81c2eb140000d655ea82fab500000077e360186d0000ac60f31518b900009a2cec166330000030fd49803730000021e5c42573950000190fae68d07d0000ccce663199f4000089e582a5c69f0000325efca7444200008987d6630b220000db8994445ee9000001000396d8010000b143ffce562d0000a4074ba4172a000052ea34c4049e00000af957304cd40000361e5cb6aa500000bfd0cfd1fc8600003fa77b387387000088a549e8409600006fc17c52a19900006a8cf97cc278000048e5053854f60000555abf1cbbc100000dd5f3460fb400003cd9cd10b4270000cf59720a37290000c0b244254ac20000bee229d325f60000fa180a207e8200007e7075459bd40000edb4210c177b00005edf6622ac8d0000a2d63bc132e00000c9b7b34b8c9800003fd1888d7daf000052d28137a6d40000dc34cae7dc4200004dd5cda56f8c00009a737bc646030000eeb4ebf1134300009efb4875a3ca000032b096a014bb0000fcff58d3c2400000ac5c00a6da840000b7e9cb84c8a10000307c41356f1500005bf4b98d4e430000f0bf96876ede0000c5b4d8fb1c590000b49963c2bf2b00000fa685dfff5b0000391397d12f9d0000488d8e783923000018151a4c294b0000e0e6cdc4a3000000906537c053800000b5abbd6c1fea0000860a9422d6520000bbe36b6bf51f00001321bb611baa0000394c0f6be2170000253d639c53c100007b3ef592b01800009ed5acb39cf300008a2fec76e4b30000d8ceab72008100004cebaeeda262000001735219d37d0000b4c9ddeffc1900000b4e12291ecc0000838c34e8b644000034ad922125340000c268224ac5b900002dd22f92dbb300006825cbfa09340000ff30489a58890000753824223bb20000e8e65949424500003a80fdc8ab1000001c7b39bb758800004bc4fffab319000097cf4ef5c87000004d13186bc1520000075d8e9b0bb5000088ecc5b840a600007b64bc6d5f2d00002e86801165cd00002fb7752dc1de0000a03e2b9fe66b0000f0ea1acd0e1c0000c81ed4001e5e000096c8b74f55b700001dc0579418dc0000edff349471c800009424229d668a0000c4d2d00d91490000c0fd9bd0a8e40000377d551b0c370000496cd139aa2600006be38ed68df00000698ca5f81d8b0000c395406d7b8200001324292792db0000a041017febf70000ec1a22e59c410000499521aefa430000c18c4327883b0000eabb660ee60f0000fe2bf21b002e0000d3a74c58738d0000f60161ded6d7000051ebec7c3fe90000ae1220ef120200006f24121b3ee50000b9492cee75fe00001db6011daba0000004c82feafc280000731cdb4799fe00008c038aea4ac40000a58425132e11000018b25215a7590000fc20d40aa836000033f6e1d3e1c50000cca8fbd4ee71000054c2173e959a00009bddb21cc1ef0000c7ce7db399e100005f42755939ec00003b8e0f7c52a60000fe05cf3a7095000097361aaaa76d00007cc759869e500000827ae4e04cf00000739bf2c0055700007a79e6a5d4bc0000f3e659a314c00000ac0cdea9f45f0000e2852c3450a80000fe952656d2f7000052b5f7e031300000741e181b30f5000094c67e78f663000068194639e00400007d41b7fd50490000fb103ec10ab700000fe5891d7acd00002f550e8ce31500009671ea85490a0000af334bba3ce7000001f205c6f95d000004a734369d4b000078b43c73b789000068fbfdd4694200002a15e4f829ac0000c91013b8a9660000b687ea70e13c00002864ceace3cf0000d4ce0fce80a4000085532e0acbd60000aa2bc6cc68fb0000ede2eff822eb00005081228353df0000c8c6998954c40000e2b3019f5ebd0000916e4da5e60b00007f8a0785018e0000cf26ee1785ce00005736c7e566190000249167fb212d000056a1e3ffffa20000fefa4153b0950000e277a2ed04220000d8f8b077c82e0000c8fc982b23ba0000cfb4326b3af1000080a5dcc8ccb200004c46e7e731690000f2ad9afaaf9000005c904cbb7a4f0000ae5b19b2561f00006d6e64deb5b90000dc1aa49f18780000e8cc7a79084a0000d6edb19797f100000c00ac0db3e2000038b557d72a790000e0287d1c75fb00002c203f1dddfb0000f1c2758968de0000e041813c2bf40000613012d93ca00000896760b7d59c0000f098540af0460000d4ea777f0eb000006b520251cc170000ca0e9872f69f0000ef6f4b68ee900000e67c72bcc2c20000c6a3469025520000544ae6345694000015c5ff9c162100005cca3605e11c00001406ffdbf84c00005bfb455cc1ec00009e81dae49964000082be72d95375000031c5164cce330000c450378f4c6e0000a9a31fdc12d5000086c8abd230f90000165c38e4c0010000fe0d0c50e1e000009bb02a3f2a9f00007d78d889ac6a00003b5925cf289b00003ff975ce183a0000e27162fda4150000",
|
||||
"output_sha256": "8f2838489bf2e535eeb0dfbb972e4aa30a6486349a84826d140550a4cd2ae45a"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=19",
|
||||
"input_hex": "c2f483328a0e0000e0f2e86a919b00008111c338d855000050c017ce05a000009dd1c4315c4500006a657abc865100008ee8989c7e570000ca1ca9922e880000dd831ff800370000c744f02329e800002ac8a34abd050000316a37968cf40000b79a5ce4d1430000931307656cfa000052908686341c0000ce2f473ebc5000005a94177892600000c807075944ff00002038e2da22b5000005fa8f3e2c5100003636824149fa00006255543ea18e00003e4986d9ff2d0000adf6c93db72f0000f9d4232754460000eea7f8cdd6020000aef5e2ec82610000469cb15da9ca0000ec2a1898be2e00002831ce989c9300001113823718b00000dac1f359aa0b0000a9514bc41b0400004976d93a5ef20000108aadca43c30000d5335afad3c700003d27bbd8a5da000094b73ccbe5db00001c3037e636d50000a7346131cc030000cb39a4153a790000a98b2931f1890000a50f5de655710000764292e7b20500001210dc6041cf0000254408ea84fc0000ecde4107f37e00006ff08892906c00003e3b8fdc3bd70000a6eca0452b87000057ab405dbe66000075a4bda2c79300009e317078bb7a00007e75e02838ff000076e07e6de5cf0000ab63aaa6b1f20000fd022602741a0000fbcd2fb0cea8000043e95ad8a2730000e56ec97f70dc0000a4b2646245c00000832be1cb167a0000931abe0fb4170000677e0346105c00003a5b549afd560000821f3d6395da00004aab410c58e30000c55ddc0e7ad100004c2fc83304df00008527f2d0cae9000031baf2998c5b0000821d552c0b9900009cfa8934a97200003a60873757fd00005f94cb8c9bc700008c4db1d5508b0000458530daf0f70000f62509577f40000034638144063d00003d16ea7a9b52000091081f189c160000930a68f61e1a00004b4a9ff968ff0000e8c59a91df03000064b127ae29970000f8679cb706dd0000712557b52a6900004e312d7cb0c0000076c04d3713690000ea6bb14d29fc00004fd487ff923a0000620a46f84d350000bcc6ca4739e700003437a626880d00001944830ffb86000020e6fc9d44080000eb38ef222efa00000ac0f38d462900007fd8299ea9d500000124b94c95b80000a836e460666e0000cdbd49eb7779000099547a259cc900005598010a4fe70000b9387a193d5a0000f9f0a68fa96f0000e2bd1cb8c0f20000c94d567576a600004c1fdf652ded0000f5b7d71ab94b00004a8f979c13c700008bde3092b57e0000a74edc3e8a730000762e6d90c66200008245283898ba00000f3e3ba32d0c0000595486a865110000fbb026b36e78000052a22f6aaf6b000005f87e7184e10000843768fe16a700006b1ceb1201f400001daaba102b510000fb44801cb3f700008efd6dc6eeef0000149c6ef4f0900000591585daf92400000a819f4e357b00002a63bd53c30a00005e3a3eb5f51800001af02d2ee0970000f3f4ba6db7740000a256275ff63d0000aa3c90f73a89000088e2067cce540000dfc26d96e855000029d4d5f7cff60000cff1cd528ffd0000c65dd21c29ec0000346a42e5c55800001478ba20773b000037ca0209c2ec000038c21d2be5a70000b315bc6079a600005c04abbc5eac00004341938fddfc00001ed955ed28fe0000294e51557a1900000a537102f83300006e58c03e60f10000db8ee9467d350000bea2f2f6b0d00000640d4931f1130000f127f98ecb8f0000ca3c0371320e00007b01ae0be04600007deb2480ecf6000030945378b0da0000a6eec7f538b200008f06d0d4f99200000548479c26710000482406f4e67600007ca2190b04d10000a2eef7bfc102000038522f5a80d600001346551755fb00001c41c99520a20000cc129c92b5150000598010c27bd00000e8fcd402e1c6000004f19a1f99b4000044bd08dc68c70000f75dd76dcf42000020ed1bc021b8000075d405c1d1e80000d415e7dbca3e0000375079e08c5700001242f6a42e710000214adf261fa10000a3a40f5814110000c19569c7780a0000c410c66fa30d0000f3a2ba47b6240000d3588205681e0000b359911c8e9f0000a4bff5c2597300009cc79f58a7790000a4ba9ed5a425000043ac42ea426b000050492bd7eabe000020366bb571d000004f1eb45b22f50000c24efed95c0c00006217adf944fd00004d8198a9df100000ae55aaf2cd9300000f1154df70c500003f3c3bb0c1870000602f3b5e33c700000be38c43da8e0000d0e3cef30e390000817d5be02c8c00009cbac4d8c11a0000f26b7e82ad58000033a8b35882d000003354fb54f50800000359c35e0ddf00004c6f1ff861d900006bca0ea71dab0000619a8dc896ca0000cafb61ac00f800001812c78895ac0000be81904d501600005222054bdb34000012c7d25551e00000de6a4e38dae90000e9cd21de765800001c1398fe7e4f0000b4b6528f5b9900003e4de69040ef0000caa5d67f3990000087cd059b5298000076ebf05ca59300002a89f843b0a40000b94b15c7cbb900004babdf89a9db0000c4974723feb900008e96dfa4c3d500006fcb3e49771400000f22586fd30a0000a0999325e8a400008268aa29e15c0000772b0cdbb13c0000ef41031bce9f0000369ff654a49e000018f79fa4accc0000d293579174b3000087f07f528c20000082ab7cabb07d000043b446ec6dce00000146a81f7cd300004c5f77d30e120000e477827f77c80000157c2e6007f30000c7128ca137f30000559429899ff500006918d2272c480000087fcbf7489200008d28332afeb400008713412cde2c0000580f86c3c4c800008019e6d822590000475fb1576ef100005a513503a5600000f80ccd9c552800001a67ad7029510000",
|
||||
"output_hex": "aa744802f0700000cf3d94ddef4000002873ee1ed55c00005d740aff00c60000f82ae0e78f9e0000326d22e58da10000cc57ef7d222b0000c4a1ae1f920d00002cb77443a6e70000b50c7e68be6c000028279e4ae0c30000c13edce635c40000c91ce294221200005b52b995071f00008917bf9eff2400000ddd2913eab90000228c4aa192cb00009bf6ec929b03000031c4eaa2799900005e083e4c221b0000ad54846b74540000354ce122dbb80000ec5855eba323000084648d7a19dd0000507bd42cb8ae00005dcec5e455610000e3ed0d465f530000173a3de57c50000070696d4da08c00000037c5ceec1100002a05cd7d509f00001b2b855be43700009c27aea8310300004767404c930f0000a905df7ed14600005583d561d87a00004c0689f19f330000f8e7c260ca26000005843df3fab10000164c3625eff70000519862f127ac000024a0e7a24ebc00002052d3fbf9ba0000bc4f3f6414d60000226250f50bc4000083ab872f54660000a46c81a9a0930000fb70516f77880000831a69087a1b0000e3367ef34f220000506a7d73183e0000e67e9fc715000000f0b0a5d806f100003279b90abe1800009e2cb64e74f90000428ace93aa570000667dc3be69f40000335d2bb762eb000034290a44e5a700008c9133c5ca800000b0982923298a0000d9f75df38db2000000560a7639020000bed453f059e800004307ad8bdda600008bcdfaf23919000028b67b41a5ca000004820af519560000ebad4ad0dab600002f77c23126da0000869602139dab0000d509f561c0ba00000079c345a5b200000326d16703ca0000fd2d48c6c3350000433b75b65c890000a3c30c09cc9a00005781f6e352be000062c14194df6c00001475c7e965d80000b2fe9cd3037f0000ac24c1fbe92400008c9adfd7e21f00005bcfcd36eac5000031d77553eec200003eb4b5ee9f3d000075e49e0008450000b283121dd24800004b76d7058d8600006219db5c82b8000026112795de31000094d81cc781a90000d7abc446aa5600000ba633fb31ef0000b6506ca7aaad0000278fa8f2f543000028d18118adc60000b880722dd8040000eb8dfbf3bbc80000a36d41454a850000f8382c0cbf8100004cc5f8bf04870000ee9b0fd78e7e0000ad8120cd9bfe00006ad0a1cab5f40000d4944033e13800004da1b5eac31200006ad0d0e86398000071ea7537547100002594b9bd20ae000076dde45c32eb0000fed445a6cc150000d0e88768001b0000b96ae44aef4e000098311b5e05a70000446d8161c3880000da5b1e7d3f1e0000d7938700f5f2000002d5fb585f87000000e7866740ed0000629c5a5b965600000a612ecdf5d20000dd2026a8fc8c000074424cc7d96f00002ecdd1364de30000a2ffba6270560000a8abbd495cf10000fc4dabf84afa00004b839e7c2c0f0000fad2b60da888000065e8b765496300003f6e731dda350000db6a93bb58b50000b8331986c14300005afdd7ea001b0000fdbabc5b543100003b097f86027b00004c2e1ffc00660000be298c4a535400001b55ca930ea100005b8aeadd466e0000cd700163f4460000fd0d09321ab6000008e6693080930000c5e584f9b4b400008b7060d1deda000035d99a1eb54b00003df265bd08560000c31711b108eb000070cea25abe8600005080f7c29bf500002726f352c2b7000072ae94e1af8c00009173e5990af300005d46002d4c520000349017f4a548000020b44f26c749000074f84486bb970000a1e0f5ae213d0000eb405ad78c2d00006c6829987003000053c3a84f62b20000ca4612bfa3e60000cdde7a0d21360000126e5a315ed70000d7878812bf2900004a2f3a7b49370000a8e044eb5bd70000c01f90b21ad70000035c76d50ee30000a09e417a4be600000a81ac4e56b80000637e2edf95f70000125ed31c70f300003c2af4bbda670000513ad26adce40000b6d6eb4b0c3600000e9026cb20ee0000e712fb1ab7dd0000c3465e4e9c710000ff16c843d54b0000a61fcf81ab5600004d5c115a3fc100001afa95c7d6150000541aa067fd0c00001d0c1ae0d78800009343d6c85d7b0000a434a06c88870000787820fefd20000036fe1932eccc0000957aefff9e7d00005f8fb02cb84f0000f4b1c95861d900000d72670bd6de000086507b6a23c50000458b5e4e1ded000096ab515e3c2800006a27a24ae6c70000219c409327400000d6cc6c767d130000ed110122fd1000009282995538ea000005af8e8990640000f2f453948e7e00000b15e981a10e0000e7e4cb81b33b000091608dd30f3b0000ac87f926884900009dc504c6048800007a20275569a70000d25aa215c7200000db262af28f3400009fc3b9098ac10000200e29f713510000379c144ec044000028d278ce2b18000044ef3ca58a3500000e6f135177dc0000c958e625669d000063b0daa7c2100000f4461715eaef0000c590990fa6c60000ea46df81f7180000cc0a5cbce7350000afa9e7c256b5000065e93569d0460000ffbf6728e2b7000082a71e5e46a40000b80f13291d16000056499e5fff460000126568234c280000509c48cb130a000023ee53da84f400005aaa34df54510000d33433482a350000cdb25e2dcbaa0000138778734dbc00000e5d5c9eaf9e00002adf624a3b7500000afc1b6f501c0000afd92f2bbda300009d4e835d3aa400000236a09f13cb000092bed44c555c000074f94a79e49d000088b6b0474bec000028ad62b62f9e0000761b551c8dc500009957bd8099190000598299d940500000b7452e336161000083a40be733190000c631fe7b3bfb0000ceb580ad373a000007d5675cd40500009cbf73fa3f110000",
|
||||
"output_sha256": "aa8bacc1ae38b63dc55faaa0f893e71a5d035b191f2c52722a50fec9be28eadf"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=20",
|
||||
"input_hex": "7640f9b897140000b8e1873bfe1b000017725ddf2e2b0000088aa313b36900007fb780a094ef0000d48d2d9570e10000e5af554a4ecf00001efae281856c0000d40b302dd7a800006cc7af7eecfb0000ba6ff1a00daf000021de7aeb55e80000df920f360354000078ae462c7cbd00004ea43d3ce8430000caeecdc1be9f0000751ac637af6000004aa84b38c0c000003dc3fa33efad000096718d60ce300000e0946746ec8d00000a8c47080c21000007f98c1e5fe50000ad6caab3da680000280e89f627ac00004e536f456a7e0000d2fdea01ec2400008e96fe6e9c1800009493154a05a500007a28ebb46be300003a078c80609b000026b1e26154290000ea96ecf5062400004a652c7c234500007583dd4bf23f0000051f52e7da9f00002be327ae18a70000aadf82bb008000004313b846017000009e0526f533b3000049f0dbd9ad890000a65ca6b93488000026da918b7710000062389ddcee1d000082a1fad3e3a000004630594fb3540000df5b077b606100007b0bfd4683dd000023bbfb78a66700002b447615c3fe00006cb3f3d93bd20000d64b4abc85170000babdf7412c2900004647356d34ba000096f7e3cbdfd1000034834080ed3f0000a20e54bf290f0000b0dcc8be41d70000de225b41c3d0000072a19c9b14170000dfcc911beed400002c51ba2bb47c0000c012d32a719e0000f3b31428fad60000311fafda646d0000e5f95ed3fe3100002ee446800081000048187824e5410000af94774cfe250000b6056fde244c00002366cfbf5a2a000003dc2e9cd51a000074f124f74b1e00002ba5b6f7f550000009e07376a97800006d3162f23d7c0000d2afb5601dcb0000c2dcb9c0fe7b0000161e2c26502b0000716c0fbd7b120000590cb6765a6e00000e03eba6b88200008ec65aa8afa9000033e5f8837ea1000096efae2dc9e50000ea51b7ffef28000043df06251fd200006b9d403594c80000fbe267a068d200005a11d4b981f700005bb6283b5f3100009f3151e47fe9000026fc1adb5f21000083693eba7bf90000f8141f0fa187000083a7749cbacd000041a187a2fb0600008dc5c525f2a600000f67d4c2a0ba0000d1bb0396332a0000b912a4fa03820000bb4a625bb2ff0000d29c03a5faa70000d33b5e0f6486000011e9c02b49e30000250888a346c10000dccd5b7649cc00004b3cdcdd951d0000e741d30ae5df0000a6e6905d9a830000f605427413320000013d1759867a0000324a0c49bbe8000044563ecebba70000f02781d14e620000db704fe8c1900000b5198c1263b700005962753795d900006affbaa4780500009607e186f6710000f4e50c9cdac300004740e38ff86c0000797846f96e180000d5587bd4e121000089b14ae2c04f00006103561fe58c00004beb002283ed0000b8512e7120270000b7968e4f46ff0000d3db52cd54660000db9ccb7b3d350000738d947a13a600005dd4a9dbf8cb000007c952c66d52000043dc04f699180000dbc49d1b830800002f39b039837400000ef4e7966a52000038c9e09d940d0000e22dda53b28a000068e02602924f000039d12369af2e00002843f5e7a4640000b3eb2d06d0a90000f4ce05d0a9d80000523dbfc21259000057f74a52f66f0000d18ce79f0699000066951d1173980000a6abbc260c6e0000f84fd264e51d0000e07eb66f6ef50000132c34aa7b6d00009e7f6bdcf4700000fe19adcc460e00005ed05fb3dc65000040bfdb486d860000829387bf984d000011a0fd0b6b9b000040530c6836e10000719a379fe00600001fcdceb0817900007df6fd58f0e10000509a027eb2d100002d4e9bd32ed800003f7422b2930f00002b9c7d169ebd0000a13f4448ad28000086a59295d12f0000a1b31663532900009ff849f5306900000b54a9a089b300008e50078cb9180000c1762fbbae5600000aefd02f416e000015a38c3fa3e60000d6144fedc2d50000fc8056332fd70000661b28ec04150000659617b447060000ab72bb4109bc0000a76fa08b10960000c12dcac5d4c50000e1fbb42bdcf90000161c265ad7730000e183492550ba00008663515bdb6e0000f9f3a670c501000004531f3498320000ba46db4ee44600001b11f205c3af0000a2c340c4e21200008165ff5f3b4300005ae4b6489b3e00008774306313c900009a7c8b27e2010000c0b4728608060000c78d511777ad00009b869aab6ad80000b996c62a28820000030a319dc35c000010fa7397be2300004c3d2e1cb60a00001f7fff3c82ff0000814bac83a5c700007de952123a73000096bd2a3e632c00008d239fb025ab000019cf363ca50b000098e35f76f2d40000b0c0aa8adebf00001799ba908f280000ac10c52c122700009dde05edc73b00003e012ce010b000005f230d17aa8a0000d754155f92af0000012a0dd247ba000068a2614accf000008efdab954eff0000d1971c9be12b0000bb8b6e010a8a000063623468c90100008c9962d4d67600006fa7854c776a00007abe7e397f96000089fdaa78e5bf0000db7355fc4d5d000076ae8b7258660000beba448fcd790000281688dfd19200008d2e07e45b340000232edef47ebd0000950c4dd611560000c832224dd27a00004fcfdeef82b000007acf8c356c4d00008e1ea943a4c700007bc931cf2e3d000028c743e96e140000af62d7139d7900008d1b45197273000006589d931ea4000028d9c3f03b5f0000d32ba89d99200000fb0db1ca71550000a35340178d4f0000d72dd6c4d798000041830e59b5970000d6143b511a870000e4d788da01ac0000bbdddbc8a8ab0000e87583ea8d0e0000381e407b9608000007b745b64c6200008dba0cd643380000",
|
||||
"output_hex": "1377a2d63c1a000071b56421008e00008be343c5a0150000d54e86bd9bd60000743df8fdca4e000083adf1f5f6e800000b9089caec270000c56e32e3d0b10000f980b8a9d5e80000cd8af68e6e3f0000aee8c2b3ff8100000884289e302000009672414e80dc00000ffa1bfc143f0000518d437455e9000033c47c8e56ae00005a253efb435a0000880f0c067a7b000010a45d8a14e500007b9f90d6ef4a0000e13f793be5810000aad153f8012f000077c618be5fe10000749d4d507ceb0000860c94e614280000229cd6e7726e000068df8d4961a60000baa2999fe8840000dd59977282c400002f91d227d973000052cff89c6c4500007358a7d84573000019910bd273e60000901433ce1b360000303495891d9f0000ee6276f7378000009c0c9cbce344000088ce4d3b41bf0000e7ff4eb9d9f60000c58c3135c00a00005911ea86ab540000634bfb43c4920000de8b4ad898140000d800378832f300006f102d71979d000001a3821182e800000b630b7df46b00000ea4c71d73ea00009145ca6ab04e0000fd47419b4e4600009baf59c24b6d0000d44937c276ce000030108ff4d85d0000d315f6f8937600009fa7348ab26700006d477afd2a210000d8aa3c8c75b4000023c1ba68c4f90000d3e78ba6da670000dba6c94b5eb900009eb4ba4f67780000ab61a8a523c90000b2dee159b1030000a152da387f5200001742d0d0a0110000e1c6bcf2a431000046fc746c61780000e42906695847000086c4231e40440000ce0029e042e700004a34f9cb8d8a0000cc17d4b8033300000c4f019c7eaa0000d121525ef4060000172c7ae1ab99000036199a1b34730000a9fcfc1abc60000005e514e3256d000003e7b9f672cc00005376e1b183b100008f340bd80a7e0000d920e6af668700003606efe974aa0000884551431fc60000c85f69baf0bd0000b4fc6c63ac69000022120f44e1ca0000a79e848ba5a60000cf1021005b210000767e42489acb0000a2548dd86c030000afe1b705c5db000010f877ff02b40000f58ea534c51e0000ab9fd5cad34100005d456ca130830000285b1228c17e0000ab90c8c85db60000e7453a1618ce00003a5604811a3500004b302f5aaf0e0000c561a9f0bb8d000091c1128e6297000020a86df6bdfe0000222d760590470000f266cfae0d4900009f6fd53bfbb40000bf2d88a072c8000052339b682ddf00002d7a8ec56c390000d794468729a800003c604c7a49ed0000e730ec357e430000d9fdca8503470000658d68f6b9820000f0dbac02db5a0000c0566536bcdb00007942c4a952fe0000efdb545c6ff40000a178b1b86d3300007906cb77b75c000024fe30d6107c00001e8f26de0d8600001586be993706000076c565920a160000b772efe0c7b200004f7cde78472600002ba1606d25580000439a901c913c00009c6fcc8003ab00006ecc5dda84810000a83f9c1f771d000018b832e1f60d00003e99f495de4e000000973f7417fb0000085d110c83da0000566be05039bf00002b4c4d9699900000ba9e53c4c309000013f2138c4da80000da6f7eaab06d0000502ef60be6a90000bf63cf829915000075cd1f0e491b00007cb9c168c0560000df13b54b8a80000007b2bd666a5e000051f12e38c0890000b4c77020570e000018e2251787df000071e5e66e6e410000783b67d2a2080000e7b8d355a8440000c15c1c025b2b0000ee0e8b0bf6190000eae6f2f587a50000fb2dc87638fe0000032ca1523d1a000068a127f28cbd00004a94d7fcdbf000003889cb292b40000023f3c6ba0d3200006879d3228fda00002607709a0ade00009b91d1e2ab2f0000bb5f4a2730bb0000f80f0aa0f81c0000ded21b29fb7b00000d71e68e63b400007d50445fd1a7000016764e65c0d500005056780a315d0000910c2689e90000008638cab48c580000900377f0d016000003bd594ae32e0000a050d1d5a4a700006130f9e874780000bb9b2b20ee530000b002fe43470c00001b6ae687c2ff00001999f59ecb2b0000a70da064f78a0000ea4e1e4a8acb0000988ccab90df30000804fd6975a6000001a62e1d19e1c0000b499e83fbd6b0000a69e3b3ab66c0000191a7b5e25fb0000c52b00f150420000c10a6ff3a9800000074d2074fc9600005d43ddbcc45f0000459577d459610000a12fb591b5010000400430224d680000935d16938df00000082de06c75760000384c575a654b0000385ccb6cc7090000c33eff9e1fda0000da5ee484fc810000e5a8d3dd35990000d03db8fbcc0600004f8d837fd9c00000253c7984141500003e0bdf738fcf0000fe880ee4255d0000a72a2eebbf480000a55fcc0fcefa00005064492d059500005545170f6b6f00003ae6f4f7fa7b0000306e414103830000cc874e1d870f0000891ed461691e0000502eb506d3370000c71fb996cfa10000db2f1478c36e00006a491acdc7840000866a3b389df900004564785985c60000e33604f6ff820000505e0d27bc4e0000c7cc801390c400003579c68ac11e0000148e1d493f290000a63ae9fa9f7b0000f820d83050a600002e0c35ee70880000928f905c62c0000036cb52bd1fef000007b8853d54c0000027ce59169890000067f1c826a2360000e5bef38e5a690000a4ccf8a68ed300006783d04a5d1800001caaf93a03740000c768c531860c00005a05e10ac24000007d3634593d0e00002b67ac944b0200009b8b738004e40000e6e87fea5e3800006595087426e100005ff9839ee65400005b287d0031a30000d282e301193c00001a82065ed351000092b622bce7d50000bb53f463eec6000066f3fe9355e0000010960bff1f1e000040b3495b56980000",
|
||||
"output_sha256": "b06ec52a544f44b90e9d067bf8f4a8b9667273c643d8c7928fa92aded3278426"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=21",
|
||||
"input_hex": "30c0798906910000665e4d6d8f8d000016d9c0dd5a19000086f2059e91ab000004068bb387340000b09219eb9535000016d809b0851e000068fb9e9a835800004ef21991fd8e000077e9f56f964c0000445633da78b300001e442f7fa30800006d1d199cd3c5000024b1aa64636d00002387550295c00000ac05d1b0e00e00000f0d594a38fc00009d984dacb0d00000809cf66191e70000a60acedc184e0000b4671842e8b80000542af309646b0000317ff387710c0000f0f7b6a87d590000b87c6c8ca1580000725b38e401660000ba44d7d43b2f0000c23904f9b13700003771a3de4dcc00004a263b079faa0000830217707d4b0000a2cb2948830500008b0ad36a97130000a1b60c6c64970000bb04c07814f5000015c12cefa8f000009e4825e7cb4c0000bad4f2139ed6000034bd6d059fb90000c9006a8752f30000b56053a1c847000087ce0be9e4520000707cd829cb97000012c4d8ca28ac0000cdd765f30af0000019f18f44340a0000dbfe3a6f59be00005f266684dde6000064d6abd3d736000042ee3ad43ff300005065c567ee7d0000a6f5e418e6730000a807cdbcd06f0000dc215492e7990000cb4d4b5985ea00004cf3b3d1d77700002b60052f6a5c00001520520906870000d43baff881120000b7af4bae2b400000a0e8bd184ec400009964f4c2a22d0000d8cbb796229500009f4ad933df3400006cb7f03572020000f83bb56e165f00000beab940d9c20000d31bd748597b0000acbdcc9ea0f20000c12ea74c357100002ca270824e68000034fc05385c700000b6ab91d7d8cf00001a03b8af032f000012541a66ffc90000df28dbbe04ba0000470c8cfc7b6100007bc27a88a06d0000793fcb2bb91b00006a38416e6276000065bd205a6f77000031747aef0bea00000d1da7c5c62c00004e287356afeb0000ab112f9cc21400007e5dc8d1decc000033dda38c41130000c16ed88ab66900004d3e0505605100008f4948e7ae890000a0bc34089bb60000037fb5713db100008b609af4190000003fadd70368390000799159547ae30000c8a8fccfd1b100006bdc2dfdabe90000f19751dcc5dd0000f804385b8cb400003fa9d60b4ff30000e93b892263540000f9c7f253ecf30000a2d86e1c3ce10000e2e4e41ced050000556d353dec610000a300722f2db00000f8b3c083805f0000336d3105dabe0000f192cf45ae6f00006b02751df94b000057bae3f108350000daf10a03fc260000456d8c34829500006e63023f85670000b766300d925d000010331684158a0000738d854fc2130000d4b1519ebe690000fbfed2d4dd1b0000831993c09c3800005f44fb5fde230000069f68669cec00000ec549b5b0c0000075f58432448a000042bf17feb9ba00006fd52daa3cb3000019a8f7c48f0d0000346e9f4f99f800001c65e2e716be0000a64b99192d680000da9e1496a8850000e2e17d0f885500007a82aceab3a50000221747932853000004b9ba4ddf33000038a2cb9b1f090000501c09a91cf400003e2aebf31e850000734c9dfcd636000055dfd8f2ef9b0000224a3430600e0000ccd017ca2fad0000bb23bc75b21f000025e41858b7ee00005886b9b596090000240cd7cfc8ee00000e8e158178060000519a8dfac4840000888905255e490000fdb0ae47d1d000009271f4d8c43e0000771152f23c520000b3fe1d52d2480000213880280690000043189c8a72b50000a885bf704e360000d18ebf81be1c00008282f80dd8cb0000bdac824cf7a40000dd2a2fd369510000644fc3bf80520000343d28ece22700000456480a0faf0000d79fd843fedf0000c6540e8e20bb00001ddf3a0585de0000a012b4b99e160000f2b6534c1ecc0000b6d1b7e795e00000d744ad07dfdb00008bca3a37fd730000bc2ff2103c7e0000271bafae75d90000bf62ce5bb61f000058fb64201be3000027be0747972e0000adcda3fa9105000080c11f1b24230000809dd603d39300000ac793e4cbd50000614c9a86ec500000cb5fd51c019b0000ca62830c52c60000597160cacf740000a30b6c9a0937000002ee57ffff1f0000be189510ccbf00003e4dc538c3090000ae7eef29d388000062f5af8419ae00008abfcad0fa250000846ab361b283000033fa3849b35e0000a97ccdc0d4590000f4a47bb883c30000867d4c7a8a7400002b8f3de2c6e00000fc72e2ca94380000cfa76504e25f00000536f665dfa7000009cd61e8cdb5000003645eff195e0000a30b0dc7f24000003623b0e5813d0000f12e642644d1000084dab075ce270000c01b48619ffc00005d4ca5c846e10000f0f7ccb082380000cd39279c9b4200009ba5c82fa3580000c9d3526ca5f600003a59ee6acbfa0000561f30e183be000038d98e24003a00005554212494720000842a9b7ab87a0000738a37f0399d000067a0e33afa240000702d8d10ca5800001257607f34550000b57e3f40dc6c00000b450ad7d3b2000018bf1435e19c000087ae222f9a740000f438f15e5a1b000047857e1d08b50000ace9e47d25a30000ac6e42df429c00005557db271f6d0000c450a042fcbf0000bf4c9f0d935c0000b3712d19ae360000a226f7ee606c0000d847a48a9e210000fb55ebcf65ac00009a0c8b56d8af000088545f88edf10000cfda9e4d996b000023faac5517e70000084c6e85f5e100001db3e1062c890000edcc5f056ab400007c1fc0f03bea0000dc8056da175f00004286fa43cdcc000082c94a067c240000444764321657000001cde9fb07eb00006e08aa5c46b90000b77e8c33268900000d04978be0840000fd397487fb6f000074ab6e0e6c980000535aa2ae318600002de18cbc8cb40000",
|
||||
"output_hex": "b42d7c0b36050000c143d83dcb090000b8bfa5e11ea6000058214cd45717000078480db67ddd0000dc65a447e29b0000ace6b7c40d0900005cd14a6df78b000061c3ed730d850000165462499b50000033574db095c40000809dc208e1af000020df9994f9da00002053c513f0a900002285c33d5fdf0000afa49f9ddd3400005563936590be00002f65e63de7a20000c9273b0eab1e0000f3422e7a307500005816c113ab0600002e7a092b297100006e03e95d6049000045b16d730809000082a3b8bb70ed0000fbea3fb0207b0000ab8e1eb4db1700001543cc70b98800007bb7571f53f100003be5ff99d3dd000005244a4868b400003dec80e4b79400007b86d5a0f8b700002d571ad6eeb600005ba4c8aa21860000924c9c5a325600005d3940fe8a7c000036ca382a5f5200004ac4b2d6d22c00003463b9b2c06900004ff1779cded50000bc016cd247490000edd06d64724900009c31c19ccdcb00005caa67afb93c000003dd841c5dd200006a7ee93f74390000d8eff42f3fd90000f2ef714c714a0000940a1cd4e72700003abda09d629000000a50eef0bbbb0000dd42c5d31f2c000067aa16586ad8000035b85ac55482000014373355783c0000e72f6bf8a038000057ce3b560f8d00008d208a2e9364000021193bc3630a000040de452c19020000d84e5efdd1350000901bd8dec47e00000bb724a09f6700005f60e68ab50a0000607bee4d419400002f54aff1b0d70000023d2165f1230000d3ce086d75a400006940e69991810000ab88b2476ca60000f034e7c0fd84000060777b8b8d50000087929575b98300004f19bb12a16300008f12ebab571e0000e3bbc1f354910000062260876ca1000055f11e76f72b00000c7a6756d9cc0000cc7874e7dd24000013892617e05e0000622dda92860200007527cb18f4ee0000a5fc4c53543f00000a50dca141600000e3805695c858000008c2d8d4f5130000974c7790d7a3000025ad220068660000d718de1f0e1c0000fb136a64cf640000a17f504075240000133993c28e4d000093d4bf694735000082cecfa71f1f00008c5c678bb1680000a17f95656a660000beda42126c900000685e1aedee0b000066f2f35d0ff40000b256ebb3a5c100008cc72cd41517000064c44a37946d0000457e65d9e4ef0000117dcfd3337c0000a556c37f33530000c85ce9eb94cc0000bf31cc5fa9d60000d431dcaf7f170000f52199c5ae6f00002465e0bc93ec0000a96878c17ea200007e8c976164610000c2eb849ad9460000d52f5cc861f20000f56751231fdd0000c0a1fffd79d00000b02b6be873b600003372d8acbe5800001de971ee7def00007b5ca3e30a8a00001960b40a5ba10000745e9ec30f0f0000e632f63c4c8300007c4f9f440ccb0000d08663f0c1f20000c02d2eda2d8a00004eac76520ee4000082ae40ee9ad60000bfdee2e10bf00000c3c822bc771c00001607a359a5b0000080f8d20e52ee0000934d4e0ad8fd00000ce644c1125d00006fbe6106abc700003228615fea670000775a7eff2b6100004617f6af04430000f7f1aa38d3280000bd43436e45630000f9139e12458300007de16ce385990000e5498ee0137000009930f685918f00009c9eb3e2caf200009fe36682c8240000cd6ee2ea4833000011c4f38d7e060000fef091c0ae36000003d6761b1c7d0000879fd493797c0000688e426866fd0000abb896d5fae100001a2e68a1a0df00002fd644aa403c00004d5437cf3e93000079c4e68e1f8b0000b59e8fd284e10000b47c56818cfd0000bfcf574cb9510000ded3f95bb39a0000212efabd22b70000fc9a69f313000000e94fab138aa80000d51653db733e000098487506bfc60000de6ed1253d9100004e4bd82332840000d02d21d43cf80000c7754299bffa00007e558feec09700006356d0827ca800002610dcac16f90000268d0a8665740000ab2166ac1add000045121df9d21c00007de5b4dd4b650000b487e89d980600001d5d5b298076000031e66d8962fc00002bb0cdcfbeb7000056b1ed3ed0c000009b2e4481ff6600004ee5ab1ece1000009eac455aacfa000041626ac173230000ed6b03e16e4c00005f8f5364a7420000987ab89c31570000087fafc2486a0000338a5360245900006ec83ca30bd8000064000e10f7a30000b3853d9118a30000fc12ba5a975d00005c583fe2353c0000bff6f93268e50000b44cded1c86700001bb72e6108090000cdab8e5784950000f9e6a34b451b0000b6303aa913160000f7809065acdb00000cde187410b00000d47122ac4bfc00004c31c0a4397e000053ecfba59802000077e0c858eff900004f71c5aa0c490000553f9b6b927e0000628156e3a821000013c7f25b641300007cdad959509800004a7e12383b6b00002145fb0d9c1500009bdbb0b9deaa000062b949b3f1370000dc60495e2a2900009c680ae5002500003ee8cad556ab0000cb5a5faf1a4100004ff1c8bf100500009adfbd813e420000e294712eeff00000289010371cd70000ddf4b7199897000006c03609b57d000011cda70a60660000f451e3fbaaab00009e412f5ac5cb0000fccca1f238fb000094cfd45092f00000679b490ba30f0000d616e4dfabef00006c0d39e8f8010000bd66cba074b40000fe4cdbe9641f00002339d6f2407e0000539419ff2be10000bbe7ab2291000000277b182081db0000ae996eaa1ff20000079a5a131c9e00000d6fe6a0f00d0000b1782ef281560000074ba203493a0000d73004d596a20000697de445e6c700008973d27f36c60000c8d2214586090000960f6ea27b2f0000c5f9a668add00000399e0090479d0000582a4b2ed27d0000",
|
||||
"output_sha256": "d816eb2ad8126df09ea123604f7e044d27465f388a0ae88f42e04beb08043294"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=22",
|
||||
"input_hex": "5ab3429774fd0000cede73db886e000014a3e3bd373b0000f6bd37f2a3800000ea273f6bd1520000487e7a5362d80000e14848ceba440000f7fb9ff2e4d80000a9a08beec3700000fc82eb6109480000692309dd862400007c294ea827ae0000b3f40691bfdf00004fac3cff77fa0000b79a518005380000fa772a76961000006b82f1ad3a59000023c5b9f835150000a33394732fb3000035f34e0aae580000fd7ec3879a480000ce8d62d2bd510000f9df93f71e930000c2350a1c8f390000c7b183f022d80000c52f30a545790000231c14566bab00005cba7f8fe6860000730beabe75d30000ee3908f075ae0000ceb9bc0258480000f5f6cb7b7d5a0000d4a3d0a6f6690000bde109474602000047dc02ce86df0000c71fa4dacad50000af666e7e9aee0000aa77f1cce577000029959fc7b2cc000093251859c0dc000014d154fd46f5000008680ca7c05b0000f532b398d08f000025c53b48baa40000b081af51768100004d057f355487000017fde27df52e000078653c6876c500006dbec0b305f100000e584892fdf70000c9bdfa952a2d0000b0891b75dfd10000f4750f0cc26f00009d647925c6540000340dd52e215b000053cc9298fea100000203d8e6eb500000b168a37227c50000f07faf2c2f0e0000989fc4dfd0bd0000fddd4b1a45c30000ac6cbd60b6cc0000238df8a9c2f60000db823b31395e000046a9f34e9b4b0000a6827f434b280000a98f66d007b80000a76ffd21e45f000072fcb683a8a50000d74f61cc12e70000956b4c772cc20000b1ff3aa620d50000e421e3db11110000511b8b2ca2df0000384f915ca0ff00005f2b7f7bff8f00009cd48d15e72700002cd5030e08ad00002e5b79c574a80000b60dacfc1fff0000aab4198b78d6000085f3c9fd2a7300009522514cef13000069ac2debe43b00007ced1adedfd300000f002ad97b9f00005d333f4e8a6b00001658574d82b00000033de03c89990000107d5089acf2000036e11f5169d3000050020902257f000077ab5a9e80e5000004ea8c3dd4f3000077dfc304c70d00006a93d7d0cd380000baecee0442cb0000432a652ca3f10000eb9221719dfe00002e3afb6af5dc0000d75442c0403f00001a1b5b24e41800007fe71a1b9a750000165597d793db00008e733dc95be80000a570f4a1240700002d0fce020fe200007cb9c3a2f30600008b2267503f2100000239cf3a02950000ba3af4fa4ba70000b12065b690d4000008ff15d6544f0000213ad012a4b4000093ba6e7b6c840000a07f0168b70b00003941f8b757c40000bd7b3ed8fc4e0000722941609c2000007c48d009d21100004bca3e65ba760000bb3223fc00b80000dda589a7ef200000a43223b485e300001e97f9761c7a000088712b13225b0000b5d62bce7f890000052586f4454d000035d9626b6c820000ffbdb576e0160000bced769d43270000145008d523ef0000b73aade991c300004d239c8343180000aa2ab78c1bc1000015deaa950b750000f9a552cb7d450000c483d08a6fdf0000e96ac1503d6e00009f8e01041dae0000e01e673e35a1000052b164dcb88a00005ccbe532e61b0000ec6ed419648b00007fa4363c19db000048a892a2bb1a00009aa7252053dc0000f5a84c21305c00007c154e1722e80000bca3fca8f4a600004bbcaea878f10000c102e15e2a3b0000ce00733c60a20000101c109b6327000099c766e5d47e0000e949a5c9bf82000081c835b830920000afdd9c9aa0090000cfb538e3fc59000047ef58a4efa900005624992a382b000083bfc53daa160000a78b5778296e00009bd0544c1e84000094605f69a7500000798bb25e20da0000975efbcc74240000cb17bbc844ad00001f9f5a38f9f30000e16c20d3ac4600000f0315a3d2ce000092780524e54c00009ea3e9a77400000058d980214c6d0000e2543fb97c940000c4bb9e93dae50000eb00fe8d1e9900006e5658a9bcbd00001b4501784e490000b43f8d3fcd030000d5785c81e3f100003ffc18366a0200009f98368f73c70000ebec8c9424d600009c1dcbcde932000041ba419e7f4c00000a9e888ab298000043d4ac11fd4d0000e46fdf247a5100001c8832c29ce200008a072ef1345c0000f72e01d16b9a0000350dfcb23c3100007455e8ed1e3b0000e947f736d5ef0000a92aeaa9318700004f0c31a21c0f000029c17794bc100000e6c6b34533220000804457b7fff70000c4633a71cddd00003399465ed3ad0000c73d145a71ea0000cbdb198101b00000fb953567cf7c000057f2b66f5fb1000098ee47a4188d00002948762dc841000043d0421911d50000088d17fd0f8700002775c558b7bb0000579bd8307f7e0000c4ebf34f6da8000027dd7991214b0000ee960fcc1e7a0000648aef907c8a0000a087ff038de90000cada97fb06460000e1772669675b0000453753413a010000d5e461f828b8000049409fd64f920000f77b6e365c750000d9f5c8ef24c70000aae609e72cb80000acc637a29dd500006e7d0fd4bca6000098d8f9b22fcf0000a719b096e2ee00007aa3afa3cf9a000049ee232bc15f00002ea8d6ab4c2e00000b53ccff57f40000dcd899e04f4b0000e6e53f594f8d0000657cb6498eb800003679beb04bb0000030891245ff6f00005ffef6bf33d10000902046e6b0280000d3c1970fc1140000ac1e82d89aa600008c1d4e722fe100007c39fc0f975500009bdb5b6e059400009bb5180819620000ac2c562f9c7800008377de4235ae00009c95d01a553e0000e42fff0b21670000494cafdff83400004b7684baed630000015a6c3414a400002803c3adbd22000013ae0abb77f900000aa12f63f8250000",
|
||||
"output_hex": "80bfb80da2bf00000897ef3a87610000c5140f03c30f0000a4f2a2cd1a7f0000b6c7f9a169eb000090bbb56c0fad00004a0eaffdc0a70000c3ae721159a8000018ec0c451c8300001265c2ae36c400000e1c25aa254b000056ee0e1f39c40000a2bfc6dd83ec0000d64625cef90800006183982092ea000056421438d0e80000086011adc07800000afc71a9beff000081caa28e86cd0000fe3e620e67c10000d926de8e4d690000950288c494c50000ac221c17b4ee0000af10134f8c9400003573f2ec905f0000d5a9285427c00000ab1c2b5b11230000158069bd435d000066874e81fd05000077b82ffdeee80000c3b771dc4f77000007742063f0120000ff888fa94cdb000027baf19fba940000f8175f94128c00008040e876e6920000f93bebb048130000554039b521850000b65cd55dd52600000fe671295e40000049b7fb17ddc300001b171f9ca5d20000a802aa512c3d0000eb7632cefcda00009860ab73b114000037f2c7ef91270000afd4526e318800005a0920ab6bf2000025dcf0d9c8b100005c33abc336a70000b04dc23dc5cf0000e63da4ab1bdd00000813f6583dce000033f7c76b89b000009478b71ab58e000026918d305515000084dfcd3b72880000101b8a7b00bb0000ed308a4697a00000150d65177a950000ec8146ad8fd80000587e869821a30000fb6c57e448b7000057ceb3625782000036948eadb5ad000048f8f1dbc2130000b1f58abca82a00002cbef23b49dd0000dd86352050af000043f333d8eca300003142e2637eb900004f06d1f70b900000230e4c048e8500005b4fb3dd5c0f0000db0e4910d8e0000044b991a5c3eb000094ef3dccf3a80000422a5d3f51ed0000ac19ecd3c9230000d15d96e5967c000081fdc87ddf190000fd9ac029972200005f3a2a8898280000d6ca74c24bae0000a8909b3b0d0900004ef4eb44f19b0000b34b7757432e0000c0bc637a137a00006a56adc084a4000021ec460182bc0000c0158b00629e0000455bcca0792e000028822086aaa40000f5b37d48b48e0000aabf314494350000b2a06f7bf15e0000e3ebbaf2f69b0000d1c44d3f0ba40000336692339929000002b1db03c2600000aaa1c7dbbbe5000060d35580a8a9000076e5896f06ab0000bfc39af3a53c00008929563d662800008419157d2c9c00000d1c0784983b0000c7a504c577350000ea279b4d373500009d49d2a1e49500002ab1bbc4c231000008d1034cb87100009a3ed4e5b371000064f3abdcc8f80000313e0a9bc2760000da4f4bfe69940000a7b4f53493a40000a3bbc447da250000b378b587237e00007b7bc8b6b5630000d10f203aaaca00009e0c45d7c0e20000cc3017a17181000031eb652f5fef00003d24d5b879ca0000af38e03ba649000016feed4cdce50000d7c02935dbdc00001a268e21574d00001fcef59d71030000cb3dd8de13280000685a4af51bd90000f867898eb1740000808e5194f58300007fd4d1812213000085ac088d874500006ccf6a1012ed000029403a24c39a0000a28e5643d8f10000655cd723cd14000042ea828f4ee300005ce23caf758f00004e67917c8b170000d5c2c8b74c7700002ddd9c1cefd30000a4a87bbd7b0100008b27ff7c12750000010d63d111650000a3f4b79ca875000032106e08ea1b00005f06e5c7b8af0000fb6402b540810000aa6c13a3778700000c0d3cb8579b000086372e2093400000e53670668fb20000d51e7e68c09700006c9a4dcf3a1200008343d8b7803100001d0814ce69b40000dee52491789f00004716072fc4810000715af4b346bd000073ae07bfd79500007a6ef44e61eb0000e635e39f34300000e093a6420d300000e7097bbedefd000005b267ce12230000b782a3f80a7800009b399b470f4f0000ebb4dfe2194d0000fd78ede5c29f0000acf7a197a52d000063baf10213a5000086113cae4feb0000355349ebd4ef0000e689a273e3140000f3986cb022df00009650b2fb7e3f0000c40881cf9fba0000fb5b4b5561210000ee1304a5a3920000ee15777d7b28000082506bbfcd480000eb54eadb7d860000f16792117b600000d6869a64d6b900008bdf1813faa80000eece24a0bbd50000a3daf35e781d0000fd3d1f3dbefd00002a441cdaaf400000d04d8a2eb0ac000052f49aa4e7a3000090934681bccc00003d3794b1b97c0000cf6be389890d00003fa16c15f39300003d673b510c87000027c3f562b10f0000dc9799aae29e0000c55ae0149e180000092010ee0100000043cbdba8893a000067bed1814d1a000072e672acd12100004d4496c921c800002d31ca5e4f3b00007feb9b4f793c00008c60368f60a000002d0393b0ffa500008e95f80fbdc00000031f4925cd0200002b9b5ac9dd3d0000988ba48bbb8e0000b215918728ef000003cdff6f46410000ebace4f3a1f200002790b13b90870000c2f0c9174679000040036313e6d1000087c4c0d84a2e0000402c379afd810000be97b2719581000043f513c0900000001b8a938248d4000077e4f833d6d500002017687d224300007c56918e9ffe000060c52ce41a9f00000f65b8cdc31c0000ce33b3a6fdda0000ba1d641fabe000000ee309580ef40000efc405b6ab040000db11c63cc9bd0000b29f5bef56130000ee529457dfb600006cf7cb45f2e3000026c0950f25e10000e79c71d9bd5d0000c8d90325330c00004d3a2e5acf410000887e79b69b250000e4c7db52001a0000a67c4f44699f0000188dd6776aa30000b0d931f9e075000029084cab20110000c066a22e43ec0000a7bef57627b700008ff85377167500004d456dabcda4000094ce8d4787030000192edf1819d10000",
|
||||
"output_sha256": "a7e795d39f359ef22d83ae1121aa387e334d6b1b984bf7b24c63ef03b53a2e6d"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=23",
|
||||
"input_hex": "4278a87050c4000035017a2313bb0000f3d0c6755ea100008075025b6be100006ea775e78a600000393f618c643e000059d5ab9442f7000091272400f00a0000598f576aaf94000064b7d60404600000620331c22fd9000010e5f186369100002af3b00a3bce0000593d95e0f5a60000872ac1ce18f7000049f4e1b833ad0000da1495e4d67f0000ab0335c63e100000489c205d3d1e0000cab5225174db0000fe77bac721030000dca6a82281b4000057165c9c532c0000581ff35ad8c80000f273f5b2c6fe0000e98ccb56a0120000f6fff9ac625f0000116fa9713b920000f9404605c06c00005a89a6443c4f00001fb03c3fab08000062f3977572bc0000cb284b49ed0b000064b41aa799070000219223824f910000a40a0d9844d30000358fd4583192000050aca1926e1d0000bfe69ec208a700005b661a0f3e3900004738fbd8bf0500009c28b9a836e700008dad94d5e9a20000df77ea83ed10000015905a0fdcdc0000f54e72cac3570000ea37746623e90000ccbebff031e100009d4de09c5c5500009875124acc4000009cab41d985f90000202aa5a41f320000bdf15ae59833000025b2458d499a000014f2233feff00000633e005a73f50000ab86235300e400009b8459259fe700009e0dd07b4e7c0000f224ea9d9c9c0000dfe31e572e8a0000c52e845ad5db0000d404b357da0b0000860ce2c21b8b000013f0015616880000d57f13bb2bf6000075e6e02f3de400009fb325da136b00006c0d7b1e83fc0000588ef98c5cb80000f13a198d0f3600006b47c6aba12500001d3a090896a500003135aff9ff9000005b38b1bb575c000082b2d694621d0000014fd352a2670000e8a2e20912a500000946ce71f7350000e2df1d89fc3a0000d832e34c3932000090babed3399600002ee25152c20f00004ac0757d9ba600000faa28ce0c1d00006019a6f906a10000fd5ae41dd4710000136988a324460000a6b62976a4c30000800481074038000066144335a86a00002b553d9421ec0000116c9a9a14580000f085bf00297400008b0f2bc2e0370000d1a4a24013410000c634e7c7eca800001342efb3093c0000a0cfc26ff1480000772967534aae0000fc13742711b90000a4ffe1f5d5410000f9aad62f73720000d8a8180e035e00008bbe8f60720400009871e75872080000a69b5e8747ad0000f42336af702900008a5d709603ed0000ea496fa0e71c0000f97b755e7c6d0000396420e8f78d0000fdb220b0a55e000056053dbbf2000000e19071f8c1e00000767a74ab44cc0000ae3545e3760d00005f01fcf9445200004a031f7553aa0000d9e7c5b700160000a005e5c3d05c0000a530fef626d3000034c5f659bf7400006e4dbd360c2300009bd0db314bcb0000675dc6a6aa8f00001a89424c13750000889b0ca6c838000097136dc55969000029008823e9380000b5e5b6fa62580000087503fae6140000170ebe8abce90000543dd312572b00006846f56baa4c0000d2f3f5b02d7a00009e3691243a30000098f25373bfcc0000ff0bcbbd1b93000095a91edc807a0000c943ba88048d0000f5c02155ed91000033630432b6df000016860edba244000033d6906713f10000e64d1133fa8300009f4c12044fad00008c070ac3f41a00001bf48545446c0000e059e24636380000c011e81c522b00002e8c6160739c00007255d034249a0000f6a662a9f3a800004a9055a390540000039d2a9c677d000045a95175abb60000019dc0a45d060000e8280feb82690000f52ed19313600000c983d68857390000fbd1be72fd40000071751cbf68cb0000dc6c5093d6c60000fbc32ed85b3600007283a0e2e18c000030ee6ac5e0920000fba2602994cb0000d272576059a30000eb52404c1bc900003a178f0f810a0000163b40e2ce6600006ed2f1b339e20000e8a4941d6a5d0000e275672e8b99000078a31714a2ca0000e16502bcdd530000bee47152a1fe0000610f37e19c0e0000937470cb2aea0000fd1716ceeb740000114721421c7100007a18d085a93c0000bd5b452063c100000c0cd50b89d10000ba6e7a5afb3b0000823b1df8b9bd0000ad223a5d0f9f00006f682132046800009ec24666b1490000f769a32ca7db000060f4280e27a900002a18db25a646000088b84dfced59000058d58db1d0e300000fabf8c7b0a400006ca12fe97ebc000044d1d43be18b0000aad3270b41920000f664c0aef2640000535f8a9fceef0000686670a5672e000016505f7d01c200000a049b65524000004d8c53a20777000016a5ff0b86cd0000dc607a2036f300007e114b8c60f30000dfa5096068d900001bc9619d82760000227d9a3208e00000ede0e2e7847b00003f21d3d3c5620000e647b56dba8600000dc006baa8e30000a5f6a1daf8340000d8831de641ef0000d66e43a88cd0000080bf3e23eecd0000fcfc2e0871630000ac689b79cb50000027ed9281a4f50000721382f2311700009e4798e25f1f00002058b1a006c4000085e9e823c87f0000724dbc004f53000061dae3c8188f0000a36b6c611b170000cae6b05cce2000004cdd8863e6aa000094399b82b0f900009cc95eeb07cd0000c6f9a741d0bb0000b6b5acc3887000009e842b9996450000393e4eaee3f60000c42665058ccd000017d8abee3b87000076a0de07790d000020f929c804720000956631979353000065b8cf17955c00001c3e09a1fce500005d94fbeeb5df0000d0a73fbcb5d90000d265b0d425d3000036c4e25a87bf00000308cca5e33f0000a71bb2b29cb000007421caefe797000078eaf340e9c30000117f1ef3505b00001c7b8673b48c00007b7cde3a23290000af9c8ffd54380000",
|
||||
"output_hex": "abf851cc65b700009ecd53790c3400003d69a0d85e4d0000b508d4b9b3f100002a48856abc7900006e987657b840000039f5ab5196b000009d8860e15ff5000076b4cf8605fc00006943e458677200004fc4ac7dedcf0000ebb11bf6d1dc0000b145da3f63020000fcaae697ef68000001d2ea3a473100009aa7e2f6e54f0000246a230b87f800002ac12678906400007abe4d0d4ff4000086e4d5380674000030dc3934e94d0000f6486a073fc40000b145b1411ef0000054fe264f6daa00003b0b7a6a244e0000fff198626ffa00000cf00b81592b0000d3b4391df438000018027f5dc0f600001a161881adad00006913e4cd4f9c0000db2c96b1ba2e000069a28d2b7a380000cc174e97677000004889245b5b0f0000767d15225a3a0000eadb76cfc27000007b07354e625e00002617f6adf90600008b007996965a000069e90e434d56000072d720afc528000043e25deb5fe7000039aa01271e810000355e47d834ba000089866e7fcf350000c89d4284bf25000002dc12125e5a0000e16b17cd43bc00002a483e99843000007e2d86b290f900007b844ef8f1100000fcdb5fbe0a6b0000e224b0aae9630000fb9edd378ed500000d86de5b5b7e0000cfe5342686760000256434d0b6140000b2bdb62ca67c0000e8158df2a8cd000000f5f10b21b900002c60e1a953500000b6ed1f69c4d40000e5775f63815400001c107ad7bfac000057fdfeed23a80000d45662d8d9170000b5dccce62d490000e72d97bb3dbe0000eff2a96d8fd30000b8402c59b85a0000704f91670790000069ee49b5ba270000e39dc72d0a0300002ad2749794420000589abe39b8710000abfc42839576000068910c10031b00001f28e3410ef70000782eb86c36b1000061deaa4e26d3000015b5e7a2da0d0000cbd770955bcf00005d5cc17e18fb0000b48df5d6f47100002fa94d27c0d800001eb527c32c2e0000c26a6ec061fc0000ca93c67d235f0000a7fa08b39a7300008a6bf03fefbb000089691e6729e90000aab2f53c377200002f0a580191af000097347c178d4900001477930217670000cb340675056f0000506aa4f2f1730000b67abe8aa6f100006f8206b3e8fd000019f2bd4031860000341a411d6c5900005d638576536a0000da0bfdfd579500008ed2cc3e777d0000fd45c2f1e5b700008c0affae41eb00007893e41c574e00005ea5ffb36e710000a6be74ac437f0000b50ee57ae9ee0000f15cadfa23690000d275e5caed89000005a5fc62285f00003206121d0ffe00003929c6cf010a0000ff629756b43c0000f515048622ea000064cb5813d7c40000f0be380e59da0000fc793c6fd9200000d530c1f3383500008e3ffc92fa88000065d51862eee50000c3ee3e4b92e400000ce9bd7307cf00004fe106c38e5d000033037fc93db300003ddff64bf5bb00002cc3c6552cbb000055b2dd5eebb10000e2943f9c00ce000050b0a5471ac50000ced87c0dc26500009ca38dbdd3720000c87af65a7ffd0000b58fdafb679d0000b99824c8bd5c00002eb6291a6f4b0000134fecf39da8000079b168e1ac970000235bb06da02b0000be23de5ee0050000b5e1e944acee000030adbc4d3c4d0000f8c0071169c6000073aa4d731c6600007cce6292354a0000ec30164623cd0000b25ca21ce5d60000f2f7ec13670d0000b328c46c22f60000ea8b09515892000087ba9e45312b0000344e1758630700001796315fcba5000063dca1af330d000084039fc810f50000c91875407a500000af2b06a4f75900009d39039dcd380000afed592c88f50000178fef094af900001415607a867f000016a1c2f1eea30000a1bbbb3af26e0000a95dddf593b9000032b0e25d28130000a956b8b58bc7000036acc61f9a070000affa997d07170000a5719265c56a0000035f5e48d27f0000999452f32c73000015e8efeaae22000043249c339ad2000087722a41f3fa0000c06046a43c410000eb7d50d347000000a17cc1ff18e50000f7c4d6748c480000ec25716ed8ed000025cc595a71f500007a0cb6de00f60000953a43529e32000070522d3625ee0000727aee7b7acd0000467c0c85ab610000f4c647667dd400008b6f3f105be600004a1f28bc1a650000af358e339da000002672eb457693000061333e68e53d0000179fb63c31910000232c008dd936000019abfb9869c70000a2ff63cb0e23000097997c38742f000028009d24ce1100000e2b72116a710000c5b0ee2a51860000c1b0fadf12f400002485a0f401740000cb7e6ce4f617000027c28708573600003d5baff51f4200008bc503118e3f0000c4de58895e510000b179eeaad0c30000e2bcb67e0bf000005e8c1ad1db8d00006bc7a3ba78c40000cf5c26d4e4ac00004e0f2ffc73520000926691d0de2800006368db26300d0000a72db63999620000bfe19572d18100003df175375c3b0000441acfce8453000028466a0932c400004300d1b0d9fc00001127c1817bc7000049c81b0791ad0000c6f552e8280500005d4b4fd97c5c0000c15a854190c2000070cd001fc3090000e9e66514a52500003e9f55c8b95900001ffc15ccbe480000b08731ec292e0000ad7279458f1f000077e7fcd9a9660000f208429c8eb7000006c950dee95100008119266cdcd00000158ea1ae669700001795fc1759bf00005afc07cab9b800002e1d6e785b5f000099400c78c8970000db722e1370180000ac5977af99240000a6947b3167cb000077a26232988800005741d01da20e0000da07b779520e00009588dfef0e40000006d88dad71d3000080bcaf52c0c1000074883c96c8970000f7896192f19a0000a8e658a266f000003ded6e673c050000",
|
||||
"output_sha256": "5ddd63a2e4bf37ef5ef14bca49af9accdffaaf80fe5f393eaaa523bae0466d58"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=24",
|
||||
"input_hex": "78dd6a42db1c00006b60b51a97580000ff2480b3083e0000a260dec13e0000009494b46f691800000326c578c8860000d3ca0f4480530000d14f590f2de1000055011e0dc15100004878fa7c010e0000a06e0bd721e200001a284de779a9000039d45032281500005ab1acf2fccf0000f7df3f004a030000dda58260a37a00008a55849396fa0000885de9bad8260000484515b442e800003d02db7adfbc00007f3dbe4783ac000017f2b07912b50000a6098e75bb270000fba901c22fb80000adfa2d40f8f40000711aeeb3beb9000092063170bca10000dd3a9a9b577e0000fed88c5c16bd0000590a28d3fe990000bb73b3f746c600008b7918d233b00000af11e5052e13000003f66af6c73100006acc89c796630000a1d62cf1a9f800007b31bb08076d00003d24b3c3bab300008f0e655f56d00000da6a8ad0b9d900006b752144e160000036d9b57726f700000f66cd9b4efd00002687834d49370000879a4c086c54000039362f40ecf00000b37ec8c58fb70000532c237abe5a00002160322d20540000cadb5a1d7ca600003edee64352d20000e8a5dde960ef0000862146801185000056ff92c7ea310000f66048ba275e0000d0eda7d53236000074d4fd27293a000073022c15702000008d47c424f8600000ba9025bebdf50000bcf6536083da00003b6ee2b745a8000081f67813f73100002b342569ef870000e995bd244e09000061f0034624b10000d361fef9e5580000eb9da639dbd100000b1065d4d04000006b6dba403dae0000f019591972f70000d63362c373e1000076c1ccd5057600008b484c7c2fe900009dbc8276a57600003f4443d7b5f800002c2ac09b0d3d00005f6bf597cd8d0000917efd6a2abb00006176e8a45d66000022bd64b18bcd00009270bb3346b90000910677eb857c000082bed4751fab00006cfd8e89481a00005393438b664000002a82c8a0af1000007c0ba5d14b1e0000a18abadd21070000cad21666865f0000dd84e123fc370000214602edf15d0000d8918871bb530000d7df33d502690000095a53d684a800006336bd5d425e0000ebb7d7943c1c000074b9f94c80d90000f148e622873700006b5119b8f1c50000afbbf379d5d30000102bad8cfa800000b11c595979d90000a7083d2dc6b400003f379c0e8f1e0000aee7a082edcf000002296d4ed71e00003793eb6b20d1000067053dda342b0000c66b916f1f590000a393d4d1b7760000060c1fd9552e0000784623df2c7d000011259c6b5924000018a15ba812350000b5753837b1850000f922d461a91c00001a1c794d42620000c58d98c9967c00000b9b2bb100c60000d2e7b9df20fd0000d0c867d577970000b7c838bc083a00007e74c196ab0700007c4fd99a747600001a8e356ed912000085894f11ca370000eda62ce687c40000ef00d7b1a59b00005a3f2de7fa3e0000fc3b3e71bd140000f7f37e9346210000dc9f6bf336b40000d4f1ee017b8c000076468692600d00005258516a420e0000adce9351a92e00003be30aa8f9f800005d0a9b36c3700000d7b195e0988100004a0a1f1f7fd500008d21c93708830000f8ac63bff0a6000096378b61f95600003943a4b8b94500000b5ff0d079f300004f26644dc3e600008b28a9f14a020000021a822aaaf6000028a66100a6cf000041645127bd3b00008f45d96c3b0b000061b3d8268c0b000056731312faf400002790111443ca0000ab19ef614cc30000a8132b0769e100002d875a63c702000035ebf4704dba0000e98cfef18edd0000e1def4e6b0660000c25adbc40e1f00001b8a04d3991c00003aeabae7ff780000b2c8ed2291f0000098daebcb74b700002fa7bcf8a0cf00003cd9c32dcb7d0000da588befedfe0000f5292bebaa4c0000aa61959929c70000ef266a5adfbf0000720ee6e6106b00007242bbe42f6f00001c1be9d794000000037ac53dbf3e0000da67b2042cbe0000bb253ec9036a000066dbadf34c9d000077f9251844800000e367ec74eeef0000f215e80ae0d50000d16d92a64b4b00007efbc43ab1c90000085cc6ab6beb0000df94af894fa30000e0bc8f4a23860000424fee618e4200003b660704ec5f00006576590ba1de00006ecd1a4263520000d82d8912c67c00001545adbad041000078222bf05fe100002392c4f34e8c00002a6eacbab69f0000a99762525cec000055cabe8784f900000a09af5cd80c0000b2bed124635b00002107ef40723e0000791b1f6206bc00006d015892dfae0000804376602e9800009a4cec43cfd5000058fb4569fa4600001a54c5d2bd1d000020f2b199fd6c000038fdc2a49e6700004fd29a6ee0b3000075c5d8993557000096a3fc5634460000a4f91263490c00007c11be0087b200004c475e83585900004b39e62a5a040000100e73f739d000006551a682e09e00003ebaa34ce3ab000011f2376e9b780000bbb8ba50b78f00000b320cb8e0250000280f5f631085000022d39f3126b60000acdfa10330790000e96a509c1b2a0000383797cfdd0e00007484050ebd94000084fba78b12cb00000fe9812e0b7c000091bb82e17b330000ca8c91d4b16700009cb7e2cb62540000575d6dbf855900004970d4735afd00001f5bad27d1c80000d7cdc5b8b7b20000c538c71cc13400008cf340605f000000e22be550636a0000649c6575c2b10000debd6f937dad0000dfa38046e41a000000a613ce81d1000027b96188a78b00008d12288f94f9000044031c35854500006142e797170f000071d50d639c3100003403947c27ff0000f5be18bb77c9000003c32210b7c10000c6fbc3761fe6000046dbde4bb93600005684d6197d700000eb99144338080000",
|
||||
"output_hex": "a6af74d5581a000022ab4bfc0e6200009494cc0b8baf0000e13a40c5cd0000003965660d558a0000a0581ce8ed7a000013b46ee953f30000bfbe07cc1e5600008af93a292b32000042f18c600aae00000316aebbd4b600005634b97ea58600004ce57f9088d50000bf3fb80e7d02000058f207d825e8000015552d828c0900002309d875a30c0000d132ca3fa37c00008c020dde3c6d00004d8ec7eb440f00002781138646a6000059f6f1eb634c00004c0051628a010000aa1be0698004000091546ae4509f000066f18fae082d0000fe5465b8b64a00006d82b44b00c9000047fe84c8550f000074e8de9c8be10000894ae0120a3f0000b67224ac0d000000398b6388d5f40000c7445b2477b000003db868427aa000004caca3d72019000046d486d496020000a98496cf9ab400007e5295e4209700007ede08b21238000031c0ab6545e000008680f4cb71e90000d26d7cbe5eb900009881a2a527700000e76c87d15feb000001b930d4a4c40000a16fd564511800007e44053e9a980000fea9f7e1b0880000ddb5d8d6ad4b000081047022a61b00006184e23f7a1d000064c1a632614900000b5fcb81d48900001458c2282edc0000ee3f388f5bf3000071545e4581790000fb810815382300005c43162bff930000dbfd2088399d000087066c83a2ec00005383b9ac72d80000f745e83c6f090000a1724997656c00002f49e0cf812500009082f3d2fd06000078cd60a8846e00006d46588ce33c00001eb4b16aa2040000b77137c3ab82000036e32bad387a000090de79c4b0240000e7f1c0bab77c0000798d4016506d00000c3b861e6d2c0000a5680f372d1c00007016e47410d00000edbe099e17320000baf4089ec5f90000363ae21467330000b937864d5ed20000455e9074a237000011c8d27dc3920000b7b4a9bd18270000298fd972add0000012721eb75a1100007d2a43359b660000dfe9eb8df5020000054e30daa01f00008471295423f50000aefca04eadc500006f4a07d3bf96000013ff5f8af8670000ecfe04f1541f00007eab0840a5da00002e5584e4d81700002990b13a92a900005064b99e405a0000f59018a1c4bf00001befacccebec0000a89716d4d5c3000011bee6b72cb70000f332a07de8ee00009b6929b76b330000954739619881000083e5f0c7148200001bc9f4883258000021f244917bda00006c9417ad759d000026b1c03f1a990000faa8bb278bcc0000e5362c9ca8ab0000e52db16b12240000bb66c633609c0000bd667bf0f75a00002966af121f2a00006ab5112a5d1c000071458c30e6690000ea90ba451b1a00001962520e8d3100006d728ca5dcdc0000ebdf8432a26300002e03f3359e4300004f8c754686860000411b102df4900000ae10530b16630000d59c94353c4e00004773b7bc12a80000e64447a9690f00004430346489e400001825411907c800007181a5426bbc0000c2c60329e13b00001d560c75b76500008a481906b4920000946dba1aa91f00004fc289ccfe200000cb455775d7320000fe0a64b7eb3d0000d5a2f9b7fe450000fa7d8755da470000ef79e888c2ba0000d4b3260fa2f200007dc71054528a00006fbe01e1fc8900006db5c1d8dab50000d5b942970d7800001b6eb267aead0000fc3963a90ec800008e4b85ed569600006072987ed10d0000bd8edb98b60500000bcedbfd864e00007551885b935900006e51898927e200004790e4d72d1000001c77cebc58750000d0877e82d8dd0000e0f50c1b70a3000049de4d8280b6000081a10e0c902b0000040a2838e62300009235306f910b0000883cfb10e0630000b9078a5818d900003ee6d0f7b6f70000c2b8f21c0fe60000df448581c88c0000962ff93153b80000499b2dbae50700004c030fed8d5b0000b36e69491fe10000a99beba719a10000ba011b938786000012c7a3e1d4250000ee51902767a600006eb109362d0e00002538ad0fba3300009a7cafedfd7f00006dc5a6f653a20000a219d3f3336200003cfa50fc94ef0000a55fe12ac239000056f496498eb50000b254c34862570000a96b98250f430000139cb05fd2720000cb0d809692a900009821f043bb1b0000af421aea2e3300009d3d8210efdb00006729349a896e00004f8ec0a3850a0000d7003686608e00006ee7c14cf5ff000037eb5444f3220000c5ff2a1a83f60000e9bfd3a3948b00000808c956e08300004c4f36db2b760000e86ec0252408000058cc7111983a0000cf13d8d3af46000044f9c860083500009ebaa0841d2c00003d4b7575f7b600002f0d443c8a4900009f71ea1341f800002dd75d518bc8000053a913c314280000f685b460978b000070c7e6b0ee010000bc47f6efe5be000020103eabfcf100002b91db5bf176000082cd12dd734a0000e10e02ab842400000ec5b02d35340000f01976347db70000e4f8eb242f9e0000819d790fb10400002bb84da9e62f0000de2d4638f1100000486b5eb3dea80000ccb1c0e115960000b2dc7d44f47b000084ea2657aeab0000076ea777703a0000b688219281cd00002ca714c8075100005ff4a0013b320000a1ead17e5938000064bf5afe75530000a1383126852400007d5c102e176f000017615624ed1600003757ca695b41000032d9280a606600004aba04703be20000f1ede6602d0a000005d2ee96352300002586690d4107000075ac725c9c4a00003e32f56ba69e0000f3bbc98cf93600004d1a2092bcce0000ec32ce99bba30000bc8935f8fee20000772f5ff43ad30000acc3e529782000006e596b253f610000e54f2c61edec000051ac96369f0100009a6603186ec8000035c86a0e95330000dc3a94851b160000",
|
||||
"output_sha256": "6d14446cc7ec30f909e15baa90e03414b39d18c5cdf83893795e7b445ca0455f"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=25",
|
||||
"input_hex": "bb159a8a91da000002366f93fa670000de29342a9e9c0000f9cadaffaf0100008bc6e843f7410000d05d4b9d49780000fe4a19ab1c5300007e8399eb79910000c63e82bf482e0000068852ebac24000060170b843a57000042c3ac3961f7000007104ff972db000094f7c0a0b25200000f9c8e3672920000d7c1a04ff30a0000cb46e8c7f2ef00002b7fe64b1b850000104413e716f20000804b39c859a60000b6677c24383000008b07273795750000790efd1924c4000067d373bafebd00006cd0f6e7a3bb0000d95ca102d90d000051a0eb1d6cb60000fbbc8c8a81790000bd10346a32c9000036be34a68782000040d6ed45f7c200008423dd252f45000026260424d6150000061bcd70da5000008ad8ae5589a300005e5b04ebe28100001f26930b2e1a0000538383b9ef670000b9fda22f250300000f99209830b000006babbfc9e79600004405861fd7e00000c3e9490deb6900006fba6cf8637800006afcdb5702770000b982ae9ad481000059584a043c8d0000387b242cc2990000c65e2c0ea56f000052ab15b97dfb000088b52d483c4100006208398b65f100002fb2bb4bb0a8000029238da85be60000f6bcccab6d5400004fcb3c2c8242000007ddf6312ac400004fbb283d603900007e391ca26f770000de7deb04f52900008f1022b91c6f0000307b813dbe66000048ad80b8f97000005770543c0da7000074a3ec438bc900002d6e79a3c62a00003b96ff2797350000b9aa03537bcb0000593b080ea034000047ddff6a630700007a923719ff5c0000331398a6cebc0000fbf1aa3bcab700001e04665b937f00009f326f407691000084f3ae7f27a4000033a30eef4d8c000078045286063a0000a1af893ca95b00007b46f556091f0000b789e6453acb000032454f3843740000fdd95c0f835a00005d45903be5600000da508906022400001caf2073218400001a67c2f4c41c00002ea44bdfa75f0000f3b77b309fe00000b4f32a5a89410000586ab45138b5000027022cd30a98000070344ac930de0000274b683ac7510000453458a4d5ea00000450e19d265e0000bedca62775760000991c611fa3f5000004b5b86d195300008c96c690a9220000d9d0b18e55b10000ae6fd8c45d6200000c6c8b112ec20000b682755f945d0000b5814659e4ea00003f284b470d790000df7c4e991ab0000048e26257117300008ed2018b69e80000fca070dcf96f0000be980f303ead00000f01b9621bf30000959192047b9b000040563f6a3ebb0000daae54b490600000c59f5902df210000fba13aff99500000deb4e04261db000065ed5547b5cb00000d062dc448a20000b880e0088454000073028d92f87200004f82ddc6e15b000086873d0c537c00009689be77079000007fdbfba984c800005524c38967cb00004c98058b3d7c0000ffeccbc781e000002e81465f11b10000a26b48f974bb00007dc5f8b40a5800001f2c62b01306000002f4f0b93b920000947bdb43d0ce00008fe529cc8e8e0000eb136cbc176c000052428b7d2acd0000839f64d66f3f00002d44e5ef06bf0000ee1eaa7ae2220000096e7e6ef62d0000102f70d17b39000048458d7e8cd200000ba71077ef450000a8a7dbb0e3c90000d3f260d53b5d00002a8cd4647adf0000949dfdc7e9080000c09c325de83f0000e401b6e6fcef0000dbe4328abbca00004dfaf5c9713b0000941fe14ba4d50000af163c26d64f00001468b7008e3a0000badadde51ffb0000116c1d502c73000057cd61e0b7a300000393e61d941e0000e6e17a87447300000ac042bec8780000099fabe5e04300004a0cdd5fb0b1000082f5f75103de0000a33f6040b9de000024ce14331b6e000042d699fa0cd6000012a525d35e460000cbcf1ef56d9000009e6fcf479d3700008b7b3b6122a300008b8f8edc29aa0000056031545b0a000061e973015eee0000481902878f3c0000ee735570defd00009490186714060000a468685ed96c0000877db3b18fec00005e3806757c2700004af5a52260320000999b5f05b76b00006681c3cf385e0000c5b12d47ed440000ec364e4ff11f00008642c1108c420000c8208fb9667500007d6f5ee877f20000cd98a2d393df00007f52d3e69fbe0000d34291bd5663000096d2bb9ea8ea00009e6f2244c34c0000edaaf16f142a0000683f9907d87300004a565d44066f0000e85da95ee895000008decda9f82d00007f81e78ed3630000b9e024f09e8300003eec496822430000d405662b1a9e00003834e92ba30f0000851588f03f430000d25a789716e5000007a92272bdcd000040c0629eb1c500004f7871288dfd0000f9a89732b42b00000445e3d824a600009ca2474405d80000f1bc10449e820000b2519132845d0000e9372a334f6000001b5662b5d6780000ab1fca8172cd0000f2b457b9a26c0000c86174869eda000002513381fb80000002ca015b70420000820b301d2e1f0000fe8da9b4ab2c00002c349620697d0000113bf851936b0000d47be836a1210000e0c7d72937ee00007575706f849200003b9a9adc710e0000f729c1f3caf500006b481d416cd600006547f37d2b6b000066c689e7bcb5000004adc023a21700001e5db88bf66b00002af8e652c08600009070f292ef1d0000de7973932ca90000248f1e81d7df00009a877e717b9b00006baa5365c8ab000052b3af1ec16a0000bc6864a742e700006dacce49142a0000c3286d90ef4b00005fa2ebd648d100003fe006e546fb00006cd9de706dbb0000b7ba4071508400001022b614f39c00003a60b5b97a900000e7d58936e70a0000be7b2d017206000052d025a65f0100008fb41cec55220000b88985837aac0000",
|
||||
"output_hex": "be28cc22abe80000121efb45d51d00004f54725841860000b817c220988700006b05121769f300009665029092b90000d5e866f87bc700005a13c139cf290000a7a5d110855e000045ec053154d00000515cef3106530000d529b631b9c700006d9813a090360000f9775185bdbd0000de634ccadb980000ccf4b6532565000073d0d474f0160000b79db2df89f300006a44827a2a330000d8693abdd364000031a18494699a0000fb9b764f52870000ce3bc959542800000497663965180000eb821875ff84000024e6c4d26fca0000f8593fc41ade000025f7e7d37fef0000655469cd3870000095167140a0ac0000bfd6970252a300003802e5c9d11a00004acb4f6229c40000656fcff101d300001bf181af78510000014aa59d6d760000fd9fc9a1a5da00003acf9d40b43400000200cc46b02b00007982a9f09b2000007d08dbe534a00000cf762b26d7a9000012fd8d2d6c3400001935a45e76a90000b9d30ebf59900000f9579df4b7b8000069530c28e1bb00004749d0a287d4000073ce41e071a9000066653fc7c1ca000021098f148465000000a9824ad32a0000e41285c73b760000be7a1d04094a0000d138d7fab0cf00006b2a065be93100003d3335064e590000a09a06b71714000071f6505e884800007fa6a8c72d6f000006c05337c61d00002e980b44b6a20000e6cc7282a3ea0000d4db8abf2e240000d5e8ae8973fc00005d29c41c3fbd000079618a7b11f80000ee457d20f3fa0000ca05f27a79640000fdd6ad0e58160000aceca0bf2754000095ffcf559f7a00007f1fd18172e900007a94cf8537360000d50a524f71900000a71b63f7f84d0000eed974836c9c00001241c45424e0000027831c8b7e0400000a743f9dc9110000daae3c27212a00000262c8caa4940000911568a5f5db000054858dcb8a0f0000eb860b27ee4a0000b036093325280000bf6ed952f3580000ee7511a76dff0000352c07031d7f00002322c1e73b400000d96cbde441d400007c6524209c420000e202a0c5143900004acd2b636f1300008fcc9188019d0000a838169e7bcb00001a0bde745ce9000027be213fc741000060b09d2ef3df00000cc0f793baf500002997e517bf9d0000d430ebd74b8600003b4832dffeea0000d79e50f2219f0000d95bc8bcde8a00009c03c2772d81000081b6b696bca00000c18cc65529fe000008c715208d8100006557509c65b5000087cea688be4d000004390403389f0000e705e81ca0660000afe77c4c1d2f0000ed59beb5c10e00003bc513a21aa70000cd25881ec6860000c3112b4f261f0000e0a3b5dfcd8400000643064df92a0000ede8f911ced600000a581d74c5ac0000d2d040ecbebf00006a748bf9796d0000dfca1d9ecef700009cf6d20355aa00004cf43e46b835000075f9d447234c00000e0ac58cabc50000194eab2c59c80000c8c5e6262b3100000d426ed2b14d0000a116c253eefc000051161ccf51590000a219851ba9d100002607b0b119750000ae99c0ed8b5f00008ee20591816a0000a3f9afd10b79000062f7d0a95e630000c4e182c3962b0000c64840645fde000043296b6cea48000033e00c71a514000043920065772300005fb709220e6b0000efa3a5bc826700007c041bf3217d0000096e4fce37d90000b4be7c81d2cd00004144e93f1a7c0000f78cd3ef6bbd000050479a7578f60000f23f5bc6edcc0000bf1cd261ea2e000015cdafceed2300002fd0422cdab100009facdda190a0000024171931c5000000d3443ee924ef00002211657dd2440000027fe99e7a3400000e1f8202f31b0000af268a9e30460000b2fd74c4c0190000f32ab6f1e1c10000956a6bb47dd400006a102d2117480000aa5ab07091bb00001f12e8f27a57000019bc3780bfda000038d1865a429300006b4ced92927b0000237999ee4bd900001dacd2e89e48000087c21022d6f7000066e51fa40d9b0000321366a23dcf0000fd0a25547e760000f3940368dedb0000f159fceccd6b0000fd197d4aa7740000e71b0745047400003fa63ad616a10000e5dbc99b8cc00000f731c06d161a0000b2e0ef90d9d8000056dbe354eeb10000a9e5f1e00359000018b9e5d4cbca0000dde2cbede25b000034028f33e3810000cc4706a8ff34000012c7b78b685e000071da7ccc462600009518c629b79200002690699858270000d423abfcd43e00001c739cdbf61800005b5fa7d1d0510000b24a3de199b500009d8eb4284afe000059cea03fca6c000066a6b3b4c0fc00001e902af4c5190000011179a3f91f0000bf8a4940eb790000ed9870e54e9800009c2cfc97471b00008e0fc4f686a20000db30ee47f7550000bfa11ca1986900006cc5b3849e7a000090fbdc2f4a690000c448a875ce2b000083dc512bcccc000010bafaac481b00008af09b6ffff000004a4ce6d083ce0000d6dc8a4daa690000442e5c0348a100002e06b96ae18e0000e8d595998b760000ec651abf27de00003a32b13c05ce00007acc24cb342e0000a7edbb59f6c0000067880295585f000041b734cb29bf000093cbd6fffb3e000017f269f0724b0000925ad6ed23dc000096fc9c4776850000c22513e5e4e100002454d1ff76c10000cc8a8fe487dd0000fb4bdc4e7a4a0000ea3b943847e000002a09df89d0a300007a0c6a37b0440000d76e095b1e5a0000a5db01f1e51400008a76a5e5515600006c9e046aaa01000021eb918421e40000fcfedc9aabd900006391d4c3a85200003b5a006a7db100009ca2b85999c80000ea2c43478c4c0000fdf0d8cc6111000074b9aac41d5c00008945704833c60000e4b701684c5a00002582693555f00000af68d20e39290000",
|
||||
"output_sha256": "b8575d862aaa352969f78ab8a1d07cb83f63a2700d5ed8c01c0cba7bd315f53f"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=26",
|
||||
"input_hex": "f97baf6dec3e00007459c2cb60b900004278a0452efd00004443487ed5e400002f8f54a1c9620000c51fc7e378810000547b738858620000f13d74019ee500000c193670d3910000ce4d4846191b00006090db15dd7c0000fb89695dfd74000031875e5056ad00007ba1f23fe77c0000678bdd7b17e100001bbff88a81780000f646d4e8e90a00005d3f36c6aa8b00006710118d319a00002a29b870a998000066b61267885b0000ab74b4fd46b50000dd8d54f31311000091382d19f16300000a508b06d0c80000e63b589e40bd000008a74015624a0000c1c26f198e3400007fb935c5f01c0000a6fae12f3cd00000275d2f4608d40000fedb36aa318000008321a4b6507d000092293070ee0a000048079b3f8b0000009b1e5648527a0000a124a8ca79df0000ccb25d65b63c0000af6e72c99b7c0000de1a65228e680000bc8668eb74e300006800bd7e035c0000353026c40a4b00003f7bb1bf6e4300009f288bd35ea50000047025b19b87000070e5d809794d0000b864515bb9ac00007446f3bbde790000ffa5d89902870000757b3659bdb40000bef506d278de000030ab510943210000bed28c14e2780000ea115bd2e5070000ed8762bba64e0000c6b6d9098cb6000036c29eb3336b000092ccd7aedf5300009c1e156697150000d0ae24313b20000096f193a30568000039820c98c0fc00005e8e3e57f0bd0000cc1e91dd9f55000091db95322d650000fe9f2e5738500000e8e5549ec8540000c38a374f48d1000062dbe1df68140000a0d822791f2f00007cddb003d0ad0000359dd7cbfd64000086069a1267dc000090922444fce700005e90d74c82d00000ae2390e909810000cea4a7585c2b00007fb91feef0ee00001daad23fc2370000a6f826dba70000001bc4d4ee64da0000718dac01541300003bbac6f6184900000d52112472f9000004e1b92e59060000d58c6db980840000921b46b90a700000ed3e0a846b9e0000ee06e0d351d60000b55ca197100300000e8fbba304c00000575bb843f4f30000589ea2e7f3630000ce4c682f94f20000c260580213cd00004c82c01d802e0000c5da58e0fa860000aef1885b3b5a0000cb4da3228aa60000d395a48e64170000d1dceacf43cd0000356331c77e5700007a956a62e2ca000022ca9e92d7360000f7ead4256e610000f809ee7bd9ab0000abf5cf26f42a00003efc3ff26e300000d0c37dc2fd9900002797af10490e0000652e38ece50600001934287f6bbf000008b1422951d3000036991ba9a499000056ba52f27d8b00001844ce6e003c00002a17bbc659b8000090a3ea44ba0a0000bc0f75baef3b0000884bd4d1a1d50000e45e3c7471fa000020d85d4494ac00003f76cd4b11e40000f87550daeb7400002a36dcc06de30000d9a4989ae6e2000030c6cc6800030000c9f83c43c492000073aaab606768000032fcaec4c996000007ad2b082196000039c1e07d637b00005fea115bb427000019db82fbe079000016084494ab4f0000c3c88263ea61000070b68254cd680000f9a57788102f000026af35fc83e000008388bdd5d84500002708354783e400006e70bb96da310000d120ac80f4700000645d50185de90000ef579011dbd800001fd5bed481a30000aeb6f945a24b0000ae52ba293ff80000ece40f3a1d5300004d23e6ff2fb40000bb7e7c4e664a00007f2b1c7fd2b1000075889e82685d0000b20895bd468c00000ad001c1880e00006fa1efc4c4ed000043313f57ceb1000041ef3b6e8ab8000023b7535991ca0000788bb5d84aa0000029c65166b4c0000040e0600b15fc00005a193b8891140000fbd771a391fa0000bd7918407143000090887fe5b22a0000988f0d02e17600003fb835bdf6e3000000f570fed16e0000a0b6ca17dcb800003798929f607c00008f5af72e1b9200003824456682aa00002a217bcb91680000c8425dd3e665000051974c77a27000009dc1a095ab2f00004dc5ac575a13000044ba3288b2960000951abd97eae700005b871129bac000003093602d254c00009a361bf410ed00008fc9f862ce0b0000bee82426bd4600000060e395dade00008bdbb478170b000093f2290e04dd0000d32a6ae15cb60000db48df4cdfca000064db8339d8390000fb02e88d3b390000e1ee3a041ee60000b0d8c743398e0000e88cb08959a700007d90c89e4e9b0000b235f611c78f00006f5c8aff838b0000b6d30b8b2fec0000dd2dd5323c49000090796a78139a0000a00028e972dc0000b6f1deec79e80000777269fd96240000da35a684d8b8000058bbdaa77d720000c7d2bd8d25100000cc2120f8249300002c1001b4b1790000ff36769670cb0000c5e945280b6f0000f2e6055e10ed000030216489cfd400000e37da8026fc000084dd1ac0c0e500001c1615c0fdb30000c56ce25494530000efc34149b1530000e70cc1c74bdf0000a5ae420e603000004c7906b14b0c0000e983c669684d00008b317142eea70000d0059c98cc5000006dc9207054ee0000056074e35d3b0000a7433ac8ee5f000086cd7ca667050000bc72b71d77e50000309ac6e34fde00008f6b0c899c94000081e7f8e19e5f0000a9594fabe9050000d331c25ef3bc000079f6a5491ecd00000c1fe89f6c8700006b26f67e2c4500001ac9a2881265000099c2b39635c2000012396c343e080000bd5d7e755bfd000008fda30774120000c893e979ae3a0000b1426790e25f0000a1f9239caf5f000084b9ca16372b0000bed387351a110000f2b5f7cec22900004f7bf76e3a14000045d9336880190000a1088a44825e00009934b911df75000032d8c6cccd670000fe94869a2c440000a77199baed720000",
|
||||
"output_hex": "1007f56d8ed80000ef676c1bb3ad000052587e694c1c0000a3e9a21589370000c5332d392f6700009ed8f15608aa0000ace7b733c5c9000069c8c80e22e1000031187b7da21a0000dcd6ece176650000c4f0a19cb33f0000c7fea0c7d56e0000808e16569c3f0000bd0b217e874e00002bf216f635e70000693f111fbe1c0000316556240714000030169449cc9f0000db3cbfa4d5320000fc26236b209c00002bfc23755499000046a77ba18a83000065d13483da660000d85729743da40000d60f543c71e500001a4eb1da79da0000b2f7d336e39f0000bf359f3920010000d9d7cff1fef700008080be617dec000064f538fe559c000098be11fdd1fa000072d612c8111c00004ee1cac0053f00000d814c46d9d100007890e6dce9c40000b4ed12bc99630000764ca0199759000050ff2fb2a90b00003933f6b3d90e00001c252257f93800004ca84c71a4c00000afd9c3e189bf00001d38a0b3044c0000554dbc2043eb0000e9335d956613000064bb558955f80000ff830a977fa10000cb22bb8a1fbe00003fc13556972800003370d31894b200005bfaafc635410000815442ed9ee90000a216e059b5110000951df769ea790000f13b4efb077300007f8addfc9fb2000062ff4c41e8290000b3046a213bbd00007737d32e6aa30000cbc6f50e701800003af1b27ea9010000506c5ff9e7f800002fc8e7c3b81600004d78d94514de000034781f9f170e0000fb360ae3dd8700007b4a4be755240000a8ded989d9740000cc5e1f7b07cc0000b489208db2760000b8098b45c0a300007ab75969237a00002867cd2117fe00007251fbe5487d0000311d7d2e170700000e3ab18e24ef0000046547d5bb2e000073c95a9d4c080000701a8aa4d222000039b1a5fbf9700000d2778fb6d9080000607be30d2d2c000013349b8dfe3e000094d5d81fecc1000003625cab0e1d0000e2cef6b7d04e00001c3a77ab0110000053ab78c380f6000082a0ad9f8f790000e6e26b9f1627000056611e1aaa2b00002a5ebe3eda710000f5bdff4f93210000b4f843ef23680000d8d8fa8bf5c2000015e2b181f83c0000ae1bdcdcf13b00009e29fe9033a90000e289ebd698b700008f3d69baf3ee0000063246335b560000fa05eacfa51600000a10674a83fd000048a5b269f7990000538701803f1c000064c8a446e5950000e6cfbfbb3f3900000e5f560a83a300001dffd0d7accc00008ca6961bf86a0000f5d88b1332b10000c72323bcf8b90000a11c350d74d100000e9055e84b4d0000cff446f2e2f40000e0811cfd71c1000066dd4698d0b60000f924b3ce636e0000dfd210f522c800007ef8e601927800007dc5da963b5900002c98b6ae6a050000943fe9a062d5000024cf1aed9c9800004d0b16ed46050000916f22284e4c000066a0d3e30eb00000cb7db8f54ab80000f86e1d5676fa0000844222554e6c0000a0dd700eda2c0000a0fa7081c17e00005113cdec1574000081ed909f10d00000fe965baaa8e00000ae41edafd5870000f08c966cd9d70000132e475a5361000035fa368a44150000092c8574f77f00001dcbc83ebbf800004e1e5c61ab0800001eaa11ba5cd20000b694018d53f30000cb9f57b4e901000024e0977cb2bd0000db0bdf531af1000005dddbc64533000094009afd3318000062910d1002fd00004763d821683300001c2bf99c780800005f6fff5deccf0000e53322e0fbc00000c1c1b588893000009391533ce13000000575879373e900000f9060d3b43f0000aee9563c3b670000f18f2e73ed850000001a028ed4830000c781acb5c1430000f7e8609c10170000d4dd58a56a1100003fd4c1cd937c0000c3d85f59535f0000b3fea4303dc10000f673b94a637e0000e409c312e6450000cd7257011929000021ee8f71490a0000a2a978d096400000991cf4e43dd90000ecb89ef5af4f00003e712484a53800004d983ed20908000007313107ad8d00000388f0802a0e0000279cca638efc0000d3b5160cc371000016ccd105aef00000202663fd7e3a0000de29256236790000be14872e404b00005204dfd08f220000bde6450767f80000a17c7da54a950000fa853e62781c000069c8ad3927030000bd9f0408680700002b9f2a3ea94600003e1aeb0547860000ac355491d41900002858149f2e3600006fcbc3a340310000ca6a067923ec0000294fbca6a81d0000b44257cde9060000123e0212be1c0000af90bdfcc9860000b49c89e9038b0000e846cde8c34b0000b9fa8e5e57910000afc1377a392e00004022d17cd6e5000015445c63a3660000c667bc31c0f00000b3e279d9ecd80000498b16c086d40000ef4ebcc3db0f0000f61551c5fa090000353777a0fc86000069764268f28d0000729225946d3000006d7636fe52880000aafdbe3e74a00000890d440e121c000035b85b5e0d290000426a25ab50e000008e5d7d07d39600009a68ea70474a000035b37136ca1d000053addc3462460000ac8719ac446d0000dc3f391648470000ba545c4197d200001ebf88920ecb00005493e47d204e0000c3ffecc3a81d00005c4952f9f84e00002cb0925c8a280000fc9dc96a361600004ef53d8ffe9e00001a85948342060000c38b5d861f370000b574729bee320000b2fba9dccb3e000062898c6a26b90000b17e617a15d30000f40e46b5480a00004d576d627a9d0000529818437a1900000771e7b101240000530d40ee5cd80000f5e7d01dc6bd0000e1a99b60e9ff0000922326da17bc00006274aca6f64f00009521cb2e0c5100005bd3474c853c00002ac521e5bedb0000612bd0b2fe1000007179ccc61b99000030388a4c2f4e00009861c990cbc70000",
|
||||
"output_sha256": "53ae1804b77bbe9e60aa36e0f669232280826fba8cce8b96e0a45b3ea20753ae"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=27",
|
||||
"input_hex": "ec590c9e7d880000dad5fed084a40000715653aa537f0000b319f3134a7a00005ebebfb55e7d0000d98e704ade7c0000a277cf31a5a600002d92b62b323800002dd31bc448270000631a3833d70e0000bfafc43235650000df08b69d9d7b0000aad4af5dac770000a20d67469e8800001c6fd05bd6f20000b7ce8b7cec6c0000211096483d860000eee73b25d93600000c608744c7390000252f0ea088720000756d351829a600005c1a9ae9e109000007248e60c72c000095f49b986a57000026030ca42dba0000515915ea2449000085b37aec4f770000f485dcc61bb50000f1bb1244180d0000f7501735ef1e0000f118554db0b0000003bb9e59cf9600004ce35864082e0000e35e6dc95adf0000d00a59026f8b00006c976abe45da00006dbfa83324e2000019ed4218086700005405f30195c900007969f0060c01000044b4d3ae97c900002869a0e901550000ad41aec703f80000e8278b1172ff000041cf0c22c5a400007829cbc2af4e000015d139076480000099f0327b60aa000011ac1393e5f60000a3920e5dbdd90000676cfe5739b90000e27001b204530000a0332410312e0000593e7210958b00005800d27d34b00000ecdd70ce6ebc0000d6e7a8754e6c00008160fe9292190000bf004beace8f0000c1dcae79f77e00007dc96fcd36fb0000fff41b9fcbef00005617030ce9190000e953a6e2ff6100001d18c87f38d30000c3fea43381610000ef4b271633d40000b8410b65c3560000529d3f801fb900008bbcda1ced030000987aa3a0454d0000a1f37f0dffdf00005d1ea6fc56e3000047c02da3bb0d0000f3f41f6c38a7000052d7fa4c5a7e00000db9d77ef5c9000055c5e42d23d70000b2b469f61dcd00004e0b6b5fd9c700006b11a46cc9f20000812da437190f00004a35d912af2100003fdbb071c1b5000024cf6a8d46fa00006d25cc21b32c0000079ff2204ae100007b952cafa11100007a0f97ee47c40000ef1dbb12067c0000212801b4c3e200006347d8af02f10000b96b83a6429a00007eb297ff17b50000b32fdf60f2c30000b0e3dd8350890000336aa51f0bc90000cd7c468ca3300000b5c402fb2c1900006a4b107418a20000bd45d5a30ee60000f9b1138ecf3c0000ccaa3add0cde0000f2e1b1149e1900008baf79ad80c50000d82e6bf8b5ee000087b9fcc15a1b0000c835f43d91ec00008aa7d32594550000b469cc0413bc0000a09481bba63400005318efc65849000026dc46e0f47b0000a73efdb1e0550000caa0cac7bac70000f50b5e9a44280000e48be1f3a3230000398920f3f72500006dc5aad2bdc3000038a2a780b0690000900fa31e753c000068a9a7db386d000077c4698d9dce00005e07c34f13b90000c190155db20400004708156b8f980000e1fbacd65743000035457af88cbf000029dff863272e000064a78d674865000053588451039800006d375816d2830000056897cb79c10000333c96b4e97d0000f16f2cb1a59c0000ab5269d481aa00008ea878c628c800000fc7f560eeb900008cc449316d18000068770e69412a000095966e4b1e8e00008b714134684f00005a7f07e4c63600003c49ec313c9100007105e861798c00004113a4afb9b600007977d61280a000008ca25d6b36fe0000aa181a346e3c00005cb78e9ca590000098c2e172bc0a0000b53f1677475b000090f80d59f2cd0000c5bcae7af2a200005d6de5a049a30000dbed12ea487100007f13d140b596000044a1307cf20e0000af4b129db3a80000cb1dd6c90677000079dc5c971fcc0000df551ad8327a00001a7eda5788c600001aa8ccb569b400000c8e91df54f50000a30ad5c297270000ab086a5bc0f6000094ed13e0ce6a00006151dcd9d6f00000148d39beb1c30000d6e613977bac0000292913750ca200000521e982dd5e00004c396371d26100001c1899ad18730000eaf29bfbab5b0000ca291d23d48e00009cbc75f01a32000072d39d9cfa20000010f23ac79a0e0000b5d30ebaa9ef0000d5958376ddbb000019661f5b0fe100006d8323a6539e0000c53791182f0a000029484d0883dc00001924a16d57990000f6adcea21ce00000ef403aea5c5600007c6876acf5a800004abc3dd1a8b400003e919438f8ab00009c41557d9f3f0000861d913044af0000a2f1d9a770cc00008a96d52917f20000d3a030a45b32000062c1cbf41b9d0000649f4287c19c0000c80df0b386bc000063bc55f322390000321929dd83470000079616ae244d0000abb93e86957b000058f9e55783310000c9578c05f5940000e6101bff365800005dd0ba09408a0000e07999c2ea0a000055875f43be700000cfebc5432c5900003a68a83b2a3c000037f543c3551e0000aa0ce36c89ad0000c721bd81faef00005e0eaa11989800002cab3904c19b00006d63a1db47560000bd8f6982d8e00000316f9f3a9e14000002f2a33cc30e00008e69e2c158320000d82dfd92226e000085aa8d02b5750000cf0f8f8c3993000092f896131fef0000f1b35c482b400000912a9f3a62e6000079d18107000e00007859c53246cf0000fde9e4fbbb5d00008ddd0e9237aa00006169c2173f4900005e8d271fec1000001be2e5863fbd0000cd468c091f0c00000df1be90793d000010a6b719b6630000b1baa036bd59000087636ad778e50000f4684b60f9070000c344ed8ef0a60000d78ca35dffdb00003310e7587c0400004831e71040c90000fefe985f1fcc0000c7e4a83a197000009f293bef40f40000fa8337421ad900001c8ad0b551500000a77882ea321c00000a72d968064c0000f74966794bf80000c1535804ef5400001c67bc480b6e0000f3e1b21ba0b10000",
|
||||
"output_hex": "7082facf089500005b82374d4b13000074f2cc4eb58f0000373f4a22bd100000cff63df982b50000d9759e25a3ef00003741a68c089900004ec0396c374500007d79e7a6b1ab00005a25e3c7a9b100003dba5501db010000cc064803cd080000b9227cca48fd000008abab2ddc0800004477835e490c0000fd7e0b3c9050000053ca49b3b1ac0000fcaa2119eb0d00005aa72cd8a42d000067cb1cd03dcc000055e13d3e28cd0000d1b730d2163b000025084489b3e4000069756fc61a0000007a1b6cc2e86600001bdc65ae78d4000039a8cd4c2f110000d7d3d070683b0000bbefd6c633a10000909d20e9b0c20000fc3e3f0486790000fe010ce218e70000ee9e76ad7b4200006783d644fa330000f5b46143ca14000001735ce468b7000002673596133f00001ed25c14b67f0000a2ce3e4d945d000094b5d6019b45000057cae630de6800005829e078850700001b2b62178b3100003af92deb8563000072bef6d935d2000006f2f80fc60d00000cdcbd9e012b000029252c7f200d000016909f3c8d270000d583482e8a7e0000e1076d5a17bc00006fc78ee9b5460000ef1a887c70ff0000837b3205c88b0000a70a6958fcc000004d3ad593beee0000923133527b440000321007727b170000b5b226af31ca00005a15dc7d6aa900003f6c21d3d8b0000079eaecd0624b0000326608e612c7000042c4f59c29450000d5ab997f03d900001e7e42e807110000b2bf7115f4c1000050c397d4fba40000832efdb0029300007757dbd930470000299eea4f5c7c0000a43246e00d1400008103cc79ae0b00007a4352b261300000696d1af8668200002b377a6c0122000088e0db5a190500008313ea7f39740000855813fdeded0000c154a60152620000e6103211e92d0000782c067806430000782bac5ce2c30000877e83fcd83c0000467b0ed1959b00009fad73dcef760000580689aaa56a0000c2516a4a5fde0000ddc4f8afe5d6000031cb9a833514000045e5945fb16d000056e2435b0d340000d8e29ddfef01000088095f85a885000061c8702e042f00004c45ce6008be00000450397f7a760000d95e64709792000096e05e353236000045cf6d71b9da0000c1111fa6d93800008603ad17f7680000bad14089aded0000a73694f668ab00000410d41bba100000a2a4a3c8b0510000c5d4d6b0feb700002c7bfcfd98460000bad1c813faec0000cfdca1821c1a000023610e23726500001000b9d317c90000bfc7441cda3b00009d9edef3270d00004c7abbfa412800006170a62eb6a00000b00ed9252e030000ceb848bd3bed00006f595a237b370000c3ad1aea468e0000c3a5e14a68b900006c00e4eb6ed50000b25c410bbe75000096afb0f8987000007419c78148f7000035be9dfe63e600009f17e3d1230f00000ba5b1be57ac0000c8be823bf0a0000057cb2c2fdef200008dacca465f6f0000abbd75e321a00000b3ec1198e6480000982434ba89f80000f7003950f71500006bd8e0d83f3f0000f71422291751000074057817e5ca000050070a3f983c0000c18d6915b6f000003b8cd88f0adf0000cb77f3bff74e00008dea021edbd3000065602e54b10300008c7597d7a19600007f4955d99491000055427c77a53f00003f688caadeb30000ce667a9bd94700004ccf6709bd920000976503dbecbb0000dc347ba878830000db881d5273710000dd77dda83a5f0000c023a4f8285a0000d37da7e6c6610000134fdf9e7e110000c928438d2d2100009f0d108b3ce800000e828c2ec313000007e00687ae1b000092c51db4819300000f6bae7e8a200000ff4263f0c468000058142c14dd810000253fc2fb51a000007f4fb4e8584e00003deb27396117000071d0219c4a120000b2f5cce8e5d70000c3c5f1bbd9b40000711d42143bee0000d2da01756747000009875fcb404300005e702164ad6f0000e917c5c36ba70000eda10b4c71b30000672466d4f4580000e9407cefed8a0000fd764421e934000072730fc8eda50000f8f33600bf6e0000c7107e947fd300009d9b1311709f00001ccdb2d8fd4700005b3cd7f6076f00009d9a8f74ceef0000e7926f4e58920000d52d63963c3b00004e1401925db90000d0b890a356e400008e1aabf567d00000e3e613549ff60000924c30342bbd0000b18a39ed1c7200004dbf8b7adcb00000de7c9c5a42cf0000f30ef673094700001092ca2030ea00003f81f2b8a7250000e1500aa836ec0000a2996c6d0b0100008597ad4809110000eaae40ff07ba00004d7bb26a15eb0000133a39c0fd4c0000ad27500df23c000003f1c90d741600006c32144b64430000e9514af5dd0f0000d71ad584dbd10000a1a0f99a702400007dae2e0a453b0000177b0ff1dd5000003334db583fb300005e915101495800007d28ffae042a0000a2cb20a655230000cc35462999980000d0923f5da5c000008863b01a2c0c00007cf7701c6b310000fa6b1ffc22d50000e6ff5f381f5300001b76e5d1e5c2000019a08f1a5981000041538cd6533d00002ca7081f07ac00000d27ca3208cf0000b3cc19c8e9b400007cbe506aeceb00003b07c265a93b000072dcb4d46cb60000be74e767b1c3000098eb92b8d594000082257f0f801300002d2ad4014d87000033b3bc07f1df00002f805c493f9d0000cd656a98868800006570fee2b848000047adba111e6400009ba4ebc0b1000000231927e79ae700000e88426258230000d785f12b3af900007f425de1f3430000da4a0930161800008722c5f8d67d0000569f6c209b86000049fd74525fcf000049100ce9ae8c0000ddcbde97fe0c00008d630150036e0000520ae18e04750000da48c4f30fcf0000",
|
||||
"output_sha256": "3286bf2a7d1cbc774c0e3e0082f6097acfd75ff35ebfec9f1b9cfb0dee9cd791"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=28",
|
||||
"input_hex": "850ed8cd10c50000ab4b956f58b100003562705ffc3b000096acf4e409c60000d7c45331f5bb000081a739ef261200000b815dc401a50000c4cb8a65595f0000dbd4b40451630000514a73a1559a000015a2b1a170f400000738a5ce56000000d8e26bb03a23000022daa578740b000075d23c9b2c5500001c8d883176a800005d278cf5439b0000047cf7c61ba50000533a9a5ece7400008664a749e1ea0000c48a4a1bcec8000021baff9cc92100002333b8d9e30300002b156abee5c10000928a52d976c9000019aebaf777fb00001392680671660000ed6782202c9700002cbec525bfdc00001dd87b01127a0000c3ab01961c0e0000c3cc4205e2fa0000d9c60ebfffd200006c227f06ca8d00006c2113f55a490000977caeb5bc9f0000f92c3ece0f0c0000e56d89776bcc00004c0169f7984900006b3072901faf000068c908748c54000083f79ef292a20000cae48739ef3900002489275e70540000c12edb75cb510000fe27485fd9a50000eb94f07addf30000ffaf018dbcd60000a94fe75e0e630000672f18dfdc3700001ded2497983a00003d38a769bb2a0000602f1e3b4b440000dd3c627b32fd0000e8e2172727c80000f0e3779e60c20000be3514eeee1f0000a727c2ad320700001510271345200000e9d036ed1bac00005dae48d29bbb0000837a9c9c570d000017cbe3108a29000069e951a628b8000093a7c8d4c5990000b88c777be13c00008ad9275dab840000d08b976392ed0000c78a99e9b98d0000afe11044fd9a0000b08b1f42018a00004c4c126dd70d0000ca156fc567280000c59016af23de0000b9dc75e61f0c0000c2361689be7b00006115d272870000008f84486cbff3000032bdb40e55ca0000e253d457a83d00009cbaa72bfd980000bc698ed0eeda00007811359969610000b4fb3595ce4900007f537b80e5270000994abbe3e7b800004fc703c341a00000a8d84dbd389500004f717e421628000088f7c962d7cd0000445d226d787000004039d559a8820000b467c91e4d4d00005faa9914f55a0000ec705583a068000025c05cc43ae30000b9bfe833094c00003bdb1b6ade1300005773a7f3fb2f00009d9677cc6c23000077907d3205be0000f189dd2838ed0000c22d565655e400004d4dec19a5c30000a9eff962c4dc00001889f8ae4035000054dab95f603b00006a8d7586be910000c51f1277a6be000030563141b2ab0000a315a41b07cf00005c392761126d0000f926d6d57f3400000ec3b2aaa76a000055aa4d0ce25900000787761c837c000034492e8b936b0000bb39a9df9e7b000021d7641bf4fc00006197bfb2a5250000f247500476160000d451679b3f59000006324599df69000004b97eeecc6f00001fc1eaf5f7a20000a30b72dc2c210000a95cc1f374150000deb66a00b55d00002310a3cf067d0000bdba9eeb22ca00003a75f400dac300004096e835915b000089c16acb23600000f1cadac9be6e00002f6fce67b8e40000e17e357769c0000025c94c6b4c9d0000eaabe3814fa0000023f365589d5100007c63753375b900007c673492e81c00007a37c8e7951a000086cf94013a270000cc41672e879300006fedfd6e8d4300001292080dc03200008bceb0b204c000003b1f8f7aa32f00002214e5bfb9c00000670bfb0d8b7b0000c3eaa539e9700000bef948531053000047b0b302490a0000e564b0c55a1a0000745372f069a100009428ff673726000032cfcfed1253000007f2b8a075a700000a97189f1b2700005f812ec43fb4000083484d90c6290000a74265f433b00000ecccca213aac00005da933a3cca00000524f4dbd9904000028849065c2100000abd4ded6451d0000b99f42ff8e37000082f7eefcc2df0000c6af037b8d45000065b0b5cc4ded0000be5fef881e420000a14b434ae2560000a18b68a7403200005fb9f40ec481000024a27d26d7cf00004e73cc268b2400003a31660b3d0a00001505cb029ac40000e6d764ef6e7d0000649283dcdaeb0000c8fd2b0c28480000e4844e77ab7700000533fda1a9040000d0fa8df19eae000089b292e14be800001f90fd5a18570000f8dc86853ac000009c88eaddf85b0000cbe089abf7bd0000e8ec49fceac80000bd4fb62d633800005cf48dfbdebf00002fe9f111e0370000244270e779ec0000c1187fffdc520000ec7d93caa0910000e61bf3fc3ca50000a1b4edc6fe40000007c250f5d0b80000aa4dd8574e46000033ba4ef1488100008f2ce9d9860b00002d622eaf7b520000f917658691650000b85b0eb90a180000e6593681f08a00004b8f18a5d8080000656a653fae4200003cde5014ac040000adfb53c1191c00006cc5175c830200001a0fa4063c7100002a3dc2a8ec75000087553cbdc6b60000fa6586076f63000017b054cee2ed0000c05b12345b1400009d86248ad3160000f3e125f078780000f3b9515791ab0000b11eeb68cb0d0000ba1360584e61000089985e3840720000e9a8aed9033e000040e5002ce8b400000492ee421d0f00000decafbaf5ca000014daf3884eed0000dca1866de702000083c86d681ae60000d9c3f59aa78600000b25eee1d2580000ed013cc9bd240000617b60bd47e20000d3d5853de09900002fdd9a5d80ab0000adcbbe3573fb00007d445c0eca390000f1d2da261b2700006ffd42bdb3180000ee4c602140cf00005556fceb88c70000f1b77692a632000084f1b360c338000045bf48fa7f790000ac93b77999440000186c534e89010000d4d4beeb643300002fa7d189dff300005dd7cae2f75c000091c354b4f4c80000563444c75fd7000079570e6a7a3d000049ac047c4294000071b5fefae7dd0000",
|
||||
"output_hex": "4e3d715cb34d0000802affc3aa4000006c67d7ea4daf0000bf067356d66e000038307090292500003e60717b5724000076b17fc991a0000054b8d4eec260000055820f95fe5f0000ab3b728eee550000dc5287c3273a0000583570571463000089c9edf68489000032bc6e3da7ed0000c65dc7c5c57200006b8c59039f2d0000f19f68ea9eea0000f27127ca862b0000513460902501000096f5c44e74d1000036e7e323c1a300009f75bbcac5a100000d7270f21e4e00002d8df9129f7f000079726e93fb4700006bb31b0bd8ae00009cd3d21e876f0000148ea078576500005eeb4d399df600009644aaf9cbca000021e3852f2e230000806c6770670200005a97f01ed7ab0000a07bcab477b300000d56197b6dce0000be872607d52e00002a13226bd966000080696ee4369400002305fe5973b500003282fa19d3b1000043a8ddc9378b000018cd73fe1930000026e0cc9275ac00008634718be522000071460310ef4e0000f21f0e26797300007f0f4a77e9c30000177399d7456500006f8486af8879000072dc207e74d80000a29f1e5724ba0000fac70b9576560000607a4ab9418a00003f2366c83d8e0000f5f94c73d37400000bed642d3eac00009d22071c44d00000792c40c034df000084b11a28610a0000c3c2c5475a7700001ae73439e7860000368de1fe7ebb00001e86be0e2601000062670c2f64a30000827cd8173d7c0000e5b9e6301227000044cabdb150cd00004c00a9a226400000c07b793a9a6c0000448c882d40ec0000c280c9a0cc1d000072a852bdfb160000cb6c978deff00000a36b8092a1f100004486684174e900007d7ab19d722c0000dd3194b6aeb10000f7d290b16e110000cfdcd26dde5600001a608cf805e300002b4628279e650000f5a60a2d9ac40000380bd3c8b3270000e44e76cd788a0000f7644d2663430000b432ffa0bf4500003e22268c9d4a000053e197d6f8bc00002aec55390233000067e3977d84cf0000d5f80017824f00003635a96f884d000054e9d6d25b2f0000282f0bf0a5a200004c99f0bde64300009cfd12fdd8f00000f3b526a96783000091febe95b59d00005ba06b4c603e0000f1feb4a0c7870000ef2c603f86f00000ef08147390f700000a2efc4a4c8f000002532f58ca3e000031ae44c97f6d00008850bc08925d0000f465900a4e07000085067322825900001175fadd17c400005fd8c68e839400003654f1a74efc00008d22246eb66000004f7122d1b3430000556390d8b49c000027557c1924130000efaa9ad974050000a35d21f093b2000036361c1f84120000d65e97d32ded00007f20a26bd8140000d93cedd20a8f00004b57aaca3eda00005d6a500279180000ffc25931ca470000b667db29ab130000437345226d29000082ee5bc16393000068e1af6a80770000273576b9685a0000a0c9f4e5948600004ae3b965635d0000c7078425092c0000a412c99cb73b0000ea0e992c729400006500958b3b94000052a9e126b0280000b3699932909b0000c0e1191ce6830000c25e05852b360000ff8cb36a5ea5000051d8098afb3000000f13a18d321200009fe16fdfbad200006f94c19397300000f400bf784d1900003bab0506411400002f868ecc98760000324542e59367000078ea4ce5e6450000ad1469ac3a5e0000d8c51ce4923f00006939b91e8fc500001bddb4012fc00000973d79dda3bd000019b7fc0f1321000097e3025887d10000e611009544b40000155318ee1243000029a9adebb7120000fb07a989b5a30000791cd2c02c8500007cae0e5747010000c131caa07d3f00009013a1e5f25b00001e37e2a03f36000038fbdabd1f1500007a3c5b236bad00000abf35620c280000f428be76ec0e0000c038eeb776ab0000f7b073172d7c0000d67869c35f2900000292705f1a95000029894f96868f000082b217f729b900001083bfeb74eb00000cd9abc03105000036d76bf0edaa00006c16076578ca00002bcb4458be9c000023bcfcbf05a30000ebfca7d1f444000028b0b179d8350000fbc4fedb71850000cc38cdafd1450000d2f644e550380000abe6e4c3eb6b00000ebdbd15c69800001a8486a0cbaa0000153aa8b6ef3d00007d155319e74400003855ac49e5e4000098ec93ff2abc000081cb065163c90000c78738996d1e0000ebd6b1908339000025af5a36d8080000f5c9d5d504e30000850f6d69d6560000bf038dcc1f4100004806d5e484be00002542d9fb53940000c06684b6aeb000004822908ca79e0000edf1c6dcd1f000009478a6994331000041f3e4fdd01c0000b1474f2986890000739603edc23000006899bd7c14f90000808bbf76fd8a00008bc506691d4a0000c0cb1eba37a500007fb82dcfe18a00006eb851f526cc000000b62fa297b80000f6d257b83ddd000091afc6985bce0000a8cb8a299fd00000f83fd0aed6ce000033b250f452b80000c1839e5db4ba00008872c63399450000fb1d698da7550000f6ff834886d50000545003c0cdc50000e43ac7cbaa2f0000eb246039f12200002c10b394f3560000a88a9fe1ef690000aa82072a476200005386627ecbf000008d2913a2e23700003ec8f9965234000080360ec0e7b90000138b399f29da000050774b0589ac00008d06b83bff60000024cd8abd9b1c000095beb39136dc00005b32363f92c000009417d06b06200000322a4706ef87000071a248c46c9700007be8979f4d2300002672e6898af80000777a43386ad8000077386bc35270000023c88a9f30c80000402dfbdbdb52000001f8c3a5d4f40000fbe5bd84d94a00000f80f01a5c7600004aa18f038e840000c61c13a5a7220000b8ddb85217f80000",
|
||||
"output_sha256": "69fa2b5704175758b5b44724dc784f1b8517ed402a96f09e314bde6c135638ec"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=29",
|
||||
"input_hex": "94742a479c2c0000d611d004be120000a1d5192edff1000034a760ff18f900009d90f875a1b10000621bf8b774160000e8e9aa7f0ee30000d85c21b2361000006e0948e375eb0000194e63b9190500000c33fa8bf0ff00006bb8c7a5fa2f0000a79203a3ac210000ec0097245d680000dd43d2c47db300001d3ac8f148b200005cd615fdb23e00009a74e12194140000ebe0150e545f00003066df6a896b000004a8c36237f6000053b3e52b725a0000ae23752fa6df0000314bf38ebe910000c0f326e3563000003d22912d171a0000bd202dffe071000049cbb2f25ac000005015ecb6be8f00005a4df54a452e00009dedf768bdc000002a135b973eae0000591272d21ed00000e7f07e0e30f3000076d7a1f3afa60000424a9ccce01e00003697ca00c5930000c95507f5daa10000c9c1346077aa000068eb879fbbdc0000c05a722262010000449c830e98c6000092a0507188e0000001cb332b8da1000037b86ebb19840000203c7a9f88b500002bf7cd51854b0000383f6ae340ad000028c5107fa257000083ff8c959047000038c3708986d900002dc1d1ac934500000e02de6b30940000ead61c9d0d82000077af98ac94760000a520d009715a00003ad20995dd3f00006ebc17c343720000a63a97b438230000dfd830384f4c0000f9c8aeeac8a7000003dc0cd0e9670000877d7a41e2d5000024cbde5114d90000e48784da94fb0000e0af651e99c60000b098568c187300000a38a957ed7a0000de6d69d1d8b20000b7753c5e491e000047219a51c8be00009b59fce91da300003f749f98824b0000acb179dc6d7d00009f5daca2ce6b000025b1b0dc94040000061a656ccb3d00003879285104ee000097412d27c46b00002cf04fa8865500008a8e323bf0960000269c36f919a60000b09ebad2c9560000f5544c9966d9000032b4db46866f00003d7c31a76eb80000de4c1621dea60000fef979a2c84a0000123773a171530000710eaaa4b8220000cba6181e74530000c29fe5d0ee9c00006c5363888ef9000001357084fe9b00007faf5a10817a0000f573ddbf6a6a000056baab87ffff0000f92dc16f8f22000026e6c55044b800008386115a96500000b3cb2568a6ae0000efafd527046e00005dda500637b70000f347cb0fac5f0000f9572457f3a9000070088df2b68500002c25f6bbf18600006eadda3cec750000eb9de9489c9900005dc14e454fdf000051641a41016d0000b24118a5242b0000c8e92f565bc000000e7a70fae9870000fa2faf04c5d800000e02d9cd4eaa00005522d503ee4c000067fdfa028a9600006626f2cc9a200000ac7a71d5e6c30000425c865b9dea000095be4f147e0500005e80b74848d2000094dd6a0d7f2f0000dfd883e0efc7000025a474bee1ac00008b2c58afc56600005a60ed0b28e50000a9808b47cf120000a5b77237a5d000005c283f48e2c200002fc11cadf72500005a44c221fa6b000084af849d9961000069cd83e36a25000043b0183611c60000ffc992d71e5f00004f1c426ca46800002d50cafb4e61000064a15f5c38970000c7d79aea8b970000b980d8b86e34000011b7d98160810000f109c7d8555900001ee092230a71000020d5aba7010b000059f23b559ea900009d303c4487630000fbe0c7e0c4020000a201f6ed64e10000be17a78626d400005571e1933ac90000b2d6f859da550000fd5e6a0c06de0000732977568e8200006e0a3f7c8f5c0000c3f9dcb792fe0000cfe01b26caf900009d7bf8954cdf00004c35c33591b90000694bd82199a70000ecbed1099b4400003597f8bc0b9b0000a93764c9f8430000bc7d62c79dd600000ad7356abf190000876afc3eceba00004ee5e5ded0ad0000a11fbf3272690000eb4ea1d8ce5e00000b39cf4cebec00001a4c921f9a5100006637579879340000a2c69a5d5f8700006b0bbc6c41d300003abb177b5bd400003de739943a290000268edf8212100000a194bc4c33e700003416e0fe9bb00000d8b06433beba0000b657e11d5149000029a0685f197400008949c70b3b5b00005f6e4d0110c300009b7bc7c7840000004e17aa730ccc00001e9821d8430c000091221fe58452000004e47d61eae200008c324ffae00400008638e3595c7400003196f418fc760000ff81b3aac82a00002cc47667024200000329e438a0d30000796d1a1e5bd500000a5719c836d20000c0682130b21d0000dc464e03f4430000a8303359cb710000bd114c8cc8f1000012d75be9bc190000356c15d1ff050000286eee0128c50000504efbfcc8b40000c616292f62470000452be87cfc3b0000fe56a142ec750000ce42d717abf70000ae018f80d46d0000211a1cd02e3e00004e3e19b7c017000093e51e512f8a0000939ffebc0a180000f02cf30b198100008e1cedeed1d10000c979dbcfd96100000a2a6d44e1850000cfd634d2516500009c50ff88dde70000958112a029c20000e87140975a7e00004da08cd3bfcf0000b6e325f4eea00000accda4d1c8760000fa7d26d5897e0000b2274dfc701c0000db57a657b2760000c41b7b7ae70a00001874e3a79326000034a672634eea0000a1046fa8c93900009d52de534baf0000a4c7a82b17c4000059be050cfa7f00009f4bf1408aa800002608211f769e00002f2dae2798d1000012a686d535de0000e7c552d7e44b0000e70a36ba236a0000fb3123e5e9a30000402b864d7c05000041d0b98847de000009d3f83f735c00002a228dc0c1760000e8c96b33f3fa0000f31e73cba89200002de3cd58785e0000b42e2b03a6ff0000d409ffea724d000052506aba465600004f68c727f5680000a538f896f52a0000257ee25417220000",
|
||||
"output_hex": "c0bc859b08ca000068f249e2242f000042a493a3b2a000000e3714dd27b30000191ee0b5320b00009e779bd510220000321d42bb0bf7000063790914b8b50000b7fcba3ba0f50000ffcc79882be800000b8a48467a97000018db66b0cd150000c2ce4c8703bc00007776b550318a0000ac20afc5f8c3000068d806dcae14000045898a37d1f60000b1d821a33a89000063358b058bf10000eef40e61244700004fa11a5a0d950000a1293b24454b0000cc451ab023360000bcb09eb91f490000dac1e4e3b22b000079b25efcf09a0000a3d3cf5f96470000d0bb4d98e3770000d491665c9d250000baddbe2c865e0000e297ceae6072000034f0aaca7f3d0000114163d3a9c200005f145d1c1ed300003445dafbba400000175db2aead1c000082a40afedfb00000bb6289238cfe0000db8dbbb40891000027f2521128f200008fb79a0ebdbf00007fe2ef210fbf00001b4350d5e6bc0000fa8931147e7e00007ab361ecdb6e00008e13391803bc0000c34a17c1bb160000b320ef8893eb0000181d159bd5500000a912f9be370e00000d2d327baffe0000748393447d8e0000d882eb9aabd10000f55f7907c2940000d23ec5b135a40000f014c4d9dbcc0000c0260275ea12000061ba1080a3ca0000a1157f26bbc500005b3db96eb22d00002e7a280a22f70000432fbb51eea60000a8cebed5e3650000879a68b487d90000007198fcb54d000014b94f2d4b670000c9ef038412b800001b752ceaaf870000e77c41a00cda000082ac65cfc4b100002054d01c4fe40000eae51999515300000606715cc1a90000e2e680fa5e850000e9439e75d6e900004678cf450a250000ab6f3498961d00002585ae8963ee00007b992b6b495d0000fe24afac68e60000fe78393e93ee0000a9ea6bb1f8c000002fb0b9076b620000bbd6d12eddc10000fa6d6ae2914600005532a33bd37000005d676b441205000094ed9f0b12050000023f05699b730000e48495875acc00009605c4b2531d0000576d24a384400000a6524c6a4a540000286e4c55f1b40000da40e49b3a070000f2f76646488f0000e0568c33bea400008bf9797a4c11000027d7c55f729e00009523d6a0b436000085cecd3658990000db778f4f5e0300004a4bd622b88600004a888c90838200009e267aa0d9970000ae83ba811d6400004bef13a49a5d00001856e81f1c880000a43a9016054d000072e9fff9d3d70000bb880e3908230000841ec44d73150000f9ef5aac846f0000957e387e3f4000002702ad142a1d000076c8332163da0000f75a55ebe9c80000d6b9d55c8dd400007ed50807d9e40000a3851c1aee8000004adf09ec45bf000026577bb208fd0000db7d02fdf9a500002d2e668cfc950000e2c46dffde4f0000d905bb6234030000ee4f1784c6c30000759b819875d60000a5f77547f8b500004880e2da79ae00006eb417a6536e0000e4a62aec825b000083b3fa64ef7100009e40271063db00008e7e6f9eff7700004fe5c866c8d50000766e7cebba6b000029969d2a7408000094abec07c6dd0000ecc6822048380000968ba5be9836000039242c36f4be000041b2d3503cc300000ea5bc72983c0000e15d14eb42d4000033d1f2beb72c00001fae575e5de60000e8510248b4cd0000a445e3d4c1d6000035cadde0ad110000bce1d23a72520000b7638d583c600000c8f6fe633bd00000e6dd59ffd8ea00005e6dd2215bea0000a04d28761e5400003360f8d39710000031152686bba900009d10d2ed07230000aec4f260374e00009cf603ccc9dc0000de62aec67d0c00000dd9380507210000cc0f80cf260e00000f2466af063f0000203a069e24ec0000807a3fc940bd000035182d80318600007a29ef696f5f0000c288d9318461000004fd09bb340400002003d94b2abd0000f7601013d4ae0000305286c525be0000197264b846a00000e6588e2c76d40000280f33b5eb5900002204183ea985000049a618c81f1c0000d0c0b8f694c60000fadc32d9e623000088f5272be5330000491d638c2e6b00005345f95c4c830000cb13185936a20000247d6e249a88000066e26a6d33d1000004f7892fdf89000082b7f85a025a00000f580cc91ba5000020cd8d5c9ccf000025e0b1ddc20d0000bfebf00bfd00000021c23a77459c0000c104f853612c000038a4c3cd78e40000d7a8d39cbd9d0000b40f6c56dabb00000dced8c225b70000aab85ba3d2e2000038850956b89500001133c778710f000008ce92b4f1000000ec5e27cf06f50000ba2c9b3760d10000f90dbd919d7d0000408d57f1aa9f00004728057b9c0e00002c8aadb3d7f200007ef9ba576a8900005bddfdeeff2800000598e7d805310000a67f8e08719d000066fb66782605000020b32f9cee0d000080ad8308ebaa0000000e79d1679b000053e21887d093000051929b5593ff0000e304764b8fc60000be649e231aaf00004ef59e8d9e950000788fd605cdbe0000800e13e8041300007ca3ff4dc6860000f576ea4204c70000a0e948e812d1000004765114912600005526305b78410000da586f7184500000d9f0c8a12cf60000d37329e1be8400006167ba58227400009e194785366b00001d22ef61c1ea000004b810bd03400000c7fc5391eb390000394d7f8ea31e000051ff0146edd70000087da692e7110000a555c504422700001d122cdfce700000af161c16b6210000c118785bdb6e000021fa7279b8f40000e37bd7306bce000080f5e79c36c300005abf672b04ee00007368b8030afd0000b28d6ca6f3a7000063289116325f0000c1d06170abbe00004f989baafbd7000096ed416de47e0000df6476f2e3d10000448ca2cfd7ac0000",
|
||||
"output_sha256": "de923f9034c1042b7b50eabfd5a4ec4b1fe735c2b78e530c1f4b806f6e5f4b3e"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=30",
|
||||
"input_hex": "db16a5708fb200000a1aea804e0f00009de700dd2af3000022b3e23069e30000d0ae2a83ac8b00008e64e3eb52ee0000e91161087b2b00001617e6d2fcf9000098f0c426cc750000ce6eaeadc7480000985068c56478000042062da09cea0000abc5d00c4a280000c21414c047dd0000ee95033e9b0200002f70c4ff948a00001af7d82a34f70000dc3b3f04752a00000f912be3342a0000e37d10ed1eea000067cb4090d43500003413527dcc930000002a686aee4d00003722d4aec6660000a728858520ee00008fa116fe448d0000a7ce694ad688000063ad01174cd10000514afa8bc8020000e59399fb95ed0000d3a7291c7c6a000083ff290ec5f500006eb735056f8c0000bb5f5d7811180000040ddad29cc80000101d65d9d77d000052fc9b06f561000078adcab0b12d000094e0bb94ab76000029e998a4267f0000fcc0aa6412840000c2aaa1c94f4700001e67301af1b6000090848a3158cf0000bd7d4fc6480700001033ca1c98630000daa3f92d8af80000a42cc951eb100000c8ca32a267a800000850c84d08cc0000cae1123194910000984ddf594ef90000aa622fdc16fa0000fba38d80417e000093b4bc20e1e90000c1fb1e5a98850000e06cd5e768500000094b1c7988290000beaf18d0dfb100009a991dda86cc0000e60f89caa72c00002c48fa4dd272000099793f010e550000035a70239e75000027a9fcf441c300005cb02be4b5cf00007f11e2afb3560000c96645feec5b00002812ebac6e1d0000de15cd823af800006ddc005ff4a90000a24476b673060000337f8a50080900009872d85ca8c700004c75befc9f8a0000e03a308b1afb0000839bcc45269d000089ad3307a9e20000653834e05bf80000efc7eeb80f9c0000e142d6987e4700003120a82dd11a00000a0e99814e9e0000704d96eb7d9300007678bad5d79c00009f4042d2e61a000024d408b7f1d90000978840b273fe00002ce82eddd14600008982989171e80000078309cf18380000612fea9001950000e323e86b3cce0000a0ef754cb591000011e297a6a6c2000025486435b6a100003b73605d259700001a27054f48cd00008f83318dd7a50000d8fdcaa8dbce00001c73fdd1bf1a00002bf36600c779000029a1830158f10000b510bc373eee000089ad361977b6000002c112ad5aef000059fdfafa266700006a7a52482e62000090a660cf913b0000a97888b2eb7300009dbc82c434680000bda5979261c600003923ca875e94000028448937be9e0000936eaa5f69910000e9198c37ff320000ebe13e4daa2f0000eae1b5b1cbe40000fbdb366a8fa0000060e294c0c69500004db5eaec78d400002f02d6e3f6ba0000c05f1a3a441e0000bac73dffd8b20000b2ee0d8099ce00007dddfdbf54ed00008c24599aaeea0000ef4697cbb6a500004891f1c328a10000f1f25f70b5f60000ebdecf5f7b86000094b332f0f3e2000006087196c7cb0000f2c2e9a712890000de4308996848000083ab9cacb6de0000ca0ab494415d00004f0ad2213cd8000098c6874a51b900009c7b3e2502fd0000b30d1b91e2820000178347d79e210000681a8aa055890000a28e26bcc71b0000d589ba699afc0000ec859b3f279900003e59cdb5bff5000089b56d61729e0000f66aa1c70ab5000077f08362ce2d00004c0ae359445c00004c93ade1239800001acaaebd19fa0000f42413d061630000dbe4e58f799d000093dcfd43e31d0000fe4996be564d0000933a2fdff49200008fc8471182cf000013146757093400002fb7f870f6ec0000b8b57faf82c70000c7240558dc360000d6b3b8648f2d000047776ca3dc8d000097c24532bc8b00007b781af5748b00002f154ad0598e0000a1332ff6c3c20000eb8fe737d56d0000dcc0beaaf125000060f2d11bc71700001eacc48c64130000e68ab6b8bfd3000041aa8ccf12080000808928ab686f0000b9075ee7ff3800009e355cc5b6f9000044f90f2b12490000e4892a1cc5d70000a6d9ac65a1be00001182c8b8bde500001ae52e6242d70000094247af5a3c000094c3d8cacff3000060ebf472ebb80000708dcc6fe99000003036e69d9b2800008fd6d06736ce000075808aa28b4a000013dbfd17aede00001e63de0e72a100009526f850890c0000ec714306850000004c3db09ec69d000028c2dd712d350000ef5aee1fbfb5000026a6e0ffe9d10000df91ae802b5b00005157de2a42e300000b95bd7cd50300003c2cc6a962c600008a43fcea35750000a07f90ac0f9500009377461b20c20000a2ca5dd8d8580000fb87ee7a9891000036b89be720b100003afc1d190e130000fb44f2906c5c000008e511cf229900005a7c938f01e00000a40ef3d772b800001f92eb3ea09a000040773c5e41bc000010477485a02a00006ce4cb8694fc0000fa4ee0d5677e0000ca5e56bfba9a0000c9ec7cf740e40000eb391cb3c16d000023f732fafc4b0000c25c729ca48d0000d581ece5837e00009e9defe861940000672a51ef434b0000cf13eae13d570000c0b9d827947d00003d484cf7180a000068ad83dfd23c00008b4146f786fc000035cc8483e5210000573320c540f20000bb037a85871100009ffa59a0227500005e6aed33264500004a3d93456590000094249ca445940000f27a8cc1042a000072f35e087285000096d589b867590000ec29d3a68a260000ec59d16a7ad10000d58c801c57bd00003e9255aee11c0000e69c691fe1f9000063b6a058826f0000f7c9e9bc4243000036d9f05f9fb9000098ab9e64e690000086910c69b8710000a8fcaf853ba2000017794f9a1eb60000c242636e6c920000acdb5c3b1ac00000888756c23ddc0000",
|
||||
"output_hex": "ceffa3cd699100003c48e8998b24000064b488340c6800000828530945d500006d450354bf27000007350d852cbb000016dd7608ef9e0000046c248991a700002a685d1585080000f1ed696593ed00003fb4188bb2990000dddb75185cb80000e57280d0f54f0000e5b9520ff02100008a87224cb9dc00008342a5a5e080000076f2bc281afa0000049a14832e440000c7feefcf3a5900009afa2f19f6f20000030718af65a000007786d50ab0f30000337d5d13dd520000dee27dfb3049000035326f15bcb80000f8de4a7a922700009b8a80db842a000093f87713f806000051644c3c80290000929b35e54a6c0000e821db73ebcf00003d548b898ca3000050a7714de40e0000492293be35bc0000e3f69fa0554d0000d57a74fedf0400008a733711886d0000eeb6bc77938f0000e579971fb73a0000824570a94ed8000013524053ebef00002affdfcb98040000b4b9df90211b00007f1f765ba3f30000bba8c7e8b2eb0000c7bf638a4eed00001b3faca2a28800001dee3274b0fd00004e9491e562da0000502e094fe195000097e1f59404fc0000488cba1246c30000766a0872178500007636d796575c0000416a8fee1f54000072e1412b541d0000826513fcccae0000ed7d65b286ac00001619c817b9450000de2f574d90c900006522c73b0eef00003a5c992c50550000ee6aef3fb0b30000dd1af00cd636000007413ad628ac000077b1a47b2a7e00008057203b95f80000318c2ca96def00009fdd1350925b0000ba5dbf1aeb6900004d1a7bb81e8400008d4f19f9099a0000eec4161ed90700000217ff6fa8f200007e3a1c5e3b870000a42479d3e67e00002c72d3c24c88000059b61126b34c0000ce05b7c7e3f7000062714caea58f00000623278c261100001eda1d9cd448000007cd8a8d493b00002f0e570397d200002216e4a59b6000002387252c705b0000535690fed9e80000bd71f876b95c0000ce2dfdc2d5f7000057fe13e64bb30000a9030ada2bba000087314182705d0000f7f217af334f0000d2829f66871c0000a5c2a98131020000f803cc8cd3a10000c8b8535338870000d871098d614a0000885f1c9acefa0000cf8bdd3612f900005b924a3c6d2a0000936208d0d40c0000c4f9e2d8ddc70000922994d384a20000539f8151611e0000149aec71291c0000bd124dc812da0000a15e32d431990000325b8a0051b10000cb8ddfb6490b00006195d9426f2e00001b0fd40472810000ceba907980c500000670770481a60000517c6785b6c50000a7bdf404479600009762bf23046e0000cfd9f82f85510000b3b94843facc0000420950d69b690000feb3ac1b4b760000cfb95496f3fd0000383b04c0b09f000040c817e8e30500009057f1c01c2b00002d9acbea998f00007815bb55759c000064b96bd4092d0000bdf0915c2c0c000096a5fcb967ab0000903163b971a70000680a7133ec8a000082ccfdbf3de2000044986c4709f90000558ebb67e0820000e531a582cdaa0000778cc55751090000da1fa9a65ef80000d3617d7802990000dcde275d6ea1000065645fa41c370000105bc0945b4a0000c64a66c1de9f00003003dc58b23600004f308d01fd15000065b4a6ee7c000000ac3256fb398500006e7bb64ff3670000bef9a04d3cca0000b2d0bfd524f600003bd638c986160000362ff0bccdaf00007199ddf3966b00008469b61b37510000124d5ac7e19500000cd5b6454e9f000020ff7539e01600002154c88f93250000808e5aa2fec8000019f1f42ffea2000083c0b92f3dcf000054cbff81c1ee00002a816df6f33b0000bcb15c24080f0000edc7831eb8810000274074e4f05c000027aa6cdf91e800008276d581ba8a0000b00cd01c7bac0000aacf2bc2f5aa000047add74c71830000d94a6d96c7db0000a68b34c745f6000030cbd0f805e40000bbc9fcf1573700004cfe58b98786000014d4f086ecb90000b00b348beb180000fa03bb285fcf00007a0bffd06509000063b8d8c1630700009357201faf7200004c72473c19f5000025a11cc6a1d90000bcf97a587fcc0000f9900c2ecfe1000085ae3a85030b0000c9f438b8df5f000081ea8b7b30c5000022ea771344fe00000d7e06a1bc42000014c97403517e00008fcefa7d28d700001f7f329f911b0000c70371bd5256000007f85f7e1e9700004282b1347dd50000ac53e0fcf68900006dd39070ccf700005183d845815e0000d9326b3859f20000c93ce314e9d30000c89ee6f36a9600004f7fcd34ec160000e3e6fa2d210e00005b101651a3080000a39b94d4120900002773538eed9300000b6a2855b24e0000f9a7a0bd474e000038609328a1030000114128752a8e00001a87c3f4493e0000e78e7df6ec380000b362847604b10000493d2ede01340000c04749b725d3000022a8b5d56b9d0000419e8944fe7700000d4f893bb101000009c451f74343000068f91d91c26e0000fffd5699dadd000087d6bd52a3030000ec80e14bacdd00007b944d7ff27700001bc32e70baf10000f49a658a39cc00005b59e4671f740000144a6f0dafa80000842b76d012d500007d19d27b3c5f0000f2a6c771e0120000ad887638d5d30000caf50936aeab0000947cf08515e900003b47497c1cbf0000787c27c1eac20000f137bb08efda00009c4af0a93ee700004ac97fa58b3b0000712f583218fa0000f015521a129800005f5e5492013900000a9ca467e0f0000011b6085df7a300000b8ca7f82f260000aa6b78baa6a7000010a804237b42000036f3b60b89f20000162a658bf4070000dd63abbb026400004180cfbe05c50000dff9249af0ad0000e6d181d8e22c0000855e06ba44f00000",
|
||||
"output_sha256": "49b72081654b413d2e63cd4a8075ee42b33442f7a060a86bf92376e34902053c"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=31",
|
||||
"input_hex": "2ea1915032790000f8f5dc58d0200000a2c82eded4270000d321b05b16b600008f596b990fbf00009fefb7c7c52b000026ee153a8ac70000ec47dfd42a310000c6d1cfe2a3250000642b71f2660700008f57500ab06f0000d548c32c85c400004650130462c4000025bbbaaf617600003fc1fd100a650000facf20d84a540000f6265e3f604f000059dc4f8464bf0000c52b9f0e34940000dd61855d021c0000e1e92316ff0d00001e031df65ca8000098ee8b64665800004bfb9dbd1f0c00008c9d7b7fcf3c000077bfa5e3e6e500002473845b9b9200005a401a8c1fa30000f74b9a3abf2900008e2837a2396300007eda20a4745e000068f8e5e2a4c700002b3e9bfada3c000009ff2990530600008a07b860ba090000128f47a798da0000b97bdade55d400005b53dac793ef000099babac29662000080bbb7fd77ac00003250f1499e5f00002b439778c42c00006a4b2a9138f80000b44b2539306b00009ee01a24e15200008f04a9a9c96d0000ea1a7a822ae20000a37597a0b9b00000e11ad0d7c06b00009463602be1790000cc04352a8f2b00009cc8ccb4c31d0000455aa762eaff0000fc48e1cae186000028df85086f0d000072364348e5b1000023ea00fbf263000048b56eaf79a00000a5ae033f37ed0000be31372fd2930000c9eb77d935fc0000d573556ee10e0000a5a5a6760b8a000015ad142b952f00001e7a209f7b0300002ffd10a881090000b8facbf1ba800000ec2bfd320c600000f3b1868f0ceb0000b7546085055d00004fa174069d2800003ca1085809020000e3c4240674ec00000ce3d926a1920000da8db1e5cf730000f8948010cfb70000903df65eec870000037e33272ff9000029210fc957fc0000f1e8531078b9000010a0a96648a100001e4aa67b883100005dc258fc1bd40000ad4b2d98dd530000b90e2399f4500000cff6cfea789900008329362d71a400008a0283a302d8000078f1952227ca0000558154ad100400004cdc66ca25950000bf117b09948600002cac8be0282600002823e084aa2a0000e84318b813270000eb495bb2f9390000f9916afd43290000002e45078bbf00008a2447b34dd60000e5ce49ec9c9e00006e2173b1e16f000086693ca4783800002d3dc0bbd96e0000a3c049a4503000007086ae4d919c00003eb03c8872280000b2ca31293fd50000ecccf51872c400000a06a90ade6f000028963212bf840000d7283442b9720000c8374c9173e3000003e932d839080000e7792d7b3a5e0000b43ed4c1e5c60000a5297d58a1a000002feea93a9678000059f05a813fd70000c2c36d5194da0000f57a8d907d5300003d4bde0526830000b63185f390a200004606879914680000d43d2b3d3968000090458bb27d5b00003ab85b8046da0000f5cd2b2a030200001877f8b68f3700004d8873d6aa1a00009f393484fd100000fd84dfb3f9c40000e07c767961d80000feed4186a56c0000b1ffd1591c150000181dd45b2ae700005b1ab1219d1800004eaa972628c000000dda8b4bc1e000006d353f17b1d5000013745a869bd80000a7111db932be000016c99b94b6b20000e76f4455434c00004558cfb62c1200007e6bff261c900000b1a5f626f4680000ca1792c460580000cb5b65f88816000045be6fe5f61700005929d7a58842000015968f2e8a130000ed561f9f270f000089d82fef3b0200002dcd3d6e4b45000044fb5c32080b00006b2ed247ee4c0000cff22fd62c380000051a345327a50000447e8a961bf200008dc26ef868f3000009ec4688a00d00003816c320cf6800006bb2e87cf9dd00000f3e3c0080a6000097861c43f4f300009f42b9152ff10000225deab75f740000ed3789b0cd4a0000da9dc72a2e900000ac370863869f0000ce2307c042d700000ad29d5738150000be14de0cd99c0000849d0031689d00006b8b35a39d7500003731b22541ba00002015f52466c5000006408e98a69200004613942eecfd000098f34c2d59c20000d64e1ad0516a0000576545c621c7000051e0eadc1e5c0000578f985ca48400003fbd8b314aa30000bb2d3b4b3a1e000082d3ab28858800008e55e5d34149000037318c6afb9e00006a690855959f00002dd6a7d4d6c000001d6639047f1c0000778eb5e16bed0000254d2717691c0000c8faeaa8e2860000b72cd01c1b8700009a17ba80954300004cf7b53a0903000030206a4737a8000068281f184c1900000fdde18b194a0000c0a26fe34e7f0000da6f88be7a3a000042542168d52700009c81e680eb03000074877d119a1600007b1cbe135014000014f47f313710000029260e5a2d6c00007dfd687626080000f096ce6cef780000773c7bc80407000023cadcad1bfd0000087daa8c61e30000e36b4faee07e0000738679f41a3d0000d9882e3797bc0000c1e02036defb000052ffb67e0f450000df37bcc8f45500005effc5aaa310000050f2682bb6180000824b0a836dfb0000eeb97101408000006f184c62ce6c0000134043826f7500005492a1c06ba00000d1fc3429a5cd0000bc90c5f8e74800009755cfc0afe60000fa22c824e8e10000f85b774ef5ef00009b972b46508a0000e375af1bd16100002cc87b94bc5900006df07adbb9c2000020b99a6f7851000094248216a4d3000067c33674dc0500002e72cd20f1f000001607e6c6a2b4000010450314d6060000a636ca45b66300001bc153e5841200007261690058020000bbecb05636c50000b0e51583ae6000002ec5434f2a470000b3f93110cd460000255d877460b7000002e0bdf4b1ab00000e996062f5ea0000a8b68ff0a5f100000de2fb7d691b00005d6f01779ad90000efd0902a3e9b0000",
|
||||
"output_hex": "3b38435b6227000062636c4eeb0e000094d5e269d00a00009d49eba2f90500003bc19147195d000092ebbe3da43d000093528100c45f000065334c7ac9d90000b25ed3a6bb0000004dcad25317ee000058b7d9d6338a0000e34816def1f60000f6ad60ef4b670000a1629c209e50000006dc69d9908700001557dee2d51e00006c218e6cefc30000aa1a094c70ec00006bb42a9c0ab0000054c24272f56a0000be458e92a33e000049ec39aa1a110000f050da0d27360000849b3f68918c000031aa3de79165000066f249cef6810000f610be5c4bd9000056e5e429480a000067d65124477e0000848287bcc5f1000085934c23492b0000998e9443cb6d000041326db0047d00001fc9b9248d590000fdea422720af00007338aa6fb83c000080d56bd6417e0000c0e18523f6ca0000c066dc584ce5000035cbf7ec239b0000fc7702cce61d0000f9f1e72b6e0f0000d186b03f7b760000f70ac2879735000006dd99ededd20000c3c9dfa01673000000834872ea0000008cce7dc79af90000dc828ee3025e0000e609076a1c2b000065485774a707000084c0da05926c00007e8a540af42d00006020199cf69000000babcd1db09400001e6808d721a900005bb02a093d0000001936a8bdf6900000021154954cbe0000e27589ada8ac0000b9ebb4819fbf000005c0a3fe0367000099a36c94d6d6000090cbe9e994a40000309659d7b92b0000186d8987e7180000f5a4b79a0b4800008f6908560f9400007345538844d10000b35be76489220000958d0c8f659d00007ddf3a7479ca000077ab75edab840000288704d600a00000f4a1b93b0db300007734693f86760000c892cf17fe7700001ed591ab094a0000c9ce4aa0c7390000d995db3e17ca0000b7dcd4ea9b280000f5319e6db9bb0000e6d0ee03798700004f652193dba90000fddda0151dc10000c383540feff3000028c4d3b9f1f00000447d6cc17fea00002fcc942dfe9f0000663ca05b014d0000bafe560b348300004a5dc8befea700000ded953f7e230000a7de0b9d2546000049dda236f5d60000e54d9e50d741000006a3831676ed0000ff668ec66a520000030409d7f8890000a3dc9d72ca9500000f38501d537f000058ccf91024ae0000d873803180750000fc20c2f71f6a000076b920f8e07d0000008f0fdea54900007749ee49598c00004e63867c9f0800008bff78bbe22a0000389ca47039c90000ee4cac79d778000088c5ebf4d82e00003415483c5bf40000a7ae59cf04b60000f587a4e9c41d0000f153838910570000e256987d6d1b00005bd69be46f9d0000b799e30774ec00007f307550e6a10000839b5b6a646200003e0b73a6048f0000a89cced75a8e0000b42f40f08bd40000f5c6ee3a354b00007b6f430b8ea50000165d4ee86403000046569aa4e885000072d229f722ea0000c74b8edf5f9a000041044172c97000000c42a815c69a000076fadc11f4500000e3d98d7db6eb000079754aa57e3a00009cdfa3f95b150000dda2d3201f3c00005eb601e517c4000057756ea36cb9000013c8491d79a800000a9ae3944e0b0000d2690571eb2d00004fe02bf02caa0000f1e7844ac22d000068d1324e2ff50000680324ae58870000df3bf6dafbd100008123cdc2fc2f000061b2d617518d000014fbbbf71946000099a82497cde800000c9b309823e80000583c99ba37e300008d3df0c3caa70000d16e98028dfd0000532d1b81612700007f142da9814b000053ac18a5f4c50000d241dfe6570b0000a5d4da7275f5000076a2b3e39d0900009387a44327ea0000107e7d25b8c50000e2ded6a50ea80000e4618151ab7900009d0cb57ccf2600008f0267e8700f00000e846bb1919000000bd21a504d6b0000fe58791d95790000f68c293732a800002a1e203d2f6e00002f4d0aaf16ec00009feffe8c3708000061f4c6aa77ab0000932ee4f5bebc00007a15292d50d000001e2cd160b26a000013467409beec0000e5ffe9372ccc00006a4c2ed61b0b000044d1996eacc30000c0532d71c23200009388148b79d90000ea491e953c130000301f08d6b6f400008dc12b4a4b8b00002bddfc4af6df00006183132da224000099047883ebd90000907f3a3ff91a0000487f5a7d594b00006c947e1995f90000e8eafd6ec65e0000d5ff77c61c870000e63ee725116900007ee0b50e077f0000d544ff02de000000cb8a763dbea300001aed185bf72c000077257e981c9a00002527c113bcd40000c55da0d4714200004c3d5a9d8edb00004f4c23c9df8c0000e7e5db34356800007dc93551320800003fa81f00229d000010eccf603b6000005bd9a7273cc5000053ae83360422000058116e9ed8f50000975d7df705a60000799d529a79e000000cfc6fed915e00000fc0f0ecfb0600008030c23977c10000ddcde2d282f200003d6473d0242b00001337252b60f30000032f83e722f10000d8f24a91c2d60000ccd28b33bc4b000084ade18f099a00004251a2c34e9500009ed794a5efe80000ebf7678f06c0000071ea17ee632c0000194a961ca2b00000e1e2f79ab76600002c5114739c3a0000dc0de801d71e000084beeb58b9ba00009a7f88f5ac890000c3ec27478b050000108ec43520770000b00d677359f30000d1054d3615420000f1289c593c4a0000f1c264505c00000016b57187c2d600000865df4875c600005c522d9758610000fedbf1058bfc0000e4a7d41314c300009528ec8ce0f10000d3fb4554cb5e0000d2c72db65b3c00004690988d29330000dc9967af1c0500009b247900fa550000986aac431f410000c85e0f48246300002e276bd2b0d70000b4a5147c43c10000ff976613163a0000",
|
||||
"output_sha256": "0145addb60020e457569d892e6af941d9cc170fa8a1a47bb1110f5dbdfcc69cd"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=32",
|
||||
"input_hex": "fb5f43e363fc0000d5f299dab6dc000064e11f4dbca4000051e273e9f12b000068a148803bce0000cdb25c7c0cc80000647e48eef75c00004f2d73a982c90000571b66498e4e0000f4b8818867de000092e52971c49a000007e46bd262950000034b1bf812520000f42afb112f600000dcad6becdded000057af0fa8039a00008b7f8fedaa5a0000b839277d5969000026ac00322f460000a9a09b71278d0000f84619e6cd450000e4143cf98e160000f81a15138ac6000075fba477294c0000b5805c54fc0a0000d729bcfac0750000951bb454fd0c000084c03dedc6330000314b0a14734400001060e7c8194c000003a7e3bd6f4a00004c0007b6df3800002628a0940d900000b0fcb880a91d0000c20549fbf2810000721a038a59290000356496bbb9d70000dc7f502d68c700002d94e6c4011f000040ef4155006b0000571962e33a2a0000e77b2e703adb0000a2655bcf26ab00008eb22a83187800006b14ce9839520000579b3dd12e3f000057a1c2ee93960000f5095851ffb300001ae0c44714070000d49577d0137f0000ce78d55318d100006e7511d19f5d0000c426b922c35b0000f79465d4395e0000d73312e8418f0000dd6bb4c2804d0000e500ded8c99000003c40a7911baa000027a5d825f8ac000086b1304cd9fe000035b9ce7e42a000001b25cce632dc0000c2c2c56c390f0000920f4c8363590000f2606ad0bbee0000f5ec39c45fb900006df02bf96c7f0000eecfcddfe542000079759ac764bc0000476d871121e9000085cbfc18b64000008a37163efe2100004df853d398f10000f64dfa89ccd200005126906c260000003f81d1309a6c0000f3c6cce44cb9000076cc17a63d040000f49e46fe3b3900001335a0761ff40000dd2d73e7f5ec0000b8ae22e5450f0000618f7fdea2fd000074518eebaa160000977ddd97f241000092eb44963bdf0000045b9c339f3c0000f7cc303ea8fe000060cd23f602550000c09ffecb487b00003216e4c81d1b0000229d9c1970920000da3df8fc00700000bf6718c5e2dd0000390213a636e40000c7575997b44a0000512eb20826430000222d53ceb8bd0000574e9748a6550000b94a205711b400002ce61f5861eb00008a643d34c8c1000067ec132a154300004433df8379680000bb9c496861720000ee6e6b49b28b0000119d135fcfbc0000e0c1336a997c000075f88c8bf768000091a63511938300006121c05e1c150000dde6eda6a419000041532923989100003af1372173c50000de19b2c1c2530000929a960380db00002553cd81473100002800d4189ac60000f38f600d5a3100003a8ac28737a60000cfcb403ac31400005dee4978b4ad000048a1ae47def400005e870fe3323700008c1a389589c400007735602cd21c000089ca32c3cbfc00005f8a0076805e00007548f4085e20000024b3c4796e8800000e39d891eb970000e9b552775a2c0000c3f20e129ba60000398a4df022b4000040f417dbe164000034c153c782a20000e1ea4a3fe07c0000c94c18d34f83000027b541808e9900009412047012aa0000b8879031ed110000aa887cebefe40000c4311158bc68000005b6e22fb0a9000081567a4b49cf00003eff56c0c00e00009a7bd8a898d10000d8f557b1d9c3000045eda4b3abff0000d38f4452ce540000244a9ef4390200001bb980621f90000026b9530b453a00009201240516db000020801ff2a18b00004b315ec4a8130000a4223d0428730000eb79fe618f0c00005b4651e24cdb000082fbe58c53e700006b6652ca7de60000072c5c85b33b0000139b4ec555b60000beb69af7b09e000001ae884cb5bf0000117f90d3a191000025e93c4d56c30000d398f93f12ce00003933617ac04d0000497a1519c92e0000ab9a74896b390000f494b44fa9920000dba175d6988b0000c82df3a879ad00003c4340d86cb200006f5144e9c78a00003737588b27260000e4ed9bc09d6500003c62be3a7d410000a0c7f347a8c60000afe3fc4f2c9c00004e446f3fc32800006d30477b1c8d000099af6f27679a0000ff4446a9c1bd0000bcf2e208d9f40000d507b50b40250000882aad0202ad0000cea7866bfda600005e3c6653a7b70000c70f940ea6fb000041e557ca02a600005d9c4815d81e000008288270fe2a00008e84bb5b42150000330002a2ff3a00004d7652d638fc0000352ca14abcb20000038e46e0969900008f885bda8c4e000055d7f77dbe820000ba6b9692cf6b00000df44df9d57100000692c3528868000016814b58b725000086a0bd6d84970000b9c3d6d7cb460000d5bcb585493f00006834c25968530000418bc9e27c590000c1386c9a382b0000b315e3c973b70000f96e24acbf8c0000b0564881fac70000811cea53ff04000039161d2375ea0000de0a40d6cb0c0000636b48b33cfe00009b21416f97e700003495fcf5b36c00003e37adf235ba00003af2e3a33ea800009029b437f5720000269a4a0988e800000ad05cb1ceda0000f8255226ab6f0000ca86df7e95b80000dd0321ee649d00000c87b5666dbd0000983be6e17ebe00005b3cbb8d7fc8000073899d5b284e0000b5b2eeb48e7d0000e4947e68b8790000362cc4fcca260000f756ba773dc50000b450e3a40f48000077832956530b00004237768f73830000376821449d1a0000955b15172c6500003933ccdf7cc1000045de8e489a3200006e6193d5010400009378b11b1df80000ebf946149da000003bac2f41bed30000fdf3b90a84c90000e84883e76156000056560b384f0f000061964a3ee470000095241e5bb8a30000ece2f34b0bfb0000de1a3fdfd3310000fe5b2a3026b20000110f551718020000",
|
||||
"output_hex": "ff41a24c38a5000080fc01f33f7600002e480238021a00004625d3f5611f000094e434246f850000436c0ae63b000000d889e363c4fa0000a7cbc50eb02000003dde76df809a000022bf6778a4f20000cf942de810cc00001d976e60ff4e0000becaf563708b0000b18970f0f8da000040ccaabd94cf000080be26690f4a0000a531df2ae35200004da0fb0579060000ef74108a13af0000bcfa27d41c610000ebb54534571900007a310460bd7f000051daf1b16d530000c69137721e1100000f2646d4ca9a00000ed66558ff470000d8be3fce86700000a9ccb5c61401000009a51e40ed4c00002220e08687e90000249da69b26840000d1878dd7766500001dfebacccffa000010df1c8861150000b09094ad1799000002a9184db002000074b0d1328ae40000863291f4dcc100002350d44f28a20000a7d70e8a1fbf000079bfe0b881160000e670adca605100008ecd3e5757400000b4163c7f423e0000bb7d066e65490000938066b028aa00007c929466d04200003d68158da03100004a5370e5a5fb0000531c28d537e30000ba2c7752517500005cbff126b83a0000a07386ef52ac0000c565b35068ee0000a925556a809300005e6db53ee8cf000022e76e24c679000089984cff41b700002e3f614518b40000721f19af72600000cdd483fa50dc0000433fb631de54000002a88c13fd850000182c2868bf590000f956a182a51c0000c51f1a5392670000a2daf2190117000016e6a47d5fa90000770bf7ec244c0000de2da013b0f70000a14077c9eeb00000b9ca512b1530000062e7f13c6e9e000083dacf9bb6f90000d80c7c3e2ce70000d2bf2c54ef590000986246234f910000b011d6808fc60000cb7dd2337f3f0000f9eb1325bbdb00005861fcccc6a50000fb51f4488bc8000017c385aebf4400002efc738961c100007cdf4c74f11b00006b2824a2273100005e7a968e95170000e40c032dca5a00004384a72a078900001aebc47861f50000475fa0d867cf000007248ef86bd1000062bbeaf113130000c1ceecb42fb20000005b663a1c320000ea7711927e6d0000903863f9a4430000be38eebdd019000086435785f93c0000fec4d4e56f210000c574961fad6b00002e9f6fdc48320000e4dc52462c5c0000949dd4418af8000046ade5e0c5d6000085db2442ab3e0000612a7745851a0000e92f1fd5853d0000e49bb3ae0c3e0000b84735fd5b99000064191daeb7880000ee9538f0f55a00006ba2b0ae8a660000b37b2c6f90b60000d1018f8a682700008a8570b868430000b6d0e5782f7c0000940453bd69370000dc831194ec060000d783e34069b50000d20b3c978c7f00001056f5889aba0000c6f90fc55bb300000c37234bbb0f00003e4108d61f250000151cdfe598350000b8dae324e4fc0000c4c3cf46570a0000db1dfbdbfa98000040dc0f737ccf0000a1cffe16474d0000d4e7acca140c000099f8d28d464600001901416ca08b000021d6111cfda70000828a929af98e0000c7f01cb023a3000054e01499b0ec0000c9c49ac4695100004d9b69b4ce5c0000fadbba8403fe000020be4468194500009739e0f916f500003bf73686afc200009472f6500bbb0000ddc670723fec000053dcabe8acb30000ec9fbfc7df880000a856e345ad0e0000656dedf0852d0000261812501b750000e4f275d132940000e6adc70921a3000090cb1fed4b100000d94643587f9d0000400d69d42d2100004861b2b0c9ed00009fc8f901a17300001c5986c63864000044a75c8d08890000bc128236e61800004433487d51b40000117da99a4bd20000f6691e58ad1a0000695a0f3228f90000e4f751f2fa4f0000a9a66560c2830000bc7823aa5e00000098c9cdaf7fc100003ce225561872000063e176ecbba70000a9b65b0da31b00008a46b9dca5df000098eba0e67a0b0000bb0c36c0f2490000bddd4b2a2fcf0000b11d33b04c4500004b5115b7b7230000b6b599c487470000549516eccb5600005e980edebf640000fbe4d0329ded00003f6054695b390000f34394bccacf0000683c957926150000f7e33127e8a900005d294f987af600003db1193c85cf00005957479b845d000049b395fdd9e6000005ec1dd62db6000084f86fa342e000001d5b3c2700e00000e1a43b00c91900004fb162b4b28d0000ec5107a5c5590000b8f7e16c321300001803d87ec0300000f6b28c706c590000a2558972057f00002f2147eabc5d00004a359da1e96a0000518d72b82f140000d59ddbbf277e0000efe6c21874f1000044e41743b68000001aac8bc60dc000005bdf85c17bb8000014a5a4fc019e0000e2844264437e0000d8e356b8e31900006b45283e92c00000da590f416a28000091e3cbb3a4cf00001dff69eb91a90000edaee98a855c0000a6e494ec37af00005c16d81d1006000070cfdac46ebc000070e1bad30918000092fab9293f5600002c45f7a14c9b0000fc059e758b210000821463b92e1e0000bdee7390da8d00008f85f8edbc000000b7b66c8aabdd00007f6934eaac87000058529830dc890000a0414926ae5e0000f69d62d5b18c000000e38131e0ae0000fc2e8c4bbf8100006e82c1c4d174000015f8edcd28f200000003a25f86520000d8bd804b99050000cccfe0d3ec1400008583cbcf2ac80000f38c0810d26600006d5708bfe7e40000591f66a28528000023ddd96e49e60000129d5c9cc05400007d0d8904d0be00000a29b1b50e120000a742c71cf535000095153d91a19e0000c1cbd950849500005526cfe6f80a0000a7bf67d3b7b70000667ac05af35f0000f96b4b04b80d00005c1e03f51dd8000046ce31ac60a40000d1772333d0f40000",
|
||||
"output_sha256": "8f23c0bfec7a661f79ba04b238e720d913f363c22b9bab0d9444adb3c70f00e2"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=33",
|
||||
"input_hex": "b9d681b4157c0000bcb4fb7070310000c4a96903a32500008213390303b400009575bc7a3cd70000442fac5999c600009e6eb7ba27600000293d881b4298000094160803a18a000020ad4573ff760000f51bd6be7a27000029a1399d1ce30000f3c9074824730000fe8a6fe6a7ef0000bad8e888afa000005d452880cc9000008e931cdb75190000e7ec555079170000f8b07df4c34e000058062f9bc3520000431fd6dfb6a40000b8206855be4900006760434bdd6d00006a4b4049a94900002e3d7f47e9950000e636edca7076000044d7d96664c10000251e74dc6a2f00003e7aacc418910000e7e1cb7a6bc700007e13da025ac200005fa0b8d3ce27000097fec8292a620000fe2b6d27911c000093c123c0f3060000a83a66f1e28500005fa6a28e6def00002d24df2bb0e1000058cc196691540000d1e062cf24d90000e677288223de0000c3e9ca9d60320000ca08fe68117c0000e23eca3df57a000005e5978e05f100008429ba9aa870000015a2a20f4fc800000520afe50c310000dfef90171ee40000e41517ee89c200006dca0a114ff800004a0d53fa7f9c00000c933c87c4cc000065f5fe96bfc00000bf2911919aba0000be1ab15cee7a0000236db70e70b4000054a289a88c15000002a36655167500003e5dfee24eaf000080d5f4edd0c10000f3f314fa0adc0000ed5bd47ac2740000f86c164e50f80000721903f6eecf00005d4026f76f9f00008e6246c0e64c00004c9caee61f1e0000f68f50caea11000066abbd7f8d27000058f5bdb787cf0000461e09cde5d70000553ede81351e0000954f93dc814200007bd2468c51b20000e46b4e71390f00000d2a354682940000d10a58d1dabd000057325575c53300002bfad36102c60000138fddef755d0000ea98458cefc50000307ea6f2088200005d3936b2e4d30000811165b0b523000035956b6d2a1e0000aecb4b868801000062a94a57fdbd00006bfdb8267b3c0000800a8138ab7f000057f4282b5afc0000802457153c21000020d93f0bbff4000021b18c5d3380000031ee18a907080000fc65cf3f57df0000cf5569b6ccea000096bb25c79b320000db7a9b8f66af0000e8431701b22f00007b24edf49d7b0000204dc7b0805100000abb3395337b00009f19831c67a6000009d61525b4cd00001e9122de2439000059eb1e921454000026a0a93400e0000078c9ee6da89f000050922fa2848500001bede5d9913c000045f2035ba59e000056ed41d18c5b00009f73fcbc141a0000083c6cf0958b0000160d8307e2c8000084cf3f48eb050000029057652ccd000012b9c427a9ec00005474f98f430c0000e2c4d2f34c0900009f3b09257ffc000023078e3cc24d000008228aa07fcf0000e6e69f8510dd0000b55c8e0433020000562fc69dbd9a0000e27b1a1dc40f00005e70e5f565c600000828c088282f0000bab5299aa9170000311603ec43540000ff7105b259c800004f3225625a100000608d5f05592f0000b953a1f1dc7300004437690b616f0000ae547cea84e600007bb08c910263000063d695b9ee190000379c2466afdb0000c3095a0ee95300001713692119c7000022c0a207e7b4000027e3ac906dd600001b2d34737e7200003616977f429b0000309342f1b3b300003137cd5c701b0000aa1fcf30ac31000051fd6a73ca4e000074491cba578400001f6d8aed149500008d85abd3502700005d2df3e7429a0000605770314932000012248053d7e5000058ecf7c885d0000024fe4dac0d9e000006adbda845780000947f9cc3ae74000031fddb1f07e600006ec7fc4dc68c00003c22cab727d10000e0ecae80affa0000b9f732abd97a0000ec7eefe1ab770000c6aaa4aad3c400003e21bf7d1a1400007a994b02a6b200002d561722d66b0000ae5a0b16607f0000aac90ad771c8000015d5fc1627760000c7b9966d38e90000cfacb29cfe930000492d0ead5a5c000001f756fdb0ee0000fa2e003e9b720000459336ba841900001d213d175be70000fb7fcb23c3610000bbf40619666a0000b601c7fa413f0000fd8f2818bfc20000d65b60625bbf0000dcca528ee1df0000364ad0d5ead5000077b41e9bbc70000019b84a62114c0000cc6095de986b0000eb669048f1b60000d308980ab3f20000a815f095c4130000f2edc1e6c6a5000034692643658d0000e01d7c95dc6e000017d3892a83630000614be26cb5df000057efa274924000004d4564795216000075c62ac6cbcd0000f98811f1111f0000ecb69b2efafc0000d2dab2eda81e00001ac5045f5b2800002388058e8da0000021c4f42faf3600001c67c6b0346f0000f9abb719763300002b103c615e5000007d693426ed5c00002a750865a3db0000b5a4d4fea67c0000c0bf33c5fbb50000e6e27f3086b80000a33c3957c9120000756057f9df4d0000d725c68ba04100004feddbe3b25100007b445aec04100000831715e1de510000cdfa128aad580000bc452d5795320000d1f6e104b662000083f9e7e5665c0000f035f3388fac00002a66663c49960000f9f6045b48f70000948d1b651a0500006578f5b2ab2000001a4f005d70c60000f4a4d7c1402b0000ea18fb7b067b000011fe7d13225b0000dcf96d5eb8c00000c3e166813d1d0000c4357080b82b00006294a0e76b3600004fa02fe16eb2000022c0457525070000bcf7b1785fb70000ed89070884db000080f35e78291d0000333d6ad3fb2e00006bf8367bb50100006b668350f8860000f8518a753de30000f8494e4b69a400007a5206f5ad9f00008b1b6cb7d55b00000977d3a63b9300000545e81fd477000091b6961b55d30000e392e9a1faf70000a1efd1f6810b0000",
|
||||
"output_hex": "98e100c7cc940000498400c5c233000017ddf72ffea4000055f6634a836700004429d7205d4a00004968304fb5e400009a3f4201434e0000e3fbeed88e750000cfc1b11ca2c40000603e5c18a5e700004742c724bfdf00001fe5790d93be0000c17718c4693a00007b7febecf7eb000077d23bde6ac300001b18556cf0d50000849b17928d3800009e262238e4dc000059d015e434db0000e6720ffa22b60000f301ebdd1f0b0000b9a8099803c0000065ddd7200ee700007f9cdd9545870000903a259e548b0000d4c28af7ba4100002d190d9b423900000a7f62c05e55000019523fde9ecd0000a682b2955a510000435b97def7580000e6be0c00d66800009b884d8b43c6000007ceb4c738d0000017ad207971740000a3f9089df426000079fa6e4ed00100006ad96bd8d2d300007d1e4da689ae00006e9215defedb0000216d63076ac800001a938434d96700007b547e6e39050000f0ee3b1dbfdf0000409851f7dc2d00002b1da8f1268500009e14721afb1300008ecaa740fe080000a3619372902b0000062798f1cb20000086db135fb9c6000025598fdb708100004b0aef425f9600005443c2b630e10000788195b8b8410000943f91a4853c0000d635548e3ea200009cba181fead300008e326ed424960000767c814eacb10000ec6be4b961d100004a62febac6b30000206add309e8d00006fa2ce7029ea00002d7226f4c977000004472b3472440000f182db1bd6700000d18003b2955f0000620429581fb10000bd0e5fd9ad650000afe8d105c3830000fe97ceff4800000097239b32a9890000beeb94dc37b70000143e206598f20000b4ed37521f640000e4e99fd35ced0000392248d2139100009b05cefc018d00009c28e1b91c3f000034ccd2312e380000704ec08062930000f257364b15b6000011bf6d4df350000097adb105d2eb0000ce6cbbd6f2910000dd48919121060000ff1a53652d560000583a9ee5fb8f00000e646b1ecb0a000088707454b4e40000c89fa3cfdbac0000f7879e4c7d200000c38d505799e30000ffacdd6bab310000affde4366dbf00003003beb7655d00007683fe67b8570000f697ea3cb66a00003fc6c6ceff6f00008d4db7c63f9d0000d38f08f1a5170000c6ee5cb287810000f42297e820d60000b1584ee3e9450000ba6bc36095050000b7595207937a00001ecdffa3a32700005bcf2b3f1802000071e6451e10f000005c90c8a7670d00003715f7cf2479000014fa488d17a200007bea5a06c2030000190660349b960000e6e27bef40f700007b37173cd76b000051e4f2369dc200002a34a1a3956f0000d42d5bf87efa0000ab5f4239fe1600009280df55d1a90000c7a69a0781dc0000d3d0099172140000db948ce6e6fa0000cbfd2dd8a3b100004c50d118b28200000725f3454c68000030aa7c4eecdf000034abc220243e0000b00aa7e13b300000bf3333ac743f000071500e918d1e00005cf3c825355000004fdb8e53dde3000097c0119cda580000f8b35f77c0050000c3fa36dab4780000c17812064b070000f17bed03f0f90000fcbb48149d630000609a5281febc0000f417dbc43bbe0000e06140d102ec0000128247e7b55f0000bd122dab1b28000049dd5be1457a00007406a53ca9860000486cc1eafd1c0000bf90936fa8a90000d7c2753933900000c5ed2c47f8bf0000536fbd3943db000050704a89ce810000f4582f27e0400000e39d685524db00000f0d8ac99ee900002681f323d29200001cb25639b00f000086e8506f02160000e432216e7ccd000081e030e2a9aa000061bdb484b5900000a13123d5e77000009edd60c7866d00001bcc32defab300008d82972582f900009ea10c17be9100007e8ce9ec76ae00003d1dc65cefd70000f9b5b8e70e480000d96d8132f2e60000719d4a48139e00007bf568690ea90000a43c36be034f0000f0bcacdaf71c00008df7703df1140000a8897aded2cd0000a6e80555f29200005ea8a090d11f00004aba75d668d20000cae18602adfb0000dfd5f99f67420000aac3a09edf180000ec8a856b23020000680454afc5090000d57dd76377f7000041dcf5b1d2d20000bfdba7b7298e000098ea05cb61150000e167871d50ac0000ff2344ca6fdd0000b90bcc870eb30000d27a9e1f685c00000b1b910b427700002bb7fe887ab500004a2738127cf7000071cceb0c6ed100003b46a83bc7170000e93e805552650000bf36413de7c20000d9fe94c517c00000f34c5e5e3052000005fb2b6c5cb600007d34911a5aa40000cbf16ef04b260000d6e0dae0239100009e6afdfc7ea200002d201352346a0000ede08e544f730000c407b8fbacee0000d7f891bb4a980000f728dda5d14a000069159b688be00000838ca573e85b0000427616519d0200007bee2e94711c00008474732720d3000074d7341aad3300006b31678cc51a0000a5f1994c9e15000087e281a1229b00004d03234920ce000068ea31e9ba7d00002ae005780bdc000011df5a33b75a00002f5fb30bc4700000baa31df805af0000a2030ec767e80000a41e2d7c41320000f08e40d6a05400009d17799d5100000092de32affb9a0000cac59f63af7100003b6490d6d22800007e8dfd3d0dff0000fc38f935437600008af99d66dce90000d46f5557f58e000004b82949b1760000803a7f6402620000c7b064dfd1380000a8e7dd21eb0100001eb98bc202b60000321e869838440000f8026da2456e0000b04d667e2c7500009dba53ae7c0c00009bc4686edb3600009b8c308c4eec00001319a3c937c000000c1f04ae0e8e0000010c1cfa4d820000b8c5aa38656900005521eee91e3f0000fc877cd143310000",
|
||||
"output_sha256": "c5eac15c10df50f6c836ab151ac36068f692248cd97416a5dab611f0c7a489c1"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=34",
|
||||
"input_hex": "4e36aa504ffc0000880726a733600000c8767ebad81500008ce0acc79f5600001204a9be325800009a0246e4973f0000c8f0c5aaa55b0000615fd82c28680000a81af49cb4850000a541520d958000002ed3a9e401240000de3afd61b59f000010b806ef4d100000d8d32eb7d1690000c7d293610443000088fb9c268d0c000059b46efc679700006fbfccee61820000921403928f5500001e4b5ae3670300006f44d2c08698000018f06029163c000062ed428888fa0000bf9be0e16f100000b33d1346a96900006f3f0d580e9100006963228daa74000088d85ad766e60000ea3a4fa26b9e00001d4c0fe8a8340000502431768808000088f3cea94a9300008c36e76c8000000037cd669d5b400000f440bd7828fe0000c8e1cd188ac000007c53e7672ea30000f813269b2a15000099e31ad581430000367eaf07812800004a240dbcfc5400009c294d09b5400000d522ffe27b3e0000019d2e951a100000c3b5dda506670000f07206506fba0000155a0f475928000054ddbd97080c000044ec7dca3a1e0000ed6cf52d95e3000011806708e3b100002133d9efbf3500007bda3c7837ac0000d1375224b81200005bd22478a9530000323a6a2e9aeb00005e159bd7c28f0000ee81dc36cccf0000bec9e9e36eab000060b5d5bff4b700006cd0f68bc441000065e06fad3a3800002cc470578cd900000b0c17ae166500009dbe8428055a0000ad30cfacb19900004fb8c155d362000062defecc3aea000026b66c594436000052e11797139d0000ab2cc6d9be9c0000c0247a04817700005b73521e74730000990ea62644200000fdab443c0f300000d7e588c973820000a27097419dab00009c85b34d38b200005600cc23329d00004c5f7e4865f20000156af97037a80000dd845c148262000010a2e7db786b0000e86187b862fd000045c19cb555490000a0f0d37241c00000565aa9e1a3b100009dbf09577b910000c86679bd44e20000d66dffaed62800000d251ad7ffcc00008686c9ee034e00006cb014d6c31c00006c320b02777c0000aedf6ca63276000068a3df3046970000ca893e90eb310000629d4ee8376d00003e58d2a4c6b600007ff7df493ce60000b09d8677e0f500002f65370a6125000018e18f459a99000014e25f4b8865000085d5e86de43a00009d71c39668990000451399956ca70000d9e2f27d41db0000b8bc0601f08d00004e0b7040ae890000ce9b6a4b94a50000ea4610bb34940000a725050ee484000003310582b596000097c1da6aa9300000747c5f33d5e700008cf3ed06829700001b4306b6dbf90000d0f41c27d803000033a3a98cddbf000006b943228433000076ced41bcc8f0000428e6ed6a1a10000a23dcf7e58470000d5909f14ee5800006e71ecd182890000ef926d7da0b10000f2c9f1fb821700006a24474b1c3c0000364360b4ed080000dfc6a166e92700000e54d4d30d65000005c70e59ce9600009d0be68384810000f48188f7fff90000c113989e30ce0000718930b84f3e0000075d522c9b670000f1dea68eb12f00005fdbc45d8a63000021e2a9599ed90000bd28337e2d1f0000e68775aa7630000011647c373d2800008ba36ddf52420000d6a8e89fe3230000eb647258d3350000f7a18578d3d70000637e70e148b800009fa970082660000093d40e79ac5e00009f37c0fb2a0a000097770d4a4f150000187016e1c4dd0000527452bae1df00001c5202a015f300000373af7afc6500003b33f7cf0e8500009afccc1d3aea00005f23ea3b65080000ad98e7b9c5c5000051beef7267610000d6c76fdf0c3300004ac76b4f1f32000029d9386fda3c0000661f667acdc0000031ce11278c950000fdb6d2be0c870000e18c127084740000c3347bf6352e00000d64fa0b9fc20000bcbddf0cd1b40000e8f19ae8f5c60000e9657711d9250000b8e47e474c6b0000303891114f7c0000cc5b1ff67184000023ac8f0c59a300005a823149784c0000b066de9b321d0000d20eeb503064000091e48b186b270000209f1889399f0000770d2e3eb58a0000e0c8fae912a3000094aab4583efa0000aef1df27279f0000cc5573a691800000008d7ebfd4b700003f14350bde0c00000a9cdc1f79d6000001210db4718f000098d5d3e212d70000f2bced76b4f50000d6e97766c85900008df74559ef2e000090837bcbfbeb00005e128cb77a570000a5ceb4aaedc20000561d45315eb10000d866c20c183a0000cb261ff4300f0000ade4f81e6fcb0000ae64c46e53ea000005a548949dbb00001c7408b6958600009736b2b2388400009b5810ccb6740000252ff41c9e1e0000e3537024f78b00001d9699e4cb820000d2d8532a6d190000ce9a4a8586a600009abd95c2332400003274eee18f580000bae4f10b300c0000838e13b9249000005912c7ab4bb90000d6d6be8bf9810000d5c59484db2600003d7d32ba6dd200002cbca810a79200003f4a763396d000003696a095875f00003210ca02fcba000028ad1fedfc0600008e7161b983850000013346f2e3d70000f7169deaa3b90000691876f6451e00005cb626843746000059608466f0a10000495138e6c59900002b4823793b1d00005b6af8393cae00007fa3fe5850840000b34065b6c849000071201311304e00006c52b6a2032e00009418787661b300003aca41e85b1900004eaf812894a0000075fabae48a75000050f110096215000093d8ff84162b0000883ff723f66400009a674b9faf2b000095002494091b00006dfbb471063a0000db8f3f50b2720000d3762dd4e2090000f82270585fcf00005f71c96d2c960000e4a200c17b410000f988e5a5bef40000589ab6a779f10000",
|
||||
"output_hex": "e683e184ed8400006954e411c13f0000e961bc18cf370000be7cedc3434b00002ea9c4de54de00003acbccebcedd0000e7750feeda310000f8a664647ecf00003c106525059f0000354fd35f272a00005fc3ce7f504200001c8ce03d23eb00001f82e76500dd0000f443df747e080000bf8c933b38860000834e44b3d51b000065c04d880cd4000056632741e3a00000e1989fc5c1b20000fcb382be9d1c000073a27d24091c000053ed28c07a9a0000abbecadb997b00003d836b199f5b0000c7aecf09af6300005f785c98f8160000881b6727d55c00001b52239c148e0000f4b30171be5800002b7710ab01f90000d72d4ca745e600000dd25197aa59000036b180d73e9700007afa32d3cca400002f2ca2e3e9bc0000ed6e7ae0886c00004dbd59c175a60000411952b43a9800004e2b1fc338a900004306f09fac070000667f0604247c000020f5bccd1de500001465a94b00740000ec4f85eb079b0000a782b9e936a800004eaeff96736100004f3a4193f981000044c964e16fe000002d8b993bc1520000304cccc73ecc0000c9d7de5a97570000543292a7fd0700006dd4cee1f0cf00004cada588738d000077ac7a44721400001770dfef5ca300000acf954b4fab000093d1786d8c7c0000df7ef53c9c3500002c1a3ddd8f1400002721ebaf5803000056015e15949800003db6c3d2e0dd00001dbdaa07420f0000a397dd291a5900002ec51f2d306c000098eab7c24b7d0000fb1bb2cf3284000073a662c590630000daf516da6dc800003a6436f82ca6000000d3ed14515400008d05d801a28d0000e7676e31ffff000081032a805da4000043b8427ea23500004ff3713c35400000971440b20df70000fae47ef226ee0000188cccb6640b00009c6813b18a490000ae0ad985c9a000003ba7240ec7cc0000bee5b7783e99000009733e41269e00005f069f7b5bd60000d13b3da408e200009b8f6d7ee24a000058c5b4d9d7170000210598359f060000923d8091410300007ba41538cdf90000ce026f0d296c0000e5b4be162e640000d0452057fd3d0000195883aa76c40000c0bf79d6bb7800002ff8cab651f40000f12773f6f2df00006d3e7dd2e2230000eee93fe2fc3900003b8a664aa72a000001114518944200001f7d4d7666ae0000ceb0ad97265b000010820b0e673e0000d059bb26bd31000021372b73c24f0000fc17ce07d5f6000086999a66a42e0000c719b475c1670000896c2e780bdd000091669ce85a1d00007756db12fd3e00003581fa2978d20000957fbcd493e90000a13db8b5969000004f1c3c4488810000fbd8ec05ac360000416c13105eb40000b1c0cbc1d4a800000bf7d1d9b843000078fd9a416aa600002c56bc3347c700005406bd8d12d10000b63431150bbb0000e3db43f3ae1f00009592f3037f4a00009ed9dbfed1050000b96cb6661f3900007413336a3da80000a118989e6428000035d70352e2410000d499b3b1d31500004e35d89295c700007a6c588ff3410000648bcee827f6000021154d86b8f70000a6fa2dac24b1000077d0104dec1500003aac2295630f0000ae6f17100a8b000012137ba38c81000049619ff9aec700009b2dea855b67000039d1a9298bd60000c817b0b9a83f00006c70bbc3bb2000009aeee5ee25af0000e9a7816daebc0000ccf33e350c29000019548ccaa06900008cdd3ac262bc0000c243837018f100005032f1cdb57b0000342f3947a88600001e6e29662f690000baac0eac21230000891d7a23184000005a485abea7b300002b84290fe05b0000297b4ae3e5d700003ac2ce919c18000094f9d8e5948c0000e7f5a24b1eeb0000c7f942477dbe00007f826475c567000038213b2755d00000a5bf980310a70000ba32775451f000004c7c29653c230000f9d4e2a62a42000045d2561ef1fb00007334aca15b1700004d16a0f206b200008d6b70f10d4100009bce192fe43f0000de902ca66dd900007809a4aa5dab0000664817fddb1800001c84babdf3c8000025482888161f0000527347b6c640000027bad1b7f34d00000dfd4cdee9bf000090a5c28721d10000e4cd67f6054a0000531067edb4bd0000be7dd1b1b92500004df9495bc727000083d70cf0f5ad0000139f2aca07aa0000edb3c3483af800001e6e3dc8bd650000ce6974880094000001c8d50668020000edb25623395700003dc8272f5d2200008bb47edec4be00002a7c9b8bc82000004d3af5fab9ac0000206ee9b4dda200000fe60b1c6c4e0000436864dbacf20000f60978b74b660000ef61711e95d9000086ccfec094ae00005f2ab4de7fe700007b5e4d9faa8a0000a8ee2654494b00004cbcb0b8aa6500003744a439b95600009e389db9aa980000a2cbe14154d200000924521dd9fd000088cc2f96da820000626a574b24aa000060098a847d4e00007f8724f1412e00007c857634ece10000c45f6f16d44b000017b5beb5e9f10000e1b2528de8ec000004b57c68748100008927f7568f990000a784ded1ab15000029ad1fb46ab4000096114bcbdb9a0000a37980f80b0e00006a053b46d76e0000c5dc92f19ee200003d977a840ee600001ffe0deae4c200009f93bf958e26000015e7ddfeffd000005ab2906f63710000d4bb38047d700000262ff4bfa4e200006b733012e6df00004c9780f446100000cae33f9e8ad40000d3eb1055f542000075308df213950000613c6ce9b22200003b9965e2394a00007c70b7d01c190000f6dcf7dca96e00006d04e3cc6da4000025f6b0d470ad0000683f1902764d000079ac884d271900009a421d1da8170000887960cf57c500001079f6d25ede0000dce14c78c8cb00003b39c51cb7880000",
|
||||
"output_sha256": "e67019ae78ab434a79c79ff072d4e5d42a01585e2f2863ec3a00abc34d4aeb6b"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=35",
|
||||
"input_hex": "9ed12664708300005f9788fc185e0000fa8a4c1ffae40000752c71de1f8900004da9942825e70000c9c9107295b40000355e123069d50000762667cbd8150000e36e92e249c700001676ae7a7f4d00001af26a892de2000067bd5c7d90b30000c7098d3536850000c95d04f6f5680000aa92ace43bab0000b4f5cef3a9630000b420f0e86607000036f227f7542d0000b0e8be1a219f0000111657aa53cb0000ab01e13bfb1e00009407dd67e0b90000c557701caf0d00000a1ff67925f300000f2a7d9c9027000034e9c73cb8db000028f3038571ee000075c7620b9fd50000703f3d7dc0430000e2963c1244ba0000b3a2456a7ce600009c9b1ba5c2610000cad9a5d3d4ce0000546bad23253300009f2359b7119900003ee6eeb392640000fde5da03b26200001ea35af8956900006d407250e9aa00000f13635842040000a2fce404f80e0000d17484813b070000cc2916dd1d1200008e35fd845125000011593477810800007855b583cc2400007afae987bc6000009d517ffbf4ee0000aa18177b81d10000b7dcdfdaeb460000175c92efe2290000e4355c951c85000036608d84b37b0000895769d080e50000d6ceb0fef66000000929cbac58f10000b82cb4ebfc97000032fc7e1612c5000062ece2782c1300002285fcc74632000073610d7e6e9300002af04fb36bd500003868c09cd56e0000becd2b6d54bf0000ecce14675c1300004ade27026aee00001668ea65af430000309c8680b612000003391350f8610000ed999b7cde360000ef2bf452365d0000a5f0cff09b660000aab774dc9e33000024683ac207e30000c5644ff9a2880000e501ddf448ef0000c4d3b0c367f90000f25253bd9a2a0000ff28aa48c6880000bb6b5d6df27100001b3e502d4f7a000031d638aec6c300007c6b314867e80000913d11ed96ee00009d733628921c0000cec09658fd5f00002b5a4cb0ab540000f1e31a0dcec2000044285673313400008cbe4f44cf820000cdb69b7952ab0000f7ee2fc7c2b10000db152fd02ee90000409d2b5141d900005ee8b8e080c10000d4c86e4d086600008602b686c44b0000da13e71c1e000000d8970588fc060000b9af91e79fae00003a14843efd3600006c4b91f088ba0000a7fbced144d8000023f93aa2ece20000dc5179491cab00008084e36ec9780000eb4cff598ecb00004a5c8b6e09d20000aa8b1407f1cc0000716ff01d2c7700002018090d0bfd0000fd8261c587d90000969b0cf83dc90000d9107f158e4200004c864c7086f80000e2d94e36703c0000d246961dcf1c0000afb4e3e2461c000047409859e70e00008b7c9265106b000084fd6f586bc700007f2645171a86000036c7e74a52100000abf692ec985f0000dffd68e3209800006cfe11802cad000028edd3cd9778000017f7e99d5f1e0000f2d0fa9bfa2f00009217333c4d590000d3e3c5d0586f00000f3ff25093420000bbed690df3d5000012e789fbfb6f00002665fa993dc100008f20190831ad0000bd153a796a6c0000500f69b63ef000001646cc5bf18e0000ce2e133f6c3c0000cbf546039f310000ae40eb08424d00001489104f761500001e73034f1e490000912a95f6b1870000b0a30a5b3d430000fc82e65b14990000747bc336154c0000390fbe1903f90000d6a0fe9e68a30000022bd81b71c00000039791b237350000e9effdf0ebba0000febf214fcfb600009e7363a92f1200008b6d3f5dbffd00002ee0c9da06890000a0e13834cd9b0000022f4597397b000012da5ee91c6f0000d297285a09850000193dcafe33510000070dc24a29460000ce37f7b4910800000cf246b9e5ee00004308628357070000275f417910590000fd498528f29c0000a91edb840c720000df19bde2462c00007cf9458de3000000a4e324d7888300009077229e9ead0000de5dd53569690000f43ad45ee5480000a0db367422c900005dd1b58ab64d000016cb24cb93b700002f4ef8c96cc30000525f30cee4df00009d194ac0cccf000082cc47318ddc00006aee864ee30e000002cc2a32a5b900003133beb414e20000bc904e95daf8000029906d23c3f20000ca3f270faf9c000044f3c983b93900008ce12466722100005d9d096c9e670000370e87e066270000ac58ab3059e2000054e207a740a00000e1f12909006c000056ee9f3e64bd0000843d89ad61db0000a7e19a30816900004e980af2cecb00005cd6ade13b1a00002c46a0cd536b00003241788497890000b5481e513e4f000081a856c2b7780000055c3c1ba5be000032ca68cce9190000f24fc0bfdc35000044074cd7505b000013036226e0f3000079c5fedf4f140000de21b33539d100006114203e53660000c0f4ae722af600007818c65f5c090000f275aa38b2d800009b6e49ac52b70000cdc405ce54b70000fec86029836f0000e7996fa736cc00003dcfc7cb32000000f4c9dddb0a160000b8c34518ec370000ec9a3edf140d0000293d5c755c25000058ebe9883a280000b125f4fa8f3e00008708e458b8c8000074514a4a83a20000df53a16afa4600006937e77334980000b47dc2aa8bf600006ee1e8e0f16500006988eda07dbf000014f746fd968b00002284022794030000f04f503a644f000036fdaa8de56c0000ffc54f36aa2b0000deea953c264d000049b1a3a061dd00009c65e5bd961d0000e6218cf9cdbd0000f71f795e5c4c000091e3de599fdd0000f2c6a907541800004f58547766fd000032d59cbbaf2f0000dba9b117cd5f0000ef224560c1f900007f0858f448c5000028792d020c160000b9944daa7bee0000cf6fdc5bc21d0000e1f74aefd1cf00002b1ccdd706fc00003eeef08b017d0000",
|
||||
"output_hex": "03fdf9011cd800002f63ca7d60850000794dbd74672600000a0d4631780c00006cb24b1cff5c00001b43c6e380220000e8c34ebb3bb10000cf76a9c77480000089fd1b31a6a700001375352d3bdd000026804d79accc00005b03c37004a70000e0556600eb9600004107a928ff760000842c4a7b99fb0000e226f425aa9f0000f4f03ad911d7000075010e895e420000da0640d5fd810000c20f041f927e00000ad08bcfd24900000898f56639970000fec93797379600006aa337426e8c000078cfd2831b450000c5757359245100005b86064cdeda00009f8977ebbf4a0000affc4ee810360000ee676593192d0000b98469a7c685000052e91c0a9364000091fb30ee81fe0000bd5b4864519f00009b82553f8a44000096482c2fcd310000d6c685ff91cf0000aa6adee71c05000029ecd1e251800000aa2187453aff00008200c805fb370000f93753978e610000fe9468d733370000f9aef620c2120000b535bb0c0a4500003e70c2bbde1f0000c47a9e96af0a0000be813d3163920000b86958bee23a0000ba5c7821de3000004d7c1effbe23000088ee8144d78800006dda9245d8630000fdeff21a595b000012a90fb4819c000090b94f7738250000980cdb06d23600000d1a31bc5c330000a0c8e52846c70000cd2127d748ee00001044e851294700009f30c2fdf31d00002cec10b0909a0000d839c5e1676f0000d288254376b800001b35fbcae7ae0000dc5772061f9900003662784d59c40000954e5ba2f36300000d1ebb7ad5b10000a412eb64d08e00005338580091cb0000bb6bbc8a806d0000f98561060ea80000c6b04045970d00003531bda98f7000009a2c8b461da7000066cae196c043000034897868f1a3000032bd1444d1f8000092649bdb391e0000353cd7b66bc3000092cd9e09852300007e03f244954b0000ea28efc44e2200000d1a11b1312100007cbc5dd4da7600004094f72474d30000b3d8a276e0d500002fd563e5bc8f000018e191aa99ce00004e6ed9e5959000006938af0278b50000d868680b05930000124748046213000071bdd6b59e5a00007e92f3636bf10000622d10ee1866000088265f7786170000dd89f9aa5f660000e35a748c4f790000cead3016f74600009ccac302e61e0000bbe39fee5b3800009a8c525be5ff00006f9a2c66f17d000090099b9ef26c0000b4463b2edf8e0000e8d2ab30e3500000ac261b547a3c000082db81a328340000b503a0a42650000018e55c25c12300004da81ecf84f500009859c210917800005c98532e76ad0000ada8d626dce30000cddf12826df60000a84f229ac0120000b29ca785f2fb00001bd3d7d2c34400003c613003d2fa0000ccd7c57127ab00008d5b0fd10a5a00003b8b7e6002600000e3455c5facf20000799f716e26f200002b4d824ba0290000a255fdf416470000bc0497465e770000d5c29dfb59380000dabc427bca7200001a2e585df47b00005a02664ea06a0000816aefe52e1700007fbb0b6cf867000009f2bcb2314400008faf85cc77680000290295af45590000b0fb676507db0000fc4cb0c8909f0000f4ac9ebe0cc2000070a53491ff070000de6db6f712b5000001532cfeeb350000de7fbb497e470000fc11c1014dd900008a0ef08477a30000f317fbdbd79e00001eebb19cb70f0000c0db5fe5e47a000058a2e455dd470000b89cda262d3c000060d58266d24800002f85f2e83dd5000043e289b601b40000a322a710c220000090c75a64989d0000f9459387bfc100007a64c89995b300000d79a0d0f9290000b2e4504dc1420000ef7e84dd64ee00006fa9d4ebfedb000017868e7ae19500004694e7e08bea0000b62fffb200b60000463bc5a930290000ef70348dc9230000c40e8d841a9f000095188aa68cd600000e67a4386306000004a3c4f050120000a3fb26e8c8d100008caa748329ea0000aa5d93bc5b230000aab12fe9f14300001a22cccbd2670000e904b9c1ce300000f5de34130c0200000a17b054f4940000f4486afe577a0000eb95d4d57ce9000008415c3f82d70000dd336f7ecef4000079fc8de585b900006b46d5d2b34b0000c885e59b6e520000100e451204540000ff1df7d5fdc100002eecb8ec69ab000070d50adea16e00004ad36334b35f0000bf041c40279c0000118567f0e0fd0000bd1b07a4f32600003a813f11278b0000615ee543f0fa0000d349730a2776000075f97203f32200000b5a58f9d0ae00008a73485273f1000071617a89ccf300000d234423ed230000627a570a6faf0000a725e511759400001fb70e77f1140000390ba71569fa0000c0b7df51ab370000e9229238f2180000e79a31519f2000008095fe0ededd00008aefdf3073230000881e3ce3a2af00002ad88d40e9290000c4b7cb948fc200000567098a5ec2000049745cce64d600008fdaa9d1b5b90000f21d4f9ef28d000050f9f6f23e21000080927f177b780000c17600c0d17a00000467eb0b20c30000d90de3dfde7800008f9c9ba2f56a0000e07ee79170b0000001514051640a000085b4fa88c0160000739ff382af2200004434c82f4c23000078b522b1fe6b00003bbb30e8a7750000b5591d94734e0000e6cd5d48e9960000c55406cd5a840000136b2fff2a450000c526c812ec9c00009017b72b09ec00009229950e4b4b00005a7fddb56234000045d37a86a5210000bb3bfdefd71d0000019ed9494c8900000c4ac4a608a30000fa5a8e08a35300006815274220b10000dae9b31a333b0000341c4c1184930000ba29c31896c500002c5695fa9190000055c33b21d69b0000d9b5c04e3341000081a2b530e20c00008b3cad9e17f300005f5e883f16090000",
|
||||
"output_sha256": "2b25cb3606d4379e1512e6788d3a62fef856c89805af77bedb598d458e791105"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=36",
|
||||
"input_hex": "9ed01b0a8c0e0000cc4e5f5e9e260000d80c3e5159ef00006e561ed5c1620000198e32c391b800007a065987c3da0000d16fbf307d0c0000d23fd81f8d3b00002546a9609b330000c86a34582d580000e91f12101ab90000a8abc84c56a20000a919c9c211e300000d15fecd17c80000958d34c724510000bd2d73ff605f000052b09183f3b60000e4e32685baf50000ca1210258d250000c76abce5f02c00001bc54e031e3f000001ddee3832ea00000c70738c8afa0000d557bf3aa0e10000c38da5c75f5f00008032a84a3c5b0000363dc2161fd0000041671bbe23a1000043458d0f3ed000002737e85a35980000f32a366c8fcc00000038a859bbef00004279a90db7a500006a9146f5c57c00004068fe64c50700003d766407eb810000cf91a86cabf00000232df85e83e00000595915efa8740000e215dfe18fef0000f611974369ab0000d18cdb575bab0000f4049a0b6e0500002b4b69aebe2b0000fa6e57b51b450000f96dc6fe3aee00006023441e942e0000da2ef1281fc20000f22033488c5d0000404072939a26000003bf83553c99000074d0e766c87d0000837424b01e4600006ee29c5416d900004eac51f93b0800006a816ede754b00005c7517f00f220000985feaa1ff0f00009bb1906163d1000007cc06aaccde00005579db9221050000f26107d052f4000091a9df84b540000028ec463c639400004532159492ee000013c05bc8534200003e8bf3e90b4c0000d66561b11dad0000b4f6e60dfbd100006e94325d00c20000d909e573a79600002e65e95c7bfe0000ed7feab81b680000a032a0c556d100006a70595cf5230000478aa69c5bbd00003124a7185acb00006d525815cff30000762b27c30b2c0000b84a85733c430000e93caa3ed5f30000f981de3a21e10000b93504164ccd0000a3bd4dcc01950000fc96988094c600007cc5540481090000c775f4700cc4000009439f24d231000049c877cf582400005517154710c8000006b6db2b1536000083b23a1cc7c10000ee4aa6b319ae0000ba94f453810c0000384366f8f75400001c53960737c600008c3845cce0e10000f612105c27200000acc2e4c2102a00000d9e038e2c4c0000540f0765dedc00006f12777548300000c0ffb0bdd7a500000e3119f2d7d100001e47a08d4dff00000f5ebb352f1e000050459024010c0000c1998c2b5a27000048eb0bc226cf000006c03ba913e000004c6222c0ccc20000ae64be2205e900006343d73d9f4f0000976f268ebfce0000a60536bb7cac00005c048d34123c0000f0e025c167aa0000b93e18a718c60000a9edb5d51c390000cb1c64f86aff000053cdfe86da6f0000f1a40879112b0000b148d2d5f0b000006b8cc1e14a3700009f615786e77f0000388ad2398fb7000062e27afe91db0000809687ec0077000034be3baca1540000cc5d93efc2de0000a7f7a285ad050000f44cb0588ec5000045adde0de07a0000dd6d85cde3a8000020a5868f492700003452a1fc83be000089aea76d5ae90000d8ac24d6951d0000602b74b29bb000007c048cc0f9060000e109a4f1be5a00001eccbdbf2e0e00002fea6977715c0000e169fd0babdd000096a80b8856990000ee0407560c2a00004e1c6ab01769000033535d366d530000626fdab902ae000065fac8cb5df40000ec63e1543abd00005a0856ceb07c00001b152b2fd8330000d195b9008281000090906c4e535b000039811aceb11c0000809fe7c2ea5e000094d1ff3a071b0000b826bf7baf7c0000e3f0012e84b90000c1f1b42d2abb0000645e0e49d8d400009e38474853f30000dd771f7f8ceb0000aeeea7276a64000074e9182acb4a0000b5db50896d9f000032fecd31491c0000409c64b71f4000007582fdaadf790000407f61763de50000179573904b17000018f5509db2640000e63a7d5411f10000bbe01fca2b7300001b816ae5505900009817388ba50b000055f233e5ba350000114db486aa2800002b46ec1594f200001d829c359b8a00006fbb555dbf8e00006327a6c4a3030000ccab5bf19634000004fa4af89cc50000abbe5772421800007f6fd42578030000710d5bbaf9af0000245b6ec396e50000fef2fd533126000088685648f951000036d5456fc9f50000badf95e4d1fe000010db0f261b2a00009da7eab37ce10000560555e2be4f0000fefa10bb9558000090a57f004edd000078a3cbd82be70000b10759ebc86c0000e14b10927ef40000c06d544321830000161c29730d770000dbd646de05710000e13640f19c7d00007cc82814576f00000665a1056af80000f6b64ee0a48f0000ddee826c83d1000012a0f84645df0000c1295a819756000011d7082d78e70000f5b0389aaa2b000028811466a4be00004d5ad45d4dd30000ff1f32738b5400003f187db4b0d60000e4d9e5a6cdcb0000f134232685f20000f30d1dae430a0000a82c3fcdd3c1000030d428889b8f0000c11d33c637f70000976d05b78a420000a665f21ef1d50000b90f2d61ecf50000be5b5744e6060000164563f5ddda00009686550e86100000c86f5822f92700002576bc06ac9e0000967d0a8c9a2f0000d4950f2f16a10000bf5d028778a20000b66039a137990000006a0332160e0000d5730d247f390000550ae758494a0000e8d9527574050000a3a16e2dccc000002e61984cef3d00004b95598a5faf00005361d8e25c3000007bb78871d3fe00004dfe894c0ded0000a38e8b13a1f70000bea26ce606e50000c0095100f58f000028142e0169180000354f0480dde300002bcfa12d04a000009d471e58ecef000022d779133839000074aa8723159100005daddbfaf02000007157c7f112890000",
|
||||
"output_hex": "69fa2176e5c10000979087d48d64000066a5d4fa5d9800007cc38c65abeb000062a9b9cb297f00006eafb6fd94d50000c1ddb48b8a790000fd67a1c2407e0000755fa04791890000b788966c972a000022002cd356a70000392af05983f80000736ddbf96f43000079910ad66b9c0000b1fc0fe941e800009059905bbe8a000049c532a53211000078e7f41e08fb000007abc753ea3a00008af0ab17316100000f9afbc84b2e00006a94eecd8f620000996b7ed61aa50000aeef44f804ec00005695ffa0f38c0000ebb85c017d9f0000460085b74ae30000b5c1ec7c412200006231c64a54d60000dbc288eab5c400004cfdc021c3870000b0054a0dd620000001102a283bf200004980b378342d00004887da97ff1d0000be746aa038170000431dbc1c0a810000b8a98165a8f1000062acda744ad40000176b0bee90bd0000a3228cbfcf200000d397ab2dba2200007a1d9d2767e60000113cd139a1cd0000243295408e9f0000d94389bbe64e0000050262f374cd000047c8411ec72200001efa3603776f0000fc28eedd0f8000001ad8d8335db30000e345396440890000fdfec840fe3a0000086f81dfcb4f0000d267fe7edb6a00000a11f63634fe00002937008caa680000f243f6a8569f00008340750cbb9300003dbba7b80bed00000e3c802d5b4f00000ef015e6f8d90000b2f883ec7b550000d414500297c600004e5c85f1d21100007d4bf1141bb40000ef761353a5a3000051f32f8291e1000010e0018e30fa000084b7f6076bf00000ed2b813ad9b60000b20962d71d2f0000e3383327e0e50000130694043ad3000017cbcedbe1e90000e5c008122fc20000d892171895730000084b4157ea400000b7db842c36c30000230eaa4bf05700001b9f83b7da300000c93620a7c7ad0000cbf8db582c4d0000788ff8de95e30000d83855348ae80000b5b4acbd0bce0000f2ad803272f1000037357ceae8100000e3d22ba3f6f900004566eb36876d00000a767809756d0000e304ecf2970700008f651ef02c5700005aa7b540741b00009c01950c469a0000d9ce0f836fea0000d8dfb2bb119b000022fbfdb5fd7a00005f576b422e83000000bbeb63f3800000572a5e0a6e6d00003bb8953822ba000027de02095a1b0000be4c4983ffc600008c3adfd24c850000b3d6c41e0d680000d47d1b1b05bc00003ebbcff5fbb10000e96cb2cf8c700000b3134b85e28f0000265a3ebff92e000079eb41ec348c0000616cdeea17b20000819b8e5c86590000928eeeff207a00004018e47ccdc7000029aa4f9452a700002a14102be5740000d2aad81184c10000d5f83493cb1e000093bb469256bc000073f3b90fa4b50000cffdfca22d9200009e197acc2f1b00008ff26dac13f2000034470f442ed20000f1d3c3ab96600000abba1b410922000088f15d8600140000a9b29230f7b10000b5975740bb2d0000bae546f5984b0000b88f715a8311000041de35beaff500006797895e6be70000fdcdbf04122900003b2dbc797119000088b01efc70ad0000313660932e73000092f60c2de3810000846fb5c869a80000d8d48f1e89b5000083f5668ad3660000546ad6903a6c0000a0c08f543afe0000b193cceafc650000f740874300e400006cefaf1a78d10000c43b51764c980000a465463af5790000f44c4d32b2110000d4d54c1772ae00009daf3ec48872000074c617363dec000075f2a21aa6b20000a6110fe042a300007492b56ff0db00000bf215ad9b1e000009e7f49ae0a40000a284045f69660000c6a78a85207a0000aa8056b976a90000058f7d6d28580000f4523ce3b0930000fc749bd356d10000e5c0cd577be80000aa8e20d65a5e0000c1f42727e6d20000e61df727a37700009e3b104bc8ce000004300545f1590000278515ecfc410000b8d6d1e1981500003d8ec41d64260000ac34d108a2de00007cb619382d1a0000b1020c874c4d0000441447a06ee10000785e9d5236f90000a63bc75d643a00003271cc99befe00002820bd7968da0000d8f8c96665660000c4e0f115e3ac0000fd0a3235ef4c0000e52a29fbc32000000a90f007331500007382bedf582a000044bff7e4164e0000eed3b07335a80000af27f8c9eb5900009ee20542576c00006cdbe17012dc000049bc915037950000561d36a96f460000f46b4745af8800009e122cd1711700002dda48687c610000ade5b670c27f00006ea5b2617c7e0000e2a1cc9d305f0000657d1a5aa97b00005cc3558b7fa700005ad76c7f1d9800005623f6e3f92d000055b322ed5bed000051008cc7c31e000075a3f39d9e6f0000d6a440e1333e000005b35d850c5700000db56a304e6d00002426df6de6df00006668d3456682000053965ad059d0000073006f7f2b30000063b15eb061df0000e89174a7e03d000075604c6f7fde0000b73aeeaf12dc000027b34efa2bc500003971bdd45eb40000b713408f5cfe0000535b83a2934e000003351f0472a10000919b9a4bc6b20000470ce460101f00005e8dbafce73f0000feb81091df560000fbc8d61471af000097fd6f754517000043bda561085d00002baba2bfebd5000004fe16bb25ae00003e7261706fd800001f739e37215100009f70986cfd10000097d6dce6bc64000027e3645b2fb00000a6ee1e789406000056f06421ab2b0000869bc185a7bd0000bc3dc9ae5a2100007977cb82c43a000002b1971adfe50000aff8fc651d320000182e075b78610000e45aabeb4cf900003a489ba83faa000088e8395eda9f00000b3bad8ba8a20000a5f56a0f128d0000a5a697f0271a0000a159f4cbc9c40000657735d664df00009f2c9402a43c00005c9bf84f394f0000",
|
||||
"output_sha256": "24a126a974a5070ff62c95479207c28efba098881fc969f2933cd9d7727fcfdc"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=37",
|
||||
"input_hex": "ff14221bd1cb0000e285dfa69b2b0000c1168cb7958a0000011924f005d90000a3b14626042800006525d857c547000013016db54d120000664051c1564b0000de5f4505441000006484510b80ca0000c4191d4baac800003771cc595be0000085759fa7eeca000078bd46f040800000d2876f31cbe300009aa04f06f87e00001ffa358c010c00009b8d720fe4b00000ae34476fb03f0000e62d5a17b97000000d2a7716f61f000009c45706fca00000bb44b3bfd2d90000efa2bf733d2d0000b0cc155df05e000054030b7e99f200009fce65d65d9f00002a11d6aeca100000121cc5d11971000078fac33b84650000c72e1d0251de000098151efcbd11000005079bc0e6d00000f14df710f13700001d0273900d44000016470f934b3d0000aecb473414ea000077d35086db09000006ef36c6173a00007917703c93a50000e83eb8232bcd00000efa1686ed9500000ff2d71f5f94000009e1594893e10000a50453d167350000b7d1cb3ea2130000fc327f64265f00003aa4a723bd2000009e7b19854c87000085ff74edb2530000200fc4cd98cb000013ac955e6c12000072b2462e3aa900000686b79d887b0000ead2097c47120000b29be299d649000048d63a5cdc9d000004f2302fb29400003741ccc17e2d000093913f3bc77800005185a62ca52400001860799a282b0000c321c4f6bd50000053b8f73cfa59000046dd0dfb5483000073bba5dabb5b00006f88c9fe2f0a00006b8843c4ce4d00006f847fa7771f000074c7cf5b8db00000bbcfe5f7ab13000022cd4436f9940000bafa2cb4d838000033b765ff829000000dd8219abacb00008d7632e700ee0000657327c6e6b700003761f4cdd9b10000901d614dba8d0000f8bdc6a4960600000d0fa847b48b000089bb93a50ebd00008ebf3288a9370000dca55e78350a0000979ef0a1e5f400001cb8558e53d700003fd72256ccf300006603abb6161e0000cc32b220ced9000080e588249e300000d38f4360484e0000d7fa70d1b1960000d6710dc72bf60000a3623b1151c000008be12ea0c5260000af36c6de2acb0000f286a6525543000002d2c22310aa0000c00b77bf6fae0000950b879b1eff0000374da4c6472b000085061a36301a00005f9d54f04aa800001fd5a049d3e80000777e249d96b3000076931fcadfff000074d163e88ead00004a62828fbd72000084b8856ea599000007afb8eb5706000049e2cc8d80fe00004e87fb494fd000009ff70eba659e0000d6cd9a57533100000bb72a6287cf0000a83b4cd1661200003df8c72ee7940000569ab33413790000d2665b3625710000e102bcc7b6c90000d8727ca4c7a1000093c8ab47f3ce0000274860270a1800004d861fe5c24e00005a97c3154ca000001496eb259fba0000eb5b52a79191000060d1b6219c8200000b65bdc6ab620000c1c331621594000068a3eedeae330000a8fa50e859eb0000c6b6a103de3a00003187ba15767200001a8ebe087212000095dfb1c563dd0000423991edfc1b0000ff1393c4fb030000f41971bc384f0000a4b87890a6d700004f5bc707d12f0000062b519ab39f000054e8c154ccdd0000093dd21f4da8000085aeafd0023e0000df32d172d25a000074e46283f2580000a51539481b2f0000dbba4c12c2f500007231926e893f0000aced0d9b2fa8000069f33889a56900008123230672a2000005a36b3a865100007fa99d766a3a00008b611d607627000031a3356b47a6000012ac5437376f000089314373ed4b0000c57186dcf97b0000a0417cf595b700004efbbfa5a5f900008b859c0d6bcb00005e70fb9f6b2d00002e657ca0249900005c6916a4356a0000d3d9cbc28de5000084baee56a745000075fb01fd465900007af6c66a63db0000a349b53e2a8b00003968a2f813e300008fcbc7d7713e00007443adf86597000090cef1f4bc46000066fb3f17dd5b0000d76474e8b917000069effa40d6a20000b5367954c2d100001ecd6acb263d0000c2a1eca697bd00007dad61f88b150000ee9c8ae8fef300000ac40ddc5f6f0000c49de38c981300006d76a02d273c0000e727f04514460000962e7e09875500003dfcc52e18290000885b04e633b50000e67525304b7300003004080416d40000b91457c768cb0000da7d78740f6c0000d449d81f830e000081e78b48625200006be77f0229b30000f20263b3373a00000662dbdff3bc000072756c5341ba00006c24e9db071100003e320e6a83a700002608ff9689bf0000e9729d734a9800008c98728182f100001ce6de8752a70000fca1b5a8edd0000033fb034b87860000cb99cd81ea5e00004767b25fe89c00001424aef440d700008a746e67d33e0000423e45ee2dd30000b7e93eec64220000fc479309d1b60000cdc933f4e7c6000011af8ee0576d00001a007453c8fe0000805a974233f4000084270812cc91000038eabef17d3b0000767121c30d100000e6e27b50b662000020706e8c5c0200000a29e43e5014000048eb0a20aa9f0000faa3b338fb7b0000fffaba3cee180000367adadbc1ec0000bb7baf1da673000087164a4e7ac90000e380d780ff580000e522a3a23a570000ae17374a4b010000a73818c3e88f000004557a3b4d050000cd55cef9706c00008b8d4d4357c600003ae1490e2dcb0000b981d3294ead000075fa6434d8b50000fefeef0a330e00008b2f20fc19700000700f9ce832a600000592f9df049400005dccad95881b0000e8b97d7680960000e93cb9deac900000e3a85428038e00003358f134ab5c00009529c0a9aa7f00005398898e7e09000027265abaf9ee0000f82edef592f800007d519a6196d70000582ccf125f8e0000",
|
||||
"output_hex": "770c20d425b60000a97e8dad06460000fcaaafdc2ec20000f34f3cf6ad41000066e3bb4a2af8000001385ed2afce000064a6a9b124a30000bf39a220da8b0000c385132a44270000831af645a3fe00006f5a828da2d8000022ac4552e37400009bd3d98a2ab00000c38aec70d6550000cb7da5527e4c0000d754ccf04a9b00000f8e3ca2891100000132b6e4754e0000ba1c7b196a4700008094779b5f7500006f0ceb6778540000c6314842de6500009db8b2941ded0000cb977e55ab8e0000bd2cad31fce60000208508044b980000606b39bf6ef000004ffe1885f9dc0000beeebf5e30f10000cd840cf5e4340000ed83705cf7da0000487fd6550c9600004a79820d8cd700008fca3632f5a10000257f496845cc00005bb3a083f7a1000055c28db53b03000056e45cc2fa4c0000d1f722a8e60b0000706212f8a14f0000e05296655c4c0000dda0a87a44870000c582e04c5ce8000037e62cbf2bde0000e059fa0b87270000dd83f79b57ad0000309e81f6d46f0000144d23aceccf0000c96bdd9c1cdb00005b86c163e69d0000689ac1ac570f00004aa2f160a8aa00000208d9e77d37000044871009f31d000050d1d496575e000075a5c2564f7200001bf122d9a5ff00002c8c6c7e62a1000084678de49d6300003006b5347b4b00006a7792c1a98d0000eb8e5431ed2700001e5bc6f28dc80000f4307a549fef00005ab67b10ead70000f82ecd4d4da40000de66b63c536700008c9ca60527f9000007decb59e1a900005a5293858ed000004e1c2d0e58600000a229bdac7db70000fc62e4ef090b0000ccf22ff507f000007b4800767ceb00005a6cf98ad8bc0000611f067eff860000eca29626a173000094b9cd23bdf8000056f5d60ea86a000017b488b913250000593e46594f2800009716e559b8b100004022ca11498f000073bdf1120cad0000ca2933b9bf8c0000602939860e800000205af796f79100000861bb4bb57d00005f3cfb8183d90000548ff48072c00000444a0664e3bf0000e2f463778d9800009a913020d6240000df6760863059000003f0cbb9cac50000e3a1bc54d1140000b5e0d763cd7b000040d831e33a0f0000c7945c80645c0000b02cf8fcf8a70000ef36c98a98400000133eb4a25b060000cf666f26f64c00005ff2ddab09780000e1f7bc82d3040000b77c1387053e0000cc18e1fb3ab900006f525e1633be0000fd9d2c9ed86e00006496d491ed270000977aa2b7208f0000f9b273bf7e6a00009837ec64919300000925da8b3837000026e2b4e60d0000008ada1498a69b00004058febc143100003d4865ee801c0000a34925f1f1f900004dfe144be92c0000bd8a65d43e6e0000b1ab973eca5e00000f4c6e7b2f8700001d7bd46d07e1000033c246dd7d050000f4444d2dc9660000a4959d0a0280000089974f213c630000d2141e3efa7a0000747097dde2c200007457feb90d3c00007e20f5e9b21f00009a7f5e97d5a60000af2bc8983ee10000c97d0cf4851000002ad42639ecfb00002404ccf91bc30000315ca5a9dda40000acd175efe46d0000896815a1628a0000a252821d3d3900003365698a653f0000aeab5cf535de00001f6bd028ef6d0000e47223fbd77b0000feefba65dff800008b9f03bd223b00000a8b8857d5640000cf011b4b8fa50000dd1273224e0400001b79ae607993000094e7e1bb31230000ebbc04ba1dee0000003df7d636fd00000ba7b5c501c30000d43de48b1b8200004404e311d02800008da081a789ca0000263bb393c0170000eff0b2ef52ee0000bf999018117f00004f9f57508cd200000492d61a29c60000b9c6f16bc2f40000f32b6402734900004d417fd694720000c6221895255b000047a67cb44de60000a783242d941f00000e3463ae9c780000d4adca5b97320000345cca258dd7000032301cbe31e60000ecd61b1fb008000057ae006dd8060000be6ed104737a0000307dd26e99430000dca78cad4d030000743b76888c43000029eac6f17c2c00007ba7675177560000ecba16e7699b000048abfa1190aa0000895b2310ee3c0000a0d36ea849620000db56408fa5e70000a14f6677c8de00004e6cee27e560000019fa40a30ca700000585a238d03900002add63f25b74000062887983f7b400009d6385585aed00001a6f6f89ea77000039a7c3a6110c000030b1bf49c4dd0000b35cea1c6a1a0000b5e099b314910000a5765da1b14700009bdb6dbfb18e0000fec8e8b40a6a000078625a2fe631000044946d1780c600006ee9f9d027cc00006d66e2eae9a500003206f644d8cf0000e319228368a900004b49f03188ff0000dd2f0fb3429f00008bb89d0e352b000086839e5a5ccb000077655bb6269b000094c1457061ff0000b46bce2a84a90000bece2540fbe600002493cb2ac9540000aa9569597bea00006f5f5781442d0000422885876d2200006a1c1db49b5000000d222c906888000003b6080f2d990000e2f8dadddb400000cf9946121cd80000c427e743a0f30000171c16c8f72b000016ee18038404000037577cf345ac0000a03a0ac5607b00007411b4bdb52800004ab76901b6fb00003dcc1d50b1ff0000bb1b2756f4c500003b2b57613394000042479917c1a10000765ff2a1fc5400009290143df85e00003d4d0c1c27f700002900b049e1710000dd971a67c7cc0000fba3dd4aed140000aaa44f2e149200000c7c558f9d2000006877c62ee7f7000047314fb63c5e00009946c5ddecec00007cbf7d34c85e00001b3e164e2c8700007c8a0a68909e000076512ce00c8000006c9eb8e7ad830000f83303c27dfe000053fe56eaf36400006a8aaa181db80000ca40d7c4bc600000",
|
||||
"output_sha256": "b88c87a2c42b45133cbeed42c74b6e5da75a030b83eec79d13b89c70e1a533ca"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=38",
|
||||
"input_hex": "26240ccddc2100000c740da354d500002162bc57a06800003de603592c610000aab7af7a8501000066a25e82ffe100004116abd30542000097d8067f55200000687d8a3b25170000b416e7bc2d9b0000f35f2ef31dba00009766f4fa61d20000386f12741c0a00002227f24f92f900003cb769a058dc00008cd1de53e99200007a1df5ff01e800008ccf1ebd736800005e1bd05fc31200003ccd397d68220000e7f75e1f3cec00000e9626643a1800008514f707e6690000c57ffbe2181e0000b740062bd07a00002cd7516507830000f9adcab16b11000093251118f96d0000ae740b31e52a00007bb7cd57b8d5000012096b409b1800007873d4dac0e80000690540993bf00000a2a4f7927a2b000017451f1a5a9d0000df5cfd4daf9000000cb04dc753a6000065b81753fd460000bea9395bdb6c00004347fafefc7900009f0805e1b4db00004d4415ad623a00009babd80999c600008b2a8d92f02300008eafe1eb650200003425ddc9614e0000bda3ab0c90710000b6e5a65b541a00002dad596e312700002d5bb0476aa000000a73b7f179b30000d5390114c40c0000411dc37f24a500006289c4ab69070000e8c213be16c5000026986f2b5aeb000070a77fefdeab0000f4015ecfb2740000936afa4bc5ee000095d90208e3260000fe1d4ff96ce4000094b0a4d917830000f38098dc7500000038caf445da4e00001e4d1729707a00002749fed4362b0000ad6ab142254f0000224d8dc1f49100005bc37abc8cd90000bf117ee0515400005e61de76a37f0000f57b9af9052200006b405365a7af0000cbd6698784280000121c994641450000ce4ed6b83afa00000519e26a1e3c0000b499480e393c000066c7c6932136000013dd0932e3bb0000f1e5ce7a303c00007c2a17e77a8300000d208de283a60000dfbfc3c4dbf10000a87201d0af190000368da72988e300008cff1921d4fb0000c0e0b194240d00006761d2a936de00002272b99d1af3000041cf9cc7fa990000f0ea653a61950000cbdcfef793870000c029a85cac700000c6c19b41243900007bf3664f32300000c5c102770d7200004529f906d48000004aeb763ff3310000ccc08bbcbc9a0000caad76aa634a0000ca83ce4e24d70000cb7d28a1630a0000cb8fbaed0e270000aab72112c2d200003985ada748d10000a414b5e37c690000b17e9a7c541d0000831c0c4b898f000014a0121d3c860000cbce7160d2570000fedd90f9c924000040dfc42fa1120000d921f9edb9020000d9c13926e0ed00004826c65f7ef200003d739238c0530000596a131de2800000605d1087a5030000e143c7c2a5c900006dc61b71e0b20000285a7dabacf00000e92bbd000f9100001988c9a661dd0000d013ba4218610000e36e5c4621d700004ce6dc0727b7000089316482a03200008cff52e4de60000062a42f87ebc2000071805dd4e3d20000807eac8439960000bd39d396496f0000eb01a3c760e00000755aa4aac45b000076300c91c5ef0000ab540b06356a0000a3b31229b72f0000a2223c46b85f0000f0ede886f4840000f17d5589ccbd00008d907816cf7400007663665ee74d000005788ce4e1960000608bcbb7475e0000305ef5b1766000000b7da872ce3b00000515ec6a5f40000095541f6b99a20000df0183faa060000051fea681fedd0000f81a469eec1e000044f6c1a177f500000c036d0016880000ee04278d848c00001ab5ff95145c000065108515c2110000c1df101eb9d000001a52f7e12eb6000065784673763600003023c6b30c830000a8dc9a2754380000c9a9a7c2f6110000e22cba481d7e0000d8119b79d0fe00005ad13b1fc0e10000504490e61dc20000d96810d9882b00000fde63f3db9600003f101539b18d0000622c63731140000060de3faa151b00000784c0c6aef00000fc0777f9fa4e00008c986a29b5ae000049c02230a4f20000237240401fb200008b6df04a794d0000789e57697f9a0000113a512616340000d80621efac5e000086d4c8cad20e00004ff372287d32000085c7d5e1150e000059ad810b5644000031dcde13442e0000c6aebe30ace8000042bed6e31536000090002e39e2260000aa4a9d8ead930000cb190579e35d0000a4bf240ac67b00008b869c27037a00007d91ea3a98d400005637e6d2927800003832680a6f5e000068178a510d0e0000710b04807d420000100f829c8786000033167174107f00008758c65205ce00004aa027be584900005013295d624000002a09b9352ae1000023558e48e26a000044f881276b9b0000bdfaabb3e60b000043d90f848e48000041f4e8adaac600002ef0b61fad5500002524729c9c2500009a6fcfbf438d000055e314a150ee00005da86ba7202a0000ae87c3da1ea200009ae608ed5f6b00009db0adb54dc400004607b8fd87a70000db0db3a98f9700007d370ae099af0000d67d398271c9000081f6f8120d0e0000942866afffd60000209844cbf5bb0000fa115065a02700003115d3bfc12100009a6dc3cb99830000991e0a4a93cf00008b67cab262fd0000cc2815c21d8700003bc448e46c870000cf94f8242cb90000ef7364992de70000011a60f0d6ec0000108a25c08ca700009b0a74fbefef00008fd25e19b62a00008895233ccdad0000825364c166b000001919f974e80c00008b042e9186180000e0fc49d2326200004ec6d44ca7da0000cf82731fa40d000004338d83562f0000a7aefc57698a0000bbd1b97a48560000648e8cdbbd2600009f39b8e6946300000d0f079933510000e337f1739ecf0000db45f865f68e00004b4a9af658e30000417d3c50290800006dcaa5443dec000033ab68209dc90000",
|
||||
"output_hex": "5264f3f81211000024bf21f00bb2000020b7968f6d5c00006b8ffea683210000819bfd977aa1000013c2439c0155000007c9b94fc6640000e3593ca6c21c000029a5ec04cf9e0000dcd667c2d6710000ab9926f309210000d4a16985a7d60000078d9f2da467000041310332af6e0000d3b9a08a45450000445e0d7294b400009fc4f05e2abb0000d300a527ae4e0000225a3efe757a0000b00e1d9a55b200006a6b860244390000f91b15241a5a00008b37b5f3e9df000015c4363e8bc40000fce88f10e7b10000b7a4cfb637a00000e8b9d41ec43b0000502089317b190000fd7c647eaecb000072a11a9352be0000cbb4739e8bc7000014ab30d8443a0000fcf5a09c683b0000b4b4dc642c3a000090b912e93a8500007c5004e0ea2500004467ff1a8ddc00003d3fe150be940000c131f42896820000b4673b81c37c0000cf7c7f4757c0000042f7feef77d20000a648a4c05f920000990dcddd9f3a00005efd09dbfe8600005944aa039b6600008e8da28f193d00002f7e1d61fc760000fb50f587983800006f3ec39fb8cd0000b52b3c401ff80000864a0935e5910000df319f701d9c0000071b4045d7d300006f1f59a4fc570000cd023b1342b70000fcec0fbd1aea0000150978cc8ddc0000a3b72512bf39000040f2082c94ef00005535afb15c8a000029ef52114c6c0000b853bc455e0e000084c61eb2bf9f0000912f5d0e4afa00008ab38c85644f00002104632919e8000079dc7b1c79180000081c02dcef350000df8d5211a7e0000047122587de530000ceaa3e81deb000000f457e51a71d00005caeaee1322900001041ddd58afd000044b3312a5cfc00001fff041e72b600006284ec297f070000e09743cf756a00002cbc633431dc0000c9dc547975a40000ed1ea4000f4d000042a19bc3f9ef00006423968e67e300006e49c8f2392100008a7e0f93f52900009396352b0b9400004eccd9c366910000285525bb204a00009e92a4ba98c800002fdfbdac18a70000deefdf6fee0d0000b50b6825808c00006ac79fc2dd1b0000a39ced629b8c00003fe7c769737d0000d7cb81340ffd0000ccbe53ee078d0000859c1c5a1d7300000e3967aa3da700006246d2259c2700000b33e4b28fec0000fb4ddc94c1ee000011312da2191e00003d3ef442e5670000fbd01a095d40000007c5232ffa3000006e4e5a6c024d0000474b6cffe20900007d858db227c90000f11c390106ed0000a11d76a17303000061dab9bfc56b000031bf1d30757900000ce0897317e60000655385bee8e100009115ac8cc18e000056c9036186510000ecc0ca7c162a0000665c3bb7c15000007359c50863910000b28fba484c9d0000518d30b3caed00008d67893e4aa500005802a90a299d00004a5536f39cd90000ba6433380ed30000fa9a943f04dc00000cc056b9f1ae0000c5dc5446cbff000097903d8963dc0000fae8390c7fcc0000b495851a41e10000266c2ff5bc050000731ab318da370000ba2c96ebfa8d0000fff9d9be452a00006df63c2548b50000617e4583f45d00006723f98948720000a45632f82ab60000cdad7a4a3bff0000a9c45febf0710000029cefa26cbc00004d7947391a0700001fe73ad257170000a4fa3349c20500006ead549adb6a0000a9959863e52d0000cd0b70b98afd0000d457f752af9c0000a1a2019da6b6000001c4e1e20e4700004b7ce986ce5600006050c5cacdd500004be097cd58b40000d0f61bff92750000e5fdc1eda0520000f52e82b9d6b00000c316084e70ae00005f513144943b000072082ae7211b000009eb36a883430000eeba3068b62800004fbbede6155b0000764d073d73f10000c59027d37d4a0000783708dfd06700000e6a6145edcc00000c2893f7000e00000e23840abcaf00006c2320823446000066528ae46d2c0000db5e6516924000006633d708b69f00008ce2a2710f0600007820dd5f2de90000b7b1ef76216500004328124641c80000b19ab8c793f50000a1a777de86170000d11e88a0be0d0000455fa4e7070f0000d8574917efc60000fab6edb08a2a00008b6d05a35fc40000444aafde62890000d533f99e4dc40000c62b7ead4dd20000175206dfe25a0000f746886ad16b0000d8b84ce00aa70000e70040949e9000008a1505f3a2a6000012a029f8adf10000c910b2422de900001bd8ba4cdd25000076214f9047c6000073ba64af8dd10000d57f29bee0790000e3b99529537b000098ba674bc9bf00001f27d3f895170000a3791658163b0000efd95c892716000065e139b521d50000e799527fc0c00000edfd6d01b8b900002a5655d6a5880000e175e06fb8d30000048b02a46b3c00002dc17795469500006c755bfa8d8a000065b5715e9d350000888cc5a59322000007b9297cfb020000b8c3059408a400002db40f7d386300008ffc224a62c100004583f9ac4a880000526461657efc0000f6e6e3aa962e00002200165c9714000065d523c310ba0000123e6361c0ce000073f8162e59db0000860d55ec153d0000b3ff140e534c00004cc2951637560000f897eea7237c000081458fe06e090000b0b39fefe01d000006289af62f8b00007e30f8842f6700008019e048343d0000a726fac32a990000d955056a66140000451432ffc3c10000c74077c8292e000007195b24668000008ca4559d682900001a75757e202300006d3c2ef2f45e00008668cbc74bfd0000f05347733f0f00007a83ff52b80000002ba10fe1130b0000b976a5e13ba80000ed70fd5d24d8000022a7efa369290000a9ac4e0481540000cd08ef1ecbc500005d5ce6eb68110000c1a3d95730870000727a6f55a5850000bcf7b1223f9d0000",
|
||||
"output_sha256": "79b84ffceac17847d6a2f5469d1dafe8387a64894e414a4e3b6a0df8340faec1"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=39",
|
||||
"input_hex": "80294bf63fc40000423ea8e6b7fe0000d55d02c3a4900000dbfa6ff1f6b700004cca2f8140c60000e69de124d79a00009f044e043e280000345112421874000059b6a04b15220000ddf0dd942b5200000e5fcc6c372c0000625ab663a3db000063203c0b83c30000c307d5369d5a0000663f00d21cd10000eb7ba32a8b6f0000721ba0b0008a00000f75e2171b6700000e9fa76aace200006c61c06d67710000d9b8ca029d5c000056153c4285480000f3314591f1e40000bcf5fa31744d000006f5a1b0058a0000aab23dae23220000e4c5a437202b0000f8aa903bc1280000e752c7684dce00008bfbd8b7f107000071c4e9eff2a8000061030ed50ba60000e343f54af78d0000097bf0bd714200005a4c7a27f10400002c2e618effd50000fc7accfe4179000003ab566c896900007b4588fed2fe00000bc86315548e000067c336eb9f42000092744483a6990000fc443902e5bb00008916d41e473200001c2203fffdef000064adb6f56b8b00008f4f77fce021000090f78ccb901d00006cf0f0d8016b0000f4f33f1261ac0000ad1398399a8e00005aa2074688630000a15766a8363b0000e5aa255bf7f5000078893871ebea0000670d84bc998e00000a09caa80da10000aa77b054124b00008e0379786ac900007ce58c46d15600001bec89cba4d200004ff56b0f7e0c00002f6e2612c23e0000d9e40f808fea000037bc31d7689b0000221b8f24de3d0000cbdec57fcc0a00008defddbc172b0000372e0b5b763600006bafb2cb87ac00000cbfe35104c50000b61e6dd4f07d00009be22de538db0000b8a6d9ea6a21000056823010dad30000b2859fa51b19000085c349ffa4010000574f9fcdb6a5000029d87718e30100000b00b0fa1a2b00002b6d80ed0f050000efcaebcf4d6b00007b9e56e6779000007cd33b42cfeb0000bee132e9b2a40000d460a9b6874400007f169617886b000005d44f7125450000d79e388aad51000072b3708b81cd000092caeb7781b50000b72774ca26a9000021587107b8f0000090867a8f40ad0000a1de411605550000c37a6c096a0f0000ea7a6c9f65620000afb4f34c6f8c0000f0f6c0b21ff80000cd61514c58800000bc5f7f3c45b50000d3d9766f8d5d00000c68a8d698fc00000ac2e6a71de20000ca7947cc4dee0000c463c0477f2c00000db52487f3650000a790604d7870000068f0baa5176800008a45568480e9000078c2de76c5380000a97868edaad000004dc797da25d0000033056a507c640000705f0240dad600009acf4caa86a300002435531d35d800002c74ea85af3f00008b0db4e11e70000045b48e8b4fa20000f8f56aca87a3000007ba33c5e3ef00005b4cc3e14c030000a06a02837ef40000e6e0b7e342460000708489393797000060a2ee0edc680000b39b3ac12cfe000080bdf99b79d000005002f79b4bc600009cd893ae5e92000088459ba292710000a97c212dacf20000ec22cb8e7da50000ad55d5b6a618000045b7c22f23f600008dfaffa813e800006de56e15de9c00003975b06fdc8b0000b7ddea98bff700008810fb4c2f04000096502262d38e00004a6934a89b570000233eb63a804000001dfbf02bd92200008a68448913d90000ed2abef584940000e9839b00317f00007261ec415461000008fe7ae04f4800002bf60388bf6b000011cc46b00f4c000048166f20422700008bd02c7c1c460000513e05fc11fa000077d98eee2c82000001f80bb3425f0000db2b48d18ddd0000da4567c18fab00005bf3e2a5f5340000b5cd9610cdd900006f8f640a9c2500009a6badebf2480000111a2f1996aa00007aff307d1095000026f09c50252100009f7366fda31d0000a02484616940000093809717f55200007778882df68200008f332c2b008f00007b3bac57d6620000b2e72d0b28f10000ca4e41a6af3900003f98b56f26ab0000e1f3477b39940000740a635bd9d200001b059089530700006cf6cbd98d420000fc49407847140000aca9bf1eadff0000eb1eab4075d30000b31e9b6ad1990000bc0d5b4b29a900000aab0a6693ba000059a5f5e67cdc0000c3551726e73b0000143327386ce100002e86b65b25f70000cee3b79af86f00000c92fac203620000875f21bc85510000a34beeab71ac00001d0273e75fd8000079c8dc0113500000353fddb056860000fc289401fc57000064977e2052dc0000a9757684a0bd0000f6f6547369a4000063d4cea3ebee0000ad83426fa3b0000006d3649b4ff200002ab917bf6d3a0000caab204a15df0000895db202288c00009162cdb2ac4a00007f5463e1a29200001c6c24f902010000633b43c9fbac0000e10a3deb94b30000dd92d431c19700005c7c778c005f0000bc486ba494c400004c586da3becf00002eefd534b4d50000a30fa423d412000061284a6309a000000356ab00ac830000fa5562548653000008a4e4f3945b00003b262e44c7b6000009f7605bb7cd0000588bdfdb12e100000590273a23a70000592566259e5500004900f4f59121000070243ca9c8e60000e0b854729c390000e21379bc71120000eca6735e79fd0000bea6d479bc090000e416c06ef44900004d0a8cf15ea7000064b9f54fa76100005838b965b1da000012b87e8fb65100005523f9ac4b940000e8b96283bc6b0000562f9e35f53d00003087d41f520c00005ced5623c6700000ce3f286e83250000e4cd479d12a900001f44c642a48000008ce484c8be8f000006c7c75c85380000b5becf95532c000019c2b2bee5460000e9f800c859de0000011f26663ca20000f9fc3c3e136c0000e4fc7d54e701000090b6ce812e350000e73a3f9a004400001d357c22a7030000",
|
||||
"output_hex": "348645395b210000d75a9b4347160000b86b3410e83c0000180f707b9b50000078804fa8c5a10000a6b0274739f00000b89b9ef1d2ba0000064d88e314110000b48760435a3000005fc12817263b0000cfd7602a80190000559c0822c92d0000743b3ffab7fd000045c903f85b30000096ccd11732420000cd1c1bac85fb000010051328433600002750e3468e8600004ced00700dd5000085e81ff2452a0000bf82f6562d6200008fb803d7356500001e792a39ff5b00009910590f821d00007e824bf6455400000415f4399142000010572755d7cb0000b3f5f3c34ebf000067a7de53d38a0000e52c7ddb9d230000b13723108653000031baefaca09d00006cd746aae26b0000fd566052debd000028f3c1acca950000b8ee4af3e7b30000464293cea35b00006a683800d3640000ed49ab32b20d00006d6e7f57adbe000099402f3d90fc0000105a6b1c86ba0000efb4528a7d1b0000198615f75c7700007a39f92e339200004aeb5292f5630000e2697559be960000ec46841c29c70000a3223e29c47c000014eb725d5b500000b0e409c229490000d82262c03272000025841937725800009014257edddf0000d71cbc4560070000d6b7c5c20ddf0000cfa6f4c47b520000b46dad05501a0000aa66ffbc7286000099b50cbfe6530000a137c18b8544000042b2d8d53c350000bee07bf9d04e00006f944f2ec75200002c0605ea8317000052bd98ceaf070000ace593c068e800009f14cc65758d0000dd7871aedf2a00008923c92870ab00005ddf4530bfa000005fe6f986362400007362dd2699c5000030b23b843f0c000020ca95919d1300002ce5e7de7c6d000053fb4fe55cfa0000beaad8cbcc0c0000aa41695cf6a100002b15e6af4f4900006b082743f5180000b5d0422afc2e0000f62609f959520000af15e9054f520000a46805359c480000afef392e457f0000755c6a25f1d30000b8da98c064330000d5696c14cf520000db3122b8878a00001dc900a729850000b375a64da8210000c9d251bebb0500000a9a6ba02e1800005458c5cefc2800005a3e1045817600001b5b425943d600002447a0f280340000c9c86bf53f810000fd5b34dd9d3700007310bf5451a1000097d61bdcf41b000023a982b57aee0000bb6c62d0b92c0000d746a9216d1500009081472e77080000754880c1d1780000fe630d6cb4ed000045221ab2597400006aaa1ead7ef90000125e0559a42b0000e3a1313d3fd300004c5f8798c36d0000e0a4797bcd6f0000248aefe49ec60000683bed3f0b2b0000b52868d500c20000c1f732f1112500002fac784a425f000094c14c3f46ec000029b2b6c1c9b00000388ab67960940000c5c2f445165e0000c3fd832910b30000db1d3bdfbc9300000468eb772fbf00002d644827b62700008364a1b2b15c00004bdd785b133800004331dbec7b8000004f8b3b7fdfb100008778370bf42200005fd7f727b5830000c1482bb1025d00006d45ddebfede0000eb74eda50c750000a8591fe65445000049ad4acc0f740000fb5acb1520790000480bc7021ce20000ea8aee79d8350000331d1b69b66a0000aab195f4329d000067abce2cc74d00003343a0c3343d0000cb8e5942fd3d00002a97b3dd7b460000c66b5b5cca4c000033ec570035730000cfafd5786bff0000d5ec46bfab2a000075786e1be76300004d1460df4ee400004c4a8d419c280000ce10b9619b980000d5982824b3d7000000e7b687cede0000b5a60d4a58d300008c86575a84cb00004d47e95e8dda0000064a72d5a00300004a6a58d053970000831ef8f94e2a0000822319e0fa30000067be7eee16090000af971a6022550000116aaf1acdc40000bebae619137f00002ca0dade14ef0000f3eaec6c01d2000017203cab649c00001c42507fe515000061d9dabf00b60000a81bffc55e8a0000b326f2d269d8000082f874fa55640000d5c33336f4290000eab5cd5f6ac2000025d7c390892f000032521dee4f780000f73477dd1d580000ad2ec36081e100009160fb87415b0000e6262fde3fbe00005630b426f63200004141dc2154cf000092276a8fc0c50000c762c24795f40000f3b32ba6113e0000587fde697889000000353ca94a7b00000b577f513ba40000c8ee112f492c0000950ae442d9ca0000e233a3e4cca600002bdc6d4e6be80000bb2ae19cec7b00009eab96de41c500009b711c7eb4f5000068958df3d845000025babbd2690a00004a7148db3905000070ffbbba2ea9000037a978b950000000b48212b4f8610000d8a0a830ca6b00007793a61efe3c00004e17079bac3c000090357ace70980000b522c27acb57000074f0a21f14cc0000bcf131e063180000b1643aeba451000030877552fe370000c8edb7ad5ed60000221f553ae1180000b3b02f440e7500009f68ce4d546400002c9026560ea90000c463e618dc150000540b1ec0ae3600006ad997eb997f0000059dd71913ac0000064e34a61e100000f044921c26e500000e7511dfca7f0000acaa4639267b0000228feb14b6380000bf3bed9cebfa0000a2d15e9dd7520000932fa7a170f50000eb6cfab6eff50000920836143faf00007fe8907f73b80000de9c6eadaf7a0000a02bbb7ea12e00006f7331fecdf100007a35bd12e81c000009195701cb9300006cf623d29769000097ccc7e3a9e800006aacc2ea40420000be03d626416f0000042cc4120d4a0000ca78c80742b10000bb47f3793f170000751fc2bf4a4600002889d72e302f000072039784af4900002d7f3c97a21b00006ca4787fd2b9000058670b6179a90000d4d1ab03ce7e0000e3a9f7376dfe000027b2e3c62ad3000087e30e7d39060000",
|
||||
"output_sha256": "c73bffa4554e84427dae19a8344982297862b04cec6194638532ddf8dee2edae"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=40",
|
||||
"input_hex": "6fb51ba4cb4600002d0c0a2953af00008fa3e4cc3169000077f0a3d5d77b0000866937479ff20000ecdf05c0edba000025b4b23707d100007ce8183b051f00000c5b585122400000728af13a64080000540fb5f7b5ec0000f9aa70de7d3d00003d2fcb5b9d8f000007ca98e1bb21000001970a5c9d2b00006ddf01bfe8ee0000abf98d1361c40000f6f604c98dcc00001ccc73b8455a000069ae72212fa200007c5582e9c581000056a6fc093b0200009a93658de5490000c9848d321e2a0000a098f1d61ad400009a190a663fc900007be93f6e9f6500004259e127d2810000ba842f02df3d000085b4e69a09a80000a262c169a6d50000352d3086ffcf0000c98dbde9ecb9000017093011434e00001e9b27794013000039677d2c93d40000aa162a7cc117000092f604d42e3d000021192840cf240000e22f73609f7700003e86fcfc672100003d999c4c121700008071d1267955000005283819a19200006fceaebdacbe00003c6691f98b1e00006374d752cdae000048f5f8736a4400008b67054191340000cd6713d9a1b30000e268b5f3ab1300001d6d4259feb70000dc82f30f1d6400008ea44dcee1ec00009ca33ee368470000616455698b3600008000e42db27b000015d1fc6eb8710000306944d5fa6d0000974dc7ac197d00002ea9ce2678c100006dbcf75b538500006c77ef21c4b800003da2c723a5f1000071bc9a2d7d2a00003296527c0d1f0000c51153fecb420000f1f4d60bb6690000a45e34f7856d0000b73b34005df4000003a489bb3fbb00007999459ba8cb00007d82afff765c00002063941bd8fa0000efc9153af0df000069e859fe128f0000b040d1358318000058de41c12ab100005699acabb41e00000db03a245fc300007dde118332c5000002f6593a641100002c4e03e84cb80000d8e7dcbe2b2e00005fd38c04bcd7000084703facafc30000766f0c8acc5200006af5d572ee990000e7f9372a419e00009d395d927ea800007ccaacbe3d1d000070fecaa493fc00005625891ba2f90000928427493f190000dc8e68cb90b10000c2fd64720ac300008d6ae4afa3c80000ef012752e7a300008cc6f7e7f5be0000bd8db1e9145d00002a93abae74670000a9eeb2305fdc0000fc891bb534780000281cea3ebce90000f634543d93e300008923ce1e3b530000316f57187dc0000034743bde87600000ed6ac63a6b970000775d8b8d21050000b37fac522e0a00009a6140dccd2e0000716457d1626400002a5fe881dcad00007b74007b75db0000683360f607ee000005ecf2d0bf200000cb674952c2690000db5930e6935e0000d2a8f76fa61f000038ccd5d06305000082ff02a9dac30000381c0dc05ad60000bdbacbd8e1d7000012a7442dfa86000042b9a8d83abf00000772bfd22b850000fd531216e6700000cfaa117391700000e2d0fb73b7c80000603d63c14a3a0000e1d77c9f32a9000074aaa007fe6f00003d09e89ba3320000df52e056c5f40000f0a6f8e854ee000015d0d21eaa0900003e09f4934b89000034f677e6fc83000097a0624cda880000c6da11578d1a0000758bcdcacae60000be158a32db88000096b8c7a5424b0000bddda5e48f66000022a5ec0f084200007982d787aec200008f5728b895cd0000a145a53ec3e30000503f4d1d421d00002b23b077f0640000e8a9eedbf26b0000c276539a20b20000b618c2010d6f00004865527bab26000038932315919400003d928c38fa6f00004c31e7cd3d2a00000000213f5c4e00001d15c59fc7e200006f08f70f0f5c00008f54986ba21200009260907ba2e80000db851d7feb4a00002fffd72504490000bc8e5fe7578c0000b46660ff200c0000366b583824730000c5febe6d8164000034ac4187868500005cdb67ee03590000e7498e35c6720000c0df0f821e100000ce6d7c2a85170000142fa70783220000ee422c2fc87c0000738c3c84bd8f00003e109b134abd00004a97fd5a367a0000f798358c621b0000e5588b3a16a40000570e41c0083b000042def6c1f4e80000d7ad3c2aca6000006f6db50bab8a000042b850847fde00006abf220e7d500000267f70d9742200008cd2c58d34ce00009aa8b0756c2c00004d22f63b1edc00008597604d5d4600002bbcaf5e4ab3000060b128fb2ead0000a49a88b9291100006868c6e10d1f0000044be8153e3c0000a651ab60dbae00001c2232023220000037f2e01822250000de74519d5f250000485e6cfe353500002c1dac8929d000001a0b0ac1fc0c0000b89add38cc4e00005c78cd60896400007a0079f5835f00009b428a828d250000ee1f150182bf00009f95cfe6b0b000007107e03cf478000001cd167d4746000027626cdebfd80000367647604a7e0000167f49af293e00000cbe9944bcca0000a6e5e46f580d000056a43b4d04500000207336b2098e0000761ce63abcf60000fc424e9d88670000c6a3460d79c30000f6882f0945f30000b5680bb3d0aa000038c27793b601000099c15628a24c0000f91392ef23d400006cf8dad6827a000018a32f82f1310000db375c972f130000f09e06a24b95000071b642c54d7b0000dbfb74df808700002b40f6ef78520000219e789007720000a1de536465810000f2f5c8d902cc00005c68f4ad1b040000547403b95ae100003a115a48ff59000095a2e77f61d00000c55bba08e7a40000e3948a9699a6000059a7b0868429000066d4a3c87c12000022482ac69d6e000094104c2c459200003ba9abd1c4ed0000291856c0b2cd0000cadf7ddd5fb300005606dd3140b500004dc214ad4e1b000060d55d6d7388000034a0cb21bcc000002e3c314e75dc00002f653d7a07690000",
|
||||
"output_hex": "6cc00c3a130c0000cf535fe4714600009304446102490000689a338e29c700009a24c5afe65600007cd7c77ed9dd00005bf778c8be350000d30b1d4a23f60000f6405ec1cb5a0000a7d15ef3d59a0000df64c57e3c4100006aff602fdda20000431fa815b01700006f1fa9b7570b000064b8aff8edd50000314dc670a8a500009abbb4d852bd0000d2c62250cfce00007a89ea8a61330000ef316aeb2eda0000663cea278c790000cefb3be3b6f20000d64bd22a3a4f00005c56675edc9a000022742879159b0000e48449b545da0000a4244e0e2d4f0000633b457a1eda00001f4e73bdb7da0000226e9cda948b00006e800e0bcdaf0000f7f9209b1f640000adc75dca16eb00005e44c1272c650000f20d2622d0e900007e10ecc5ce010000c6bce2d441f700003acbc0dd35070000335e09d6dadc00004239dd8668a500004233221f873c00009df9e9187f7100002f287e6d78470000c731f8bd99e400008a224d5908c800005519b11dba3b0000ea7b8f01a8cd0000f716835a611200005488cebf1fe6000092eaf0cccef7000085aa8ae9bc860000e1220d0a08860000c6b4f5d2caae00005171e296a655000020686da3147500005dda9e6846210000e82a9b61c5c70000af0278223f420000ee686441373a000081f6347a1c4900000011a0ccfd2c0000143da8ddb31f0000e48f759990f900007f271dcf2ac400009f6c8e87f19d0000875bc5a554630000562963295d9f0000533aa05df50200007f3f0e6a38cb00009bf79c4bbe340000bf8eaa1c3f320000d05d5925f49600001792c146c6fa0000a6f410660222000061d52715d13d000012cb26f9aeb70000eb36da805f610000e8401b0881d20000ed2dc77f083000005ee35bda912c00003d6a737adb95000030dba29b6aba0000d64fb4d671cc00009aae5196cef80000ad565ba9e910000018e5240fd90c0000e30be348d0a7000076d79897ece20000dfe877d4a065000041770362839d0000787fa392c76a00005c997ba3359600005fed178b580000005ff9351b92d00000e605f305d7360000e5959f2de26300001154e4525309000090d29b4e52c80000e2d3bcb9dbad0000243546631f8500001abac3e9046800000c158f3eaf5d0000537b05063fd20000bb4cf6d070fd00006d0beb47b84500004d37d49c052c000030203ab3014f000083994ca018f000002e77a99227dd00001d765bbb31130000a89c21c54b8a0000cf52b26adcad00007729a564917f00000228699a0a2100006a1771133d8e00001b882a3ce4560000452fab72ffa800008a84c0330b0b000033951e89d6a60000b72b36ffe4670000527ac751da8a0000611ac2821ea5000022fb13ff453a00002f48c32abd3200005b92be7f6fba0000a5ee701c111a0000ff4258700201000043bb5a33908400005ff7dcb6a3e60000c804998203f20000a8c81c952c8b0000f5dace70f17000002e9679e4952c0000ac9a5be77b9100000f411e68503400008f42b6402d6d00008e654579128a000070f954d295020000613633f221e90000c41a0da0cb720000e5ae804504ba00003213d5480e1a0000f0ffaaf8a5010000514ecd1600230000e1caee1e8e20000035374233e383000029b8b73835df0000e92e2bb3e8ad0000de1b75abace200000bc7d3acfde30000b5d4b585424600008999d709e4a70000eed1c8c869160000d6c4bf64351b0000bee159cbd68c00001791a913b2f60000ebc76b2255860000238105072984000044df50da907100009236d3bf8f88000067095305149f0000f8ce9702878e0000927eddbfb65a0000d570dfc62734000051f1c38404f700000a6fcb6c6f500000daf82d8b066a000064dcfb55e2620000bd79ba17c9e5000048eb9f536e380000d133cb58eaad00000a1bc60226d40000329c5198c7e20000759d912650720000587b63309fac00001998ead4c94a00008b3fa0a5d93100007f99c0bec2990000c1592320b20b0000f5fa4b8b6d75000018dcf9a4b3c800006d324a79ba860000a619094372fd000031a6dc3c2c5000007246659f94110000333ca243ecb30000ee0c4ce4c03500004aebe237255a0000e3433abaaa2e0000c3bf0245eb7200007ae2465935650000f7cf519eb90800007882dc3512fc00001814a1a707c70000aa224761d88f0000f58e5d6242570000e6cf1b54d5610000847d57ec7003000097694e8e947300008d2b17df16830000b003c2f1fe9f000040fab5fa0e0c000023ad8d2ad8d800001148595be9c500005c3366ca6d5a000006e2c8f443ec00001ce9aee32c160000d150d90c32b100001a233f3e392600006c1ff6ed22450000547fd705ae740000147a2722a8250000f348f0282807000003dda9ef4cc800004a6a83d38634000068e470730b3e00005c698a1a919b000070063ec6c5c00000ebca5113c9a30000e512654611f100009aed5778d12a0000ab2692c833940000a253786f335400005eaa49e68ace0000f7bbe6da016e0000bf7ec245c7e6000005398db41e6b0000202fe49958ee0000fc521eca2ffd0000cff2ec73e60a000069548864ab8c000069ae90b768160000c3f77d36db410000a38427694db30000ccfd7214e718000066f591de73f1000066be17cd778f0000007ea31f17660000bd69c47fd75c0000797a765e957100007a6d5648979d0000655ce9cba7f60000a31914b42af00000b472123d74470000e33b3810e25500002af41c04f39f00002f3a0f0d9d410000f8f0a0444fc10000c7d04080807e000002d0ad98efea00004ee23ea1fbad0000607f167c1db20000a38f56343b5800001ed29be455100000eec662c50b3f0000af3a98717f700000",
|
||||
"output_sha256": "fa3fe3968a2c087c4cdf92c91b1db0aa2d2042642b4c284f625290184c788244"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=41",
|
||||
"input_hex": "ca85c8dccc730000e31708e564750000b8e7e107e96900004008d1aad1aa0000cc2ae7b7613c0000f3359e6d27640000f595c73d20a5000037e0f2c78c2600001cce91e806e70000bdadc266461100005b00fd5c1a3200000e81bd3e80450000ecd9719cf11e0000bd4e80dd52cc000068d2fa13f17800007300d00458d80000162a68ddb33300006fe8002b74b60000a122cda52c6400005d6fa7ed39e80000f4bfca23eba2000056627dbe44790000315344b24970000079b910aa5cb30000b02f0a08082f0000ac7e7066f1f2000018a58779271a000010da5c4efa91000090a89ae1b90a00009ffd451f20a800006fe9d4a8f83f0000ab0f3a2cf4b00000fe236182bf9b0000a74aba80a7a60000ff5deb886ced0000d3b7319934c70000de04afe8e84c00003953561a10470000d4da2c61a1910000eb17608766560000e0d1a34c183f0000f174a1267c6600005ba08ba7ab0e00005a75d73f616b000042034377456f000070a453e592fd0000db5ddcb43e3d0000f33790266fcf0000c975794f4e69000042b200c9cb4900004c2012f3f4a400001e7ed835e3180000a0ac848321ed000027a3895a07ad000069e59f81438f000041967155be250000367c341f0e23000019a0e3e4639f0000ce32652b53460000ead66408add00000097838990d7800004717b62b3a1b000066f8f210b4fd000027fb951b1f7e0000859d4f2a074a0000e7deabafd0f00000b7e9d76382ce00001ca814de03b600009358c22c78ed00009330133a5b9f000059b5cc0f141b000005aa169a06f30000c1695027bf39000090a9ebc1897b00007f9b0f09d0ba00003c83adf468a80000e0c7fc1c549500006f82807ed939000093f3df62108d000013a6bcfd98a000000bbebb0e691b00006f5ff7b60458000099143496af030000d5fe878ed1cf0000406540824fe600005bd87301516000003f26b18106b70000699ab4ba6e6100007cae5ca2526a0000da5e01698ecf0000bae14052825b0000834a3193bd790000ab99b6e95edc0000317706442ebb0000a975ded59ae9000014abe24dda710000cb570aca3bd50000042bdd75acd900009817c5ee4a8b0000e45271e936310000ea815d3edc240000ce638ebef56600007160dfd5fa97000072121bfbc41400005f5fb068dbc80000b5b9235c1d040000de7a2c3b61dd0000feb7730949640000350c7f4ec7a800008ed5674168720000c98a65730f68000073d9a8859d410000bcfc2fe66aaf00003775683ab5e300002c6a38a997dc00008116222717c800004f75b53578810000307f0372efb9000032a1753574ef000045adb7d35edc0000981feb5d67900000d4153aafc3e30000e3c3025771a50000ebc978aa903b00002fee7db27bcb00008abc75fefa0f0000a13b5657d63100000896a915281c00004f88a0a7d83a0000a729890a485e00007080e18a9e8c00007cada5a5e8580000e87bd477147c0000aa9c0cd539b200009de4a6fe77500000a9126c4a9b020000a51194c7e77100005d2b486d96bb00001f28969bdf4c0000a08d7cb38dde0000377296a5e08100005f66166de6fe0000082209d1764400003afd8c48de9e000027ac8641957f00003556be8c23b40000bcfa315ad23f0000629f04c9c24b0000cd5ba66f5cac0000d8b62ad257a900007c0a6b8cca760000b9604524037f000035f21a58ec7000003c920278ef6d000063a1c1aaf77a0000ec001d28c81400007d80dc635fed0000ac7ab8b513e80000d91fcfd0771d000016f20363a69d00002d62e44f52c50000fa317f029b1500004a0638a8e8ed00007f43cfd35f280000e5161e3d07f7000024406b9d6de6000005b2081d142e0000d9dfdb08ece3000071c6f6dc123f0000a39af4efed09000025069b26b27f0000499358c9a41700003fba6bd4fc0200003273547fb46b00005ba989a222400000ca54f385f81d000094acd1f4000600008b5cacdd7f2000001525823270a4000032a5e849fcd400006ca49be9cf1e000092a1cac8f6e600003cf1132c63a4000039639c5541c500006b32889bd6b30000e705970190fb00001766498ef66500009871b510f9030000ad99702426c30000a7902e452fdf0000b3ed6abde8860000e91744fa60f10000ca1fb8db821700005579eed4ea850000f15f2d52fb6800007150871fc89a0000c2ff4c1b367d00005ff340d446ef00005b61d9e5b75b000078ad1db1dd400000de02c64fdff70000f5b5b6b9ef630000a53d5cddfa14000044ee8c60a9f30000ad728cc95d670000b7bae1c5344700009078ccee1d570000f340ba8623ef0000f080f0ae55290000942e398c15c2000028d9a813900b00004bc3e395edb30000678446828c830000dd3b92c8946700006ac9d9ab02860000fc1ec636179e0000c126f646fa8a0000ecb6dbcbabe20000710d09dd74c5000078a7da3294120000f95d501439620000d23d88b72c2100009856944e07660000dd146aade65a0000b8ebfa0aec8400000bcb709ba0610000e6751cdcd14e0000dd1b2cbda49c0000eddd7ff1fb7b0000c701a9f44e620000abf8f79ccb5f00006d4ddfeb3f4b0000f755946d71f600005ce6c27f483c00006984ee11abe50000b8ff26a500de00000bc262af0c80000067fe38d2cc01000083e6b8a4854200009f69c30f4603000023917af67ef200003b087867956c0000fbbe43451a5d00006e8a676e58e0000032e5a726a0d80000736c4a581abc0000062b3a106d04000010d581a65e4e000034a7da6c3ff40000c82595f475420000abb2c11f972f0000e2e0feb86efa000085d5aa9c0bf80000dccc44f9c7b600000b4fcf430d960000445f9e0105060000",
|
||||
"output_hex": "4cd54dcb1ea80000299712fbbcf90000b766cb1a18a80000b55d837e6d8600003f35093d033d0000bae52fc246380000966e16baaa8900009630fabc538000009d9a22e73abe0000127d67b947af00000b63ae7fb1760000370c3875ec620000215dbd883fef00004e505f23a9750000d4031bcc342400008db9982bd4e50000b23c7df660e10000893995e29774000070114fcdb115000021a566d62ff90000df60a42d68a40000641dc6cfafb100003a718377061a00006ca558aceb500000de6511e7412a000019004646b43900004e27f56e613600002a1144f9a5840000cfadb166e0b50000b43ffd71bb5500007bf618e698f100008f46655471990000373b8727718b00002cce4d188ac50000b0c71de6077f0000994310997dca00001d8d2e8009070000c0a4c1ad14ea0000ff1db039b4a100007d074daee21b00005b01a6df444500004e0dbac62ec40000cb6f98223665000041c2012a9bd20000560a56a6f65300002e910841b38b0000f6433c3f4dfd000009bb8a81f8af0000740ce61c565800000a935ac655760000d38bd52bb81600002eabe3a4098900006387acc43ec600007b373a369e5d0000c5110f6551b200009bd7f2db886600009cdd5dcf9fb100005545310566c70000970962599f300000979edf1cd5d200008bc42e434ade0000dbbbc24f824e0000a528412124d40000720bdda8d499000094e8625ed3cc00001fbf3e3175200000a00e96499ed000007bb6716377770000a81e23782ded00000be6df42202c0000975f4862f7510000ed6614f58e6600009ffdbbb6e9dc0000b20a9c3d4d5500007b635dc9a788000037ffdf68337700004f671862108d0000adb26d1545ec0000faf5228db3260000fa67642fefc700003a34d1ad14880000bc067f4210240000069f6a66546e00000973d2c6630800009616298301e00000ed680b29cc96000013500784e8e800001ac42cb309df0000419236b9cbd300006084c9aaa942000072b6dcf9d5230000f8b9b51e86ff00002ddf2a8702b800003635e1847d1d0000398f97f27bb5000035cd662a4164000007f374b564f30000a70d3cd59cc900005261d04f704a00006e8a446b0c4f00007a73fad2581a00006b8b8365c98500007b841aa832dd0000d9bb91a1fd7c0000d6cbea3a88730000df78381178d60000af9b76fe8fee0000ded51fea662600009741e600249300003c4b8c18d511000024b51c3355db00007c97e543bfaa0000eee9c0c36aeb00000bf07537eea300000bdd601df25600008f271a1a99c200009dbacd7495cf0000037b03f3ae2e00000e8d12fab1690000c09e1325994800000ebdcae36ee9000084ab3d51dc1f00004e6c2264ad550000016068632637000054443a2853270000668cf8c1609e0000516f5614bdf90000b1ca38884b7f0000877ca7b117130000b8822e65a01b0000fdd2280af92a00007aa784caac8d00003e5c078b5b1900007fc482afc9150000cda034a157ae00007e9ded65a8e9000046514699bac800005360cd4d88170000215ffa1c31c40000f6db8709965c0000034f9cfe5bea0000a861e92bf0970000c87766b6b1920000bd80d734901b00003fa9dbeea9840000f26d569501c50000594890287e81000004693e47867500007b0205c2df4f0000c2977cffee480000f70d4fd1d55a0000a8762320bc6f000046e240c07b880000f20959ee881a0000aaae5d51eb1c000040a6bc8b53d4000084fc30d108cb0000de301f8882e70000c2493514d0e2000036d713fb58d50000dfd00e89c49a00005f6ee6c34f200000d59546beccb80000ff8f7e663561000062c01cacc4680000498667af1b370000c16172713fe10000bfcf071197ff0000fda1d1f0a67d0000d342c3bc18a600003c510b2f619000007bfbdf24166b00008624c5173c300000e08495722623000037205e3141080000d3b6763beaf000006cb8d1a730ed0000a881e44dfeaa0000f4f799cbab500000a900b27ec06f00007576afe1b6a0000078141c94049e0000398be8157c120000a8d83657d8df0000a1c68f015bb00000fef5517135d10000d61bb8cd16700000882de0425c1900003f8192e8928200008f0b80f0a379000010004f6e1c9000008de3ceb172a6000085798f31b27e000025b019032cac0000847f353e142000008a48018f5b8f0000bbafcb4e2e3c0000dbcc55fd9c5d0000b25787111b620000116025d091980000bc523c9e688400005e763735c53900005c4ecc591c7700001773eab5b6e70000913a6826897c0000527085d93c4e0000cd4e9210edad0000f086ba1a4aac0000b1ddadec403500000eca981d6d12000088cdcea0a9e100006e4e3bde30a30000cb1d01898e210000e8b31fed3ab0000026fb54bcca3e0000fbda7fe9621e0000ac62e6f8ed410000d41277e1732e0000862de5755fb40000756e1c3123850000aeb9edd2a8b1000025035d552a9d0000d53513182e220000239378ff8ded0000f10c4215affe00000de39c12dfa100005ed4a402a1ef0000576b4f7dbd970000ebd8e81f0fed0000aeb7769bd06c000012b675e46327000033a99b4674920000f052fcc314f90000b5a25d51f5cf0000265e900e35f70000a8bf5078559e0000a52ecae3a6750000ac546c840af20000c07ff25bfdb10000781bcc415920000071cd17009a8400006ede6ab0884c0000c6209cc112c500006fac16b68319000088bc06fb607c0000bd17c68280df000094474f12b6c7000000ee99e09a6c0000843be28d87f50000e60d9a5deec30000661e907a833300005d25d0477ad8000079cc7dfae98700004312b3e64b0d0000af87118758ad0000c5ad7bf8aaff0000",
|
||||
"output_sha256": "ea557e7a6050975f7aa2eaa627ebd4f74dc02536f75622993e285f58123b4fa9"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=42",
|
||||
"input_hex": "c10f81fe19e70000f89b4398e16e00000f4bda5f71840000d9e478d7d678000076cb21ccc2c9000085b4a569bdd60000bb587b1f4b6e0000fb9eb86adc54000068dfd6e0cb2e0000cf0deed3deb700000b202caae20600000ce25fbfac8700005933446c444d00008ea028ea6b240000ab88871788b500008879f6603f3600006d0462da00200000c97742fb60f00000bc6ce15e5c9d00002fea25d6f45b00003c6fde68198700002aecb4f342fa0000f9cdd24a17db0000faa25aa2881f00003e0ea15b38e90000781c3a91ba9200001b81dfd57a7b00005c986fb6141d000099af3f1f8cc70000b49958ff36a70000b9a63bb413d4000088f873c588850000c2d80482bc97000075d72812bc0400006ca256a5fe8b000044de90823e1f00003bc08733a6340000bcd0f2b30cc400002d0ccdeeb59b0000ba6a9406828d0000a7479a47337f0000ee9eca064b770000244d282767e800003815663891a40000cc1b9dd9daf70000d5cfcdc99b0f000079766661b2fd00001f46d6f10261000007a675417c3200004211219ac72200008db9428ffc470000ee6acdd7dcaf0000bd48f0d15f3f00000d3e50d2c12500008409ff9904180000c7818c3552a800009b8b2b3967840000476dd212e4ae0000a5ffe327b9b100002e1bb339fc550000a89d3c45e4c400008a0b8eabcf980000cfd4956b61d200003a374f1a251b0000be60b3cb546b00003af1b89a63df000091d36e2389db000023728e9a6b8e0000c689a5d366fa0000df64777a549100000b47d05a0a3e00001e0fe77c0c86000063954af0e5b400007d561c80c4260000f4345a520c0100003dbf404c337a0000679954f3c7230000621cf163f1fb0000050325c692940000a488d47c25a200008d59067ac5dd0000896134ca378000004640b65318320000801d6ac8ca6a0000753ab9f0864200006bfbc6a8ff0900002825cdeb7ee2000038eab3e46ccc00004504c4a2b1f40000457144020202000097907b5763660000e3103511d2c900005e628e441a5a0000f2f46c49b4f500002ae8c05d6b92000029fe20513f560000a9048e9252d40000fb586e3851ab00003f82cc326627000075906b3613f3000007f9ba17f41a00001ef1f72f8b11000055cf713364c4000086668337c35f00008d396d2b73f3000080f4d2d55511000058f3848531fd0000e88cfb10f26600002ca662f2b5d600007f83cb88f4bc0000eb9f4ab9a0b70000beda4a64edcd0000d5e5179df9dc0000d20c678875630000ff453c88f1a800004d9cc011bb0900003525de187ef2000002b6c14c2dcf0000c77b045994070000790069b0841c00008365b117fe980000ada01192af2d000059a2b32f0d7e00007de3d0d512ad00003356ebdaf317000099f5cdb9b4290000bcc4332b162c00005f755097996c00007c52c1dbd60e0000ce68bb2a8fdf000060efd57a7cf200002f1247888b5f000036a440305e6c0000b593d94699710000aa24f462d38700008fc24884f05f0000e3eb6150245e0000f6ddfe7bc8010000d4d0332545f400008b94182cf9ed00000bce3dab2caf0000b0c53583098d0000f2c5c8fcd0ed0000bc61c990317100003f8b5f5c40a70000af7ee9ca0ecc0000b6260f05378200001067569502a30000aa10cea8c6f20000718f8c969cce0000aaebcd120cfd000026614d49b0840000946ed4471aea0000ae212edd623b00007a3ebecb916c000009aa9b0b8d11000071305e96860a0000894982357b590000deaa65c244160000c0addbb1fc9f0000dc7913d823940000aa8d60ee759900009dbbd95dd3e10000ea3bf7b0a28d0000198dc7b9804c000040507e02745a0000526d347be8a50000782f09e8eb750000168b2b687b0c0000a5fdd511a971000062f76e922fdb000034354f249bf300001f9c62922d8c000070950be9910f00001e7038dd77f200008cf44c7b684b000078be114353190000d6c33b7b19dc0000bbd2ebd1175400001558619a0d430000911c24e9a6b1000057c0a5ca10f10000245e32f8b994000027a2fc0b463d00006de8e505917300007d54fbc465f50000c5e9d702681e00008257f3035b9d0000f27f0983a1db0000a6d379c5db24000023f02271e26500000cbbcfb1851e0000d94348e6b7680000a23ed8cd77de00002f4909d4339e0000e50cbd2866a30000bd234aa398f80000e8694dbbefcb0000f0e14801a836000035fb660abff50000bc427f0134be00004309bdf6851b000005cd341fd0c20000c5da076904650000bfa9a93762070000296ebacaea5b0000155de24807d7000068ad6e8f9d260000dce4f7d903ba0000db2fe079ea420000db653694fa7c000063d31f2175450000e35e5a3dfcab00009b083a8532ee0000a08823c3e142000058528387bbb400004e0d7e5ed5ac00002fa55d4c04d10000deaccf3d0ce800008fcedaaf8c0e00003f463c8f35a10000037a08e1c7de0000fc10254045a90000cf6223eb4ddb00005b3dfba1658800009977ebb43bc90000462500cd881c0000535f10e1c9d30000abe0502f1e00000052448d1671460000821f2f14ccb300006f87439109ef000081fd9fc06a1f00003695f3dcc92a0000821d8fc194210000c435478e2ac300003f405bd441490000ecc2f08b242e00000896bc89ea68000026915beab4010000c21b62b473bf000079a2f167fc9b00004b5682bf16fd0000f73400c09ec60000da63e3836e130000cc6da1def1860000290a2b3c2c79000067ed82161df3000072ae63b36fe600005422477206c60000467a5d5ee4f80000fe6a89701586000069da8dc0e20000006e5d63e4d9400000ce027eb51aca000057927ff495620000",
|
||||
"output_hex": "01b322333eb40000f9f69b443069000069005cf4338700003fba22bd0224000036b62c062d1c0000edc94c424f5a0000c0d49575ff9100009e95909589a4000099c68e8f4dcd0000495c8954817700009add3bcc56d3000003ac32b9b0840000e75783cb2bda00002a68520a57fe000046def6abd67e0000f275acd8879d0000db3726a690800000fe237c0230d70000e3bc74ba9034000099b0287c6a8500009885570bd229000013983c1e82cc0000a14fca7383460000492dfe1ec56f000057dbce6b7ed100007beb2dc497cd0000601c5e7e52600000960a3c513b790000fd9fd7982ecd0000da268420074a000033184d96d9b4000022a64e34b5c7000046a2cc323e85000055a291e78fb30000b2f7fcebdf1000003494bcb00372000039e443bd6d0f0000c9ed535f4d140000ac1273f9bd130000dc8d94f0d3560000f5a0b20dd90d00003ebeb8a7b38b000041d08b15d1db00008efce69fd26700002153c1a7cfc6000061c6b5d92a950000e231e1bc47a800006e98403eac34000074204b90cd5300008b022a8ee6af00008b86ed184d9900002a7252bb027b0000285e851e98510000423baf4bb26900002ff54d36d9b800007efa7f48594a000047fe9ef0bf940000e719f49126160000c344b02b8b6100007ad07fd5ec4f0000853155287b720000378fe616fb9f00002162008235a20000200b18ba29f80000ac7fb21296c100003f695e069f6100005679af02cb060000ee91dc6dc2010000a2b2a85f0e1a0000aec0d8555ad300008499f153071300005eb4eef193ac0000efd7358a404f0000e6e9b63a630f000070da1b192d620000192d70e13a9b00006581898cd89100000ca859c18d78000071adaf604533000007dd3da71a8d00004d03c238f0ed0000f57fb442e8050000749ddf546f780000cd270377f93f0000e6e545cb39550000f49480b038cc0000d6247feb58ca0000ad9b63144d5a00007434b786588800009d45b4fc8a4900005638cbcc430500005c4097109cdf0000370d6a4a2ea00000b7cc6637f7dd000027cd28b68b0a00002193b5a7b81a000002c54e6ed018000099409bac213b0000949c9f935e500000c8bf68ba97ca00007dfeee35c6de0000e649527fe4170000193679da9c5a00004f75bd1507e100008bcd77e0978e0000dd389ff0da5b000007cad7cfa6570000862224298fc7000095314aa98f9d0000b327c94698620000f0f990d482700000273b1f9d2b1300008e694c30454a00003cdb26eb95a9000081b20e2235980000a744b825d89c0000860bda80bd450000de33c3bf253f0000da48e4a9a469000029c9f8d0e7ec0000c03a464e6d700000d5711a53fb9000005f97b7422ba200003da293cf44880000d81ab4ee41e500003943e7e797560000767386b1f5240000f320c7b23b2900008be74841904e0000887738fe343b0000ad29470f4d960000ea0cfc1f34c40000908d33fd3cad00005d9048b3691f0000e9bc803d4a060000b420b0ad73960000da2ea4258994000054415bb26f38000010628d5c072d0000384d3818b7210000712eff9fec0b0000ba6d49ca58ce0000b537d076acda00005bdb4e163ab9000059a69ed380ac00007f247bf77e680000de0f39f87d950000b4344f7f6f4a000009f9bc6008b0000059c00025907b0000cdd1c46868d40000351ebbb9ecd50000c909814442ac0000b3459662bcae000081d9a97b1de90000c1e9e206a6930000faa01b00a3a600009d17a162f1b3000051c14be837a6000045ad1da4baac0000b201568782410000e7a0cf56503d0000559198e52cd50000696ace90c16a00003f2c91f82dd8000099d8a2d802860000b496e3d205e2000039b1233007680000bc680eaf9b340000a230edaccb76000035c57ae947920000ea42500e10770000466649c9de3b00003f6d72c4fc400000cb71e814fe8f0000df4e283d1d680000c3a04b6e40c70000a1a24f226ab500003c80493998630000e8ddc8ed49500000450108fb53f40000a8a4be6ab68300009fa5dbd38e9600005aaf02d8d85300002c361880495d0000596d9e5b102b00001fe818021a7c0000ade329589ddf00004cc89d1e85880000e10c31081b96000050f1f34904d10000c6cb04032f360000b50a4490f4c80000ce2fb58f34a10000a71cbf2cab6500009090666bb4e900009b8f5e1c24ba000041b8eef8f4a900003e8e2c43bedc00008f947267a3b400009451e059596e0000668406e3ceaa000059cf18e18a3a0000849b64d2485b00003d428348b9d8000012e09a12838300006f846787e430000035ed624b97e2000046e5473bc6ad00004b7773bb7a3a000065f76a66772f0000d834de72fd5700008eee62fca9750000e3b3ce7d5dbd00001278a067e74a0000a4183ffedbd9000005129c8edaa400009a1cc74aac6c00004587cbc3619c00001e79ba93831d00006380d6191bc20000db5d7cf06c5800005f8becaa999f0000e8ac319512d50000d7be1da4e05c0000a38c31f0b9c0000027bfed9fc1d50000d3773c7bf2170000e0ba0c4689f500003f21cb7d947300001e38a716f8f30000dc245999441900003fe5a50a820700001884be21dde3000002bd28554d9700005b922c0679850000169d920db4ce0000c855d01f474f0000f52344a952b90000b7d8a7aba35e000057d5b8b1084d00009aaff9aa09690000f2034691a86600005460b41b076d0000d609314e683d0000d179c8d117da0000f9e5875f273d0000575af2c0202c0000ab204a8ee25700000ef55c275adc00002a93833242980000742a93724cac00004c7e8ba6275200007232ce8e1af900003949b8a8c0a90000cb87d027ba550000",
|
||||
"output_sha256": "b1773bc125a42b3d2bc814de8d9a4a97718b7aee349126a570039469856e9d42"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=43",
|
||||
"input_hex": "8c39e6303b30000076bb80b1ff9a00005dded584fef60000e0137006f7810000fabd7e7f26ab0000166e869b6678000047fd4202e19b0000e0279c2ee36e000037e24830374d0000f155721795f2000091bf5057bcf300006e2e12d3549a00009b096349f46b00001a2101a8a5de00007b9bcb2bc12f0000debe303e8f610000c1d232cf889500008e74935b7c530000d6f971e9e50a000007af7963dc78000017fa649e6948000004ff59048b890000b10ee2e03e7f0000c9f59c91175c0000a9bafd895fbe0000673a9daaaac400004196adc8f02500001beff0bbf1fd0000b9497f0f09da00008f9ff077929500006a4afa3d32f70000f61257d259c200000e6424528fd300003e5945f6762300005408d8a6805400002f6eed09d2010000e78b8978dd5b0000f50c5e663287000024d83cc7ac0e00009aafe13dea0700000853ac55a62700003a3269515f70000011e463deb6d700009fae4ace2fa800005942686713220000645ca47876590000a197421fb3230000b8dcc02d7ee7000041bb517f1b6800009dacfc9581f90000f313352692110000ac636f40de15000006abb631abb0000071a3dc8f1a5b000030af41e7227c0000039d7eebe8300000eeb3dd86d6170000e9adbe40aea30000e99c20b60bb000002de5a2d073c60000dfae76f9e8d80000dc12f90b5e0f0000255f0fd14b9b00006f6d129579fc0000fe8e96ab181f0000d688c7de21ae000053853505871300005f5cb8d7c5e70000bddb21c031e50000d5da7224dacc000005400d9ec0930000c863295768150000242bf81aba4900007d7b31989d900000e96c972815fc0000a31abcd531660000c906f8339960000092ed6f17ba4c00007a3d425dc70700002e87a994f6d60000698972ad9f650000077a74213ce400006a40cfd58f320000eccf827c290300001530df9746da0000c92c026052a1000084e206f3ff0300009baa8027bc7e000065873117ed660000a44c17c8050d00003fb94b4945b60000589613057361000006d96fe66f96000048a9e9572dc100003a085a59a3570000d596eb92339500009dfbe6888379000033fa96ffafcf0000ef4edd5eb9940000e31a939b90ec00001b23366be896000062e64527e0770000f40628ceab920000e720c85a8c920000fdb2c19f81100000d75f04d1dc5e00001b44a4274fea00002d3afe582c2500002963d3f68e4a00002db140f4f6ad0000cba499a60cb40000554641784a510000456047cc19980000d8008a6706bb0000d6fc2c832b9b000030be868149b300003fb1133731ee0000780fb13d2db8000009cd4d481892000086904c266ed0000015d568ba0c6f000023b60eb6cdbf000003c2473419ec00008c47c749574a0000a8919dc74df60000bf8dd107abfe0000f5f0e9f97bff00008cb4f0f5a2620000f6ee7e45f3de0000c10837111b8e00001b673f4790d00000803f2baeaad300005a880bcef2fc0000a91a5949f59700008f09857e4bde00004de01a7752cc0000200acebc76ec000047dcf2fcb53900002f20986018b60000278b6edb13e10000b5b63df9ef8e00007699030103360000fbd1002d921a0000fe522f099ddc0000f308bc4f83ac000027dfae522de30000f31651bcd89d00009e32f73cad840000b21dd559a2160000ea997bffde740000ef2e53129aab0000b4e965e3e83c0000150435b772e00000df54c87fd93b00009acb6a03c1360000b81419292d500000eaca68ab70ad0000fb4788f5f4480000a0d18565eb4a0000f6c4aa72b21200008dfa2493420b00007f2470da1270000002caf027955a0000785b49e34be800007041337fa1ec00009d156308bb420000fb516ba7966b000073597d5d13fa0000b4238fc8de5e00004eed916f034c0000e33d4ba30192000064a79428208a0000fb41a3f0399500009831fda993c80000f48385742303000036b7d05469200000d33f062e2c2a0000e2022b339db300003e585399d22d0000d50eec289fa5000079646a95cf32000071a51b4066770000463640c3e670000073a0e8e8186000008355b256dff4000027ab782494460000560704492a820000a3c2e08294620000c22ad863f88500006c256377355a00001914760aeb310000c74e125d1ba000008e812e76b6bb0000a6d7287fed6c00004e8759700fc000009b30e18af7f20000aae1927ea42f0000324c3f158040000064bf036d5beb0000126d17c640910000dd38edc6d1ec00008534c2fd856100003c9f870e1cfe00006353b56d425b0000b1b327b4104c00009e664b402b310000541625e9a6820000788503671fa200002baddfb0e69b00009addb101852f00006d1bea8b476c000064e7a32235c90000a1d042d5970a00008d2e01a06821000036cd415709ee0000ce55b3b520be0000b43b72d474aa0000a6960e0ce5b80000ce7a854139c900001eb4127a1f2c0000d17b6dc12e370000a9cf68a79d93000096b2c380739d0000185bd57e728f00001f2dfad8c59d0000ec40b65387a3000026ba9355686c0000fb046b3ad6310000498d514c83110000bda3975b2fb20000e330c0f5ee300000796970aacfe500002064005007fa00000073f0ff509200001127b3317c3d00007ca412c94c790000771966800c9500002a1f7cf5ff1b00006ff024a907dd000084c1006df0e00000d71267d1a7160000708154b845eb000021f4fa6147db000075f4a33b5ee800008aba998f232c00006e56cac9001b0000e755f58e4f6d0000b1cb3635348f000098cdf6c91efa000085c619d0577a0000498c4d266a3f000092c6bc11b8da00008a9afdb26f100000bacfde16f63800002eef031d18470000005b2c6a99d70000",
|
||||
"output_hex": "3deebb7160b3000079c07bf5241600008b1f9fac65a500005ebd55d44c80000069d795cdfe320000a77b7d29da66000039c747ea91ca00006f42a6d39aa50000300e6a2f5caf00004e693e23151b0000180358f210700000c8e331d9ce990000a0e2a5e23b0c0000ce7de8f925a70000271066299b300000fad161ed419c00007c1481bccb3600006034ed4e7c8100006f11f65972d400002ef08deb0adf0000b2a274c958870000c9e9fed4862a0000e42e7f168ef60000b91dbd2c954f00006ddb039883a8000065caafef4b6d0000983125a275180000fcb8f7240b140000080833e7b1da00007e934a9fb2400000bff7074ce89600003eded75d1d7300001613d9ec1b000000252a6ff7a5030000aac19fe25c8f0000e9da7bfc79cd00005a320999f0c70000d6f07108432f0000111766809b3a000009d982466c7100000b540e4d4e90000074db8546854e00001831f4b0b479000098cc2913a47f0000a2980b10c68a00004183e3cda7f70000e07ad4dbe43700006a9b265a9fd10000a8ab45446d3a0000d0a9198020ad00001cc0679b4f380000c67adcce4cae0000bbc8137d14b90000805cefb0904d0000e6939fa83b3400001d0c341cc5a0000001df593da4710000baa08dfcd0fc000072c580fb264700009b9485e105640000b03130fd121b000096bb9468c6c10000834cd1c2bc940000ae5529af7bff0000ffcb47fa18e20000d68b0d0bf9460000ebfea7a58097000080fc8a3751b500006191675da162000006695f3d6552000046667f9f7452000040a82cea64f4000049274b295d8100005b478e8720b400007c2a0169270a00006e31ff08688800000e89c04764f90000ed031e98d0430000175e3ec804240000371552960f16000003085a4154a40000dce626b20b6f00009f346a4bee73000018db60746bce0000917a4584fdef00005f8929d3680b00007676364526b500001c467b3d72690000e2777e5730620000b5625b9bb0e30000334aca8ff9340000654a585ef81b000023e925417e730000d15bd427935b000006bcbc4c29dc0000830c1a74a2e20000f9b6a8676b650000ea72f747b8980000a0ab226a54d400004a169d1edaf1000027ce743404a200000b2d362abbe10000773e261f827b00001dd1ce59191900007d239571beff0000a9fa42f00d10000086d3c2813fc9000017fb2438c02000004b39f80f52ad0000cf201ff8d9da0000386ed3d87c84000005b23792dee900008c616c22041e0000ec3c999f11ca0000af43b384d4540000f87a15dea91a000036247fac826d0000d97f00d7a258000005c557dfaeb30000b66123d33a6e0000d00697b7a8fb00001063534ef2b4000051adbf41a2360000040bb333e426000039737c54400500009b511d14df54000088ee32c26f700000361b678d3f0f0000fd7d6366a6140000a65bb43281c400007a857e031bf90000c381dd7ac9fc0000cae798edc7b60000b5da2c71577e00006018fc920f420000c357f8844de000005106c81824160000c5499466b4450000c854831c941300001f090020c4500000470407acef8800005f51536ce525000059a3d5c7637f0000da6ffa0b2bc900002d3782cc53070000e57abbd8951d00000a07542752e30000054c7300b88a00002ab9ea71c2520000b89b32b093b300009f793792b44c00002598fd6db26000007e49792a4f3b000029725bc5be5900005690e39680e70000f8bce1eeb6d000003a243bdfb7e70000886bd5541a220000dc5c33f46e6b0000b6c57d1010860000ed1d95602e8f00007e08d25750580000be96bd5d30520000a5479a0b53910000c5133c53b50900006c36c6a600030000c2e4a02f79df0000970fdf71614a00002a14f4b1f99b00009c2a0916cfe00000d0a2f96da8c20000b7e98b4349ad00006dadfee35eba000042ed37005f6e000002923d5367f90000d72bdab34b1700008b82861a15ed0000098974c700080000da1abcb8576e00000e08b6ece5460000dd73e2a9643b0000ef42853777dc0000f4c84d2d91200000ac3cfd95af5200009fb56646a2290000feaeddaa8ce900009083cf4836480000d34d92551a1e0000227c1e2c33c0000005c111f822550000882a2db9b3390000a754f98f33060000b1efdc82eb190000881142baf32700009be3fecf72ab00005faa9f0731480000a7e19ef037e100000c7b8e6405f80000b5c4c2f5178d0000ca2eece3ad2a00007baf6661884e00000c8faa692b740000b00cba4bc61f000023208a82af400000164f363035fe0000230c274c41670000010c2624336100001662e2ceb7ae0000aa52bd111d0c00004fb706e883f00000376fa5c03787000098fd9c9f497f00000df67903052f0000c7eeec2c2d410000d97c11ff4c97000000b12fb1d1ad000009551e6b387a0000e64a8636130a000084f2792a225a00008f6ad02eef090000a0e0803a5c740000478b7ae2c039000025df6a564a7b00006be2290fa1d50000ceaa4be2239100006acecd20ce0a0000f3bbeee4a08a00006de1878ee6f000002e1eb2b1b1f40000401579df81140000cc47a05d4d2100004b52e9cd71110000d1679db0365b0000c74ab05259fe00002b22eca10bac000016031e1c22f7000057b3d72cbf070000f6507b817f630000cb48fd3435d50000cbbac011f3ad0000cc03bb2f4a0e00005d5ead227e73000092fd8c2963640000aa0b463462120000e2a3daf57bd40000885a473ed85100009aac21fed800000044e5e3ce3332000007fb12711418000014a58624b6f8000087c586b6fbd1000045e0818322710000206a01981db200008f82c281aa400000a1b7a14a45d700008e0bcbbda2040000",
|
||||
"output_sha256": "7bf33eaed575d9b4d41fdbaaabcf8a7c3e9a0e5c03eb2b9a1ce8435704d6747c"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=44",
|
||||
"input_hex": "64248d5093180000ae36d1c8bb9000007e95593d124c00003d659dd8d7a7000044c7c5f056c80000fd9128b696710000b1af03f04d660000224743ab66490000e6486d76be650000c1ac3e62bee60000de802fab36b000006acc8fd2a7610000e4a3636fd7ac00000e5cce78148c0000404eb231c5f50000a4a8598f0e820000fb3eafaa39090000ef5a9605ddac00003ef13a5333f9000056541501a6750000c29b54492c3b00006da912504d380000f01e0533278900004916e7de490a00002527ead165200000f2327efcfd650000dd1aa27566160000156bbbc792140000bba554620d01000038a008e064c300003e5748865bc00000b4c2d7c5984500009c75bf28222a000051ea268f41b500009668191832940000c61a29c3ca350000435c4c7c575e00000b2cccda666300007b0c2202cfb30000663ecd3e151c00007504d35012f5000012cac62b4f1200001154284eac900000c36db3617fde0000676b2c47d0450000a8bf4397abd30000b335d2b44a1500003163dd336a240000d06e376ebcc60000078baff0a2760000834422f061f600000931557d708200001f74cf1a3e700000eb04f25f45ee000035cca9c8f2fe000040dfb2a2eb6300007330284bd027000092a08674c0260000b7ae5c72dfc80000c9272f06fa0300009166efcf3538000043b11b6c865500003f429c85532a0000a54d0deb0d32000081aa845ac2790000057850e8a8d50000ec714bec3ade000055b1c4b1b46a0000b9b72440557900002d0d2e7827e600006d00cf45080c00003e631b71b2c00000a2ef040b25f50000b4a7975ceb0b000094139553f59d0000b5ec70db011a0000d6c501faec970000410ea19b268f0000df32397dfea10000eccc28e7264f000018671af92a0200001c8b027cf52600001c1cca2f4469000094c0e800332000002d69004f0c7c0000c549f5c3b6c500007ef736ca58c600007a55124057eb0000fd2445fa66920000628c3d1132a7000094245dc600e00000ac12d0b768e50000a2dcd2665c3200006350816484c0000002824ace68a30000a33c5894f82b000070202de555db00005cc74895b19a000053e6e1dc171b0000f2a238fb942a0000f6313233b0ff0000b64333f042d3000002a3053569210000743090e9ec6e000041468916c14e0000d539113470a30000e0c307337b2b000023b1bbb59b2600001cfebcee57c30000272a99cc847300002b303aedbdc5000089f809fd02b40000ec875b726a56000069d92c9c9640000088a54c46ba520000a5803018b6ea0000476c7662f44e0000b3925e947fa40000a373eb4bc7780000e81ce5383a460000d44b7315a59f00005724f73137e20000b33c201c145e0000d22de0e2c2490000a67094fc58dc0000778eab1a4ad70000e095029597d30000f55f01a82615000034c19ca28c7c0000af8fde296fea0000996d36ac92930000238867325b4e0000511b46d5d8880000d8dc30d852da0000c5eb9f8502da0000a8ce3dbe47550000bf53435c90bc000097d5c3e47d5a0000c19b2f1d780000006492517292f9000057ece532fa4600004cb5001d8a76000059df3c5988180000ae9fc9b3675a00004961e570fb1100007c81f2c3dcdb00008787bf5c874000005ee57432c0d400006346dc6e0be70000abb55823ee170000dcb182cb25100000ac1a08d2d9420000e343a90a8dbd0000fb6b62c637910000e10918d0556e000028022f62533000003aab428fdb830000fd4c154e29d100005bfbc1bc032300004ff2ce50bb250000a1938c8b09bd0000b9217e1ff7a9000081a8b6f636b30000b40796ec90630000cf741620121c0000df437efd85c800003c866ff709dd0000614763ec7e6a0000862d0370a06e0000b0b5f4769ee60000567cf7a613f100000edeb5dc252e00005386c86c286d00003ef17bfceba3000023be59c0c2130000c397bb43b05900007960077c1c9e0000978e8414c39700009986ebeaaddf0000ef84464cda770000e57d4309f42e0000ced2c869a99300008ac6fdd924ec000019a9d791166c0000b0a355b7c797000085713578458000008b30435056ab0000db6fb2009a30000049a04932bd9f0000c9aef2772790000012d4922afbcd0000abef5057ec9f0000d44739f773060000c1b79460c205000022ef8ab061500000d06414b1a9d7000087225b51799c0000a0731d748422000074d946fc319c000044a1c9c4aa8e00000baafc854c7b00001f7ddd381d3200003735c08c7b2d0000bda606012dd70000abfb4559dcb80000ca7692416b2d0000ff5be00b5efb0000b2cc269425bc0000992a595380ea00001165b65b133f0000aed5af4d37410000d85b6ab7a85c0000db2c9d384a42000064e8610f5c3c000050cd307f41430000f3e51cf310490000924ff232d8b3000020cc65fca5cb000023c43c6d314a0000090faa82c2d60000d4bdd710eb500000205922f235510000ca8594d4fe2e00007908d53f383e000076d630725e8c00004128b280760a00007be4c267dfc800000ba183cf75f1000058f8993cd9400000ae876514186800002e7b926a899e0000701f15a4a2600000c49f4d7934090000c764db56e95b00003306ac0fb08000005e3934b65c6f00006215366e4d4400003f0ce8eebc8600001b8c7a0e507200001ad3c07bc8f40000671b130b81e30000ae00b8e35b5f0000ed8b21e3f4ce0000515c1e01a05400002583f180e29a0000f1eda451e8a100003defcafa49d700007cbce22f897b0000e20ec84dde4b00009119dcd6813b00000ca3fd00749e0000aeab3772c34a000097e9c9d4f22000000b08818c67e70000d76c61186ba400005071bed383fb0000",
|
||||
"output_hex": "d2143d72116e00006fb41a5223c9000017c94f0368cd000098dd1bf9309100000566d3528d2f00004240428a02c30000b96fcc9770bf000057c5589fe90a0000c0057990f9c900003d2339f9492c00004db2c573e5e60000e9636381bd3f000099a783f1b6db0000ea591ce37b0e0000233ade6568090000835834cb30650000adab7c24dacd0000f9f4fb9c67b30000da8a4321e69c000081bf91ecbc4b00001eb3f78019c10000072d63d33e1e00002d82a59616c50000d8ad310d26710000fa4ee92835c300009d295ff6f7950000154bec6fc1420000efd2514ec2c40000ab0873736d6a000096c715bbb01300007c2524d997d30000ee7f2bb3aedf0000e71f157450280000016ca659a41d0000a392d095df560000d4a74880f4fb0000e45eacb3634f000077d0167e6d220000d2d18f193f4a0000870530eaf90200000380d3dc27c400008c8ac6b5930f000048ea35f0b56200008e72f43e4b3e00000c8b4c41d7780000ddac2fe47d8500000eb8e48c9f610000f6e00fe6c86e00002188a1eebc4700007b01c82e7f6300006512f1781dcd00007c5e49458a940000b7d4a595dab90000f004b39268080000a22c8bc8585c00000c1cb877e1730000af99087dff3e00001a58cc70633300007d9529f512270000db98ba65dc020000fdcb55fedee70000de2212a5f6a5000009af816c25b2000016cd830f334f00009f4aff751dd300009916d344ae4800004dbc17168a6800006d63e65103600000ac41352ff3fc000037e69c183f89000061d7255d197d00004ecf0be318db0000f2f5ae98b96a0000988ca631ab210000bfc03e1b49790000ae2b37f2529900001144916663570000193f63e2570b0000acace164b1ad0000ccbdb450e78200001d14b8614efd0000d1991dfd0c290000a5b23fd03dcb0000c2e696f3e837000027d8f224de9800009aa20ebb58f10000bf215d22fe0600009d851ce07465000050faac77149a0000459a2174f852000033743e27b1ba00000825e7aaaf750000bd36fd04ad4000008981c3067abe0000f9cac09417e1000030c1662d88fd0000672ab0a87a1f0000a5fd3e6ccf18000017131151ec12000036c59bf2d33d0000a442c0149ae7000083d3b091b8aa0000f202abde2df5000016ee54a4ea3200001e98a5620c9400003c425056fa680000507de9ade9250000116b637f70ae0000c7cb0ab714020000118ad025e0d70000ff3539ace4b6000072d04c06bc0800002f9266dc67eb000052d68eb9013a000035c35041e7f20000403dc8173d46000074d12e6e19b200000f65a446b4e700002b558b93235d00002a93713c9e0b0000163e85f63e63000081a997ec86510000fac0121d232a00000723911962e0000028b1b3aa1e7100001300db2e696b000078bea3d2a68500009c314ca4faaa00002512f850f9510000e83e684d9b9e0000015c774bc59700008b4f9eb15e360000401813f8765700002fad5636ee980000cce7ba641a5f00003b8c4a6a30130000bea43ebd067900006d971f36e6d300002a6be47b164f000001ff446958340000ab01bd1a04cb0000f9aafbe75777000036d54520f1440000a18b9b2b676f0000b40953c69d960000f2c10c2930c400005d22cf25aa65000010e691a0276f00006f7685543e770000ae58fdd7b6120000bd27983c56e00000faf99a5fd70f0000a61825f5189700005391ac55ce6c0000a702e84cd5af0000197b0c2f742b0000ade17dc768a600006bb7707e92e6000027f9535b2b27000022e5950d54ea0000f3a03f00e22200003d731d5dcc8c0000094c6e082ce80000470315d1cc3a00006b5f31292bd30000bc400f05bbdd0000f69191b46d070000a25871a3c7dd0000ad2a9e3258380000828c25a2cf550000a3d36736a1860000ee16e9f34f2f0000aa95ae375d110000cef045604cb300004e33f420f39b000060275193d3d000009e11db27f0df0000006d8f15a7770000ae2e9ea7e8f10000160dbd6c1d7900003460673ee1dd000015c18f0ee44f0000de6a6eb920620000764f721d7f470000ad88e093246300009af6f7365fc300003bbe748370c5000092cfe1ff6d860000926002964618000069128b3e73500000cc724862950b00004fdc0f4842640000d6931ab35d990000a2038a95d1000000a768bc36703c0000e6ed57b5374b0000114a77db7c880000550fab9f5140000024cab8663ba800004421cd92639100004f4531b6710b0000448095d7b5e50000af3f8591346d000047030cfd9a8b0000b629b1c93c3300004b97b56adad20000551b2bebd11c00000ae4f8f4072e0000448daafb72b0000004493b6a13320000456ada5199090000a96880d0e56e000052f037dca6b20000c145c394fd1d0000c710ff85e48800001fc3cfbab07b000044c59d684bb600009a4fa64d088b0000ce87ccf1c9fe00001dc681b5f8e50000b70a7cb877d900001f3956252a980000b9713f419d680000e46d2c4d07070000ca84be9e80d900000445dbac2e4b0000d403d96f8fa7000078cfe93691d40000a1b3d69a238c0000e1ef976558ac000042f01a09b2e600008e65f1b7f0530000765cff5f37780000685cccf7c1da000015a13c80df4a000003fc0c3911cb000001ad53a6d066000035233ca6da020000151f465d7baf0000659684ef5fe40000c95cde7b3bcd00004e548937e9a3000033094068ab320000c31e4fd244a800006c63066f08210000283c20b3b57400008a9eb53f1bff00006eb4c8dbdee20000a63bd3c2bebe0000ce4df8119cf80000d183df76917e000041d9c95568c2000026649ac06f5e0000be17692827370000400db6270711000044cf72b2a51f0000",
|
||||
"output_sha256": "654840b1f86e290e58aeaade97b94dd774c4dbe9f8abe285381db5bdf91d2f43"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=45",
|
||||
"input_hex": "1c166b4333450000909f6bdaf2330000f010f0f3b11b0000709fac22a9de0000a778c5749cfe0000b15e8d561823000017b19794a6a30000db86a205e7200000b437490917470000ebf2fe13ab2e00008748af509e270000b38a1e3c4b130000e1f415d43d2d00003c765c97f385000041dc248a7f840000bcc0690d46ac000080e399a78e5f00001fece746c1f90000e8ce852cbf3e00007f77383f0fd10000b17e26ad80c90000a3f034bde289000058f12df021520000b083c4feccd900001f0589a4d1910000dc7e827e95bc0000ef13d027030400005f17cf30cb390000db913054eb450000f11dd4869d590000622d337bc2b6000045703765150e00004424b55dca1a0000bf718a35377000008c377690227d00007ddd1f7ed67300006afe3464cf6000004a849143abf2000021f9d2744ee500004c13223ec84800002097233310f400001fdee27e50fc00006bdd64b6d2930000aafe53a23ce900000dda6036cbd00000f3ce65db5b110000256bb4fe1ed60000d45c84b3307c0000413d4f85854700001468b44987090000fe55119cc36700004899e8e63f560000686f5277f42e000033dd078dbcab00009abbe7ca8bb90000ba446d1827ab0000141105db6eca0000d67a1472804200000726d2390f7f00006279e5b6ad80000081e2424b87970000591b4badf6d10000508e24ba83380000deab928110c000008c56208c9821000090da9241140b0000992004fd516000004fd820f7839e00002a4239c1ea37000008debe8bd3380000d8a267d3c41e0000b5162c54140b00009d10a33990c300007c016ae931ac00001e35aa2b50ea0000e0b299ad13470000c0db6d7ce6cc00007af031345c99000097c7b4b83950000080d652b6f1f400003b68a62d2ffa000054dd920c6ec2000042b084d51a750000f78fec52408c00005138cdf42d410000f15355e0332c00000b05f88ef97b00008cea75bb9b4f0000000dbb75fce50000916d06584e04000063340ad13da90000d522bb922f5c000048ad6e03f815000094812f0336ff0000169b6df6d0750000dc3033c654240000501790eea30c0000294afeb68fd10000f0e0edfbe38200001ca5cdd1d3530000949da337f9cf00005ad71d9b5e4700002fad67d6c2d50000fb0e09b0d8f20000324130074cb60000ce8f891b07db0000006f864d25990000eccf1a31e5340000da484c0fcdf500009f4788df380600005dca949b4fe400001fc75b1e86f2000027199a1b89a10000a88d85e342810000a94b8d5c29b90000deb6079b27940000870adc5ce3d400005fb70cb240160000f0713d3ebac60000def88d7c2eeb0000d64608af91e10000c74f6975382200003c8008b48e8900001ed1dccfa04e00009e10802a7e9300004e86817a5a2d000071091ae1cfc7000009cdb4ece848000066d15b8e9b3400006b8488350e9c0000a2e513a20869000006078a76cbdb000023c1584e6b0a000033af5d4b93410000189c2b29fcbd00001972898e88e40000b16acf49919a0000743b7a80420f0000b9e2a073bbcb0000839cb1fd14e90000f2b163b9885e00003032e90bc6aa00000d0e049f81990000143092a072f50000d42fb0afb7fa0000ffbf0d15598a00003e79f3b562910000ffcfdf1306740000af9027de017d00007c6c72e96cc10000b23052e804bc0000d5c900bc18d00000b41072ee75c10000113ed2e1042c00005cc8a47439ec0000f9a9c57f022000002c0755c48c590000d29555264e580000d324a5343787000009fdbdbf03a8000021cc9c4bb84800009dc22264692700000186916de55d0000b2f4c06cc393000009869d1dcdc800002a786c29f2df0000594b62e04057000011d42577baad0000865185d1915000008c74334bce600000ff2e554b1675000009c3caeedf1b0000b675c74d965600006cbe439ef5b2000041a9ce977cbc0000d115e7f9eeb70000a69ade7f221600002c167f37e706000025eca1ce9830000010fd5f0b5a6000004e1cc182b0cd0000023ac788b2710000e7815d93851f000060c3d6e00e89000055c39894e3530000f459d86abb230000a3b32b0260a800002c0848d07572000099b2ec7bfddf000064fe0ccacbe300008a4c2580d3420000b9213cad5d8100007d8acba1f4780000b60dcb1fac990000dfa2c18d1fcb00005fec3132dfd00000a280442630fc00003656a95fbe520000112b281d273700005f1b20635ffb00005bd4a3eacbf90000ebc86efb60ba0000656a79ba72c800002f14e2721c510000441808eb002000005ae3c7b733300000c98179a4dcc80000d3b2110248c6000066a3906d59e90000522879ca9ffc00009811d89d1aac00005e89ef7a7ccf0000f104fb1d38820000ac463862fc93000038bb8bd525e2000001cdd2af406f0000e1d6e9f05ac00000ac4925733161000095d997d23a670000667998c5085a0000396efd172a410000b671179f8e540000f2da2550506d000042acb5b5d3380000d54bec6d76c60000fb2892dc78010000f28652a2226b0000616b1a52922b00001dccf55a23ba00001faf09b849820000cb616d912f9100003224e20bc75b0000c0dcb7195f5700000f66dc01faba0000f257cc52a224000038e495c2ce7b00001ce2e5434f250000f67806358a210000bed61b70b8c20000745f75a0aab1000010fcabec5a070000ad8df284b10100009c52cd9eabf900009ffefc30e7770000bc5316e836ff000084c7edbccf1f0000752f9957641e00007764e728ae8b0000929bbde9859a00003ae833c4fadb0000686ba7c07ee200002897e9704ccb0000a878ea1f5c7f0000e4cb87e9f59600008c31d9e8062d0000fafe18c312370000",
|
||||
"output_hex": "81181f733798000007c0e2ee4b2f0000bd0e33981e2d0000fb1d7698251600002205e4a2a7960000656452c4cb2a0000b8fac1ae262a00004cabd451a6400000aa897f8db95800002eaa4bf96fac0000adcd422a7bba00000261236d4ef30000ad1afe01cfa2000085d17d24e7d40000c429faf1bfb60000030412ff3eac0000b70d9b99cfc30000b2557da6da850000d0b28372b9b000000a331f8f13e1000077917d7788e0000070f2b948706000002e7bb4f7d8d10000eebea8e5f75e0000f1c865d12da60000cd2d2a8b20bf0000519806c241300000136b13ee8ec8000039421813b58100001a06d31423a9000077940d45d84100009a238360c9e7000058b579e32b8a0000f9da54a270bf0000b136bd2bf955000065918293edbf0000b6c2008559d10000f2aa95edc5a70000ca4eebdd2fac00009b36b82df1e6000023d2347a8b980000bb18e9fab21500000725aefc483a00002d19c2e29c1400003f0458aaecb30000f1ef9345162e000079120770bacd00009c3c4e26cacb0000b2a8e2c788760000fb48affbea410000be2d8edd09960000fb353b7d9a3100004b7b91dbe71b0000512a5b4fec8a0000200e18de2183000048051e0be5e10000c4fd7ea3109e0000754909d3d3dc0000e97d5db9935c0000a443415047950000895ba22833490000ddee2975944300000e39fd8ecaaa00002d03384b91d70000dffb1f5cfec30000976709172542000073a31e76b6b4000098ca23f5d79000005a194a9ed83b000071cdce1cf8690000f206b2a9f99a0000679e0cee6b2f0000a063bf88c75c00005a1311db9f310000e86744bce90e00009b9c14e296e70000768e65c2e2060000488625fd070900006e43d18090b400002ab90e4fa78e00002d83deeadd94000005e01b8a45f70000330c2133eec800007bb6c34b3d5a0000527746a55a1f000020d328ba71d5000032be4b02842700004a74b7b536cf00001b5607004d120000c15436c3d2480000f4434dedd4d3000060d66c1a666d0000b59548b716d300008a421f38c77d00002a4c1634b64d000007bf58c9aaac00007c595edccecf000036682c3033fc00009fff52a6d69d0000c9750532f9130000dad5807b02d300007dba5fbfbb39000098305d2a7d4200005090eda56dc700003c505a1133ea00000a59a61fe0230000ec14957e7656000022eec9750e46000013265428e3540000abd607682efa0000acd4c098889d00003eb0511d786f000003f11caf38050000f090de04af4d00003659afd96bed000064a8a37aecd40000454b7eb748150000cf49ca2d13a200009da82afb4b0c00001bdccd49db46000056f4ad7a6a5200008b28633c8f1e00009afd2822812d0000461e899ba7d00000f01eba3a852400006c589aaa97c200005d630319b7be0000edc6c15aa0b30000adcd6792ccea0000306d9c4b8a300000518b198119660000dda4dd51823a0000a60f7331a08d00009d69abaadfc300009b69b5d12a64000043e33a9fdd820000653d4f36c6c500006b4bdcc2cf42000070590e41d0ea0000f9a0125f95c00000a6543aa17d560000e378d75c1e0400000ee7aeb5a194000009c495080aec000091e30d8f1fb80000b555cae9aee70000dd31848d392500009760dff9a14b00008d5b569d7dc00000e7650046e5ec000047b4883b098b0000d4f8b74c680100006b9276c171a20000e00ab86dd0cd000085f6746a45f800000e25eab5131900009f6a315d69d20000dc383612a8d90000e3df0c504c6d00006764c3bf23af00003bfeb1fc9f120000d76c3ab5797600009b7de52a4e71000043920d5102a800005cc3f481c5f200005c00bf2f22de00005cc877e8c2470000a7397d85aecb000035335232ab950000aff01394814c0000290806f74a6900005bafb1e7358900000be29e23392100002e76ea85376200001aab47f4122e000013cdb520b58c00004b8f531416b00000647510f7774b0000ad153c7fe46e000000e3f49387cc0000319230224d810000770e6aa9ecce0000d7633a4f5d50000051288459c89500001b1b186791f50000d5cc31f3f48b0000ee68775584420000a6fc83dd80c5000075e19603b68c0000848bfa4ececc0000944a39bb8acf00003db6fa36ec9f0000d2bcebf003cd0000d4aefec7e92a00006e372744cbe80000bcdc79b51f39000075f7d59327260000b2a378316bee00008f61a1796b3e0000d9a271ab504c0000eaefac9e89160000d67097641dcc0000523e9013ed38000039a0d9c4b1cb00005860cb8f65f600001b8a9329daf300006ab9ef8fc3b40000662030b9ea540000f26e7fce499a00005b8b2c79bed40000fd8fbb43472f000019e5e9022fbf000042fd5c96299f000022f08c2db6ae00000e4906c3f5e800000ae4370954dd0000cbbeffa9a65a0000c0fc892cd369000077e25669c63c0000d34d0268d22d000002007a6dd897000069760d4621080000b5985165a8d5000028f2f6adfb1e0000ce26bdf85a7f000039451e4cacac000020d7d60f451e00007811b10ae574000086c7a281b5a20000fd3bb32e93400000ef25a6d34b9300000eae69ce86ff0000b97a46919c71000094b802a440e90000e45e0224c09600008302d92d747d0000bcdb49e7ea720000e45b6fdc3f630000f9b889183e4a00001b92c50d4b0400007f86ef5223860000661b22dc43e100007ac37cfec43c00000100e0cdab4d0000a7c9e8e8561a0000a1888829ecdd00003e342ea39a2000006e6e7faa371c00000357aa2b74da0000f7910c2baf0700002809967b3e1b0000d2fbe37628c7000039bca70591af000019bb14e3fa690000323126e9a4850000715d37903f590000",
|
||||
"output_sha256": "18df1fab4bb0e13f5d4e50820e2d45ef43c263c9dc0e987ebc98d22bd369d469"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=46",
|
||||
"input_hex": "1451af9db8b00000d7356781473300005b7db6e1bc9d000023879f5e93d8000072eddd49483800002b4672b0ee1500005857d876144b000041acecac25f800006a2fefbe709800008775952520f2000069c6143d09970000a03084045b3f000035204627d04b00002b9e798cfedc00009c15d796bd7d0000b29f2e266f71000009ebb0d77bbe0000a60c1cd7a654000023f94b110c3c0000315bf570738000009ff2602ce68400007a2f216a70b300004d4b14eb83b2000089a0e88e9b6200002c1234a9b7de000067b22f3c2ad500002a68e52bac4b0000c95671c678bd000040edfe781bfd0000eac84712b2790000aca851384fc60000f8f6d2484fe5000091fbb2ffad4700007dae2f2c5fec0000420db8de291600005f0282a35df8000061569ffae2850000d4c70256a4ac000001a2892ccefe0000309d9ebf7f5b000052b20444a98f00000cf3d4938d1300009ad7e7d763a4000045acb9153681000076a24ad2f3f3000028dcf1cdc0e500008dd7bce869c80000bcd4a8d431260000eb4fe0db22930000ffaa072aa6c20000d34b7de18c48000030217b951b6600000c813dddcf880000ef25440816c30000f99780891dc200006328ff019a280000d101b59c37290000c8ff72c5c05900004d0a5c23df1b0000ff7bc0e4356100008c066b1c4c630000493846cd284c000039fb64fd44620000ac85d59ddc3a00002e5382b6f24e0000eb44197e3e130000a413b9f4d622000038eed32c1f130000f8e63653c2f00000e41de4dd2a6a000081e4f85dc2db0000b78df3b4302a0000714afd306f3d00009d5f9be041750000a0bb05f084f60000d6faceaac1d700001ec8558c33e400000d2fbf1d0cf80000c1183be8b2db0000aa39ef147b140000afffb03085f800005e327dbea305000046240189d1d50000b6747d80904100004d3959e9e74c0000aff7b9c7bb5c0000bdd29585bf900000ca4c21293d520000063e91eda058000024a4045ad6ec000095148bc408c400005b6ac317398d000073745615136100004d675021160c0000ada54564fe3b000038f72671e76f0000d426f9e24d9400008719b4644ce00000e6c7699566810000c0b4fe1d1163000059bccda5539b0000531a26df57a10000b5a49a629379000046970bdf9e170000210d5199c4b10000e14e1c463117000050978c67988a0000d7805f2a145100001a1b4661c05a000027112a435d7900000fc5d7e6671a0000ac0e008b5df70000e9b45f73c1460000b5ebae666f8b0000abc2ac3402a50000bc089563e62300001a0ed1413cd50000aea2dd057ea0000018a8715671fe00005cd722692c830000477d846e908f0000e7ec484d63f600008ba535491efd0000c057cebb69cd000082ee879ad2bb000047a57ff0a4f30000b04400a4fd8e0000eb94dc54da3a0000939b450206f20000fd475819995f0000910e0b132646000028ae3d4d37ba0000222c0a08a13b000043c489f0b70900002b01e9c0b2410000e1dfa85883dd0000d30e17b7f85100005c6776f7895e00002863a30eb30c0000332c3b5a727e0000982243934f18000077800e2816fe00003ebc04f2e13300003e56131dfc23000074bfed76671f00002e379e2e030200004c8585fcd82f00003d691c4065940000862a05185c3e000013fc9f48d2340000fd86888fd9000000b8f6b0d10a8e00006a98e760fff00000247833d4f371000023e1ccc50c9d0000c9f6ce675ea9000093fd8eeb399b00005189f19d38d4000043039dc6b2b30000f454f2e58eda0000272e6168de580000cc10e6518633000073cb91de9c4200003524b12f736c0000cbd07b092956000033e152ecb0d700002638ba304b290000e0d8ecc612f90000c421262505e80000e780802a70730000a6db9de8f3310000fa35558a4e3000000b9f9863f15c00004adff17a89df00003af37dcf8df6000003acdf9f267b000048458933bb9b0000e210ad7704d70000909f942a8a2000000294f0d3388600006198f19bc7a9000017de37ab166f0000d9bd3ee3996f0000ecc0115b36530000afc941ca07fe0000ff9302b41e7e000011c3322bb151000007c534b18f5d0000201f6cee294f0000a96884a07f640000d99dc757379a00008f900b27b0660000759c6b1773fd00005051ee326fdd000085fec34c57de000090851ef02e910000df760cac80ec0000979ad4b6220f00000240cf59c5bf0000c3b6ce3551000000e8accb98703300005c807360265400000523c58b68bb0000fd4f8e216c570000185f05cd9b2900001097522601b00000dd2f7f24fe680000747c8160462f0000e501020588d100004ab3b7fa6ee600007a5224765d630000c62ca273e75800003dbd40a8aa730000ce45a9afe3bb0000394b539188c300008a85a7d4ed900000167e421d4eae00003fa8c1dde0de00002ab0d50ae7d90000278e74998ff40000a4e4aae192790000d320ff3a5dd10000787651f0ea3c0000108a97b6edd900008db397bd9ca300005ee02f03144b0000d0f3aedf41e00000a000c63730ef000081a749aecb580000c990d528b0cd00004dd1a3d9db540000d4424587d0b50000c0505446bf3c000024ead749cb8a0000825252d245490000eecab3f0f4af0000c5ed5ac2bc550000cdf5716f62810000bde0ed9fee05000024b3f770bbba00008c573069cbbb00006836af7a04a10000945e1147f0a20000f2696605d84c00000a5530964e690000ed580550899c0000484ccbb26b990000a6a7368b39f2000094c12b0b50f40000966760089adc0000fa0704aa040b000048f1ca775891000029618b049610000073ca27a62f7200008bd2721d67190000f5795653e39a0000",
|
||||
"output_hex": "5d0182be9a210000cb73be0977b80000a072922dcee0000094f251915f16000091c97d64151200003cd887ec393a00002a8a8edde9e200009caa303eb7800000c386b55c80390000d5460cb004ca00004af1dd59003600006fb7b8b0143b0000d31ac61c9bec0000a1ba821e63810000e9077e6b02430000e94394749dad00007d834f42372a000017f6650a135a00004402d382c93000003810c25c443e0000782baaccf8e50000120ab431b65d00000e2d20abbd5a000053bce374433e0000274f18d65ecc0000d5957b2c72cc0000a88e92c517b20000f4524bfae563000089bceeef7369000029394ada70f70000de07601394b300007587ab5e70d3000009d973ae26d70000948f9d79b6c4000068b04b66a400000044190d2420c10000ed4ee73c5b090000946b6cde9d7d0000266f71cfa7fe000035f64422bfa90000946d6700e80100006d58502ee5630000699422a8b96d0000720928ada7c30000481293b8781e00004ac902ec13ba00002dea3083619f00008b5f2b72d3eb0000a984d2ba973c000097403f98199c0000381084d4605e00003f773556f60a0000b13ea70b165600002b69c6d8317800009055a5f00cc20000b62682fbbaef000038a011f9ce0c00005062e41f707900001578b9cef3cd0000876e0a2a451a000075e999916bfa000059c7f44554c00000906996487cd900000bbfad4d79af0000251e8cb764ed000037481af680450000f9c193fe0aba00000d751767457c0000bc9ccded039400002a5dc20d327e000090abbb2f35aa0000572e3859d5ab00007d0c6b11e94b000098eb156a6c4200002b85f08278600000d5dda85f34eb0000c62ac2d2cef10000ab963cab691600009c07efb539ea0000bc8574cee5a50000494ae564e8780000f9749c535cac00003af5db8001de00009a98a5486dd3000032881752e6cf0000cafcd285761a000073c9b99a82fa00004bc8392837f400003026844bf07600002106576b377c0000496b37397de700001e71901bb1da00008ebbc781eeeb000029214504cf9800002615c68325cf0000a97dbc7712d500005af1844b406b0000dc7f23c1c1e8000013998e2756e000008d6517530ef80000c8f11dbf5109000094488ed88dc00000e46956454e1e0000a81bea272a7f0000bd3bc501639f0000cd0b67c6cf0900003720a47f640200003d88e0fcedd20000ddb55fda0ee90000a25ef6769349000051264edbc05a00003471aec5d0930000be2ccbfd41570000fb44a484d59a00001453e37a9f0d000099bb6dd453f20000520bc8565646000092ec19e462b100002cc4ad8907ac00004f7fe7dab7250000a4a96e51266d0000d21b08c524e900006822e17ac6c90000025b1d56e04e0000bdf5b5c5b5cf00002a403258bb4c0000b129480143b600006c28a35a5b2e0000f6df50b18a2f0000bf703f0dcc9c000008fc578ad22e00002a51e10c50620000b16db2de27680000dfff619294560000fd73539c311700004b3feac633f4000055471be53c1a0000dca98c00a88e0000941434b61f1e00007dfe0016df4e0000517f85e482b60000a9bc92d939840000935e1b32291200007d662da3408e0000851b0f5e3af300001a6ce30181b9000009e87e61780500007bc69b7867d30000f83cece240870000975f34cd706d000034034eb60b5f0000d25eabbd21c20000a8344760f54800002e16eddb39010000a37025437116000073a4d259792700009d46d746067500007e2f73ed231b00005c03ad2d32530000f6bc38e4b5e300006de77973896f000000c2b14e4a860000062324f6663900006bc1a468df7200007f183f4b9b0300007573b71705040000869605594665000057f1fb178558000066dd67c9c9cd000025b5912e61f300003c63ef14040d0000552b601395de0000bf45ec8545250000632e7320027b0000c1aa39f89db30000964f36bf3017000097dd3faf0082000066d10c848653000076a207c369ef0000ca24e672e61a0000418e5e6d7c200000dfca0a20137e0000288eb88d1e4a0000693afa0826bb0000f6ba44bd5e2900007f797b5489c50000ae92c58143bd00004af898c0e589000010c43b175fed00002dc0de9006f10000495eee1e652e000050a66e909f8f0000a0188fd75af70000ea0153508b2b0000a47430ce413d0000dbc1ea0e04160000435e763def2c000018b3fc9f8dbe0000066dcba832fc0000701a4183907000004285a5b57d19000050d925e5657e0000b30bb8dd8b0b00007542e629a82d0000e3f0d9e3310a00009c91c330a6b200000c7076e016570000ffb8b7e0d30a0000c610c4deeee200008a563842790400006cccb26237880000ec3027f549520000c51e5bb574fb00001c68c529df03000058aad2eaffb90000eec09a2a1a1e00001928169a63e4000003454dfe2344000046e3f97b1d13000030caf9b114ce000062ec41705b950000d793ab89e5cd0000ff8d1a8de13b0000e1976df17beb000070a8523b10ce000030d4e38e32ba000054512b22436b0000167dd442d6c600000fd30d2c741e00007c0c9f0bb0be0000f01fdff8ce92000067a07d9a539900004ff25b5fb3d50000a006171b56750000570eadf70768000071d7ee2b23fb00001e81d375dcb500007a538b82c8c70000307209251a3f0000cff167e9b07e0000f3820aa3eb4c000095e3f423127200005760322ee52200004e3753f11fad0000764fb4f2728b0000c3003fbca39b000022f14617539d00005050eef418060000e9dda5ac28330000205b9208c7b80000baa59e435c5a0000003abe29947c000040d406e7c33e00000cf2db90b32900002d572231b2fe000006daad83b9da0000",
|
||||
"output_sha256": "85f504b734ecfb1740877becc3d1c0e908d89e443ca7e6993d2d53f8ab5abc22"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=47",
|
||||
"input_hex": "657dc485309d0000bfc256c2d05600006b8dd1ad6b6100000336eb427e280000fd06b37badd0000061308df3d53c00001ddba55d66b6000064678363efba000050514b8433470000b15945cccd0000007725edcac6ca0000628abd1e0d4200001499847e555f00008140ec68aba700002bb39e473fbb00005115d3b8e51400004996b3f2ff93000012c3b9ace9c5000011655cd2a49300008e651b8f629d0000d49332929460000045fe5e1576110000606aeed75fe80000e8c051cade28000049b57b22eadd0000c5dc6807c99c00001a68cd3643520000d8a9313fcbff0000e2a1792440ce000078961a9c31cd0000437faa38065000001f6b337521dd00007575c9e4f2fc00003735bab6ca6400008ccd1997fb050000abeb339ad1d000007e7019b82ab2000079ee48eb20fc0000e944b0e54e5200003b1b8c9af0c40000c078c2122e8300000ee1edc1d91300000f5f7bc741e10000635a7ae1aeaf000098c4cdcb6fd50000fb13e7480bff000011e1273216bd0000fdcf9609aab60000b24dc7ef9eda0000492242fdb58c0000b4163e9898810000e4ee56e373b80000d88115f8fedd0000afc3fa5345b40000df8328aa90290000bff58c3953a000003b3fd77365090000dbdde3159b2a0000fce564563f6e0000411f41b9556e0000415d320e2a34000042e8b4bcd77a00007fde01dc8fe10000f5089f116ffe0000773c213ae9d20000520bcf2d90ee00009c87f6e4219a000069d0709ea43a000089c54c9e832a00000a12af57e54000003cf0e52b48160000b6ad0e970a91000026f1a325f3b60000576ef0f00a7c0000c5db2c55898a000093d76910351d0000326e33f8de6b0000df2b05013b20000010c221ca49ab00008efc690e5d7400003c5b4aa2fe5b00009504f6f49da50000c776b80a488d0000c7a37ab2cdfd000078616a22f4f400002c89a71c68ac000007eea00a8af40000da28cc219a1500005f5ec812ec9100008838f33b474a0000f41c833b99d500007d071928702400009cccf8f3e1630000b2cc95f9d0f60000baa6c881d61b0000da2fa49587ac000048a024f3d1350000a59b39147cb800004abf1eac4584000083ce3e8d53b4000093fa1661eb27000041b9797fb19500004e78ae7c41930000bdb934db13790000206bfc454c5c0000f94636ddafa3000064b94fe2bce900006ff0749396320000e73cb7008c000000fac9e8abb6c1000004f158bdc980000064ed2ce5b6db0000dd9e1c135033000060866ecd0e3b00006f63da31d7e600001f28d158413f0000affb5a766c3a00001803b315e3610000369f77b30d98000099500c4aad9c0000e0bc04307dd700007d7ba3bf7607000018c0b505582c0000a4b5fbb151d8000017c2b32e33ad000083965cf5679200007f00f99a03e400004e47a18f72fa0000a57aa8f3e5f500006e713c6fbc990000e170ba6facd6000005cc574a486c0000b83e7a7864590000e09dad151ea6000092a5051bcafc000083e4830c92340000257f712543760000b6ec95ea2d940000ccfc9540b52e0000712bbb2d3b2a00004a5b16a026dd00000537a5d84af10000215d4e7702cb0000a3a28ac9a54100004772717925d60000b401cf45e0d50000f7367d1a8a1500002a0ebee56f1d00002da66036577200001bfb93b720dc000039f0a511ebd00000ed04e50535760000a4fab9dbdcd400004159b28ad17700006c95e32717660000c1518996f147000066e09e5c7b460000abc2e6b5347400004f4d23817f200000e75a52a8114700002ca67fb842b60000ae1c451639e50000909f42b0c49600007b44f5ed59cf0000f2af56a6b1d9000060beea7e09a500000b674557c7440000dc7a5c9be079000008e19ae77a9300000326008528530000d1327955a8970000e14f010f3c840000138a6c90d48c000022ec693bdea1000043ba163a3d3d000005d6c73b12e10000ae1fc8170bfb000086099ff03c2e00004cede1fa949a0000a31316c9d41200007f0d456f9edd0000ca002ec3d43200007b58ad11703e0000da42a0c678410000299bfb2b252a000021af042ee8230000730bde56b9ea000042673596206a00009e84d19b71f10000134ba96ef11d0000528632d69b1d0000ce46dbe3130b00002b33498be9350000228e259ba65f0000eb054e26d8b00000f4b15318b34e000068a59b1fecca0000946bb9f298b40000cc5f538743490000d289a5d80e640000c9b098ac83400000195011a90be7000038a9e27241aa0000c8596110bb0800005316c704e7a90000fd18c2de13ff00009ce1e304e2130000f1869faf976e0000895afb665b7900009496b2cf82df0000c926763a0e8e000058e4bb5b40be00002127ea4fb54500005434d7e427e200001d2823d5485f0000a2fe772741a90000fe19f8027fae0000bbafc0b321d20000dafdc0353a13000094ccc0b67e1900002089efdb0ab50000932fc92aad0f0000c49ef29026080000ef1ebc54f2f600009904acb6ecd4000005245101ea4f0000e5687db4c3aa00002b4c114090d700004c2ce280d2bd00009d9834c971740000b04f427a20470000c6acc3943f5600000d0ed65d74890000aecc2bff9a0c00008784050519380000186890db5e2c00009d6542a8704300005b367d687ce10000b3843cb50bc50000e538033d9e870000d710cb265f50000009a540c33ca700004c7c54c7e06800005e3196ab188a0000e4187c2eb77100004fed27b2a4630000e99e389e2ad1000000791d6fabd100003e10efc9918d0000644169ce5863000015d8f0fb25010000202968f779910000def8a0123162000070d3a9b6da9c0000ad1c209a3e6f0000e32054fb22010000",
|
||||
"output_hex": "bf7ca639dbc9000012968435c499000006063d445bb500002a8a5c0c7fcb0000a1681d9a1a3d0000562a5349bd7b00008e4fedfcc66500000d1ab949c47700005e793cf96c7e00003fa13e7a152f00003aca3ac35a7e00008a2c816103460000a3d51e17998900008314b8ce2a6500009754e3bc6b960000b8799e6a5d1f00001df8011cdfdc000018844da7a19600000139501bc04d0000f8d50b6b14ca0000449a06caacf3000090b3e6344b0b00001f880d9a794f00007b041ca03de90000219201e998370000ba6d7d384381000043553e1ff0560000a76aaf98ff2e0000fc89d2aa82220000fadeea8fe42500000d9637c20696000023d8ff714e7c0000ffa0979c5b71000067519a20854a00006248eff62587000077a282d14d8a0000412af697abc30000bc72ee05965e000033367d39385c0000dd54b566f8cc00004d6a7881650b0000069052495b8300002915e6b044860000318b7c7b0740000035de7155ec3b0000486d939694bb0000f54648ddce290000b1a99c02db650000e1da4d1b818200007af4a223cfdc00000135cc730d3a0000b338770e46cb0000b920c30ecb040000995f607fb24d0000f3864ee9c40c0000c417b3ce26040000365424da39970000fcea64d0f7d8000007af78157a6c00003b50b5cd63ac000053459d95860f0000bd01bbab207e000006c0e6df940e00002624c554c05100008059d5e1156b000096472cb308f00000daeb655113fe0000d330f777fdfd000038e141db30bd0000afe3f0d8e3410000ed06a91897bd0000a388f8f051320000c57abc93b78f0000d74e32ed4f0a0000ca4e3090b3f100001577d3bf14fc0000d56511bc7d800000469eeb9d666c0000b15ed0ccc4740000b785adb919f4000019d7075824f3000064d5f3eb942d00001a30d12c494f00003a8ddb3faabb00003c65fafca290000058f92ae0f6060000fbd538f7867200001be1fb76ebfe00000d43ec6f87610000949a2c7bb1b70000ffa679c7e51c00005b35d899baae0000cb6f67b8122b00006f67a1668c9700005b43394743880000f526295fbb6c00008d58ee39aea900003ae1406fa04f00004421b9aa33770000f083a5e7be050000408bb8a5a6040000b34b9c4a8b380000bc729937677500004d788ce0488200001fc1a7174bef00004ddb86f571ae0000dfcbdc21aec8000015fa0ad6ae6e0000ce9af9ab8b380000dd4b5dca25e30000591df40eec410000430530d85ec200004bac7b57265000009258e403d7b20000739bebbadbb50000d61e452a6ead0000b6eb70b819d700001e20e94ded160000727cbbb9a7bd0000cd5b89d9a6ff0000f5a9c1bd359c00001f56bb809789000090fa99ec31db0000c9514fdec01200000db1209e9a310000805daac1f1e60000153ad9b667f1000012ab5d4bf2e2000035ed89e85d6c00000e391cec8bb800006a2022d23879000011af4698d1920000c6a5593dbfe60000d0659fb117160000fe228a703eb4000074f86af9e1130000ae61eb0485b60000c3bb7d144d1200002830323dc6f9000005aa554099fe0000598c66236aef0000bf650dc22197000051c9e061dab50000bba731a3518b00003070ddaf8d2d00003660e85e03f80000d2cd7e9b3a5c00001843f399c86700007fb1ea7cfc8c0000f649e90ccc930000109f466c15fe000036c3a5e2652500007a5d34609c2f0000cbe355e90b6800004866db5df6570000be047925aacc0000642cbafd056c0000138e697834fe0000794a224cfdb30000aadac2ceebae00007fead0e0d08500005ae0ab6c216500002863fa1be12a00008049a01aebfb0000d6242addafa8000015fedda2d6cf000064549ca7151c0000c2cce91872d5000060b47a3bf6750000490abce43d070000eefb5349949a0000e58537ce0fd9000022212a9fc4d90000a02ac34b10ad0000ac367b2c9fc60000476f8ea3276700008498cf252375000058f9ff5c16af0000c2565e5feb920000f2c85a6308970000397bfd782c680000b5975b3646290000635e79c01de20000cb67dd85c5f40000a9f247b1a43b00004e5b0a39f97700003d9eb643fc8c0000c804b457fd0900001d98ba0ba9b0000071374a9b9a6b000079db5bd7f8b30000a90ae9d9a9de00008a7517c017b40000a6d8f27de00d00002c1b973cbadd00005ab9724a2b98000020b5fd3e769b0000c0a654cea2890000bf99a0a90c5f000002c25b0ef56300003c0d57d92d5b000031e6bf0c63a7000020edd170ddb000008e2c53c97d3b0000302bb1b4ed02000068d9b6162be300006221ac59a8e5000069261a3e6a5d0000df2a947fb1e100003d67cc980e58000058c0e34a1f0700007bc19312ad18000066cdbfcb77610000f5881d7c6bdc0000d15834b320770000cc4d26cd18f100007a22c2bc55dd0000912905d1d137000023dbad3321db000074e8c2d19a5d00005572800e740d0000fd57f9f390f20000c1305d477ff6000060769862aee600000a9aa96f1deb0000ea72844f7f770000c84df78782c200002dab5a81c0c600001a8d93fad6890000bd335753f17d00004bb34f3d72390000fd2d5a9b66a300006ba71fe62c2300004840e69b311d00006de6ed5d9b3d00006a7179eb56e600005ac24a035af100005016b721684200004b36a881fa9d00005745cb9b93920000d952619e66fa00002ad37bf7f1930000e55d343ddc9a0000cd09a5fa64fd0000a7004b08a6b50000bd58797406e80000baa26d7ce8ab0000724b345339bf00001740dc7bb9160000b7dc3639d6d6000042a24b146c9c0000160d74a30fc600007f86301ff27000005296886b279400007aeb7c1d2bd10000ef48c1f3240e0000",
|
||||
"output_sha256": "89cb726346ebf5393ec2253521bd711eaa6f715d799babbd230208e9346b3ec7"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=48",
|
||||
"input_hex": "62904b0f56650000054384b031540000213011ca07a6000022d923829cc900003fc0354acc650000f0bfaa9ec9140000b6e07388165100000c9c88787bcb000089619e88c7fc0000c81bdad91ac200009090e0a3e6850000ee8c0b3e478a0000c264e162c5fd0000b61ab040394e0000ac1c58f532970000fe36d60e288100000a7f72d27fe40000d6efadc6688b0000e899e6e4afc00000976f13c562d70000b06b6a0663a000000af34ecb7f0d00008fc6f4555cdb0000d643ce9cfa220000d6cc1af4fb45000016f3db96a05e0000b49013c6d15a00005d19dc8b61bc0000bed1ae207b620000fe4f5f990ea80000880c51c71d2d0000f28e2ad9f4bc00002ae5e19406500000bae143e083730000ab2925fa0c2a0000c815d3b4b8770000052b16d149dc0000c41d6af658d00000b734a7496cc00000b938d6cb9bf00000b697dc290dad0000ca2598817a96000095e0694f725b0000ef5db32f002f0000adebba6a68cb0000d41fce762cc9000039cb5ff247d40000ba911e3247770000df8dce3035b4000014ab26cefee90000d86dcfde47b10000ddb8f7b3fa310000778509eb6c4500004b271506a3120000ee2b8d74658a0000cfc94a1173a6000020efb27a7cb800003db2207831ff000008168f42ab18000074e09539bc9f00005b5084121f2100001f2d3c089a4800008d02d4ce8454000034fad10d57ce00003333d30d70d9000057fd9308e2770000ef6e0b656855000074aed8bd06450000ae038b56927900002b61fb1d8d7900002038ddceaa9f0000a1279b3f79e4000081f188281b6700004c3634fbe7e9000034d386ac8b640000d71ac15610540000c2929c2234450000aeb36ccaec2f00002fe1d6948e1c00000f95fe2c05f50000fdf7dfde51da0000f823311de301000067776982a4b10000fee7553e9a3900003ee8b94bf88f00006b91457f5d1a000050d72f74d3a20000c73c4d7b964d0000430c81e80a200000c6b4a7a6b0a000000e94f3e390390000eccfbc652ff500003ef750a910ae000076513ad303530000957337a63140000076a0610f275d0000a66d252e16120000c7b924dbd9df0000e4c60d06cf240000e0bf6bc6ffb30000ff88f8cd3290000094860dbd29560000a004de4be8ed0000eddd6b41461700002f2fbde635b10000171dab7b7a9f000062308674faf9000065c9ddd424880000543b912a4a6300000976dd79880c00002f35a3af48b50000f0acf1b58fbf000054faea35adec0000666f1ce2925a0000558213285d4e0000440a438bfa420000e12620eb95fb00005d0b9ed5bc940000678165f075d50000eff97ffd713f00002080ef111aba00006fb34912010b00002f6f3b59db80000077ff178146b30000fe545bea6a6500000357fee7dbe800004d079b7b98a10000451d0322c6840000dde0aec173fd00002fb3e9e0d32c000042b400d4173b00003ca9dfb6225300007c21da2de41100001590a342feac000034d2478ad54700001a3599200f6f0000d983a472a8e80000bed16b177d3c00001415fb814e6d0000ae88444d942000000dd2deecc1de00004fb43c77943300002c4db7e9b481000005a6760ce57600001a7c7ddefac70000ba1557a822e400004d953f030ac600000e10fb2bc6540000ae6f1d245b650000f455d8407c920000d759ce6226c7000022735f6dd84e00005e2bee16783b000090bd55aa87e200004f8e11f58bc700007cc637e4465d0000a015005b1c550000169e8b288a9d000080d83b76407b00003f218df021600000b4632365bdd60000da03fbe4fd65000015da8fbc8161000090837cb10f1600002c066dbe7bd20000af529554e6f50000ed44987372380000462e74531c070000d2c0bb32f893000033b6de1d4dcc00006d90d4b9e31b00002c8165ab22370000aaae4655b5830000439d0db4d56b00006cdbad0dd06700002ed106ef562d00009ca4f0edf67b000093674d121667000086c0e473215e00002d9b95b04d7b0000f6d97b095fb20000c310b235b9a3000068405fd3ebb70000d3ff26bfaeae000036854edc37560000d2511f8e85300000a3938da34819000000a6a7d1a38b0000a2943846db6c0000adbfb2ba3fc30000aae6df9891c10000eb3f795b4a31000083bbf8c98bd10000325e5bb9cc3900003688b3f1c27d00004bebe20a749f00003ae92b997da900009d7a275b6f9800001c94654e2ac10000dd434b50296c0000b803e29c13fa00009a688e636fcc00002cfb370fb7a300004746ee1ce30700007c6f3c9988370000533cbfacf5b60000ef5e5291613a00006046fe0717310000f746f9f979ce0000343a1ef20e2900004ab6152906f6000023977dafdfe900000bf2fea080700000e8e3a3d1eccd0000f8a53455f1ad00006c83f6c3fa630000d9035ac9cbfd0000cc1832c30f98000068640c1116a40000dc9fbe206ecd000033a4efeb5f400000b495a84ac1270000d0dc3e97346f000013457edff44a0000a05a474805a20000bab1c4e659f7000083ad48feb93100002c4d608c4e540000b7ff8eecdcb40000e6d8e1b5dcf00000d5979639b83800008901ce94bc9b00002d42391e25df00001f9ca23713ed00003e79849ae6c400002786a23292ac00004b07747e649c0000cace9aba16a300008709f8f659b30000f6621967e9af00007e0e1f29abe40000f46d2a8853ae0000ffad9cd2b29500008abe891d68330000e0a68a3ae7b0000076c5362f5bac0000233ff2157204000049d8981fadac0000453cb9aca78e00002fdea4b16db80000a2f478eb72e2000007f8000a888400002feb503f1109000097abe9a9354b000002d0b3a5f3300000d640d15ce0550000",
|
||||
"output_hex": "b65aff04b3be00001017676be7420000bed7369c497f00005e6ad3cf583100003e67b1b75bb600007cee625fec7a0000eeacb38c29070000537a6b5fbfd300008999833a66c000008def8693c15800006ccd949479e70000eab88158225800000a87cfbd01470000a593f7045f630000231822379c7e0000297606c9aef300007a80123909da000096a77b6e4f56000011723c2098ba0000e09e2c0b302e00000ca1313068f90000ea42bbd6d5750000624db979b99700004af9659e2f1a000019da281e66cb0000ecc4207baff90000839625fc113a000054bacb15c32d00006310118e47ca00004ba2cddefeeb00009d3721a3d23500000a9f688450cb0000d7a33f1478c70000a83e2561f5f8000070108bac2c960000ee9499b26f3b000015f6145f5d3d0000866a725a150d00002c0e733da6b30000dd4c605a84d00000c7d78e175eb900002c6b68306d1f0000b1349b4be23d0000a2a7d9093eae000080c1e809b0a4000082f4493e7bbb0000fd2ebc3fb92e0000789b061145430000c500eb3af89700006176cb5d1670000073536224443200006ea570680a6a000092770b8be16400000f9c1ee8016d000099c2f5ea82870000ff43d8efca4a0000e623d9b528ba00007b05eb3d65e800000af100d49e7700004c17ad12c7c300008fd9ada1df6c0000c5a3287326910000ac5be007e2620000e772918da3e40000e92d658346c80000c798622f47bd0000a3a950e70a760000d44c3100ccfa0000d9380751dfd8000035926b265eb40000596d18fc51a80000f3595f8d776b000010de907f27750000f0796f5ff4770000eccc0229fbd600009a9cbc3e0fd1000010ee390bcef3000086b5b77602710000ed17db8403f900007eca12873eec0000e7b1130f21bc000062d5f67a2966000047960b246a6400005a1924f7291e0000f62d74db7f430000e5429fad4dee00007b9a0862f72a0000c1d2f8be3f5e00007d45058b31d2000046fcf71b9b0000009c33042692200000e2a7ab06801d000091cf932a0fb200009ef5910b8f200000bcb3b0686dda0000fe86ed37b9da00007e10c4264ead000015ffc59440e20000e02ece64533f000097e30420e22500005f09ba3da5d50000156c5874c88300003dab15abb6cc00005ac199a6d59a0000ce23ad1484590000fc77394bdbe20000ef564c7908b50000b446c94bbd220000d6dd753ac7520000e02b18de7e6900003faa37fe512b00008ae6d1df97a8000020d4a8a6c8ad0000f655364e4b8800003cc59eaadbbd0000b2885137e74c00006aa459b2ed3000004f415a31e2560000c83294f760200000b0bc0a2a889b0000b694b842badb000037c94f0701b20000e2b41a06c33200000074165f3508000057312901b64a0000eb826e81b72000005c5c7f83f6c600004e4c3d427b880000348134e6c6130000d96426c9081f0000cb767bba793300004ff762ef1fd400005920b5822a1c0000b0ee75f12e710000864b2bb9e2bc00004e0e9d8de325000061406652df880000a3e9a34223000000dffa9eaee3290000bf0a5c5db4450000d10428a61c9a0000a57b1b5c3ed60000ac336a8d84160000cc3e606351ad0000b7bd5a59de1700006aeed43da05a00005cc12a09ac69000029ac6b40b8d1000041fa51e5c15200004ab0ba2044d20000713285cb7e3a000027e2974ce3390000601f1e62f0a000008bada2f1275500006dd71981934f0000fde829fd3994000030984d291a4d0000a57b95414c230000603d4ea4001d00003a8f728f8e580000b7503071b3100000eb3ce65ab09b0000d823da70ca2d0000ed06b6ba048c000090a6bcd30c41000025d77fafdb880000de1bb4ebfa530000314b07c003710000d8650a08880d000091fdde4eacf700000263cc18dd4a000092edba7e9ac50000f900ebb7897a00001fe300f04ad900000fedd0aa46200000198b0d3b1100000029f75d762a800000f4b419b2763a00004d0628824a130000e30768e5e27200000cecbffae9db0000678698ffe601000051c4acbbb2960000fb40d54a629f00005b0090c780d700009ffc4596fde0000039fda7d9fc1a00006eb32f223e92000078fd22608add00001d736432127d00001e89d7c4b932000059191d2e2ee10000404127d8648f0000f136e8843fed00006fb88ca0154700005a7ac9cec9340000438d29bbce320000861062969b710000a49b3a85c1b50000d47256826e3100002c81017aaed000006ebdd152618c00003187d9e1f9cf00000203c3ef814a0000f665e341799a0000c112faf14c500000360646cafbe200007fe7e1960c560000c158dc14b71700000113ff7cf3e300009ad20d123af8000008b7cd1c201800004072e3bae6c100006856a74bd94c00004febe606acdd00005c814e7bde95000075fa2a9fe8e3000060f09635e586000050d7359394640000b3cf65598dcf0000d9521861d4d400002f888e2b97c4000081f6823734ac0000b4ec6b0fa27b000051611cfbd4930000b828d527ffec000044cadc9263ca000067e1d0e7105600009c7db14738f200008e82eaf68cee0000a407601aacc60000598a11c051a7000032ec69dff42f000047e8ed08c57c0000e62e88310c1c000000016d90aa2a0000f199929e8792000042a51b772d0200007c54e6f40a2f000019e0fa4209ac0000052591e912ad0000b9e8201858ff00006f916420045100005e2d7ed228ac0000751170a8ab9b0000e059215b1754000017b69f3075750000b28d9dd760f00000c2dae79cce2600002d3e72ff4c210000a6d1dfa4a83f000092a8418bae280000e4bc25d07c0300009eeee0e89935000049747ce158480000a32cb852b7b50000",
|
||||
"output_sha256": "5818a28deeb00c7b30fcd06a6219cc2c78bf2179319ebefe473fc224c66f185b"
|
||||
},
|
||||
{
|
||||
"header": {
|
||||
"parameter_set": "math.ntt.pulsar-n256.v1",
|
||||
"modulus_id": "pulsar-q-0x1000000004a01",
|
||||
"backend_id": "pure-go",
|
||||
"hash_suite_id": "blake3-v1",
|
||||
"implementation_name": "luxfi/math/ntt",
|
||||
"implementation_version": "v1.3.0"
|
||||
},
|
||||
"test": "Forward/PulsarN256/i=49",
|
||||
"input_hex": "ff87283c549d00004142791ef32800007ac3f76c0f750000352328ed0961000076c04693c8e00000737078c2839b0000697f087217fd00001dc728d12415000003a601fac8c90000c1b71a1205cc0000743091bd6f1e0000ad1ffb41e13d000030392a2ff26c00001558cbfa47f1000042b084191e480000e887e5dd010000002ef2c359aff6000055ee358d5b320000d3fe14407d0b0000c40a0f9cb13d00003fbf2a06799a00000f45c52423a5000044f13b3044d4000023633fd0e7c900006054559c0e8c00006c98226dfbfb0000847266894f8900005ced2718b2e60000cf00651198640000c4b15b1ee6790000cb587861e1520000020650af9b350000fdb4d370aeae000062837fe3999b00006d8694a530c600000bc217dc68d50000dee030ac51c00000af4d17c07f1e000034b94212a64e0000b652693a7bd10000f69de60a04910000a466b131ea1a0000ca5a7009d2e70000f04cd26e08f80000800be0bf65980000ef07a124b7b70000cc3483c438aa0000352a071cfa8b000000bfa36dd72c0000813c58f53a2700008c834245c2be0000335c88b32fab00003e9f084d98c80000dc18f14ed4d200004dda00dc77cb000028fd14f8e49f000027cfb2b9f02a00005f815f6d7e0200009f72216c9a7600002d3a7c22463e00008aecc660a0240000718072481b440000039f434fba84000075c846869894000034781914986200006094b38071c500008aabd655564d0000e382950a744a0000e21d5ed243df000022e19cfa41db0000cadacae8fec9000014e8093611df00007134f8ee55fd00007052987d768d00001ca7092f4e2900009280d7940e3e0000b410d6bb6f0d00004704c22702aa000085fa3bc388800000077d963b6a2000005d1707c043590000903422400428000012b0d3c2f417000077cb2a3ed9d90000d58514ba81660000992bbba73b0f00009d31d27efc62000074ef3402dbda00001658220346d10000791a58afe620000065b92322c1df00001c9b143239ff00002b3be243746b0000a0ebab09f0430000a556190b12bd000087bf5ae677470000e2132b2b5c8c0000f6d56af8ee6d0000e8a1c05528a40000f38e62db2cba0000103d12d103d40000d4bfef98e2670000e59455ad47fb000063ea7a4028000000b81935bdeb0b0000a4edbff979000000fb8146ec68030000d514bcfe63210000963f87214155000022b033384e7400009aa57878361a00000ebbbf77f6f10000fff9dd7238180000f29af6aabf79000061a2170ba71e00007bf307f4b4760000ae28e7214ae70000de01a800b81c0000b9e51fde36c9000042ea72c9ff23000030917e2ff9ec00002df70413a12600009c8ac4d4ea4f0000e884be1c22490000fd1a96898f25000063ac366905b60000349487775c1e0000296a48e3c3c300001aecfbfd12540000f2f01cb02c170000549ad6519b620000f3e81b8c7d9400000eb3f09d1bd20000609dfa44bd5f00001342fb010edf000039ea42f51ac800002780cd11973400005511c2e8da510000051a99cda19e0000dbd142f67ea40000bb27c9d7af8a00002de212a7c63b0000b56e8076ff260000ba9bcc05e077000010e94e3200f900005b1a8f41bf6d0000207ad7ebccde00000a38df59cfac0000cb1547f23e2f00004f191dfb3b610000f632574f18f3000082fd62423e3600005f231afddb060000f7f5a185a9cb0000b5a5b99fca80000026e8e02fdb2700007c655a85e26a0000338066f3bca40000d041f341678a00009daf7758c9f400009e32226d881200003809f2234c9400009538772d103b0000dd8c2b3a54fb0000ce157130657f0000b06d04ca41030000862b1fb32fa900009092dcb43b960000a7573ca0288a00007083c3648f4f00005d83e89312fb0000aa88f70a5e1000004fdb60c2656a0000eec6b542f5610000b827d3c6e8a500005719bedd7e8d0000a241ed690c0f00000cee29a37fdb000047e7cde34c72000032d75d8aff4c0000a5ff94c5e58700005e61656b58ad00008e43a5d545e60000fc2321f4f0520000cfdd3ba2521b0000f0ba1db1c2f3000049c463e15a000000362efe5c98390000485f36b33ddb0000d3261cadd9d30000243d316a6a1700002b850b618beb00000cb0b81850b7000020aae02f2e5c00003e8f17ea39100000aef378cf08140000670fd2f8337e00000a6eb41874c60000b07cfe4b9e9d0000c189c93911030000522442d73c47000064678abe723b00004b9ae0eaeada00006aa5bc12b0f100007058321f447400001a2c084f110d00000a5d976ef9250000063211f9e1a1000023c03b53fd300000e429b7d3aaa10000f3b18c8fdd780000c9164a73c33e0000de82f230456b00009286a8c9e668000078769eb35e75000078e82d04cf6a0000ac735a2d8d9e00002a7c63c1ffae00002428fac0c2e9000056424ea1ea0e0000656c67c8560c0000f713481daeb500005d08d210237c000057e4a18f75eb0000aa30da212cd00000ee59388121900000df40d2f34b6500008c04c2a6439d00005f466d2821a00000c536a3ea6721000062723f48826a00009192990889c1000076845e2047480000278cbbeebd7b0000add6928b121000008df4fac27a9a0000c1940132ec210000f38e7eb8e7bf000057060f7bd8970000d004435edab0000011e07319a6ac000042f9565375f40000867284365d8100006ae4083bb0180000255a16d0024000001a075c38848200003073704239dc0000dc74cd98a4b10000261cb06e4a160000e76a4a9a3cf5000055e79e7441120000c25682dda10d000089312925740e00007f23e1eaa80a00000d2503f0e45200000c7b40c4b1490000",
|
||||
"output_hex": "f28a9cee7886000009c0c80c3a7d000041e8d94e28d0000051dd08067fab0000072db2b769a400007a9b2f99aa0e0000edb4b4e5edfd0000639745f655100000cd65b3dc882300007a8a074940290000934196a03cbf000010f721da573e0000f33faf5c6cfc00002237d158a430000029ec3419e3be0000388cd86235b700006b4a56e5579300006a46bcedbc61000092eeaec167400000a1d47b39a826000097c27f94ff3e00009a295d0106780000b1ddf6a25cdc000035702ae66b2f0000c7b9d97a22500000a75ba67953f60000b816f6680fe800007f301d81d0e50000de2c4cb663820000afe2faa8c8ed0000bd94391cfe0a00002563d9a4ff640000324fe024e7c30000b3e374344746000098166a52303c00006c1ed43f371f0000528e6e78bdf90000eca138d5e64b0000b395d76318fc00007484fdf905770000a9fcc0ddd5ed0000e8f0cf567a3900003df9d6c6c0c00000ad676d07b7a10000495ad0420c32000049b80e6747bf0000a74847a711750000af153cfef22e0000d8a305cd03c000007e129768aefc0000bf548173292f00002cf2aaec5632000081535c2458fb00005b6d0abc910c0000bd29a75c8180000021e18c8a8bf70000ee766b80995800007c04dcb258ef00004deb10b845c30000247c3fd8e5330000fdbaac3334710000bc21259e44190000ace1e3c78d9d0000b5c43822a1c700002ab417c631b50000ccf78f37354800007c34baa77fe30000d16cdc2b536c00002584edd099b200005ad459f90b9b0000384238ebf7f00000d71b33e03578000050e937a8612100001739f6e410dd0000de2595821f460000ff053ff6c40d000047ad2407c4a400009470804d63af0000bcc4c9a320450000692f63d486450000cfcbb7fe1e0d0000b310c851c3230000bf248b63f85e00007d5797b9f6480000e208f5a5ed2100002c311c4b333a0000494b602f147200008cc98fb69c470000d61f83ba80530000a8233c48042e00004d2ca44bd5a400009d9bc1e00ae3000052f11f6a1f4200004c2bf9e876080000570806f92a6a00002e6c55b35ee90000e3bc561ddb9c000059a26d6b7c3e0000cb923593bb4e00004f4937ec5dc40000c596dbb00bb600005135414eefc50000f423b2bde19b000039ebd54287310000f09df271d97200001bc25dabb75c00005b4a2c4a531000004305b970e55800006ecc32a6c6e3000089a44a5ac0d20000c659448d31f60000e4988c431e310000713e96643e280000facc740c7c5100008652f40b903900004fd7bfdb8ecc0000600aff8d5b6a00002c076b68fb8b0000ae508036f3a900007a851e4c929c000096178aea09ac000070a9ffbc62a900004a997afa76a00000735fc7e855300000afcaa0346e9900002686e9c5b33c00001beb589134fb0000867eb1e6dbf9000023136b179aa500003a0d6da2556a00004f364b70b79900000f6aed9c716900001614b650433d0000d1e5c83a062000006881ae8b2f9500004858ce81fd5300006b03c81188750000826d9c9061a200009fcfb1ed99ff0000e100d88d98b000001242a0d256840000817c932d61dd0000a34687f399fd00009ae469e0e1bb00008dc24d938cc60000f6576060d83a00005248cd0fccc00000872d4ba2a6350000fde73ec28b2d0000b8550f26188100003d05881202e70000d6675cce5e4e0000424258b7b53f0000321c6fd64e8d000021a1d65575ae00008444726654810000d52e9969dbea000045e8e2d266ed0000a174b16bb9a800007cd8d126dd6000000814c57fe10b0000e63ebf6b4af600004617fbc6c69f0000704f772857c9000099e728c5bfde0000fa24f33a043c000096091d98a91500007d8f18d6affc00006f7a2ce2ff190000bf12da98fe0f000096401f7b972100007830dc7ea5a40000fedd15e7ee490000ac7051b7336600002a7af9e7c881000028ed17d43abc0000df0f970133d00000192f6f6a6739000027f9d2b4076b0000f451aec0539f00004c09a2b4fed900005a962f0d4c9b00009998a57e8dd10000753212f181dc00002a8d25fff00c00005496d76798c90000b56a54dd7c84000066164ada27240000a932673c78890000179c944e1196000052f3803f83cf0000898b80d231a10000914b14cbf7f10000628c247d47b20000f2e593d4afc400008c109e043b400000004539410cef00008244bc2bfedc0000e565ee57131100008b8151779d2100009c22a436cd8f0000b4141cde622a0000fd1b8cf5e21000001946eb6bbd7800005224f9d8be130000b7de73e86ae200006455208197e40000ce393bdf08200000119f8bece34400006dcdf1209ef50000c913ddf7509a000008a8d6762d0d00009ada4f3e57080000759fa6cb23fd0000f29c00a7fbcf0000da2122f0e9b8000053057d1706f50000e369536f80540000ebba0ca20429000026010f3467070000753714a0a81000002e5cb8363ea4000027506eeca07700005326332332fc0000bb223ad473410000633e23ada53f000028002e4d16da0000eee2a5fadb450000001852ae7a7300005b9db8de4ef50000b2413531bed00000f1f699d880ee0000e38b58bff06700006a2ec00317af00009f864047378a0000e46ea9624f4300009f43e9606bd30000395f905c86990000050457cbac6500008ab8963d3f1900001623bcae03c40000ed35d2d596d60000344fefc9ee94000010643d0d2f4500006994be1134ec000042797fe5293600001bd4e7124b5700009222721550f10000697b7f209b130000f3d95b1d4efa00009f14e9ebed4c0000718499721a0000006ef5e6c838610000c90f236aa9340000bbd6f894118f00008b8b776ea7980000",
|
||||
"output_sha256": "669e296ade21f032daadbd827f997afe05358adf17d117d873a1ef3647129fac"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,203 @@
|
||||
// Copyright (c) 2026 Lux Industries Inc.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
//
|
||||
// emit_sample_kat — produces the canonical cross-runtime KAT bundle
|
||||
// for luxfi/math/sample. The C++ side at luxcpp/crypto/math/test/
|
||||
// sample_cross_runtime_test.cpp reads the same JSON, drives a byte-
|
||||
// buffer reader with the recorded entropy, and asserts byte-equal
|
||||
// sample output.
|
||||
//
|
||||
// LP-107 Phase 6.5: Go emits → C++ verifies. Cross-runtime release gate
|
||||
// for primitive distribution samplers.
|
||||
//
|
||||
// Usage:
|
||||
//
|
||||
// go run ./cmd/emit_sample_kat --out testdata/sample_kat.json
|
||||
//
|
||||
// Each entry contains:
|
||||
// Test: "Uniform/q=PulsarQ/i=N" -> param: q
|
||||
// "Ternary/q=PulsarQ/density=0.50/i=N" -> param: q, density
|
||||
// "CenteredBinomial/q=PulsarQ/eta=2/i=N" -> param: q, eta
|
||||
// InputHex: raw entropy bytes (4096) from a SHA-256 hash chain
|
||||
// OutputHex: first 64 samples, packed little-endian (512 bytes)
|
||||
//
|
||||
// Entropy bytes are deterministic from the test name + index seed so
|
||||
// emit runs are byte-stable.
|
||||
package main
|
||||
|
||||
import (
|
||||
"crypto/sha256"
|
||||
"encoding/binary"
|
||||
"flag"
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
|
||||
"github.com/luxfi/math/codec"
|
||||
"github.com/luxfi/math/params"
|
||||
"github.com/luxfi/math/sample"
|
||||
)
|
||||
|
||||
const (
|
||||
PulsarQ uint64 = 0x1000000004A01
|
||||
NTT998 uint64 = 998244353
|
||||
|
||||
NumSamples = 64
|
||||
EntropyBytes = 4096
|
||||
)
|
||||
|
||||
func main() {
|
||||
out := flag.String("out", "sample_kat.json", "output JSON path")
|
||||
flag.Parse()
|
||||
|
||||
header := params.KATHeader{
|
||||
ParameterSet: "math.sample.v1",
|
||||
ModulusID: params.ModPulsarQ,
|
||||
BackendID: params.BackendPureGo,
|
||||
HashSuiteID: params.HashBLAKE3,
|
||||
ImplementationName: "luxfi/math/sample",
|
||||
ImplementationVersion: "v1.3.0",
|
||||
}
|
||||
|
||||
entries := []codec.KATEntry{}
|
||||
|
||||
// 10 Uniform/PulsarQ entries.
|
||||
for i := 0; i < 10; i++ {
|
||||
seed := fmt.Sprintf("sample/Uniform/PulsarQ/i=%d", i)
|
||||
entropy := genEntropy(seed, EntropyBytes)
|
||||
dst := make([]uint64, NumSamples)
|
||||
if err := sample.Uniform(dst, PulsarQ, byteReader(entropy)); err != nil {
|
||||
log.Fatalf("Uniform[%d]: %v", i, err)
|
||||
}
|
||||
entries = append(entries, mkEntry(header,
|
||||
fmt.Sprintf("Uniform/q=PulsarQ/i=%d", i),
|
||||
entropy, packU64s(dst)))
|
||||
}
|
||||
|
||||
// 10 Uniform/NTT998 entries (smaller modulus, different mask).
|
||||
for i := 0; i < 10; i++ {
|
||||
seed := fmt.Sprintf("sample/Uniform/NTT998/i=%d", i)
|
||||
entropy := genEntropy(seed, EntropyBytes)
|
||||
dst := make([]uint64, NumSamples)
|
||||
if err := sample.Uniform(dst, NTT998, byteReader(entropy)); err != nil {
|
||||
log.Fatalf("Uniform/NTT998[%d]: %v", i, err)
|
||||
}
|
||||
entries = append(entries, mkEntry(header,
|
||||
fmt.Sprintf("Uniform/q=NTT998/i=%d", i),
|
||||
entropy, packU64s(dst)))
|
||||
}
|
||||
|
||||
// 5 Ternary entries at density=0.5.
|
||||
for i := 0; i < 5; i++ {
|
||||
seed := fmt.Sprintf("sample/Ternary/d=0.50/i=%d", i)
|
||||
entropy := genEntropy(seed, EntropyBytes)
|
||||
dst := make([]uint64, NumSamples)
|
||||
if err := sample.Ternary(dst, PulsarQ, 0.5, byteReader(entropy)); err != nil {
|
||||
log.Fatalf("Ternary[%d]: %v", i, err)
|
||||
}
|
||||
entries = append(entries, mkEntry(header,
|
||||
fmt.Sprintf("Ternary/q=PulsarQ/density=0.50/i=%d", i),
|
||||
entropy, packU64s(dst)))
|
||||
}
|
||||
|
||||
// 3 Ternary entries at density=0.25.
|
||||
for i := 0; i < 3; i++ {
|
||||
seed := fmt.Sprintf("sample/Ternary/d=0.25/i=%d", i)
|
||||
entropy := genEntropy(seed, EntropyBytes)
|
||||
dst := make([]uint64, NumSamples)
|
||||
if err := sample.Ternary(dst, PulsarQ, 0.25, byteReader(entropy)); err != nil {
|
||||
log.Fatalf("Ternary/0.25[%d]: %v", i, err)
|
||||
}
|
||||
entries = append(entries, mkEntry(header,
|
||||
fmt.Sprintf("Ternary/q=PulsarQ/density=0.25/i=%d", i),
|
||||
entropy, packU64s(dst)))
|
||||
}
|
||||
|
||||
// 5 CenteredBinomial entries at eta=2.
|
||||
for i := 0; i < 5; i++ {
|
||||
seed := fmt.Sprintf("sample/CBD/eta=2/i=%d", i)
|
||||
entropy := genEntropy(seed, EntropyBytes)
|
||||
dst := make([]uint64, NumSamples)
|
||||
if err := sample.CenteredBinomial(dst, PulsarQ, 2, byteReader(entropy)); err != nil {
|
||||
log.Fatalf("CBD[%d]: %v", i, err)
|
||||
}
|
||||
entries = append(entries, mkEntry(header,
|
||||
fmt.Sprintf("CenteredBinomial/q=PulsarQ/eta=2/i=%d", i),
|
||||
entropy, packU64s(dst)))
|
||||
}
|
||||
|
||||
// 3 CenteredBinomial entries at eta=4.
|
||||
for i := 0; i < 3; i++ {
|
||||
seed := fmt.Sprintf("sample/CBD/eta=4/i=%d", i)
|
||||
entropy := genEntropy(seed, EntropyBytes)
|
||||
dst := make([]uint64, NumSamples)
|
||||
if err := sample.CenteredBinomial(dst, PulsarQ, 4, byteReader(entropy)); err != nil {
|
||||
log.Fatalf("CBD/eta=4[%d]: %v", i, err)
|
||||
}
|
||||
entries = append(entries, mkEntry(header,
|
||||
fmt.Sprintf("CenteredBinomial/q=PulsarQ/eta=4/i=%d", i),
|
||||
entropy, packU64s(dst)))
|
||||
}
|
||||
|
||||
bundle := &codec.KATBundle{
|
||||
Schema: codec.KATSchemaV1,
|
||||
Entries: entries,
|
||||
}
|
||||
if err := codec.WriteKATBundleFile(*out, bundle); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
fmt.Printf("wrote %d entries to %s\n", len(entries), *out)
|
||||
}
|
||||
|
||||
// genEntropy returns n bytes from a SHA-256 hash chain seeded by s.
|
||||
func genEntropy(s string, n int) []byte {
|
||||
out := make([]byte, 0, n)
|
||||
var counter uint64
|
||||
for len(out) < n {
|
||||
h := sha256.New()
|
||||
h.Write([]byte(s))
|
||||
var ctr [8]byte
|
||||
binary.LittleEndian.PutUint64(ctr[:], counter)
|
||||
h.Write(ctr[:])
|
||||
out = append(out, h.Sum(nil)...)
|
||||
counter++
|
||||
}
|
||||
return out[:n]
|
||||
}
|
||||
|
||||
// byteReader returns a stateful io.Reader over the supplied bytes.
|
||||
// Each Read advances the internal offset.
|
||||
func byteReader(buf []byte) io.Reader { return &bbReader{buf: buf} }
|
||||
|
||||
type bbReader struct {
|
||||
buf []byte
|
||||
off int
|
||||
}
|
||||
|
||||
func (r *bbReader) Read(p []byte) (int, error) {
|
||||
if r.off >= len(r.buf) {
|
||||
return 0, io.EOF
|
||||
}
|
||||
n := copy(p, r.buf[r.off:])
|
||||
r.off += n
|
||||
return n, nil
|
||||
}
|
||||
|
||||
func packU64s(vs []uint64) []byte {
|
||||
out := make([]byte, 8*len(vs))
|
||||
for i, v := range vs {
|
||||
binary.LittleEndian.PutUint64(out[i*8:], v)
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func mkEntry(h params.KATHeader, name string, input, output []byte) codec.KATEntry {
|
||||
digest := sha256.Sum256(output)
|
||||
return codec.KATEntry{
|
||||
Header: h,
|
||||
Test: name,
|
||||
InputHex: codec.HexEncode(input),
|
||||
OutputHex: codec.HexEncode(output),
|
||||
OutputSHA256: codec.HexEncode(digest[:]),
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
// Copyright (c) 2026 Lux Industries Inc.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
package sample
|
||||
|
||||
// LP-107 Phase 6.5 cross-runtime KAT release gate.
|
||||
//
|
||||
// sample re-uses the canonical KATEntry / KATBundle types defined in
|
||||
// luxfi/math/codec.
|
||||
|
||||
import "github.com/luxfi/math/codec"
|
||||
|
||||
// KATEntry is an alias for codec.KATEntry.
|
||||
type KATEntry = codec.KATEntry
|
||||
|
||||
// KATBundle is an alias for codec.KATBundle.
|
||||
type KATBundle = codec.KATBundle
|
||||
|
||||
// KATSchemaV1 is the canonical bundle schema string.
|
||||
const KATSchemaV1 = codec.KATSchemaV1
|
||||
|
||||
// WriteKATBundleFile writes a bundle to disk; thin pass-through.
|
||||
func WriteKATBundleFile(path string, b *KATBundle) error {
|
||||
return codec.WriteKATBundleFile(path, b)
|
||||
}
|
||||
|
||||
// ReadKATBundleFile reads a bundle from disk; thin pass-through.
|
||||
func ReadKATBundleFile(path string) (*KATBundle, error) {
|
||||
return codec.ReadKATBundleFile(path)
|
||||
}
|
||||
|
||||
// HexEncode is the canonical hex encoder shared with codec.
|
||||
func HexEncode(b []byte) string { return codec.HexEncode(b) }
|
||||
|
||||
// HexDecode is the inverse.
|
||||
func HexDecode(s string) ([]byte, error) { return codec.HexDecode(s) }
|
||||
@@ -0,0 +1,187 @@
|
||||
// Copyright (c) 2026 Lux Industries Inc.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
package sample
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"crypto/sha256"
|
||||
"encoding/binary"
|
||||
"fmt"
|
||||
"io"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
const (
|
||||
katNumSamples = 64
|
||||
katPulsarQ = uint64(0x1000000004A01)
|
||||
katNTT998 = uint64(998244353)
|
||||
)
|
||||
|
||||
// TestKATBundle_RoundTrip — load the JSON KAT bundle emitted by
|
||||
// cmd/emit_sample_kat, replay every entry through the Go-side
|
||||
// samplers driven by a byte-buffer reader, and assert byte-equal
|
||||
// sample output.
|
||||
//
|
||||
// Cross-runtime contract: the same JSON drives the C++ replay test in
|
||||
// luxcpp/crypto/math/test/sample_cross_runtime_test.cpp.
|
||||
func TestKATBundle_RoundTrip(t *testing.T) {
|
||||
path := filepath.Join("testdata", "sample_kat.json")
|
||||
bundle, err := ReadKATBundleFile(path)
|
||||
if err != nil {
|
||||
t.Skipf("KAT bundle not present at %s; run cmd/emit_sample_kat: %v",
|
||||
path, err)
|
||||
return
|
||||
}
|
||||
if bundle.Schema != KATSchemaV1 {
|
||||
t.Fatalf("schema = %q, want %q", bundle.Schema, KATSchemaV1)
|
||||
}
|
||||
if len(bundle.Entries) == 0 {
|
||||
t.Fatal("bundle has zero entries")
|
||||
}
|
||||
for i, entry := range bundle.Entries {
|
||||
if err := entry.Header.Validate(); err != nil {
|
||||
t.Errorf("entry[%d] header: %v", i, err)
|
||||
}
|
||||
input, err := HexDecode(entry.InputHex)
|
||||
if err != nil {
|
||||
t.Errorf("entry[%d] input_hex: %v", i, err)
|
||||
continue
|
||||
}
|
||||
expected, err := HexDecode(entry.OutputHex)
|
||||
if err != nil {
|
||||
t.Errorf("entry[%d] output_hex: %v", i, err)
|
||||
continue
|
||||
}
|
||||
actual, ok := replayEntry(t, entry.Test, input)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
digest := sha256.Sum256(actual)
|
||||
if got := HexEncode(digest[:]); got != entry.OutputSHA256 {
|
||||
t.Errorf("entry[%d] %q: SHA-256 mismatch:\n want %s\n got %s",
|
||||
i, entry.Test, entry.OutputSHA256, got)
|
||||
}
|
||||
if !bytes.Equal(actual, expected) {
|
||||
t.Errorf("entry[%d] %q: byte-stream mismatch", i, entry.Test)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// replayEntry parses the test name and dispatches to the right sampler.
|
||||
// Test name format mirrors cmd/emit_sample_kat:
|
||||
//
|
||||
// Uniform/q=PulsarQ/i=N
|
||||
// Uniform/q=NTT998/i=N
|
||||
// Ternary/q=PulsarQ/density=0.50/i=N
|
||||
// CenteredBinomial/q=PulsarQ/eta=2/i=N
|
||||
func replayEntry(t *testing.T, name string, input []byte) ([]byte, bool) {
|
||||
t.Helper()
|
||||
r := newBBReader(input)
|
||||
dst := make([]uint64, katNumSamples)
|
||||
|
||||
q := parseQ(name)
|
||||
if q == 0 {
|
||||
t.Errorf("%s: cannot parse q", name)
|
||||
return nil, false
|
||||
}
|
||||
|
||||
switch {
|
||||
case strings.HasPrefix(name, "Uniform/"):
|
||||
if err := Uniform(dst, q, r); err != nil {
|
||||
t.Errorf("%s: Uniform: %v", name, err)
|
||||
return nil, false
|
||||
}
|
||||
case strings.HasPrefix(name, "Ternary/"):
|
||||
density, ok := parseDensity(name)
|
||||
if !ok {
|
||||
t.Errorf("%s: cannot parse density", name)
|
||||
return nil, false
|
||||
}
|
||||
if err := Ternary(dst, q, density, r); err != nil {
|
||||
t.Errorf("%s: Ternary: %v", name, err)
|
||||
return nil, false
|
||||
}
|
||||
case strings.HasPrefix(name, "CenteredBinomial/"):
|
||||
eta, ok := parseEta(name)
|
||||
if !ok {
|
||||
t.Errorf("%s: cannot parse eta", name)
|
||||
return nil, false
|
||||
}
|
||||
if err := CenteredBinomial(dst, q, eta, r); err != nil {
|
||||
t.Errorf("%s: CenteredBinomial: %v", name, err)
|
||||
return nil, false
|
||||
}
|
||||
default:
|
||||
t.Errorf("unknown KAT test name: %s", name)
|
||||
return nil, false
|
||||
}
|
||||
out := make([]byte, len(dst)*8)
|
||||
for i, v := range dst {
|
||||
binary.LittleEndian.PutUint64(out[i*8:], v)
|
||||
}
|
||||
return out, true
|
||||
}
|
||||
|
||||
func parseQ(name string) uint64 {
|
||||
if strings.Contains(name, "q=PulsarQ") {
|
||||
return katPulsarQ
|
||||
}
|
||||
if strings.Contains(name, "q=NTT998") {
|
||||
return katNTT998
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func parseDensity(name string) (float64, bool) {
|
||||
idx := strings.Index(name, "density=")
|
||||
if idx < 0 {
|
||||
return 0, false
|
||||
}
|
||||
rest := name[idx+len("density="):]
|
||||
end := strings.IndexByte(rest, '/')
|
||||
if end < 0 {
|
||||
return 0, false
|
||||
}
|
||||
var d float64
|
||||
if _, err := fmt.Sscanf(rest[:end], "%f", &d); err != nil {
|
||||
return 0, false
|
||||
}
|
||||
return d, true
|
||||
}
|
||||
|
||||
func parseEta(name string) (int, bool) {
|
||||
idx := strings.Index(name, "eta=")
|
||||
if idx < 0 {
|
||||
return 0, false
|
||||
}
|
||||
rest := name[idx+len("eta="):]
|
||||
end := strings.IndexByte(rest, '/')
|
||||
if end < 0 {
|
||||
return 0, false
|
||||
}
|
||||
var e int
|
||||
if _, err := fmt.Sscanf(rest[:end], "%d", &e); err != nil {
|
||||
return 0, false
|
||||
}
|
||||
return e, true
|
||||
}
|
||||
|
||||
// bbReader is a stateful byte-buffer io.Reader.
|
||||
type bbReader struct {
|
||||
buf []byte
|
||||
off int
|
||||
}
|
||||
|
||||
func newBBReader(b []byte) *bbReader { return &bbReader{buf: b} }
|
||||
|
||||
func (r *bbReader) Read(p []byte) (int, error) {
|
||||
if r.off >= len(r.buf) {
|
||||
return 0, io.EOF
|
||||
}
|
||||
n := copy(p, r.buf[r.off:])
|
||||
r.off += n
|
||||
return n, nil
|
||||
}
|
||||
Vendored
+509
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user