NOT_HANDSHAKING和FINISHED之间的区别

时间:2015-06-30 22:07:14

标签: java ssl

Q1: SSLEngine的枚举SSLEngineResult.HandshakeStatus中的状态 NOT_HANDSHAKING FINISHED 有什么区别?

Javadoc只是说

结束:SSLEngine刚刚完成握手。

NOT_HANDSHAKING :SSLEngine目前没有握手。

我特别想知道:

Q2:如果初始握手已成功执行,引擎应处于FINISHED状态还是状态NOT_HANDSHAKING?

让我怀疑的是:示例代码SSLChannel.java到this article,告诉

case NOT_HANDSHAKING: 
     assert false : "doHandshake() should never reach the NOT_HANDSHAKING state";

在我的示例程序中,初始握手似乎以状态NOT_HANDSHAKING结束。所以我不知道这是否正常,或者这是一个错误的状态。官方JSSE Refernce Guide也没有任何帮助,因为它只是说

// Handle other status:  // FINISHED or NOT_HANDSHAKING
    ...

任何信息都表示赞赏。

1 个答案:

答案 0 :(得分:3)

  • FINISHED表示您已完成 ,并且它只出现在wrap()/unwrap()返回的握手状态对象中。

  • NOT_HANDSHAKING表示正在进行握手,上面提到的状态对象和getHandshakeStatus()返回的状态对象都会返回。