Hi,

I had to make some changes to pkcs12.h (OpenSSL 0.9.3a) to get the PKCS12
library to
compile under DevStudio 5. All changes bar one were function ptr casts, the
odd out being a
preprocessor funny. Context diff attached.


*** pkcs12.h    Wed May 19 13:45:02 1999
--- pkcs12.new.h        Mon May 31 12:58:04 1999
***************
*** 136,146 ****
  #define PKCS12_OK     1
  
  #define M_PKCS12_bag_type(bag) OBJ_obj2nid(bag->type)
! #define M_PKCS12_cert_bag_type(bag) OBJ_obj2nid(bag->value.bag->type)
  #define M_PKCS12_crl_bag_type M_PKCS12_cert_bag_type
  
  #define M_PKCS12_x5092certbag(x509) \
! PKCS12_pack_safebag ((char *)(x509), i2d_X509, NID_x509Certificate, NID_certBag)
  
  #define M_PKCS12_x509crl2certbag(crl) \
  PKCS12_pack_safebag ((char *)(crl), i2d_X509CRL, NID_x509Crl, NID_crlBag)
--- 136,146 ----
  #define PKCS12_OK     1
  
  #define M_PKCS12_bag_type(bag) OBJ_obj2nid(bag->type)
! #define M_PKCS12_cert_bag_type(xbag) OBJ_obj2nid(xbag->value.bag->type)     // FIX - 
bag to xbag
  #define M_PKCS12_crl_bag_type M_PKCS12_cert_bag_type
  
  #define M_PKCS12_x5092certbag(x509) \
! PKCS12_pack_safebag ((char *)(x509), (int (*)(void)) i2d_X509, NID_x509Certificate, 
NID_certBag) // FIX - cast on 2nd arg
  
  #define M_PKCS12_x509crl2certbag(crl) \
  PKCS12_pack_safebag ((char *)(crl), i2d_X509CRL, NID_x509Crl, NID_crlBag)
***************
*** 158,164 ****
  
  #define M_PKCS12_unpack_p7data(p7) \
  ASN1_seq_unpack ((p7)->d.data->data, p7->d.data->length, \
!                        (char *(*)())d2i_PKCS12_SAFEBAG, PKCS12_SAFEBAG_free)
  
  #define M_PKCS12_pack_authsafes(p12, safes) \
  ASN1_seq_pack((safes), (int (*)())i2d_PKCS7,\
--- 158,164 ----
  
  #define M_PKCS12_unpack_p7data(p7) \
  ASN1_seq_unpack ((p7)->d.data->data, p7->d.data->length, \
!                        (char *(*)())d2i_PKCS12_SAFEBAG, (void (*)(void)) 
PKCS12_SAFEBAG_free) // FIX - cast on 4th arg
  
  #define M_PKCS12_pack_authsafes(p12, safes) \
  ASN1_seq_pack((safes), (int (*)())i2d_PKCS7,\
***************
*** 167,185 ****
  #define M_PKCS12_unpack_authsafes(p12) \
  ASN1_seq_unpack((p12)->authsafes->d.data->data, \
                (p12)->authsafes->d.data->length, (char *(*)())d2i_PKCS7, \
!                                                       PKCS7_free)
  
  #define M_PKCS12_unpack_p7encdata(p7, pass, passlen) \
  (STACK *) PKCS12_decrypt_d2i ((p7)->d.encrypted->enc_data->algorithm,\
!                        (char *(*)())d2i_PKCS12_SAFEBAG, PKCS12_SAFEBAG_free, \
                                                        (pass), (passlen), \
!                       (p7)->d.encrypted->enc_data->enc_data, 3)
  
  #define M_PKCS12_decrypt_skey(bag, pass, passlen) \
  (PKCS8_PRIV_KEY_INFO *) PKCS12_decrypt_d2i ((bag)->value.shkeybag->algor, \
! (char *(*)())d2i_PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_free, \
                                                (pass), (passlen), \
!                        (bag)->value.shkeybag->digest, 2)
  
  #define M_PKCS8_decrypt(p8, pass, passlen) \
  (PKCS8_PRIV_KEY_INFO *) PKCS12_decrypt_d2i ((p8)->algor, \
--- 167,185 ----
  #define M_PKCS12_unpack_authsafes(p12) \
  ASN1_seq_unpack((p12)->authsafes->d.data->data, \
                (p12)->authsafes->d.data->length, (char *(*)())d2i_PKCS7, \
!                                                       (void (*)(void)) PKCS7_free)   
     // FIX - cast on 4th arg
  
  #define M_PKCS12_unpack_p7encdata(p7, pass, passlen) \
  (STACK *) PKCS12_decrypt_d2i ((p7)->d.encrypted->enc_data->algorithm,\
!                        (char *(*)())d2i_PKCS12_SAFEBAG, (void (*)(void)) 
PKCS12_SAFEBAG_free, \
                                                        (pass), (passlen), \
!                       (p7)->d.encrypted->enc_data->enc_data, 3)           // FIX - 
cast on 3rd arg
  
  #define M_PKCS12_decrypt_skey(bag, pass, passlen) \
  (PKCS8_PRIV_KEY_INFO *) PKCS12_decrypt_d2i ((bag)->value.shkeybag->algor, \
! (char *(*)())d2i_PKCS8_PRIV_KEY_INFO, (void (*)(void)) PKCS8_PRIV_KEY_INFO_free, \
                                                (pass), (passlen), \
!                        (bag)->value.shkeybag->digest, 2)                  // FIX - 
cast on 3rd arg
  
  #define M_PKCS8_decrypt(p8, pass, passlen) \
  (PKCS8_PRIV_KEY_INFO *) PKCS12_decrypt_d2i ((p8)->algor, \

Reply via email to