The following tables list the key types each primitive supports, classified by language.
AEAD
Implementation | Java | C++ (BoringSSL) |
C++ (OpenSSL) |
Objective-C | Go | Python |
---|---|---|---|---|---|---|
AES-GCM | yes1 | yes | yes | yes | yes | yes |
AES-GCM-SIV | yes2 | yes | no | no | yes | yes |
AES-CTR-HMAC | yes | yes | yes | yes | yes | yes |
AES-EAX | yes | yes | yes | yes | no | yes |
KMS Envelope | yes | yes | yes | no | yes | yes |
CHACHA20-POLY1305 | yes | no | no | no | yes | no |
XCHACHA20-POLY1305 | yes | yes | no | yes | yes | yes |
Streaming AEAD
Implementation | Java | C++ (BoringSSL) |
C++ (OpenSSL) |
Objective-C | Go | Python |
---|---|---|---|---|---|---|
AES-GCM-HKDF-STREAMING | yes | yes | yes | no | yes | yes |
AES-CTR-HMAC-STREAMING | yes | yes | yes | no | yes | yes |
Deterministic AEAD
Implementation | Java | C++ (BoringSSL) |
C++ (OpenSSL) |
Objective-C | Go | Python |
---|---|---|---|---|---|---|
AES-SIV | yes | yes | yes | yes | yes | yes |
MAC
Implementation | Java | C++ (BoringSSL) |
C++ (OpenSSL) |
Objective-C | Go | Python |
---|---|---|---|---|---|---|
HMAC-SHA2 | yes | yes | yes | yes | yes | yes |
AES-CMAC | yes | yes | yes | yes | yes | yes |
PRF
Implementation | Java | C++ (BoringSSL) |
C++ (OpenSSL) |
Objective-C | Go | Python |
---|---|---|---|---|---|---|
HKDF-SHA2 | yes | yes | yes | no | yes | yes |
HMAC-SHA2 | yes | yes | yes | no | yes | yes |
AES-CMAC | yes | yes | yes | no | yes | yes |
Signature
Implementation | Java | C++ (BoringSSL) |
C++ (OpenSSL) |
Objective-C | Go | Python |
---|---|---|---|---|---|---|
ECDSA over NIST curves | yes | yes | yes | yes | yes | yes |
Ed25519 | yes | yes | yes | yes | yes | yes |
RSA-SSA-PKCS1 | yes | yes | yes | yes | yes | yes |
RSA-SSA-PSS | yes | yes | yes | yes | yes | yes |
Hybrid Encryption
Implementation | Java | C++ (BoringSSL) |
C++ (OpenSSL) |
Objective-C | Go | Python |
---|---|---|---|---|---|---|
HPKE | yes | yes | no | no | yes | yes |
ECIES with AEAD and HKDF | yes3 | yes | yes | yes | yes | yes |
ECIES with DeterministicAEAD and HKDF | yes4 | yes | yes | no | yes | yes |
JWT MAC
Implementation | Java | C++ (BoringSSL) |
C++ (OpenSSL) |
Objective-C | Go | Python |
---|---|---|---|---|---|---|
JWT HMAC-SHA2 | yes | yes | yes | no | yes | yes |
JWT Signature
Implementation | Java | C++ (BoringSSL) |
C++ (OpenSSL) |
Objective-C | Go | Python |
---|---|---|---|---|---|---|
JWT ECDSA over NIST curves | yes | yes | yes | no | yes | yes |
JWT RSA-SSA-PKCS1 | yes | yes | yes | no | yes | yes |
JWT RSA-SSA-PSS | yes | yes | yes | no | yes | yes |