Tipi di chiavi supportati dalla lingua

Le tabelle seguenti elencano i tipi di chiavi supportati da ogni primitiva, classificati per lingua.

AEAD

Implementazione Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
AES-GCM sì sì sì sì sì sì
AES-GCM-SIV yes1 sì no no sì sì
AES-CTR-HMAC sì sì sì sì sì sì
AES-EAX sì sì sì sì no sì
KMS Envelope sì sì sì no sì sì
CHACHA20-POLY1305 sì no no no sì no
XCHACHA20-POLY1305 sì sì no sì sì sì

Streaming AEAD

Implementazione Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
AES-GCM-HKDF-STREAMING sì sì sì no sì sì
AES-CTR-HMAC-STREAMING sì sì sì no sì sì

AEAD deterministico

Implementazione Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
AES-SIV sì sì sì sì sì sì

MAC

Implementazione Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
HMAC-SHA2 sì sì sì sì sì sì
AES-CMAC sì sì sì sì sì sì

PRF

Implementazione Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
HKDF-SHA2 sì sì sì no sì sì
HMAC-SHA2 sì sì sì no sì sì
AES-CMAC sì sì sì no sì sì

Firma

Implementazione Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
ECDSA su curve NIST sì sì sì sì sì sì
Ed25519 sì sì sì sì sì sì
RSA-SSA-PKCS1 sì sì sì sì sì sì
RSA-SSA-PSS sì sì sì sì sì sì
ML-DSA Sì2 sì no no sì sì
ML-DSA (External Mu)3 no sì no no sì sì
SLH-DSA (SHA2-128S) sì4 sì no no sì sì

Crittografia ibrida

Implementazione Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
HPKE sì sì no no sì sì
ECIES con AEAD e HKDF Sì5 sì sì sì sì sì
ECIES con DeterministicAEAD e HKDF Sì6 sì sì no sì sì

JWT MAC

Implementazione Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
JWT HMAC-SHA2 sì sì sì no sì sì

Firma JWT

Implementazione Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
JWT ECDSA su curve NIST sì sì sì no sì sì
JWT RSA-SSA-PKCS1 sì sì sì no sì sì
JWT RSA-SSA-PSS sì sì sì no sì sì

  1. AES-GCM-SIV richiede l'installazione di Conscrypt come provider di sicurezza JCE. ↩

  2. ML-DSA richiede l'installazione di Conscrypt come provider di sicurezza JCE. ↩

  3. ML-DSA in modalità External Mu viene utilizzato tramite le primitive Prehash e SignPrehash e richiede una variante con un requisito di ID: TINK o NO_PREFIX_WITH_PREHASH_ID. ↩

  4. SLH-DSA richiede l'installazione di Conscrypt come provider di sicurezza JCE. ↩

  5. ECIES richiede una curva NIST. ↩

  6. ECIES richiede una curva NIST. ↩