0

オンザワイヤ形式が既に定義されているプロトコルがあり、ASN.1 を使用してエンコード/デコードしたいのですが、定義済みの BER/DER/PER オプションが壊れているようです。なんらかの理由で、プロトコル開発者はペイロードのサイズ/長さをペイロード自体の直前に配置しなかったため、自動 BER/DER を使用できませんしかし、ペイロードは可変長になる可能性があるため、PER も使用できません。次に例を示します。

     12'b           12'b       4'b     4'b   
|------------|--------------|-------|------|
| some stuff | payload size | blah2 | blah |    Header
|------------------------------------------|
|              payload word 1              |
|------------------------------------------|
|                    ...                   |    Payload
|------------------------------------------|
|              payload word N              |
|------------------------------------------|
| much stuff | many bits | such doge | wow |    Trailer
|------------------------------------------|

だから多分ここに2つの質問があります:

  1. ASN.1エンコーディングの1つを使用して、特定のフィールドを後のフィールドの長さとして指定する方法はありますか-ビット9-20のようなものにはビット33-N * 32の長さが含まれていると言えますが、スキップしていますビット 21 ~ 32 には、他の無関係ながらくたが含まれている可能性がありますか?
  2. 上記をサポートするためにアルゴリズム/ルールを作成する方法を確認できます。したがって、現在 ASN.1 でこれを行う方法がない場合、新しいルールまたは拡張機能を作成する方法 (およびドキュメント) はありますか?既存のエンコーディングへのある種の?

編集

前の質問を繰り返さずに、ASN.1 を持ち出している理由を明確にするのは、それが私が探しているものとほぼ同じだからです。既存のバイナリ プロトコルをデシリアライズする必要がありますが、これを行うことができると主張するツールが既に多くあるため、独自のプロトコルを作成したくありません。誰かが別の提案を持っているなら、私は喜んでそれを試してみたい.

4

3 に答える 3