O envoltório JSSE cria dois pacotes tls que requerem dois desembrulhados. Por quê?

Eu estou inspecionando o comportamento de nosso aplicativo java com relação à criptografia e descriptografia jsse tls com um cliente openssl conectado.

Primeiro eu observei que quando eu ligo para desembrulhar os dados do cliente, ele sempre desembrulha consumindo 37 bytes e produzindo 0. O próximo desempacotamento consome alguns bytes e produz alguns.

No começo eu pensei que o cliente iria envolver um array vazio primeiro. Mas então descobri que o código jsse faz o mesmo, exceto que ele produz 1 byte em vez de 0.

Então, todas as chamadas para umwrap consome X bytes e produz Y bytes, mas requer DOISunwraps enquanto o primeiro consome 37 bytes e produz 1 byte e o segundo consome bytes Y-37 e produz bytes X-1.

Enquanto openssl e jsse estão fazendo quase o mesmo, espero que seja correto. No entanto, gostaria de saber por que isso acontece. Eu não vejo uma razão para isso e é preciso recursos adicionais ...?

questionAnswers(1)

yourAnswerToTheQuestion