無料のASN.1:2008コンプライアンステストスイート

前に、このリソースに関する記事ASN.1を簡単な言葉で既に紹介しました。 現在、ASN.1:2008規格との互換性をチェックするための自由に配布された一連のテストである私の新しい作品を公開しています。 より正確には、提案されたテストスイートへの追加として、2つの作品でさえ、テストスイートの要件を100%満たす独自のASN.1 BERエンコーダー/デコーダー(ソースコード内)を提供します。 以下は、複合体全体のより詳細な説明です。



ASN.1を長時間使用することに従事していると、エンコード/デコードプログラム(ASN.1を使用するための特別なプログラム)を使用する必要性に常に直面します。 ただし、ASN.1標準が一般的に利用可能であるにもかかわらず、ASN.1を操作するためのさまざまなプログラムが異なる結果を生成する場合があります。 多くの場合、よく知られた(そして有料の)プログラムでさえ、ASN.1の標準タイプを操作するときにミスを犯します。これは、プログラムのテストの省略の結果、またはASN.1標準のすべての側面の不完全な理解の結果です。



この問題を解決するには、ASN.1タイプごとに一元的に開発されたテストセットで十分であると思われます。 しかし、この問題を扱うと、パブリックドメインにはそのようなテストがないことがわかりました。 一般的に。 私の情報によると、それにもかかわらず、そのようなテストは存在しますが、それらは閉鎖または有料のいずれかであり、そのようなテストのテストは認証された組織の特別なサイトでのみ実行されます。 しかし、普通の開発者は、たとえば、新しい自由に配布されるASN.1コンパイラーをどうすればよいでしょうか? ASN.1標準のデータを操作するために何か新しいものを作成したいすべての人、およびこの標準を研究したいすべての人を支援するために、ASN.1データ型のエンコードの問題を完全にカバーする一連のテストを作成しました。



テストスイートは、次のタスクを解決します。

  1. 最も一般的なコーディング形式ASN.1-BERのテストを提供します。
  2. 各タイプおよび各タイプの各サブユニットのコーディング要件の履行。
  3. 各タイプをコーディングするときに、非標準的な状況の完全なセットを提供します。
  4. タイプごとに誤ったコーディングの完全なセットを提供します。
  5. 提案された各テストのASN.1処理プログラムの動作に関する助言的な説明を提供します。
  6. 関係者が新しいテストケースの追加に参加できるようにし、独自のテストスイートを作成するための開始点も提供します。


実際、テスト自体は、ASN.1 BER形式のエンコードデータを含むバイナリファイルです。 提案されたテストスイートでの作業を容易にするために、テスト対象のデータタイプと共に各テストケースの短いテキストの簡単な説明と、ASN.1データ処理プログラムの提案されたアクションの簡単な説明も提供します。 すべてのテストは有効なコーディングオプションです。つまり、いずれの方法でも、ASN.1データ処理プログラムの実際の操作で遅かれ早かれ遭遇する可能性があります。 すべてのテスト(tc * .berファイル)、テストに基づいて取得されたCompliXML形式ファイル(下記参照)(transformed_tc * .xmlファイル)、再エンコードされたファイル(encoded_tc * .berファイル)、すべてのテストの簡単な説明(ファイル「free_asn1_testsuite.pdf」)を直接リンクから入手できます。



最初は、上記のテストをコンパイルするときに、個人的な経験とASN.1コーディング標準のみを使用しました。 しかし、テストケースの完全なリストが作成されると、質問がますます頻繁に発生しました。特定の各ケースでASN.1処理プログラムがどのように正しく反応する必要があり、通常は何らかの例外的な状況を正常に処理することは一般的に可能ですか? これらの質問に対する答えを見つけるために、ASN.1 BERと同じASN.1 BERデータの両方をデコードできる独自のプログラムを作成する必要がありました。 私はこのプログラムのすべてのソースコードを無料で配布し、誰でも好きなようにこれらのコードを自由に使用できます(ほぼ-プログラムはBSDライセンスの下でリリースされています)。 このプログラムは、テストおよび教育目的のみに使用されます。 以下は私のソフトウェア製品のより詳細な説明です。



このプログラムはCOMPLI(完全準拠のASN.1 BERデコーダー/エンコーダー)と呼ばれます。



まず、プログラムの制限について:

  1. プログラムはWindowsで書かれています。
  2. このプログラムには、MSXML 6がインストールされている必要があります。
  3. このプログラムは、ASN.1データ型のエンコード/デコードの原則に精通し、エンコード/デコード中に発生する非標準的な状況への応答のサンプルを提供することのみを目的としています。
  4. プログラムにはソースコードの最適化が欠けているため、プログラムの内部アクティビティのプロセスを理解しやすくなります。


次に、プログラムの機能について詳しく説明します。

  1. 最も一般的なエンコード形式ASN.1-BER(つまり、プログラムが処理するDERおよびCER形式)のエンコーダー/デコーダーです。
  2. また、このソフトウェア製品では、BASE64形式でさらにエンコードされたバイナリデータ、およびASN.1タイプを記述するための内部XML形式(以下を参照)を操作できます。
  3. エンコードおよびデコードは、最新のASN.1:2008標準のすべてのタイプに実装されています。
  4. 各タイプのエンコードとデコードは、ASN.1標準との互換性をテストするために以前に提案されたテストケースを100%満たします。
  5. このプログラムは、ライセンスの下でソースコードで提供されるため、商用開発で​​も使用できます。
  6. プログラムコードは、オブジェクトプログラミングモデルを使用してC ++で記述されています。
  7. エラーとメモリリークのコードがチェックされます。
  8. コードは任意に拡張可能で、新しいASN.1エンコード形式で作業を追加できます。
  9. このプログラムには、ファイルを処理するバッチモードがあり、一度に多くの入力ファイルを処理できます。また、1つの処理パケットには、特定のタイプのデコード操作とエンコード操作の両方があります。 構成ファイルはXMLで表され、構成ファイルの形式はXSDスキーム( XSDファイルへのリンク)として記述されています
  10. 標準出力形式(CompliXML)は、デコードされたタイプをXMLとして記述します。これにより、デコードの結果を認識しやすくなり、デコードされたデータに基づいて2次レポートを作成できます。
  11. 標準出力形式は、XSDスキーム( XSDファイルへのリンク )の形式で詳細に説明されています
  12. 標準出力形式は、デコードされた各タイプ内の個々のサブブロックを記述します。 たとえば、OBJECT IDENTIFIERをデコードすると、各「サブ識別子」の個別の情報ブロックが出力ファイルに作成され、REALのようにデコードすると、仮数、指数、情報サブユニットのサブユニットの個別の情報ブロックが作成されます。
  13. 実際にデコードされたデータに加えて、標準出力形式では、デコード中に発生する警告とエラーを記述することができます。 さらに、警告とエラーは、デコードされたファイル全体と、各ASN.1タイプ内のデコードされた各サブユニットの両方に適用されます。
  14. エンコード機能を簡素化するために、プログラムの出力形式と入力形式は完全に同一です。 つまり、複雑なファイル(X.509証明書など)をデコードし、CompliXML形式のXML出力ファイルを受け取った後、同じファイルをプログラム入力に転送して、元のデコードされたファイルとまったく同じエンコードされたバイナリファイルを取得できます。
  15. プログラムのこのような柔軟性により、バイナリファイルをデコードし、その中のASN.1データのタイプを変更して(たとえば、BMP STRINGからPRINTABLE STRINGに)、新しい変更されたデータタイプで新しいバイナリファイルをエンコードすることもできます。


その結果、COMPLIプログラムを作成した後、次のタスクを実装することができました。

  1. 有効なフリーウェアASN.1 BERエンコーダー/デコーダーを入手してください。
  2. すべてのタイプのASN.1のコーディングの提案されたテストケースをテストするためのスタンドを取得します。
  3. ASN.1タイプごとに最も詳細でシンプルな記述形式を取得します。
  4. すべてのタイプのASN.1のXMLファイルを使用して、BER形式で簡単にエンコードする機能を取得します。 つまり、COMPLIを使用すると、任意のバイナリASN.1 BERファイルを作成するときにプログラミングを完全になくすことができ、XML形式のテキストデータのみで機能することができます。
  5. 私が提供するASN.1タイプのコーディングのすべてのテストケースに対する可能な反応を示します。


このプログラムは成長と拡大を続けます。 現在、次の形式のエンコードを許可しています。

  1. BER(DER、CER);
  2. BASE64でさらにエンコードされたBER(OpenSSL証明書など)。
  3. CompliXML;
  4. 間もなくXER形式がこのリストに追加されます。


実際にテストスイート自体

COMPLIソース

COMPLI実行可能ファイル+ XSDスキーマ+テストスイートの構成ファイル

PDFと同じ記事



All Articles