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
AES-GCM-SIV 1 no no
AES-CTR-HMAC
AES-EAX no
Sobre de KMS no
CHACHA20-POLY1305 no no no no
XCHACHA20-POLY1305 no

AEAD de transmisión

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

AEAD determinístico

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

MAC

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

PRF

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

Firma

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

Encriptación híbrida

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

MAC del JWT

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

Firma de JWT

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

  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.