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 |
-
O AES-GCM não funciona corretamente no Android <=19. ↩
-
Exige que o Conscrypt seja instalado como um provedor de segurança JCE. ↩
-
Requer uma curva NIST. ↩
-
Requer uma curva NIST. ↩