Определить набор шифров для 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

Он имеет перегруженный частный статический метод "добавить" для добавления реализации шифрования в поддерживаемый список. Возможно, стоит попробовать.