Difference ASN1_item_d2i_bio / ASN1_d2i_bio_of ?
andrew.lynch at atos.net
Thu Aug 15 17:11:33 UTC 2019
I want to read several bespoke ASN1 types from a BIO. DECLARE_ASN1_FUNCTIONS does not include d2i bio routines, so what is the best way to define them?
I have seen both ASN1_item_d2i_bio() and ASN1_d2i_bio_of() and it is not clear to me why one might be used over the other.
E.g. cms_io.c has a one-line function calling ASN1_item_d2i_bio():
CMS_ContentInfo *d2i_CMS_bio(BIO *bp, CMS_ContentInfo **cms)
return ASN1_item_d2i_bio(ASN1_ITEM_rptr(CMS_ContentInfo), bp, cms);
Whereas ocsp.h has a macro using ASN1_d2i_bio_of, which itself is defined in terms of ASN1_d2i_bio():
# define d2i_OCSP_REQUEST_bio(bp,p) ASN1_d2i_bio_of(OCSP_REQUEST,OCSP_REQUEST_new,d2i_OCSP_REQUEST,bp,p)
More information about the openssl-users