[openssl-users] M_ASN1_D2I_* replacement in OpenSSL 1.1.0
Dr. Stephen Henson
steve at openssl.org
Fri Sep 9 11:44:46 UTC 2016
On Fri, Sep 09, 2016, Aleksandr Konstantinov wrote:
> Hello,
>
> Thanks for your answer. Here is one of d2i functions simplified:
>
> MYEXT * d2i_MYEXT(MYEXT ** myext, unsigned char ** pp, long length) {
> M_ASN1_D2I_vars(myext, MYEXT *, MYEXT_new);
> M_ASN1_D2I_Init();
> M_ASN1_D2I_start_sequence();
> M_ASN1_D2I_get_EXP_opt(ret->intmember, d2i_ASN1_INTEGER, 1);
> M_ASN1_D2I_get_opt(ret->intmember, d2i_ASN1_INTEGER, V_ASN1_INTEGER);
> M_ASN1_D2I_Finish(myext, MYEXT_free, ASN1_F_D2I_MYEXT);
> }
>
>
Presumably the two fields aren't the same? I'll call one intmember2 for
this example.
The above would translate to something like:
ASN1_SEQUENCE(MYEXT) = {
ASN1_EXP_OPT(MYEXT, intmember, ASN1_INTEGER, 1),
ASN1_OPT(MYEXT, intmember2, ASN1_INTEGER)
} ASN1_SEQUENCE_END(MYEXT)
IMPLEMENT_ASN1_FUNCTIONS(MYEXT)
Then you include:
DECLARE_ASN1_FUNCTIONS(MYEXT)
in a header file.
That generates four functions MYEXT_new(), MYEXT_free(), d2i_MYEXT() and
i2d_MYEXT().
Steve.
--
Dr Stephen N. Henson. OpenSSL project core developer.
Commercial tech support now available see: http://www.openssl.org
More information about the openssl-users
mailing list