首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BouncyCastle tlsutils checkVersion

BouncyCastle tlsutils checkVersion
EN

Stack Overflow用户
提问于 2015-08-28 05:42:01
回答 1查看 80关注 0票数 1

BouncyCastle org.bouncycastle.crypto.tls.TlsUtils有以下方法

代码语言:javascript
复制
protected static void checkVersion(InputStream inputstream, TlsProtocolHandler tlsprotocolhandler)
    throws IOException
{
    int i = inputstream.read();
    int j = inputstream.read();
    if (i != 3 || j != 1)
    {
        tlsprotocolhandler.failWithError((short)2, (short)70);
    }
}

protected static void checkVersion(byte abyte0[], TlsProtocolHandler tlsprotocolhandler)
    throws IOException
{
    if (abyte0[0] != 3 || abyte0[1] != 1)
    {
        tlsprotocolhandler.failWithError((short)2, (short)70);
    }
}

这里检查的是3&1号吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-28 05:54:54

这是一个很好的例子,一个叫做“魔术数字”的坏东西:-)摘录自InputStream.read()的javadoc

从输入流读取下一个字节的数据。在0到255范围内,值字节作为int返回。如果由于到达流的末尾而没有可用的字节,则返回值-1。

这意味着ij是从流中读取的版本号。它们只需是版本3和版本1。另外,failWithError方法也会传递神奇的数字。TlsProtocolHandler对它们有常量,我不知道为什么作者不使用它们

代码语言:javascript
复制
2: AL_fatal
70: AP_protocol_version

来源

查看代码checkVersion是在握手阶段(ServerHello)时调用的。这里检查协议版本。请参阅此维基百科文章的版本一章,以查找版本号。主要版本3,次要版本1是TLS 1.0

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32264065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档