如何从包含大于int max值的组件的OID字符串初始化ASN1ObjectIdentifier ?



我试图引用一个未注册的ASN.1对象标识符,它符合{joint-iso-itu-t(2) uuid(25)}弧。我正在使用com.objsys.asn1j.runtime包。

但是asn1rt库似乎只接受int[]作为标识符。我不能像这样传递OID字符串的UUID组件的值:

public Asn1ObjectIdentifier getAttributeOID() {

int[] identifierValue = { 2, 25, singleIntegerValue}; // last part is greater than int max
return new Asn1ObjectIdentifier(identifierValue);
}

我已经尝试使用在objsys.com文档中解释的解码方法如下:

public Asn1ObjectIdentifier getAttributeOID() {
//uuid part is converted to integer value from uuid according to ITU-T X.667 Section 6.3 using 
String oid = "2.25.142312163956071652603888631318689442116"; 
Asn1BerDecodeBuffer decodeBuffer = new Asn1BerDecodeBuffer(oid.getBytes(StandardCharsets.UTF_8));
Asn1ObjectIdentifier asn1ObjectIdentifier = new Asn1ObjectIdentifier();
try {
asn1ObjectIdentifier.decode(decodeBuffer, false, oid.length());
} catch (IOException e) {
throw new RuntimeException(e);
}
return asn1ObjectIdentifier;
}

然而,这种方法也不能在结果对象中获得正确的标识符值。它输出如下所示:

1.10.46.50.53.46.49.52.50.51.49.50.49.54.51.57.53.54.48.55.49.54.53.50.54.48.51.…

我也失败了,当尝试BouncyCastle编码对象标识符,然后试图解码它与api从com.objsys.asn1j.runtime包。没有工作。

Obj-sys文档显示objectidentifier的java映射是一个int数组(所以这是一个限制)

我很惊讶你在这里问这个问题,他们有一个联系表单

相关内容

  • 没有找到相关文章

最新更新