私が使用している: java.security.cert.X509Certificateパッケージ。およびjava.security.cert.X509CRL;
たとえば、OID=2.5.29.14 (SubjectKeyIdentifier) cert.getExtensionValue("2.5.29.14");の場合など、拡張値を取得するとき。 私はこのバイト[]範囲を取得します:
[4,22,4,20, 5,125,-118,106,-44,108,39,-74,-108,-20,-27,-32,-113,64,-69,125,-8,102,-52,-24 ]
証明書を見ると、 SubjectKeyIdentifierは 5 から始まります。
質問 1: この範囲の開始点は何ですか? 4バイトです。
X509CRL で AuthorityKeyIdentifier (CRL の AuthorityKeyIdentifier == CRL がこの証明書によって署名されている場合は証明書の SubjectKeyIdentifier) を見ると、同じものがありました。
[4,24,48,22,-128,20,5,125, -118,106,-44,108,39,-74,-108,-20,-27,-32,-113,64,-69,125,-8,102, -52,-24 ] しかし、先頭に別の 6 バイトがありました。
質問 2: この範囲の開始位置は? 6バイトです。
そして別の質問:
質問 3: Identifier 値のみを取得するために ExtensionValue を解析する方法。この4バイトと6バイトは固定ですか?解析するための最良の方法は何ですか?