Метод SSLEngine.wrap не выводит ничего в состоянии NEED_WRAP? - PullRequest
0 голосов
/ 27 апреля 2019

Я очень сбит с толку, так как здесь нет переполнения буфера.Вот мой код

HandshakeStatus beforeWrapHandshakeStatus = sslEngine.getHandshakeStatus();
if(beforeWrapHandshakeStatus != HandshakeStatus.NEED_WRAP)
    throw new IllegalStateException("we should only be calling this method when hsStatus=NEED_WRAP.  hsStatus="+beforeWrapHandshakeStatus);

SSLEngineResult result = sslEngine.wrap(SslMementoImpl.EMPTY, engineToSocketData);
lastStatus = result.getStatus();
hsStatus = result.getHandshakeStatus();

if(engineToSocketData.position() == 0)
    throw new IllegalStateException("engine told me to wrap and didn't output data.  result="+result +" before wrap hsStatus="+beforeWrapHandshakeStatus);

, а вот исключение

java.lang.IllegalStateException: движок сказал мне обернуть и не выводил данные.result = Status = OK HandshakeStatus = NEED_WRAP bytesConsumed = 0 bytesProduced = 0 перед переносом hsStatus = NEED_WRAP

Это ошибка jdk?Это не должно указывать мне на WRAP, а затем ничего не выводить с Status = Ok, верно.Нужно поставить Status в BufferOverflow или фактически генерировать байты, верно?

...