Tipos de claves admitidos por el idioma

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

AEAD

Implementación Java
de C++ (BoringSSL)

de C++ (OpenSSL)
Objective‑C Go Python
AES-GCM 1
AES-GCM-SIV 2 no no
AES-CTR-HMAC
AES‐EAX no
Sobre KMS no
CHACHA20-POLY1305 no no no no
XCHACHA20-POLY1305 no

AEAD de transmisión

Implementación Java
de C++ (BoringSSL)

de C++ (OpenSSL)
Objective‑C Go Python
AES-GCM-HKDF-STREAMING no
AES-CTR-HMAC-STREAMING no

AEAD determinista

Implementación Java
de C++ (BoringSSL)

de C++ (OpenSSL)
Objective‑C Go Python
AES‐SIV

MAC

Implementación Java
de C++ (BoringSSL)

de C++ (OpenSSL)
Objective‑C Go Python
HMAC‐SHA2
AES‐CMAC

PRF

Implementación Java
de C++ (BoringSSL)

de C++ (OpenSSL)
Objective‑C Go Python
HKDF‐SHA2 no
HMAC‐SHA2 no
AES‐CMAC no

Firma

Implementación Java
de C++ (BoringSSL)

de C++ (OpenSSL)
Objective‑C Go Python
ECDSA sobre curvas NIST
Ed25519
RSA-SSA-PKCS1
RSA-SSA-PSS

Encriptación híbrida

Implementación Java
de C++ (BoringSSL)

de C++ (OpenSSL)
Objective‑C Go Python
HPKE no no
ECIES con AEAD y HKDF 3
ECIES con DeterministicAEAD y HKDF 4 no

MAC de JWT

Implementación Java
de C++ (BoringSSL)

de C++ (OpenSSL)
Objective‑C Go Python
JWT HMAC-SHA2 no

Firma JWT

Implementación Java
de C++ (BoringSSL)

de C++ (OpenSSL)
Objective‑C Go Python
JWT ECDSA sobre curvas NIST no
JWT RSA-SSA-PKCS1 no
JWT RSA-SSA-PSS no

  1. AES-GCM no funciona correctamente en Android <=19. 

  2. Requiere que Conscrypt se instale como proveedor de seguridad JCE. 

  3. Requiere una curva NIST. 

  4. Requiere una curva NIST.