私は独自のカスタムタイプを実装するためにOpenSSL ASN.1 APIを使用しようとしています。私は将来これらの型を拡張することを期待しており、ASN.1標準自体は、拡張可能な型の概念によってこれをサポートしています(私が望むものの概要についてはhereを参照してください)。しかし、私はOpenSSL ASN.1 APIがこのコンセプトをサポートしているかどうか、またそれを実装する方法がわかっていません。私は、OpenSSLから供給されたマクロを使用して定義された以下の構造を持っている:OpenSSL ASN.1 APIは拡張可能なタイプをサポートしていますか?
typedef struct _TEST_STRUCT_V1 {
ASN1_INTEGER* Field1;
} TEST_STRUCT_V1;
typedef struct _TEST_STRUCT_V2 {
ASN1_INTEGER* Field1;
ASN1_INTEGER* Field2;
} TEST_STRUCT_V2;
ASN1_SEQUENCE(TEST_STRUCT_V1) = {
ASN1_SIMPLE(TEST_STRUCT_V1, Field1, ASN1_INTEGER),
} ASN1_SEQUENCE_END(TEST_STRUCT_V1);
IMPLEMENT_ASN1_FUNCTIONS(TEST_STRUCT_V1);
ASN1_SEQUENCE(TEST_STRUCT_V2) = {
ASN1_SIMPLE(TEST_STRUCT_V2, Field1, ASN1_INTEGER),
ASN1_SIMPLE(TEST_STRUCT_V2, Field2, ASN1_INTEGER),
} ASN1_SEQUENCE_END(TEST_STRUCT_V2);
IMPLEMENT_ASN1_FUNCTIONS(TEST_STRUCT_V2);
これらのマクロは、エンコードとデコード機能を生成します。ただし、どちらの関数も構造体の他のバージョンとはどちらも動作しません。
おそらく私は間違った木を鳴らしていますか?私は既に暗号化のためにライブラリを使用しているので、OpenSSLのASN.1の実装を使用しようとしているだけですが、適切なASN.1コンパイラが行く方法でしょうか?
はい、ほとんど同じ結論に達しました。私はASN.1と結婚していませんが、すでにOpenSSLに依存しているので便利なはずです。私は代替策を検討しており、Googleのプロトコルバッファーはかなりよく見えます。私はこれを答えとして受け入れるつもりです。なぜなら、他には言いたいことはないと思うからです。 – Luke