Core · Cryptography

A deliberate CPU and Vulkan security boundary.

Secret-key and single-message operations stay on audited CPU implementations. Vulkan accelerates deferred batch work over public or non-secret data where parity can be verified precisely.

48 / 48 C++ tests5 / 5 Python testsGPU ML-DSA research is private

Security boundary

Typed secret operations

ML-DSA-65 key generation and signing use liboqs. Secret keys are move-only and zeroized on destruction.

Deferred batch hashing

SHAKE-128, SHAKE-256, Keccak-f[1600], and power-of-two Merkle roots have Vulkan batch routes with CPU parity tests.

Fail-closed parsing

Hashes, public keys, signatures, and Merkle proofs reject malformed lengths and encodings.

Claim discipline

Implementation tests are evidence; they are not a FIPS 140 validation or independent security certification.

Production surface

PrimitiveBackendStatus
Keccak-f[1600], SHAKE-128/256, KMAC-256CPUOfficial known-answer vectors
OaHash and Merkle proofsCPUStrict parsing and malformed-proof tests
Batch SHAKE and Keccak-f[1600]VulkanDeferred; CPU parity and direct KAT tests
Power-of-two Merkle rootVulkanDeferred; CPU parity tested
ML-DSA-65 keygen, sign, verifyCPU liboqsTyped and negative-path tested

ML-DSA-65 serialized sizes

TypeSizeContract
OaHash32 bytesSHAKE-256 output
OaPublicKey1,952 bytesExact-length public serialization
OaSecretKey4,032 bytesMove-only; zeroized on destruction
OaSignature3,309 bytesExact-length signature serialization