Typy kluczy obsługiwane przez język

W tabelach poniżej znajdziesz typy kluczy obsługiwane przez poszczególne typy proste, podzielone według języka.

AEAD

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

Strumieniowe AEAD

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

Deterministyczne AEAD

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

MAC

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

PRF

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

Podpis

Implementacja Java C++ 
(BoringSSL)
C++ 
(OpenSSL)
Objective-C Go Python
ECDSA na krzywych NIST tak tak tak tak tak tak
Ed25519 tak tak tak tak tak tak
RSA-SSA-PKCS1 tak tak tak tak tak tak
RSA-SSA-PSS tak tak tak tak tak tak
ML-DSA tak (65) tak (65, 87) nie nie tak (44, 65, 87) nie
SLH-DSA (SHA2-128S) tak tak nie nie tak nie

Szyfrowanie hybrydowe

Implementacja Java C++ 
(BoringSSL)
C++ 
(OpenSSL)
Objective-C Go Python
HPKE tak tak no no tak tak
ECIES z AEAD i HKDF tak3 tak tak tak tak tak
ECIES z DeterministicAEAD i HKDF tak4 tak tak no tak tak

JWT MAC

Implementacja Java C++ 
(BoringSSL)
C++ 
(OpenSSL)
Objective-C Go Python
JWT HMAC-SHA2 tak tak tak no tak tak

Podpis JWT

Implementacja Java C++ 
(BoringSSL)
C++ 
(OpenSSL)
Objective-C Go Python
JWT ECDSA na krzywych NIST tak tak tak no tak tak
JWT RSA-SSA-PKCS1 tak tak tak no tak tak
JWT RSA-SSA-PSS tak tak tak no tak tak

  1. AES-GCM nie działa prawidłowo na Androidzie w wersji <=19. 

  2. Wymaga zainstalowania Conscrypt jako dostawcy zabezpieczeń JCE. 

  3. Wymaga krzywej NIST. 

  4. Wymaga krzywej NIST.