問題タブ [ber]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
5118 参照

asn.1 - EMV トランザクションでの GET PROCESSING OPTIONS コマンドの PDOL の解析

非接触 EMV カードに送信される、正しくフォーマットされた GET PROCESSING OPTIONS コマンドを作成しようとしています。この投稿は非常に役に立ちましたが、もう少し詳しく知る必要があります。

PDOL を解析するとき、各タグの長さが 2 バイトで、その後に返されるデータのサイズが続くと想定しても安全ですか?

たとえば、PDOL9F66049F02069F37049F1A02は 、 などに分割され 9F66 049F02 06それぞれに 2 バイトのタグと、予想されるデータ値の長さの 1 バイトが含まれます。

解析時に各タグの長さが 2 バイトであると想定しても安全ですか?

0 投票する
1 に答える
223 参照

tags - 未定義のタグを持つ ASN.1 BER シーケンス

非常に長い BER メッセージをデコードする必要があり、2 つの異なる状況があります。1 つには、特定のタグのない必須パラメーターがいくつかあり、暗黙的なタグを持つ多くのオプションのパラメーターがあります。もう一方には、オプションの暗黙的なタグのみがあります。たとえば、次のとおりです。

ケース 1:

など、さらに多くのパラメーターがあり、約 40 個あります。そのうちのいくつかは構築されており、内部にも構築されたパラメーターがあります。

ケース 2:

ポイントは、これらのメッセージから実際に必要なパラメーターは 3 つまたは 4 つだけということです。
残りは気にしません。必要がない場合、デコーダーがメッセージ全体をデコードするのにそれほど多くの処理時間を費やしたくありません。これを行う標準的な方法はありますか?
2 番目のケースでは、次のように ASN.1 定義を SEQUENCE から SET に変更するというアイデアを思いつきました。

つまり、解析はこれら 3 つのパラメーターを SET としてデコードするだけです。もちろん、受信時にバイナリ メッセージを変更して、SEQUENCE から SET (1 ビットのみ) に変換する必要があります。しかし、最初の SEQUENCE ではそれができません。
「不明なタグを無視する」ように指示する方法はありますか?
「EXTENSIBILITY IMPLIED」について読みましたが、それが必要なのか、それとも拡張マーカー「...」を使用しているかのように、SEQUENCE の最後に拡張性を暗示しているだけなのか理解できません。

前もって感謝します、

ルイス

0 投票する
1 に答える
199 参照

matlab - BER が一定になるのはなぜですか? コードが正しくないのですか?

畳み込み符号と QAM-16 の変調方式を使用して、CDMA で 2 人のユーザー間の BER をシミュレートする作業を行っています。添付したグラフから、ユーザー 1 とユーザー 2 の BER は同じで一定です。SNR は伝送に影響を与えないようです。とにかく私はグラフを改善することができますか?これが私のコードです:

BERのグラフ

0 投票する
2 に答える
3092 参照

java - 自動タグで動作するオープンソース Java ASN.1 デコーダー

私はASN.1でエンコードされたストリームを扱うのは初めてで、できればJava用の無料のクラスコンパイラとデコーダを見つけるのに苦労しています。

エンコードされた 16 進文字列があります。

表記の例を次に示します。

JAC を使い始めました: https://sourceforge.net/projects/jac-asn1/ しかし、自動タグはサポートされていません。

次に jASN1 を試してみました: https://www.openmuc.org/asn1/ 自動タグをサポートしているかどうかはわかりません。Notation は問題なくコンパイルされているようですが、正しくデコードできず、タグ付けが間違っているように見えます。

エンコードされた文字列の先頭を取ると: 30 82 02 74 80 02 00 a2... これは私の理解です:

しかし、「IntersectionSituationData」のテストをエンコードすると、次のようになります。 30 81 8a 0a 02 00 a2 つまり、タイプは 'x0a' == 10 で、ASN.1 Universal ENUMERATED です。それは彼の通知を見ると理にかなっていますが、自動タグがjASN1によって無視されていると推測しています。生成された Java クラスを見ると、SemiDialogID が、ユニバーサル クラス識別子を使用する BerEnum を拡張していることがわかります。

jASN1 を自動タグで動作させるために必要なことはありますか、それとも別のライブラリが必要ですか? 後者の場合、人々は何を推奨しますか? 理想的には、使いやすいオープン ソースの Java ソリューションを探しています。C ソリューションで間に合わせ、JNI を使用して動作させることができると思います。

0 投票する
1 に答える
1231 参照

encoding - 複数のカプセル化されたオクテット文字列を使用した ASN.1 不定長エンコーディングの解釈

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

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

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

私が知っていること: 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 構造の値部分のみを解釈する必要があるということですか?