Tipos de claves admitidos por el idioma

En las siguientes tablas, se enumeran los tipos de claves que admite cada primitiva, clasificadas por lenguaje.

AEAD

Implementación Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
AES-GCM sí sí sí sí sí sí
AES-GCM-SIV Sí1 sí no no sí sí
AES-CTR-HMAC sí sí sí sí sí sí
AES-EAX sí sí sí sí no sí
Sobre de KMS sí sí sí no sí sí
CHACHA20-POLY1305 sí no no no sí no
XCHACHA20-POLY1305 sí sí no sí sí sí

AEAD de transmisión

Implementación Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
AES-GCM-HKDF-STREAMING sí sí sí no sí sí
AES-CTR-HMAC-STREAMING sí sí sí no sí sí

AEAD determinístico

Implementación Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
AES-SIV sí sí sí sí sí sí

MAC

Implementación Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
HMAC-SHA2 sí sí sí sí sí sí
AES-CMAC sí sí sí sí sí sí

PRF

Implementación Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
HKDF-SHA2 sí sí sí no sí sí
HMAC-SHA2 sí sí sí no sí sí
AES-CMAC sí sí sí no sí sí

Firma

Implementación Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
ECDSA en curvas NIST sí sí sí sí sí sí
Ed25519 sí sí sí sí sí sí
RSA-SSA-PKCS1 sí sí sí sí sí sí
RSA-SSA-PSS sí sí sí sí sí sí
ML-DSA sí2 sí no no sí sí
ML-DSA (Mu externo)3 no sí no no sí sí
SLH-DSA (SHA2-128S) Sí4 sí no no sí sí

Encriptación híbrida

Implementación Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
HPKE sí sí no no sí sí
ECIES con AEAD y HKDF sí5 sí sí sí sí sí
ECIES con DeterministicAEAD y HKDF Sí6 sí sí no sí sí

MAC del JWT

Implementación Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
HMAC-SHA2 de JWT sí sí sí no sí sí

Firma de JWT

Implementación Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
ECDSA de JWT en curvas NIST sí sí sí no sí sí
JWT RSA-SSA-PKCS1 sí sí sí no sí sí
JWT RSA-SSA-PSS sí sí sí no sí sí

  1. AES-GCM-SIV requiere que Conscrypt se instale como proveedor de seguridad de JCE. ↩

  2. ML-DSA requiere que Conscrypt se instale como proveedor de seguridad de JCE. ↩

  3. El ML-DSA en el modo Mu externo se usa a través de las primitivas Prehash y SignPrehash, y requiere una variante con un requisito de ID: TINK o NO_PREFIX_WITH_PREHASH_ID. ↩

  4. SLH-DSA requiere que Conscrypt se instale como proveedor de seguridad de JCE. ↩

  5. ECIES requiere una curva NIST. ↩

  6. ECIES requiere una curva NIST. ↩