オンザワイヤ形式が既に定義されているプロトコルがあり、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つの質問があります:
- ASN.1エンコーディングの1つを使用して、特定のフィールドを後のフィールドの長さとして指定する方法はありますか-ビット9-20のようなものにはビット33-N * 32の長さが含まれていると言えますが、スキップしていますビット 21 ~ 32 には、他の無関係ながらくたが含まれている可能性がありますか?
- 上記をサポートするためにアルゴリズム/ルールを作成する方法を確認できます。したがって、現在 ASN.1 でこれを行う方法がない場合、新しいルールまたは拡張機能を作成する方法 (およびドキュメント) はありますか?既存のエンコーディングへのある種の?
編集
前の質問を繰り返さずに、ASN.1 を持ち出している理由を明確にするのは、それが私が探しているものとほぼ同じだからです。既存のバイナリ プロトコルをデシリアライズする必要がありますが、これを行うことができると主張するツールが既に多くあるため、独自のプロトコルを作成したくありません。誰かが別の提案を持っているなら、私は喜んでそれを試してみたい.