ASN1TaggedObject 中的 Java BouncyCastle getObject() 已弃用如何替换?

问题描述 投票:0回答:1

升级到 BouncyCastle 1.71 版本时,我们在编译时收到以下警告:

warning: [deprecation] getObject() in ASN1TaggedObject has been deprecated ASN1OctetString url = (ASN1OctetString) location.getObject();

我可以看到:

https://javadoc.io/doc/org.bouncycastle/bcprov-jdk15on/latest/org/bouncycastle/asn1/ASN1TaggedObject.html#getTagClass--

以下说明:

getObject() Deprecated.  Tagged objects now include the tag class. This method will raise an exception if it is not BERTags.CONTEXT_SPECIFIC. Use getBaseUniversal(boolean, int) only after confirming the expected tag class.

我不知道如何重写:

ASN1OctetString url = (ASN1OctetString) location.getObject();

这样这个警告就消失了。

非常感谢任何帮助。

java bouncycastle deprecated
1个回答
0
投票

当询问如何解析某些 ASN.1 结构时,您最好给出所涉及的 ASN.1 定义。在这种情况下,这一点尤其重要,因为正确解析标记对象需要了解标记定义(以及相关 ASN.1 模块中是否启用了隐式标记)。

旧的

getObject
假设您已经检查了标签编号 (
getTagNo
),并且它也仅适用于使用显式标记的 CONTEXT_SPECIFIC 标签。

对替代品的合理猜测是:

ASN1Util.getContextBaseUniversal(location, tagNo, true, BERTags.OCTET_STRING)

其中“tagNo”是标签号,应该在调用站点知道,“true”表示该字段正在使用显式标签。

© www.soinside.com 2019 - 2024. All rights reserved.