Tipos de chave compatíveis com a linguagem

As tabelas a seguir listam os tipos de chave compatíveis com cada primário, 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 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 sobre 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

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

MAC do JWT

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

Assinatura JWT

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

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

  2. O Conscrypt precisa estar instalado como um provedor de segurança do JCE. 

  3. Requer uma curva NIST. 

  4. Requer uma curva NIST.