3

私はこのようなBER構造を持っています...

$ openssl asn1parse -inform der -in test.der -i -dump

 ????:d=4  hl=2 l=inf  cons:     cont [ 0 ]
 ????:d=5  hl=3 l= 240 prim:      OCTET STRING
      0000 - AABBCCDD
 ????:d=5  hl=2 l=   8 prim:      OCTET STRING
      0000 - EEFF
 ????:d=5  hl=2 l=   0 prim:      EOC

...またはder2asciiスタイルで...

[0] `80`
  OCTET_STRING { `AABBCCDD` }
  OCTET_STRING { `EEFF` }
`0000`

私が知っていること: 0x0000 を含む場合など、プリミティブ型はあいまいさを導入する可能性があるため、不定長エンコーディングには構築された型が含まれている必要があります。知りたいこと: この BER 構造を解析するとき、デコーダはどのように動作する必要がありますか? 両方の OCTET STRING のヘッダー バイトがエンコードに含まれていますか? はいの場合、不定長のバイトデータはどのようにエンコードされますか? 2 番目の OCTET STRING がたとえば INTEGER の場合、アプリケーションは [0] とタグ付けされた TLV フィールドの値をどのように解釈しますか?

CMS 標準では、フィールドは単一の OCTET STRING として定義されているため、この質問をしていますが、ほとんどの BER エンコーディングでは、常に 2 つのフィールドが表示されます。これは、不定長エンコーディングのみによるものですか? 何か不足していますか?

ITU-T X.690 から:

8.1.4 内容オクテット

内容のオクテットは、0、1、または複数のオクテットで構成され、後続の節で指定されているデータ値をエンコードするものとします。

注 – 内容のオクテットは、データ値のタイプによって異なります。後続の句は、ASN.1 の型の定義と同じ順序に従います。

これは、構築されたすべての型を配置でき、アプリケーションは構築された TLV 構造の値部分のみを解釈する必要があるということですか?

4

1 に答える 1