Jenis kunci yang didukung oleh bahasa

Tabel berikut mencantumkan jenis kunci yang didukung setiap primitif, yang diklasifikasikan menurut bahasa.

AEA

Penerapan Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
AES-GCM ya1 ya ya ya ya ya
AES-GCM-SIV ya2 ya no no ya ya
AES-CTR-HMAC ya ya ya ya ya ya
AES-EAX ya ya ya ya no ya
Amplop KMS ya ya ya no ya ya
CHACHA20-POLY1305 ya no no no ya no
XCHACHA20-POLY1305 ya ya no ya ya ya

Streaming AEAD

Penerapan Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
AES-GCM-HKDF-STREAMING ya ya ya no ya ya
AES-CTR-HMAC-STREAMING ya ya ya no ya ya

AEAD deterministik

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

MAC

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

PRF

Penerapan Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
HKDF-SHA2 ya ya ya no ya ya
HMAC-SHA2 ya ya ya no ya ya
AES-CMAC ya ya ya no ya ya

Tanda Tangan

Penerapan Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
ECDSA melalui kurva NIST ya ya ya ya ya ya
Ed25519 ya ya ya ya ya ya
RSA-SSA-PKCS1 ya ya ya ya ya ya
RSA-SSA-PSS ya ya ya ya ya ya

Enkripsi Hybrid

Penerapan Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
HPKE ya ya no no ya ya
ECIES dengan AEAD dan HKDF ya3 ya ya ya ya ya
ECIES dengan DeterministicAEAD dan HKDF ya4 ya ya no ya ya

MAC JWT

Penerapan Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
JWT HMAC-SHA2 ya ya ya no ya ya

Tanda Tangan JWT

Penerapan Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Go Python
JWT ECDSA pada kurva NIST ya ya ya no ya ya
JWT RSA-SSA-PKCS1 ya ya ya no ya ya
JWT RSA-SSA-PSS ya ya ya no ya ya

  1. AES-GCM tidak berfungsi dengan benar di Android <=19. 

  2. Conscrypt harus diinstal sebagai penyedia keamanan JCE. 

  3. Memerlukan kurva NIST. 

  4. Memerlukan kurva NIST.