A3E9 logoA3E9
All evidence

// CRYPTOGRAPHIC_BOUNDARY · NO_LOGIN_REQUIRED

Three Columns, Not Two: Ours, Theirs, and Nobody's.

A boundary statement with two boxes invites the reader to assume that everything outside A3E9’s box is covered by the vendor’s certificate. For a deployment running software PKCS#11 modules that assumption is wrong, and it is wrong in the direction that flatters us. So the split is drawn with a third column, and that column is the one worth reading first.

// THE_SPLIT

Which Code Runs Where.

A3E9 is middleware. It normalizes, authorizes and records; the module generates, stores and signs. The known-answer suite covers only the first half — the half A3E9 owns in software.

A3E9 software scope

Owned, tested, and covered by the known-answer suite.

Ed25519 verify

RFC 8032 §6.1 · 5 vectors

RIPEMD-160

Published reference vectors · 6 vectors

ML-DSA / ML-KEM via liboqs

NIST ACVP vectors · 225 pass

195 more not reachable via the liboqs API · liboqs is not FIPS certified

Policy · normalization · audit chain

evaluated before any PKCS#11 call

Vendor module scope

Certified separately by the vendor. Not A3E9’s claim to make.

Key generation and storage

CKA_EXTRACTABLE=CK_FALSE, set by A3E9, not caller-overridable

The signing operation

the key never leaves the module

Module certification

exercised against real modules: SoftHSM2 · Craton

written, not hardware-validated: Thales · AWS CloudHSM · Utimaco

Claimed by neither

Outside A3E9’s software and outside the module’s certificate.

A FIPS 140 hardware boundary

the evaluation modules are software · no certified chassis

CAVP / CMVP validation

vectors are run and self-reported · no certificate is held

SLH-DSA (FIPS 205)

not implemented · no request enum, no wired mechanism

BIP-340 / Taproot spends

refused on every vendor · no software fallback

Limit

The middle column is a vendor claim, not an A3E9 one. Where a deployment brings certified hardware, that certificate belongs to the vendor and covers the module, not A3E9. Where the deployment brings SoftHSM2 or Craton — as the evaluator kit does — there is no certificate in that column at all, only software.

// WHY_LIBOQS_IS_A_SCOPE_NOTE

An Uncertified Library, Stated Where It Belongs.

225 NIST ACVP vector cases run against A3E9’s post-quantum path and pass. That path is software liboqs, which is not a FIPS-certified module. Both facts are true at once, and which one a reader weighs more heavily depends entirely on where they think the boundary sits.

What the vectors establish

The arithmetic is correct against NIST's own published inputs and expected outputs, across every parameter set that the library's public API can be driven through. That is a real property and it is independently checkable: the vectors are public, and every expected digest in the report is recomputable from upstream files.

What they do not establish

Not that the implementation is validated — no CAVP or CMVP certificate is held, and running vectors is not the same programme as being certified against them. Not that the results came from a real run, which is self-reported. And not that liboqs carries any module boundary, because it does not.

Why the two travel together

Every post-quantum claim on this site carries the uncertified-library fence in the same sentence. Separating them is how "225 NIST vectors pass" becomes a certification claim in a summary written by someone reading quickly, which is how these claims actually propagate.

What is not implemented at all

SLH-DSA (FIPS 205) is absent — no request enum, no wired PKCS#11 mechanism, no partial path. It appears in the conformance matrix as a row with no vectors rather than being omitted, because an inventory that lists only what exists is not an inventory.

// REFUSALS_AT_THE_BOUNDARY

Where the Code Stops You, Not the Manual.

Several of these cost capability that would be easier to advertise than to decline. Each is enforced before a session is borrowed, and each is recorded when it fires.

BIP-340 / Taproot spends

Refused on every vendor, with no software fallback. BIP-340 needs the private scalar; no PKCS#11 mechanism computes it inside the boundary and CKA_EXTRACTABLE=CK_FALSE will not release it. The RPC exists, resolves the capability before borrowing a session, records the denial, and returns UNIMPLEMENTED. A3E9 derives Taproot addresses but cannot spend from one — the asymmetry is stated rather than hidden behind a flag.

Cross-vendor duplication of signing keys

Never attempted. KeySync synchronizes transportable key material — a transit KEK — through an attested wrap/translate/unwrap ceremony. A FIPS 140-2 Level 3 signing key is non-extractable by design, so its resilience comes from multi-vendor failover and MPC vendor-bound custody, not from copying it. Any claim that keys are replicated across vendors would be false.

The FIPS boundary in the evaluator kit

SoftHSM2 and Craton are software PKCS#11 modules with no FIPS 140-2 Level 3 chassis. Level 3 describes hardware a production deployment brings; it is not what an evaluator is driving. Thales, AWS CloudHSM and Utimaco paths are written but have never been exercised against real hardware.

Post-quantum, honestly scoped

ML-DSA and ML-KEM run through software liboqs on the evaluation path and are not FIPS certified. Native vendor PQC mechanisms are declared per vendor profile but unexercised. The operating-mode policy that gates PQC signing is real and enforced before any session is borrowed — the certification is what is absent, not the enforcement.

Attribute reads are an allowlist, not a denylist

The evidence RPCs accept attribute names, not numeric CKA_ values, and an unlisted name never reaches a PKCS#11 call. CKA_VALUE and every private-key component are permanently unreadable — on a non-sensitive object an unrestricted passthrough would be a key-exfiltration primitive. Denials are recorded before a session is borrowed.

The HSM serial number never leaves memory

It is read once, folded into a SHA-256 hash with a random salt and the tenant id, and the in-memory copy is wiped. Only the salt and the hash are ever written to a licence or binding file. No tool logs, serializes or transmits the raw serial.

Signing is never blocked commercially

No licence status, expiry or quota can prevent a signature. Key generation is the only gated operation, and a suspended licence — the integrator has not paid — bypasses even that, because the bank did nothing wrong and must see zero operational effect.

// WHAT_A_TOKEN_ADDS

A token shows which side of this line executed a given operation: the portal reports the active vendor and mechanism for a signature you submitted, which is the one thing a static diagram cannot demonstrate.

Everything above is checkable without contacting anyone, and is meant to be read first. The token exists because the remainder needs a provisioned environment — not because the evidence is being held back.