用 Kerberos 为 J2ME 应用程序上锁,第 3 部分: 建立与电子银行的安全通信(上)
2010-03-30 00:00:00 来源:WEB开发网处理 TGT 响应
既然已经收到了来自 KDC 的 TGT 响应,现在该对响应进行处理以便从响应中提取 票据 和 会话密钥 。
自然,响应处理包括一些低层 ASN.1 处理(就像在本系列第二篇文章中生成票据请求时遇到的低层 ASN.1 生成方法一样)。所以在展示如何使用低层处理方法从票据响应中提取 票据 和 会话密钥 之前,我将实现并解释一些低层 ASN.1 处理方法以及一些低层加密支持方法。
像以前一样,低层 ASN1 处理方法放在 ASN1DataTypes 类中。下面的方法在本文的 源代码下载 中的 ASN1DataTypes.java 文件中:
isSequence()
getIntegerValue()
isASN1Structure()
getNumberOfLengthBytes()
getLength()
getASN1Structure()
getContents()
下面是上面列出的每一个低层 ASN.1 处理方法的说明。
isSequence()
清单 2 中显示的 isSequence() 方法取单个 字节 作为参数,并检查这个 字节 是否是一个 ASN.1 SEQUENCE 字节。如果 字节 值表示一个 SEQUENCE ,那么它就返回 true,否则它返回 false。
清单 2. isSequence() 方法
public boolean isSequence(byte tagByte)
{
if (tagByte == (byte)0x30)
return true;
else
return false;
}//isSequence
getIntegerValue()
清单 3 中显示的 getIntegerValue() 方法只取一个输入参数,它是表示一个 ASN.1 INTEGER 数据类型的内容的 字节 数组。它将输入 字节 数组转换为 J2ME int 数据类型,并返回 J2ME int 。在从 ASN.1 INTEGER 中提取了内容字节,并且希望知道它所表示的是什么 integer 值时就需要这个方法。还要用这个方法将长度字节转换为 J2ME int 。
更多精彩
赞助商链接