BouncyCastle に含まれる ASN.1 パーサーを使用してデータを読み取ることは可能ですが、そのプロセスはそれほど単純ではありません。
ASN.1 構造に含まれるデータのみを印刷する場合は、クラスorg.bouncycastle.asn1.util.ASN1Dumpを使用することをお勧めします。次の簡単なコード スニペットで使用できます。
ASN1InputStream bIn = new ASN1InputStream(new ByteArrayInputStream(data));
ASN1Primitive obj = bIn.readObject();
System.out.println(ASN1Dump.dumpAsString(obj));
データではなく構造を出力しますが、ASN1Dump を独自のクラスにコピーし、OCTET_STRINGS などを出力するように変更することで、これを簡単に実行できます。
さらに、ASN1Dump のコードは、ASN.1 構造を解析する方法を示しています。たとえば、私の質問で使用されているデータは、次のコードを使用して 1 レベル深く解析できます。
DERApplicationSpecific app = (DERApplicationSpecific) obj;
ASN1Sequence seq = (ASN1Sequence) app.getObject(BERTags.SEQUENCE);
Enumeration secEnum = seq.getObjects();
while (secEnum.hasMoreElements()) {
ASN1Primitive seqObj = (ASN1Primitive) secEnum.nextElement();
System.out.println(seqObj);
}