<div dir="ltr">Hi,<div>I am trying to write replacement ASN1 macros for i2d/d2i functions in openssl 1.1.1<br><div>Previously: </div><div>typedef struct pkcs7_issuer_and_subject_st<br>{<br>    X509_NAME *issuer;          /* Certificate Issuer's name */<br>    X509_NAME *subject;         /* Certificate's subject name */<br>} PKCS7_ISSUER_AND_SUBJECT;<br></div><div>----</div><div>i2d function:</div><div>int i2d_PKCS7_ISSUER_AND_SUBJECT (PKCS7_ISSUER_AND_SUBJECT * a,<br>                                              unsigned char **pp)<br> {<br>     M_ASN1_I2D_vars (a);<br>     M_ASN1_I2D_len (a->issuer, i2d_X509_NAME);<br>     M_ASN1_I2D_len (a->subject, i2d_X509_NAME); <br>     M_ASN1_I2D_seq_total ();<br>     M_ASN1_I2D_put (a->issuer, i2d_X509_NAME);<br>     M_ASN1_I2D_put (a->subject, i2d_X509_NAME);<br>     M_ASN1_I2D_finish ();<br> }<br></div><div><br></div><div>======================================</div><div>New :</div><div><br></div><div>DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SUBJECT) <br></div><div><br></div><div>ASN1_SEQUENCE(PKCS7_ISSUER_AND_SUBJECT) = { <br>        ASN1_SIMPLE(PKCS7_ISSUER_AND_SUBJECT, issuer, X509_NAME),<br>        ASN1_SIMPLE(PKCS7_ISSUER_AND_SUBJECT, subject, X509_NAME)<br>} ASN1_SEQUENCE_END(PKCS7_ISSUER_AND_SUBJECT)<br><br>IMPLEMENT_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SUBJECT)<br></div><div><br></div><div>Finally , we can call the function : </div><div> ulLen = i2d_PKCS7_ISSUER_AND_SUBJECT (&pkcs7IssuerAndSub, &ptr);</div><div><br></div><div>Is this the correct way , or am I missing anything  ??<br></div></div><div>( does it need  DECLARE_ASN1_ALLOC_FUNCTIONS  & DECLARE_ASN1_ITEM .. ...etc.,.)   <br></div><div>Can anyone help me out in this regard !!</div><div><br></div><div>Thanks,</div><div>Prudvi.</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div></div>