Tipos de chave compatíveis com a linguagem

As tabelas a seguir listam os tipos de chave compatíveis com cada primitivo, classificados por linguagem.

AEAD

Implementação Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
AES-GCM sim1 sim sim sim sim sim
AES-GCM-SIV sim2 sim no no sim sim
AES-CTR-HMAC sim sim sim sim sim sim
AES-EAX sim sim sim sim no sim
Envelope do KMS sim sim sim no sim sim
CHACHA20-POLY1305 sim no no no sim no
XCHACHA20-POLY1305 sim sim no sim sim sim

AEAD de streaming

Implementação Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
AES-GCM-HKDF-STREAMING sim sim sim no sim sim
AES-CTR-HMAC-STREAMING sim sim sim no sim sim

AEAD determinista

Implementação Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
AES-SIV sim sim sim sim sim sim

MAC

Implementação Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
HMAC-SHA2 sim sim sim sim sim sim
AES-CMAC sim sim sim sim sim sim

PRF

Implementação Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
HKDF-SHA2 sim sim sim no sim sim
HMAC-SHA2 sim sim sim no sim sim
AES-CMAC sim sim sim no sim sim

Assinatura

Implementação Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
ECDSA em curvas NIST sim sim sim sim sim sim
Ed25519 sim sim sim sim sim sim
RSA-SSA-PKCS1 sim sim sim sim sim sim
RSA-SSA-PSS sim sim sim sim sim sim
ML-DSA sim (65) sim (65, 87) não não sim (44, 65, 87) não
SLH-DSA (SHA2-128S) sim sim não não sim não

Criptografia híbrida

Implementação Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
HPKE sim sim no no sim sim
ECIES com AEAD e HKDF sim3 sim sim sim sim sim
ECIES com DeterministicAEAD e HKDF sim4 sim sim no sim sim

JWT MAC

Implementação Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
JWT HMAC-SHA2 sim sim sim no sim sim

Assinatura JWT

Implementação Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
JWT ECDSA em curvas NIST sim sim sim no sim sim
JWT RSA-SSA-PKCS1 sim sim sim no sim sim
JWT RSA-SSA-PSS sim sim sim no sim sim

  1. O AES-GCM não funciona corretamente no Android <=19. 

  2. Exige que o Conscrypt seja instalado como um provedor de segurança JCE. 

  3. Requer uma curva NIST. 

  4. Requer uma curva NIST.