升级到 BouncyCastle 1.71 版本时,我们在编译时收到以下警告:
warning: [deprecation] getObject() in ASN1TaggedObject has been deprecated ASN1OctetString url = (ASN1OctetString) location.getObject();
我可以看到:
以下说明:
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();
这样这个警告就消失了。
非常感谢任何帮助。
当询问如何解析某些 ASN.1 结构时,您最好给出所涉及的 ASN.1 定义。在这种情况下,这一点尤其重要,因为正确解析标记对象需要了解标记定义(以及相关 ASN.1 模块中是否启用了隐式标记)。
旧的
getObject
假设您已经检查了标签编号 (getTagNo
),并且它也仅适用于使用显式标记的 CONTEXT_SPECIFIC 标签。
对替代品的合理猜测是:
ASN1Util.getContextBaseUniversal(location, tagNo, true, BERTags.OCTET_STRING)
其中“tagNo”是标签号,应该在调用站点知道,“true”表示该字段正在使用显式标签。