Типы ключей, поддерживаемые языком

В следующих таблицах перечислены основные типы, поддерживаемые каждым примитивом , сгруппированные по языкам программирования.

АЭАД

Выполнение Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Идти Python
AES-GCM да 1 да да да да да
AES-GCM-SIV да 2 да нет нет да да
AES-CTR-HMAC да да да да да да
AES-EAX да да да да нет да
Конверт KMS да да да нет да да
CHACHA20-POLY1305 да нет нет нет да нет
XCHACHA20-POLY1305 да да нет да да да

Трансляция AEAD

Выполнение Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Идти Python
AES-GCM-HKDF-STREAMING да да да нет да да
AES-CTR-HMAC-STREAMING да да да нет да да

Детерминированная АЭАД

Выполнение Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Идти Python
AES-SIV да да да да да да

MAC

Выполнение Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Идти Python
HMAC-SHA2 да да да да да да
AES-CMAC да да да да да да

ПРФ

Выполнение Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Идти Python
HKDF-SHA2 да да да нет да да
HMAC-SHA2 да да да нет да да
AES-CMAC да да да нет да да

Подпись

Выполнение Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Идти Python
ECDSA на кривых NIST да да да да да да
Ed25519 да да да да да да
RSA-SSA-PKCS1 да да да да да да
RSA-SSA-PSS да да да да да да
ML-DSA да (65) да (65, 87) нет нет да (44, 65, 87) нет
SLH-DSA (SHA2-128S) да да нет нет да нет

Гибридное шифрование

Выполнение Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Идти Python
HPKE да да нет нет да да
ECIES совместно с AEAD и HKDF да 3 да да да да да
ECIES с DeterministicAEAD и HKDF да 4 да да нет да да

JWT MAC

Выполнение Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Идти Python
JWT HMAC-SHA2 да да да нет да да

Подпись JWT

Выполнение Java C++
(BoringSSL)
C++
(OpenSSL)
Objective-C Идти Python
JWT ECDSA на кривых NIST да да да нет да да
JWT RSA-SSA-PKCS1 да да да нет да да
JWT RSA-SSA-PSS да да да нет да да

  1. AES-GCM некорректно работает на Android <=19.

  2. Для работы требуется установить Conscrypt в качестве поставщика безопасности JCE.

  3. Требуется кривая NIST.

  4. Требуется кривая NIST.