Определить набор шифров для TLS в JCA
Мне нужна поддержка следующих наборов шифров в TLS с помощью JCA:
- TLS_PSK_WITH_3DES_EDE_CBC_SHA
- TLS_PSK_WITH_AES_128_CBC_SHA
- TLS_PSK_WITH_NULL_SHA
- TLS_PSK_WITH_AES_128_CBC_SHA256
- TLS_PSK_WITH_NULL_SHA256
Они доступны в JDK7, но не JDK6, ни BouncyCastle.
Если я хочу поддержку в JDK6, могу ли я расширить JCA для реализации поддержки этих расширений PSK, используя SPI, провайдеры и методы обратного вызова JSSE. Я уже могу переопределить или добавить новые реализации шифрования во время выполнения, но я не уверен, что JCA предлагает достаточно детализации для добавления новых наборов шифров в TLS.
Ответы
Ответ 1
Чистым способом было бы реализовать собственный SSLSocketFactory.
Если вы хотите попробовать добавить, я вижу только способ изменить внутренние классы с помощью отражения.
Соответствующий класс:
com.sun.net.ssl.internal.ssl.CipherSuite
Он имеет перегруженный частный статический метод "добавить" для добавления реализации шифрования в поддерживаемый список. Возможно, стоит попробовать.
Ответ 2
Не уверен, что это возможно или нет, но мы нашли реализацию нескольких наборов шифрования TLS PSK для библиотеки Джесси.