[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openssl-users
Subject:    i2d & ASN1_SEQUENCE related query in openssl 1.1.1.
From:       prudvi raj <rajprudvi98 () gmail ! com>
Date:       2020-10-12 20:51:39
Message-ID: CANk5VoNfrmk3phbHj7n0Hcd1uBaA0KR1-NCyX4A1+oUAo-Dzww () mail ! gmail ! com
[Download RAW message or body]

Hi,
I am trying to write replacement ASN1 macros for i2d/d2i functions in
openssl 1.1.1
Previously:
typedef struct pkcs7_issuer_and_subject_st
{
    X509_NAME *issuer;          /* Certificate Issuer's name */
    X509_NAME *subject;         /* Certificate's subject name */
} PKCS7_ISSUER_AND_SUBJECT;
----
i2d function:
int i2d_PKCS7_ISSUER_AND_SUBJECT (PKCS7_ISSUER_AND_SUBJECT * a,
                                              unsigned char **pp)
 {
     M_ASN1_I2D_vars (a);
     M_ASN1_I2D_len (a->issuer, i2d_X509_NAME);
     M_ASN1_I2D_len (a->subject, i2d_X509_NAME);
     M_ASN1_I2D_seq_total ();
     M_ASN1_I2D_put (a->issuer, i2d_X509_NAME);
     M_ASN1_I2D_put (a->subject, i2d_X509_NAME);
     M_ASN1_I2D_finish ();
 }

======================================
New :

DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SUBJECT)

ASN1_SEQUENCE(PKCS7_ISSUER_AND_SUBJECT) = {
        ASN1_SIMPLE(PKCS7_ISSUER_AND_SUBJECT, issuer, X509_NAME),
        ASN1_SIMPLE(PKCS7_ISSUER_AND_SUBJECT, subject, X509_NAME)
} ASN1_SEQUENCE_END(PKCS7_ISSUER_AND_SUBJECT)

IMPLEMENT_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SUBJECT)

Finally , we can call the function :
 ulLen = i2d_PKCS7_ISSUER_AND_SUBJECT (&pkcs7IssuerAndSub, &ptr);

Is this the correct way , or am I missing anything ??
( does it need  DECLARE_ASN1_ALLOC_FUNCTIONS  & DECLARE_ASN1_ITEM ..
...etc.,.)
Can anyone help me out in this regard !!

Thanks,
Prudvi.

[Attachment #3 (text/html)]

<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&#39;s name */<br>      X509_NAME *subject;             /* \
Certificate&#39;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-&gt;issuer, i2d_X509_NAME);<br>        M_ASN1_I2D_len (a-&gt;subject, \
i2d_X509_NAME);  <br>        M_ASN1_I2D_seq_total ();<br>        M_ASN1_I2D_put \
(a-&gt;issuer, i2d_X509_NAME);<br>        M_ASN1_I2D_put (a-&gt;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 \
(&amp;pkcs7IssuerAndSub, &amp;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   &amp; 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>




[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic