Hello,

Thus wrote [email protected] ([email protected]):

> Could you please help me to find source code for the functions
> i2d_RSAPrivateKey, d2i_RSAPrivateKey, i2d_RSAPublicKey,
> d2i_RSAPublicKey ?

these functions are declared and implemented using macros.

crypto/rsa/rsa.h contains the declarations

DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPublicKey)
DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPrivateKey)

the macro itself is in crypto/asn1/asn1.h
#define  DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \
   type *d2i_##name(type **a, const unsigned char **in, long len); \ 
   int i2d_##name(const type *a, unsigned char **out); \ 
   DECLARE_ASN1_ITEM(name)                                                      
         

the macro for the implementation is in crypto/rsa/rsa_asn1.c

IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(RSA, RSAPrivateKey, RSAPrivateKey)
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(RSA, RSAPublicKey, RSAPublicKey)

it's defined in crypto/asn1/asn1t.h as

#define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \
   stname *d2i_##fname(stname **a, const unsigned char **in, long len) \
   { \
      return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, 
ASN1_ITEM_rptr(itname));\
   } \
   int i2d_##fname(const stname *a, unsigned char **out) \
   { \
      return ASN1_item_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\
   } 


In other words: You're basically looking for ASN1_item_d2i() and
ASN1_item_i2d(), respectively.

Best regards,

   Martin
______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [email protected]
Automated List Manager                           [email protected]

Reply via email to