Regional Crypto Route Matrix

This matrix defines the route evidence Stella Ops expects when regional crypto provider selection is configured for signing surfaces. It is a routing and evidence contract, not a provider implementation guide.

Simulator rows are smoke-test only. They must never satisfy release evidence, production attestability, or compliance proof requirements.

Signing Surfaces

SurfaceRoute configurationRoute fields that must be preserved
Authority OIDC/JWKSAuthority:Signing:*, notification ACK signing, revocation and permalink signing optionsProvider id, key id or certificate kid, algorithm, and JWKS/public key metadata
Signer DSSESigner:Dsse:*, key resolver output, preferred provider orderProvider hint, key id, algorithm, and signer metadata
Attestor DSSEAttestor:Signing:Keys[] with Provider, ProviderKeyId, and AlgorithmConfigured provider id, provider key id, algorithm, and emitted logical bundle key id
Platform health/api/v1/admin/crypto-providers/healthConfigured provider id, observed provider id, observed key id when advertised, algorithm inventory, simulator flags, and drift reasons
Compose smokedevops/compose/docker-compose.crypto-provider.*.yml overlaysReadiness payload, production/test-only flags, required vendor inputs, and fail-closed readiness states

Provider Route Matrix

ProfileProvider idExpected algorithmsKey id sourceHealth/readiness sourceRelease evidenceRequired operator inputsFail-closed states
eIDAS QTSP/QSCDeidas behind the eIDAS TSP/QSCD HTTP contractES256, PS256, CAdES/QES profile-specific algorithm labelsConfigured eIDAS key KeyId; TSP/QSCD certificate-derived public kideIDAS TSP/QSCD adapter contract and sealed trusted-list evidenceYes only when QSCD/QTSP evidence is present and trusted-list/timestamp/revocation requirements are satisfiedTSP endpoint, TSP credentials, configured public certificate/JWK, sealed EU trusted-list fixture, evidence profileMissing public certificate/JWK; missing timestamp, revocation, archive, or trusted-list evidence; simulator-shaped TSP response; LT/LTA evidence requested before embedding support
eIDAS local softwareeu.eidas.soft or local eidas PKCS#12 modeES256 or configured AdES algorithmLocal keystore key idIn-process provider diagnosticsNo for QES/QSCD release evidence; development or non-qualified AdES onlyEIDAS_SOFT_ALLOWED, local PKCS#12/PEM material, local certificateSoft provider used where QSCD is required; missing keystore; certificate/key algorithm mismatch
GOST CryptoPro CSPru.cryptopro.cspGOST12-256, GOST12-512Operator CryptoPro container/key aliascryptopro-csp /health from docker-compose.crypto-provider.cryptopro.ymlYes only with licensed customer packages, CSP health proof, and operator key/container evidenceCRYPTOPRO_ACCEPT_EULA=1, customer package directory, CSP container/key name, licensed runtimeEULA not accepted; customer packages missing; csptest unavailable; key container missing; simulator or local generated key used as release evidence
GOST OpenSSL or PKCS#11openssl.gost, ru.pkcs11GOST12-256, GOST12-512Configured key file, token label, or PKCS#11 object idProvider diagnostics or HSM/PKCS#11 healthYes when provider diagnostics and operator key evidence identify the real backendOpenSSL engine/provider configuration or PKCS#11 library/slot/PIN/key idProvider not registered; unsupported algorithm; token/library missing; key id not declared
SM Remote HSMcn.sm.remote.httpSM2 for signing/verification; SM3/SM4 for hash/encrypt surfacesSMREMOTE_KEYS logical-to-remote key mappingSmRemote /status, /keys, and vendor adapter healthYes when production HSM adapter reports cn.sm.remote.http, non-simulator metadata, and explicit key mappingSMREMOTE_PROVIDER=cn.sm.remote.http, SM_REMOTE_HSM_URL, optional SM_REMOTE_HSM_API_KEY, SMREMOTE_KEYSMissing HSM URL; empty key mapping; adapter unavailable; adapter kind mismatch; simulator/test-only response; software provider reported in production
HSM PKCS#11com.stellaops.crypto.hsm in PKCS#11 modeHSM-RSA-PSS-SHA256, HSM-RSA-SHA256, HSM-ECDSA-P256, configured HSM algorithmsPKCS#11 token/object key id from configured key allow-listHSM plugin health details with providerMode=pkcs11, pkcs11=true, testOnly=falseYes when backed by an operator device or certified slot evidencePKCS#11 library path, slot id, token label, PIN/secret, signing key idsMissing library, slot, token label, PIN, or key id; no token present; simulation mode used for release evidence
FIPS software or HSMfips.ecdsa.soft, com.stellaops.crypto.fips, or HSM-backed FIPS routeES256, ES384, PS256, RSA-PSS-SHA256, configured FIPS labelsConfigured local key, KMS/HSM key, or FIPS provider key idProvider diagnostics plus OS/FIPS mode or HSM evidenceYes only with OS/provider FIPS mode proof or certified HSM evidenceFIPS mode setting, configured RSA/ECDSA/HMAC/AES keys, or HSM/KMS key referenceFIPS mode required but unavailable; generated or derived local harness keys used as production evidence; key material missing
Universal simulatorsim.crypto.remoteSM2, sm.sim, sm2.sim, GOST12-256, GOST12-512, ru.magma.sim, ru.kuznyechik.sim, fips.sim, eidas.sim, pq.sim, DILITHIUM3, FALCON512sim-key from /keyssim-crypto /keys, /sign, and /verify from docker-compose.crypto-provider.crypto-sim.ymlNo. Development/Testing smoke coverage only.STELLAOPS_ALLOW_UNSAFE_CRYPTO_SIM=1Any release evidence attempt; production=true; testOnly=false; releaseEvidence=true; missing sim-key; missing advertised smoke algorithms

Platform Health Contract

/api/v1/admin/crypto-providers/health is a route-readiness endpoint. It reports configured provider route metadata alongside what the probe observed:

Compose Smoke Notes

OverlaySmoke checkExpected result without licensed or hardware packages
docker-compose.crypto-provider.crypto-sim.ymlStart with STELLAOPS_ALLOW_UNSAFE_CRYPTO_SIM=1; query sim-crypto /keys; run dotnet run --project ../services/crypto/sim-crypto-smoke from devops/compose/Payloads report provider=sim.crypto.remote, keyId=sim-key, production=false, testOnly=true, and releaseEvidence=false. The default smoke signs, verifies, and tamper-checks SM, GOST, eIDAS, FIPS, and PQ labels. This is Development/Testing evidence only.
docker-compose.crypto-provider.smremote.ymlStart production SM Remote with SMREMOTE_PROVIDER=cn.sm.remote.http; query /status and /keysProduction without SM_REMOTE_HSM_URL and SMREMOTE_KEYS must fail closed. A ready production route reports provider=cn.sm.remote.http and SM2.
docker-compose.crypto-provider.cryptopro.ymlStart cryptopro-csp wrapper and query /healthWithout EULA acceptance, customer packages, and csptest, the wrapper reports unavailable/degraded readiness. It does not simulate signing evidence.

Operators attach real regional provider evidence to a release by preserving the provider id, provider key id, algorithm, backend readiness payload, and device or vendor proof in the release evidence bundle. Simulator smoke output can be stored as test evidence only and must be excluded from production release decisions.

Production Provider Preparation

Regional release evidence remains real-provider pending unless the route has operator proof:

ARM64 Provider Readiness

The managed Pkcs11Interop package is not itself the ARM64 blocker. It loads the operator-configured PKCS#11 library at runtime, so release readiness depends on the actual provider artifact named in configuration.

Stella Ops first-party .NET service images are ARM64-ready on Debian/Ubuntu glibc linux-arm64. GOST is treated as a regional cryptography standard route, not as a bank-specific feature, and the route matrix keeps an open-source substitution path for deployments that do not require a specific certified vendor package.

For ARM64 deployments:

Operator-Mutable Active Profile (Sprint 503_007)

The active per-tenant compliance profile (world | fips | gost | sm | kcmvp | eidas) is operator-mutable at runtime. It is no longer a configuration-only value:

Changing the profile mutates algorithm selection across hashing/MAC/AEAD for the entire tenant (see ComplianceProfiles.cs). The route-matrix rows above remain authoritative for the provider route; the profile column simply selects which set of algorithms a given route is expected to advertise.