|
@@ -220,15 +220,19 @@ typedef struct pem_ctx_st
|
|
|
#define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \
|
|
|
type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u)\
|
|
|
{ \
|
|
|
-return((type *)PEM_ASN1_read((char *(*)())d2i_##asn1, str,fp,(char **)x,\
|
|
|
- cb,u)); \
|
|
|
+return(((type *(*)(D2I_OF(type),char *,FILE *,type **,pem_password_cb *,void *))PEM_ASN1_read)(d2i_##asn1, str,fp,x,cb,u)); \
|
|
|
} \
|
|
|
|
|
|
#define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \
|
|
|
int PEM_write_##name(FILE *fp, type *x) \
|
|
|
{ \
|
|
|
-return(PEM_ASN1_write((int (*)())i2d_##asn1,str,fp, (char *)x, \
|
|
|
- NULL,NULL,0,NULL,NULL)); \
|
|
|
+return(((int (*)(I2D_OF(type),const char *,FILE *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))PEM_ASN1_write)(i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL)); \
|
|
|
+}
|
|
|
+
|
|
|
+#define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \
|
|
|
+int PEM_write_##name(FILE *fp, type *x) \
|
|
|
+{ \
|
|
|
+return(((int (*)(I2D_OF_const(type),const char *,FILE *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))PEM_ASN1_write)(i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL)); \
|
|
|
}
|
|
|
|
|
|
#define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \
|
|
@@ -236,8 +240,15 @@ int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \
|
|
|
unsigned char *kstr, int klen, pem_password_cb *cb, \
|
|
|
void *u) \
|
|
|
{ \
|
|
|
- return(PEM_ASN1_write((int (*)())i2d_##asn1,str,fp, \
|
|
|
- (char *)x,enc,kstr,klen,cb,u)); \
|
|
|
+ return(((int (*)(I2D_OF(type),const char *,FILE *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))PEM_ASN1_write)(i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u)); \
|
|
|
+ }
|
|
|
+
|
|
|
+#define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \
|
|
|
+int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \
|
|
|
+ unsigned char *kstr, int klen, pem_password_cb *cb, \
|
|
|
+ void *u) \
|
|
|
+ { \
|
|
|
+ return(((int (*)(I2D_OF_const(type),const char *,FILE *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))PEM_ASN1_write)(i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u)); \
|
|
|
}
|
|
|
|
|
|
#endif
|
|
@@ -245,33 +256,51 @@ int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \
|
|
|
#define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \
|
|
|
type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u)\
|
|
|
{ \
|
|
|
-return((type *)PEM_ASN1_read_bio((char *(*)())d2i_##asn1, str,bp,\
|
|
|
- (char **)x,cb,u)); \
|
|
|
+return(((type *(*)(D2I_OF(type),const char *,BIO *,type **,pem_password_cb *,void *))PEM_ASN1_read_bio)(d2i_##asn1, str,bp,x,cb,u)); \
|
|
|
}
|
|
|
|
|
|
#define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \
|
|
|
int PEM_write_bio_##name(BIO *bp, type *x) \
|
|
|
{ \
|
|
|
-return(PEM_ASN1_write_bio((int (*)())i2d_##asn1,str,bp, (char *)x, \
|
|
|
- NULL,NULL,0,NULL,NULL)); \
|
|
|
+return(((int (*)(I2D_OF(type),const char *,BIO *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))PEM_ASN1_write_bio)(i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL)); \
|
|
|
+}
|
|
|
+
|
|
|
+#define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \
|
|
|
+int PEM_write_bio_##name(BIO *bp, type *x) \
|
|
|
+{ \
|
|
|
+return(((int (*)(I2D_OF_const(type),const char *,BIO *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))PEM_ASN1_write_bio)(i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL)); \
|
|
|
}
|
|
|
|
|
|
#define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \
|
|
|
int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
|
|
|
unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \
|
|
|
{ \
|
|
|
- return(PEM_ASN1_write_bio((int (*)())i2d_##asn1,str,bp, \
|
|
|
- (char *)x,enc,kstr,klen,cb,u)); \
|
|
|
+ return(((int (*)(I2D_OF(type),const char *,BIO *,type *,const EVP_CIPHER *,unsigned char *,int,pem_password_cb *,void *))PEM_ASN1_write_bio)(i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u)); \
|
|
|
+ }
|
|
|
+
|
|
|
+#define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \
|
|
|
+int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
|
|
|
+ unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \
|
|
|
+ { \
|
|
|
+ return(((int (*)(I2D_OF_const(type),const char *,BIO *,type *,const EVP_CIPHER *,unsigned char *,int,pem_password_cb *,void *))PEM_ASN1_write_bio)(i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u)); \
|
|
|
}
|
|
|
|
|
|
#define IMPLEMENT_PEM_write(name, type, str, asn1) \
|
|
|
IMPLEMENT_PEM_write_bio(name, type, str, asn1) \
|
|
|
IMPLEMENT_PEM_write_fp(name, type, str, asn1)
|
|
|
|
|
|
+#define IMPLEMENT_PEM_write_const(name, type, str, asn1) \
|
|
|
+ IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \
|
|
|
+ IMPLEMENT_PEM_write_fp_const(name, type, str, asn1)
|
|
|
+
|
|
|
#define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \
|
|
|
IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \
|
|
|
IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1)
|
|
|
|
|
|
+#define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \
|
|
|
+ IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \
|
|
|
+ IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1)
|
|
|
+
|
|
|
#define IMPLEMENT_PEM_read(name, type, str, asn1) \
|
|
|
IMPLEMENT_PEM_read_bio(name, type, str, asn1) \
|
|
|
IMPLEMENT_PEM_read_fp(name, type, str, asn1)
|
|
@@ -280,6 +309,10 @@ int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
|
|
|
IMPLEMENT_PEM_read(name, type, str, asn1) \
|
|
|
IMPLEMENT_PEM_write(name, type, str, asn1)
|
|
|
|
|
|
+#define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \
|
|
|
+ IMPLEMENT_PEM_read(name, type, str, asn1) \
|
|
|
+ IMPLEMENT_PEM_write_const(name, type, str, asn1)
|
|
|
+
|
|
|
#define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \
|
|
|
IMPLEMENT_PEM_read(name, type, str, asn1) \
|
|
|
IMPLEMENT_PEM_write_cb(name, type, str, asn1)
|
|
@@ -410,9 +443,6 @@ int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
|
|
|
(char *(*)())d2i_NETSCAPE_CERT_SEQUENCE,PEM_STRING_X509,fp,\
|
|
|
(char **)x,cb,u)
|
|
|
|
|
|
-#define PEM_write_bio_SSL_SESSION(bp,x) \
|
|
|
- PEM_ASN1_write_bio((int (*)())i2d_SSL_SESSION, \
|
|
|
- PEM_STRING_SSL_SESSION,bp, (char *)x, NULL,NULL,0,NULL,NULL)
|
|
|
#define PEM_write_bio_X509(bp,x) \
|
|
|
PEM_ASN1_write_bio((int (*)())i2d_X509,PEM_STRING_X509,bp, \
|
|
|
(char *)x, NULL,NULL,0,NULL,NULL)
|
|
@@ -451,8 +481,6 @@ int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
|
|
|
PEM_STRING_X509,bp, \
|
|
|
(char *)x, NULL,NULL,0,NULL,NULL)
|
|
|
|
|
|
-#define PEM_read_bio_SSL_SESSION(bp,x,cb,u) (SSL_SESSION *)PEM_ASN1_read_bio( \
|
|
|
- (char *(*)())d2i_SSL_SESSION,PEM_STRING_SSL_SESSION,bp,(char **)x,cb,u)
|
|
|
#define PEM_read_bio_X509(bp,x,cb,u) (X509 *)PEM_ASN1_read_bio( \
|
|
|
(char *(*)())d2i_X509,PEM_STRING_X509,bp,(char **)x,cb,u)
|
|
|
#define PEM_read_bio_X509_REQ(bp,x,cb,u) (X509_REQ *)PEM_ASN1_read_bio( \
|
|
@@ -501,11 +529,17 @@ int PEM_write_bio(BIO *bp,const char *name,char *hdr,unsigned char *data,
|
|
|
long len);
|
|
|
int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, const char *name, BIO *bp,
|
|
|
pem_password_cb *cb, void *u);
|
|
|
-char * PEM_ASN1_read_bio(char *(*d2i)(),const char *name,BIO *bp,char **x,
|
|
|
- pem_password_cb *cb, void *u);
|
|
|
-int PEM_ASN1_write_bio(int (*i2d)(),const char *name,BIO *bp,char *x,
|
|
|
+void * PEM_ASN1_read_bio(void *(*d2i)(void **,const unsigned char **,long),
|
|
|
+ const char *name,BIO *bp,void **x,
|
|
|
+ pem_password_cb *cb, void *u);
|
|
|
+#define PEM_ASN1_read_bio_of(type,d2i,name,bp,x,cb,u) \
|
|
|
+((type *(*)(D2I_OF(type),const char *,BIO *,type **,pem_password_cb *,void *))PEM_ASN1_read_bio)(d2i,name,bp,x,cb,u)
|
|
|
+int PEM_ASN1_write_bio(int (*i2d)(void *,unsigned char **),const char *name,BIO *bp,char *x,
|
|
|
const EVP_CIPHER *enc,unsigned char *kstr,int klen,
|
|
|
pem_password_cb *cb, void *u);
|
|
|
+#define PEM_ASN1_write_bio_of(type,i2d,name,bp,x,enc,kstr,klen,cb,u) \
|
|
|
+ ((int (*)(I2D_OF(type),const char *,BIO *,type *, const EVP_CIPHER *,unsigned char *,int, pem_password_cb *,void *))PEM_ASN1_write_bio)(i2d,name,bp,x,enc,kstr,klen,cb,u)
|
|
|
+
|
|
|
STACK_OF(X509_INFO) * PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, void *u);
|
|
|
int PEM_X509_INFO_write_bio(BIO *bp,X509_INFO *xi, EVP_CIPHER *enc,
|
|
|
unsigned char *kstr, int klen, pem_password_cb *cd, void *u);
|
|
@@ -515,11 +549,12 @@ int PEM_X509_INFO_write_bio(BIO *bp,X509_INFO *xi, EVP_CIPHER *enc,
|
|
|
int PEM_read(FILE *fp, char **name, char **header,
|
|
|
unsigned char **data,long *len);
|
|
|
int PEM_write(FILE *fp,char *name,char *hdr,unsigned char *data,long len);
|
|
|
-char * PEM_ASN1_read(char *(*d2i)(),const char *name,FILE *fp,char **x,
|
|
|
- pem_password_cb *cb, void *u);
|
|
|
-int PEM_ASN1_write(int (*i2d)(),const char *name,FILE *fp,char *x,
|
|
|
- const EVP_CIPHER *enc,unsigned char *kstr,int klen,
|
|
|
- pem_password_cb *callback, void *u);
|
|
|
+void * PEM_ASN1_read(void *(*d2i)(void **,const unsigned char **,long),
|
|
|
+ const char *name,FILE *fp,void **x,pem_password_cb *cb,
|
|
|
+ void *u);
|
|
|
+int PEM_ASN1_write(int (*i2d)(void *,unsigned char **),const char *name,FILE *fp,
|
|
|
+ char *x,const EVP_CIPHER *enc,unsigned char *kstr,
|
|
|
+ int klen,pem_password_cb *callback, void *u);
|
|
|
STACK_OF(X509_INFO) * PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk,
|
|
|
pem_password_cb *cb, void *u);
|
|
|
#endif
|