SSLEngine.unwrap может изменять исходный байт-буфер.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 SSLEngine.unwrap может изменять исходный байт-буфер.

Сообщение Anonymous »

Вызов SSLEngine.unwrap(srcBB, dstBB) может неожиданно изменить исходный ByteBuffer (scrBB).
Поскольку я исследовал использованные исходные байты, я полагаюсь на srcBB продвигать свою позицию. Обычно это работает, но в какой-то момент srcBB.array() используется глубоко внутри движка, во время некоторой работы шифрования SSL. Некоторые байты изменяются в общем байте[].
Обычно мне нужно только это:
//read some bytes in netBufferIn...then:
netBufferIn.flip();
SSLEngineResult result = sslEngine.unwrap(netBufferIn, appBufferIn);
netBufferIn.compact();

Исходный код jdk показывает, что он будет использовать для себя любой исходный буфер, не предназначенный только для чтения, и я видел, как это произошло. Это очень неправильно. Поэтому я передаю буфер, доступный только для чтения, но пользовательскому интерфейсу приходится вручную перемещать мою исходную позицию в буфере, вынуждая доверять результату.bytesConsumed():
//read some bytes in netBufferIn...then:
netBufferIn.flip();
ByteBuffer roBB = netBufferIn.asReadOnlyBuffer(); //

Подробнее здесь: https://stackoverflow.com/questions/793 ... bytebuffer
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»