用 Kerberos 为 J2ME 应用程序上锁,第 3 部分: 建立与电子银行的安全通信(上)
2010-03-30 00:00:00 来源:WEB开发网如果 getNumberOfLengthBytes() 方法返回 1,则要处理 单字节 长度表示法。在这种情况下,只要将第一个(也是惟一的一个)长度字节转换为 J2ME int ,对它加 1(以补偿不包含在长度值中的标签字节),并将得到的值返回给调用应用程序。
清单 6 getLength() 方法
public int getLength (byte[] ASN1Structure, int offset) {
int structureLength;
int numberOfLengthBytes = getNumberOfLengthBytes(ASN1Structure[offset + 1]);
byte[] lengthValueAsBytes = new byte[numberOfLengthBytes - 1];
if (numberOfLengthBytes > 1)
{
for (int i=0; i < numberOfLengthBytes-1 ; i++)
lengthValueAsBytes[i]= ASN1Structure [offset + i + 2];
structureLength = getIntegerValue(lengthValueAsBytes);
}
else
structureLength = (int) (ASN1Structure[offset+1]);
structureLength += numberOfLengthBytes + 1;
return structureLength;
}//getLength()
getASN1Structure
清单 7 中的 getASN1Structure() 方法从一个包含一系列 ASN.1 结构的字节数组中找出并提取特定 ASN.1 结构。这个方法有三个参数。第一个参数( inputByteArray )是输入字节数组,需要从这个字节数组中找到所需要的 ASN.1 结构。第二个参数是一个 int ,它指定要查找的标签的类型。第三个参数指定标签号。
更多精彩
赞助商链接