Recursive AI

Platform availability

All onecrypto docs

What each algorithm resolves to on each platform. The library asks the platform's cryptography first. Where the platform lacks an algorithm and the library has a narrow managed fallback, the call succeeds through the fallback. Otherwise it throws AlgorithmNotSupportedException, which names the algorithm, the platform (operating system, architecture, runtime, and the provider fact that decided it, such as the loaded OpenSSL version) and the reason.

Provided by

  • platform: the .NET base class library, backed by the operating system's cryptography.
  • managed fallback: the library's own code, used because the platform has no implementation.
  • not supported: the platform has none and the library has no fallback.

Which fallbacks exist, and why only those

  • SHA-3 and SHAKE (FIPS 202) and ChaCha20-Poly1305 (RFC 8439): constant time by construction. The platform has no SHA3-224 anywhere, so SHA3-224 is always the managed Keccak.
  • RSA verification (PKCS#1 v1.5 and PSS, RFC 8017 section 8) and ECDSA verification (P-256, P-384, P-521 and the brainpoolP256r1, P384r1, P512r1 curves of RFC 5639; FIPS 186-5 section 6.4.2): public-key operations on public data only. The managed verifier is also used for RSA-PSS parameter sets the platform cannot express (a salt length other than the digest size, or a mask-function hash that differs from the message hash) and for PKCS#1 signatures over SHA-3 digests.
  • No fallback ever for signing, decryption, key agreement or key generation of RSA, ECDSA or ECDH, for AES, and for ML-KEM, ML-DSA and SLH-DSA. These report AlgorithmNotSupportedException where the platform lacks them.

The browser has hashes and HMAC only: parsing, inspecting and verifying work there through the fallbacks, and everything else reports AlgorithmNotSupportedException.

Keeping the table honest

Each section below is generated from the dispatch code by the test AvailabilityTests, which fails when the section for the platform it runs on differs from what the code reports. To update a section after a deliberate change, run that test on the platform with ONECRYPTO_AVAILABILITY_UPDATE=1.

Platforms

linux-x64-openssl-3.0

AlgorithmProvided byNote
SHA3-224managed fallbackthe platform has no SHA3-224 at all
SHA3-256platform
SHA3-384platform
SHA3-512platform
SHAKE128platform
SHAKE256platform
ChaCha20-Poly1305platform
RSA verify (PKCS#1 v1.5, PSS)platformverify-only managed fallback where the platform cannot
ECDSA verify P-256, P-384, P-521platformverify-only managed fallback where the platform cannot
ECDSA verify brainpoolP256r1platformverify-only managed fallback where the platform cannot
ECDSA verify brainpoolP384r1platformverify-only managed fallback where the platform cannot
ECDSA verify brainpoolP512r1platformverify-only managed fallback where the platform cannot
AES (ECB, CBC, GCM), and OCB, EAX and key wrap over itplatform
AES-GCM (CMS AuthEnvelopedData, PKCS #8 and OpenSSH keys)platform
AES-CCM (CMS AuthEnvelopedData when asked for)platform
RSA sign, decryptplatformno fallback: private-key operations are never done in managed code
ECDSA, ECDH sign and agreeplatformno fallback: private-key operations are never done in managed code
ML-KEMnot supportedno fallback
ML-DSAnot supportedno fallback
SLH-DSAnot supportedno fallback; the platform's API is a preview

linux-x64-openssl-3.5

AlgorithmProvided byNote
SHA3-224managed fallbackthe platform has no SHA3-224 at all
SHA3-256platform
SHA3-384platform
SHA3-512platform
SHAKE128platform
SHAKE256platform
ChaCha20-Poly1305platform
RSA verify (PKCS#1 v1.5, PSS)platformverify-only managed fallback where the platform cannot
ECDSA verify P-256, P-384, P-521platformverify-only managed fallback where the platform cannot
ECDSA verify brainpoolP256r1platformverify-only managed fallback where the platform cannot
ECDSA verify brainpoolP384r1platformverify-only managed fallback where the platform cannot
ECDSA verify brainpoolP512r1platformverify-only managed fallback where the platform cannot
AES (ECB, CBC, GCM), and OCB, EAX and key wrap over itplatform
AES-GCM (CMS AuthEnvelopedData, PKCS #8 and OpenSSH keys)platform
AES-CCM (CMS AuthEnvelopedData when asked for)platform
RSA sign, decryptplatformno fallback: private-key operations are never done in managed code
ECDSA, ECDH sign and agreeplatformno fallback: private-key operations are never done in managed code
ML-KEMplatformno fallback
ML-DSAplatformno fallback
SLH-DSAplatformno fallback; the platform's API is a preview

osx-arm64

AlgorithmProvided byNote
SHA3-224managed fallbackthe platform has no SHA3-224 at all
SHA3-256managed fallback
SHA3-384managed fallback
SHA3-512managed fallback
SHAKE128managed fallback
SHAKE256managed fallback
ChaCha20-Poly1305platform
RSA verify (PKCS#1 v1.5, PSS)platformverify-only managed fallback where the platform cannot
ECDSA verify P-256, P-384, P-521platformverify-only managed fallback where the platform cannot
ECDSA verify brainpoolP256r1managed fallbackverify-only managed fallback where the platform cannot
ECDSA verify brainpoolP384r1managed fallbackverify-only managed fallback where the platform cannot
ECDSA verify brainpoolP512r1managed fallbackverify-only managed fallback where the platform cannot
AES (ECB, CBC, GCM), and OCB, EAX and key wrap over itplatform
AES-GCM (CMS AuthEnvelopedData, PKCS #8 and OpenSSH keys)platform
AES-CCM (CMS AuthEnvelopedData when asked for)not supported
RSA sign, decryptplatformno fallback: private-key operations are never done in managed code
ECDSA, ECDH sign and agreeplatformno fallback: private-key operations are never done in managed code
ML-KEMnot supportedno fallback
ML-DSAnot supportedno fallback
SLH-DSAnot supportedno fallback; the platform's API is a preview

browser-wasm

AlgorithmProvided byNote
SHA3-224managed fallbackthe platform has no SHA3-224 at all
SHA3-256managed fallback
SHA3-384managed fallback
SHA3-512managed fallback
SHAKE128managed fallback
SHAKE256managed fallback
ChaCha20-Poly1305managed fallback
RSA verify (PKCS#1 v1.5, PSS)managed fallbackverify-only managed fallback where the platform cannot
ECDSA verify P-256, P-384, P-521managed fallbackverify-only managed fallback where the platform cannot
ECDSA verify brainpoolP256r1managed fallbackverify-only managed fallback where the platform cannot
ECDSA verify brainpoolP384r1managed fallbackverify-only managed fallback where the platform cannot
ECDSA verify brainpoolP512r1managed fallbackverify-only managed fallback where the platform cannot
AES (ECB, CBC, GCM), and OCB, EAX and key wrap over itnot supported
AES-GCM (CMS AuthEnvelopedData, PKCS #8 and OpenSSH keys)not supported
AES-CCM (CMS AuthEnvelopedData when asked for)not supported
RSA sign, decryptnot supportedno fallback: private-key operations are never done in managed code
ECDSA, ECDH sign and agreenot supportedno fallback: private-key operations are never done in managed code
ML-KEMnot supportedno fallback
ML-DSAnot supportedno fallback
SLH-DSAnot supportedno fallback; the platform's API is a preview