Tipi di chiavi supportati dalla lingua

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

AEAD

Implementazione Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
AES-GCM 1
AES-GCM-SIV 2 NO NO
AES-CTR-HMAC
AES-EAX NO
Busta KMS NO
CHACHA20-POLY1305 NO NO NO NO
XCHACHA20-POLY1305 NO

AEAD streaming

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

AEAD deterministico

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

MAC

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

PRF

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

Firma

Implementazione Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
Curve ECDSA su NIST
Ed25519
RSA-SSA-PKCS1
RSA-SSA-PSS

Crittografia ibrida

Implementazione Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
HPKE (computing ad alte prestazioni) NO NO
ECIES con AEAD e HKDF 3
ECIES con DeterministicAEAD e HKDF 4 NO

MAC JWT

Implementazione Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
JWT HMAC-SHA2 NO

Firma JWT

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

  1. AES-GCM non funziona correttamente su Android <=19. 

  2. Richiede l'installazione di Conscrypt come provider di sicurezza JCE. 

  3. Richiede una curva NIST. 

  4. Richiede una curva NIST.