Additional user data argument to pem_password_cb function type
and to lots of PEM_... functions. Submitted by: Damien Miller <dmiller@ilogic.com.au>
This commit is contained in:
206
crypto/pem/pem.h
206
crypto/pem/pem.h
@@ -198,48 +198,50 @@ typedef struct pem_ctx_st
|
||||
#else
|
||||
|
||||
#define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \
|
||||
type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb)\
|
||||
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)); \
|
||||
return((type *)PEM_ASN1_read((char *(*)())d2i_##asn1, str,fp,(char **)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,NULL,0,NULL,NULL)); \
|
||||
}
|
||||
|
||||
#define IMPLEMENT_PEM_write_cb_fp(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) \
|
||||
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)); \
|
||||
(char *)x,enc,kstr,klen,cb,u)); \
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \
|
||||
type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb)\
|
||||
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)); \
|
||||
(char **)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,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) \
|
||||
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)); \
|
||||
(char *)x,enc,kstr,klen,cb,u)); \
|
||||
}
|
||||
|
||||
#define IMPLEMENT_PEM_write(name, type, str, asn1) \
|
||||
@@ -273,27 +275,27 @@ int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
|
||||
#else
|
||||
|
||||
#define DECLARE_PEM_read_fp(name, type) \
|
||||
type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb);
|
||||
type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u);
|
||||
|
||||
#define DECLARE_PEM_write_fp(name, type) \
|
||||
int PEM_write_##name(FILE *fp, type *x);
|
||||
|
||||
#define DECLARE_PEM_write_cb_fp(name, type) \
|
||||
int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \
|
||||
unsigned char *kstr, int klen, pem_password_cb *cb);
|
||||
unsigned char *kstr, int klen, pem_password_cb *cb, void *u);
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef HEADER_BIO_H
|
||||
#define DECLARE_PEM_read_bio(name, type) \
|
||||
type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb);
|
||||
type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u);
|
||||
|
||||
#define DECLARE_PEM_write_bio(name, type) \
|
||||
int PEM_write_bio_##name(BIO *bp, type *x);
|
||||
|
||||
#define DECLARE_PEM_write_cb_bio(name, type) \
|
||||
int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
|
||||
unsigned char *kstr, int klen, pem_password_cb *cb);
|
||||
unsigned char *kstr, int klen, pem_password_cb *cb, void *u);
|
||||
|
||||
#else
|
||||
|
||||
@@ -327,146 +329,150 @@ int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
|
||||
|
||||
#define PEM_write_SSL_SESSION(fp,x) \
|
||||
PEM_ASN1_write((int (*)())i2d_SSL_SESSION, \
|
||||
PEM_STRING_SSL_SESSION,fp, (char *)x, NULL,NULL,0,NULL)
|
||||
PEM_STRING_SSL_SESSION,fp, (char *)x, NULL,NULL,0,NULL,NULL)
|
||||
#define PEM_write_X509(fp,x) \
|
||||
PEM_ASN1_write((int (*)())i2d_X509,PEM_STRING_X509,fp, \
|
||||
(char *)x, NULL,NULL,0,NULL)
|
||||
(char *)x, NULL,NULL,0,NULL,NULL)
|
||||
#define PEM_write_X509_REQ(fp,x) PEM_ASN1_write( \
|
||||
(int (*)())i2d_X509_REQ,PEM_STRING_X509_REQ,fp,(char *)x, \
|
||||
NULL,NULL,0,NULL)
|
||||
NULL,NULL,0,NULL,NULL)
|
||||
#define PEM_write_X509_CRL(fp,x) \
|
||||
PEM_ASN1_write((int (*)())i2d_X509_CRL,PEM_STRING_X509_CRL, \
|
||||
fp,(char *)x, NULL,NULL,0,NULL)
|
||||
#define PEM_write_RSAPrivateKey(fp,x,enc,kstr,klen,cb) \
|
||||
fp,(char *)x, NULL,NULL,0,NULL,NULL)
|
||||
#define PEM_write_RSAPrivateKey(fp,x,enc,kstr,klen,cb,u) \
|
||||
PEM_ASN1_write((int (*)())i2d_RSAPrivateKey,PEM_STRING_RSA,fp,\
|
||||
(char *)x,enc,kstr,klen,cb)
|
||||
(char *)x,enc,kstr,klen,cb,u)
|
||||
#define PEM_write_RSAPublicKey(fp,x) \
|
||||
PEM_ASN1_write((int (*)())i2d_RSAPublicKey,\
|
||||
PEM_STRING_RSA_PUBLIC,fp,(char *)x,NULL,NULL,0,NULL)
|
||||
#define PEM_write_DSAPrivateKey(fp,x,enc,kstr,klen,cb) \
|
||||
PEM_STRING_RSA_PUBLIC,fp,(char *)x,NULL,NULL,0,NULL,NULL)
|
||||
#define PEM_write_DSAPrivateKey(fp,x,enc,kstr,klen,cb,u) \
|
||||
PEM_ASN1_write((int (*)())i2d_DSAPrivateKey,PEM_STRING_DSA,fp,\
|
||||
(char *)x,enc,kstr,klen,cb)
|
||||
#define PEM_write_PrivateKey(bp,x,enc,kstr,klen,cb) \
|
||||
(char *)x,enc,kstr,klen,cb,u)
|
||||
#define PEM_write_PrivateKey(bp,x,enc,kstr,klen,cb,u) \
|
||||
PEM_ASN1_write((int (*)())i2d_PrivateKey,\
|
||||
(((x)->type == EVP_PKEY_DSA)?PEM_STRING_DSA:PEM_STRING_RSA),\
|
||||
bp,(char *)x,enc,kstr,klen,cb)
|
||||
bp,(char *)x,enc,kstr,klen,cb,u)
|
||||
#define PEM_write_PKCS7(fp,x) \
|
||||
PEM_ASN1_write((int (*)())i2d_PKCS7,PEM_STRING_PKCS7,fp, \
|
||||
(char *)x, NULL,NULL,0,NULL)
|
||||
(char *)x, NULL,NULL,0,NULL,NULL)
|
||||
#define PEM_write_DHparams(fp,x) \
|
||||
PEM_ASN1_write((int (*)())i2d_DHparams,PEM_STRING_DHPARAMS,fp,\
|
||||
(char *)x,NULL,NULL,0,NULL)
|
||||
(char *)x,NULL,NULL,0,NULL,NULL)
|
||||
|
||||
#define PEM_write_NETSCAPE_CERT_SEQUENCE(fp,x) \
|
||||
PEM_ASN1_write((int (*)())i2d_NETSCAPE_CERT_SEQUENCE, \
|
||||
PEM_STRING_X509,fp, \
|
||||
(char *)x, NULL,NULL,0,NULL)
|
||||
(char *)x, NULL,NULL,0,NULL,NULL)
|
||||
|
||||
#define PEM_read_SSL_SESSION(fp,x,cb) (SSL_SESSION *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_SSL_SESSION,PEM_STRING_SSL_SESSION,fp,(char **)x,cb)
|
||||
#define PEM_read_X509(fp,x,cb) (X509 *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_X509,PEM_STRING_X509,fp,(char **)x,cb)
|
||||
#define PEM_read_X509_REQ(fp,x,cb) (X509_REQ *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_X509_REQ,PEM_STRING_X509_REQ,fp,(char **)x,cb)
|
||||
#define PEM_read_X509_CRL(fp,x,cb) (X509_CRL *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_X509_CRL,PEM_STRING_X509_CRL,fp,(char **)x,cb)
|
||||
#define PEM_read_RSAPrivateKey(fp,x,cb) (RSA *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_RSAPrivateKey,PEM_STRING_RSA,fp,(char **)x,cb)
|
||||
#define PEM_read_RSAPublicKey(fp,x,cb) (RSA *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_RSAPublicKey,PEM_STRING_RSA_PUBLIC,fp,(char **)x,cb)
|
||||
#define PEM_read_DSAPrivateKey(fp,x,cb) (DSA *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_DSAPrivateKey,PEM_STRING_DSA,fp,(char **)x,cb)
|
||||
#define PEM_read_PrivateKey(fp,x,cb) (EVP_PKEY *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_PrivateKey,PEM_STRING_EVP_PKEY,fp,(char **)x,cb)
|
||||
#define PEM_read_PKCS7(fp,x,cb) (PKCS7 *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_PKCS7,PEM_STRING_PKCS7,fp,(char **)x,cb)
|
||||
#define PEM_read_DHparams(fp,x,cb) (DH *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_DHparams,PEM_STRING_DHPARAMS,fp,(char **)x,cb)
|
||||
#define PEM_read_SSL_SESSION(fp,x,cb,u) (SSL_SESSION *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_SSL_SESSION,PEM_STRING_SSL_SESSION,fp,(char **)x,cb,u)
|
||||
#define PEM_read_X509(fp,x,cb,u) (X509 *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_X509,PEM_STRING_X509,fp,(char **)x,cb,u)
|
||||
#define PEM_read_X509_REQ(fp,x,cb,u) (X509_REQ *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_X509_REQ,PEM_STRING_X509_REQ,fp,(char **)x,cb,u)
|
||||
#define PEM_read_X509_CRL(fp,x,cb,u) (X509_CRL *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_X509_CRL,PEM_STRING_X509_CRL,fp,(char **)x,cb,u)
|
||||
#define PEM_read_RSAPrivateKey(fp,x,cb,u) (RSA *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_RSAPrivateKey,PEM_STRING_RSA,fp,(char **)x,cb,u)
|
||||
#define PEM_read_RSAPublicKey(fp,x,cb,u) (RSA *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_RSAPublicKey,PEM_STRING_RSA_PUBLIC,fp,(char **)x,cb,u)
|
||||
#define PEM_read_DSAPrivateKey(fp,x,cb,u) (DSA *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_DSAPrivateKey,PEM_STRING_DSA,fp,(char **)x,cb,u)
|
||||
#define PEM_read_PrivateKey(fp,x,cb,u) (EVP_PKEY *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_PrivateKey,PEM_STRING_EVP_PKEY,fp,(char **)x,cb,u)
|
||||
#define PEM_read_PKCS7(fp,x,cb,u) (PKCS7 *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_PKCS7,PEM_STRING_PKCS7,fp,(char **)x,cb,u)
|
||||
#define PEM_read_DHparams(fp,x,cb,u) (DH *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_DHparams,PEM_STRING_DHPARAMS,fp,(char **)x,cb,u)
|
||||
|
||||
#define PEM_read_NETSCAPE_CERT_SEQUENCE(fp,x,cb) \
|
||||
#define PEM_read_NETSCAPE_CERT_SEQUENCE(fp,x,cb,u) \
|
||||
(NETSCAPE_CERT_SEQUENCE *)PEM_ASN1_read( \
|
||||
(char *(*)())d2i_NETSCAPE_CERT_SEQUENCE,PEM_STRING_X509,fp,\
|
||||
(char **)x,cb)
|
||||
(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)
|
||||
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)
|
||||
(char *)x, NULL,NULL,0,NULL,NULL)
|
||||
#define PEM_write_bio_X509_REQ(bp,x) PEM_ASN1_write_bio( \
|
||||
(int (*)())i2d_X509_REQ,PEM_STRING_X509_REQ,bp,(char *)x, \
|
||||
NULL,NULL,0,NULL)
|
||||
NULL,NULL,0,NULL,NULL)
|
||||
#define PEM_write_bio_X509_CRL(bp,x) \
|
||||
PEM_ASN1_write_bio((int (*)())i2d_X509_CRL,PEM_STRING_X509_CRL,\
|
||||
bp,(char *)x, NULL,NULL,0,NULL)
|
||||
#define PEM_write_bio_RSAPrivateKey(bp,x,enc,kstr,klen,cb) \
|
||||
bp,(char *)x, NULL,NULL,0,NULL,NULL)
|
||||
#define PEM_write_bio_RSAPrivateKey(bp,x,enc,kstr,klen,cb,u) \
|
||||
PEM_ASN1_write_bio((int (*)())i2d_RSAPrivateKey,PEM_STRING_RSA,\
|
||||
bp,(char *)x,enc,kstr,klen,cb)
|
||||
bp,(char *)x,enc,kstr,klen,cb,u)
|
||||
#define PEM_write_bio_RSAPublicKey(bp,x) \
|
||||
PEM_ASN1_write_bio((int (*)())i2d_RSAPublicKey, \
|
||||
PEM_STRING_RSA_PUBLIC,\
|
||||
bp,(char *)x,NULL,NULL,0,NULL)
|
||||
#define PEM_write_bio_DSAPrivateKey(bp,x,enc,kstr,klen,cb) \
|
||||
bp,(char *)x,NULL,NULL,0,NULL,NULL)
|
||||
#define PEM_write_bio_DSAPrivateKey(bp,x,enc,kstr,klen,cb,u) \
|
||||
PEM_ASN1_write_bio((int (*)())i2d_DSAPrivateKey,PEM_STRING_DSA,\
|
||||
bp,(char *)x,enc,kstr,klen,cb)
|
||||
#define PEM_write_bio_PrivateKey(bp,x,enc,kstr,klen,cb) \
|
||||
bp,(char *)x,enc,kstr,klen,cb,u)
|
||||
#define PEM_write_bio_PrivateKey(bp,x,enc,kstr,klen,cb,u) \
|
||||
PEM_ASN1_write_bio((int (*)())i2d_PrivateKey,\
|
||||
(((x)->type == EVP_PKEY_DSA)?PEM_STRING_DSA:PEM_STRING_RSA),\
|
||||
bp,(char *)x,enc,kstr,klen,cb)
|
||||
bp,(char *)x,enc,kstr,klen,cb,u)
|
||||
#define PEM_write_bio_PKCS7(bp,x) \
|
||||
PEM_ASN1_write_bio((int (*)())i2d_PKCS7,PEM_STRING_PKCS7,bp, \
|
||||
(char *)x, NULL,NULL,0,NULL)
|
||||
(char *)x, NULL,NULL,0,NULL,NULL)
|
||||
#define PEM_write_bio_DHparams(bp,x) \
|
||||
PEM_ASN1_write_bio((int (*)())i2d_DHparams,PEM_STRING_DHPARAMS,\
|
||||
bp,(char *)x,NULL,NULL,0,NULL)
|
||||
bp,(char *)x,NULL,NULL,0,NULL,NULL)
|
||||
#define PEM_write_bio_DSAparams(bp,x) \
|
||||
PEM_ASN1_write_bio((int (*)())i2d_DSAparams, \
|
||||
PEM_STRING_DSAPARAMS,bp,(char *)x,NULL,NULL,0,NULL)
|
||||
PEM_STRING_DSAPARAMS,bp,(char *)x,NULL,NULL,0,NULL,NULL)
|
||||
|
||||
#define PEM_write_bio_NETSCAPE_CERT_SEQUENCE(bp,x) \
|
||||
PEM_ASN1_write_bio((int (*)())i2d_NETSCAPE_CERT_SEQUENCE, \
|
||||
PEM_STRING_X509,bp, \
|
||||
(char *)x, NULL,NULL,0,NULL)
|
||||
(char *)x, NULL,NULL,0,NULL,NULL)
|
||||
|
||||
#define PEM_read_bio_SSL_SESSION(bp,x,cb) (SSL_SESSION *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_SSL_SESSION,PEM_STRING_SSL_SESSION,bp,(char **)x,cb)
|
||||
#define PEM_read_bio_X509(bp,x,cb) (X509 *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_X509,PEM_STRING_X509,bp,(char **)x,cb)
|
||||
#define PEM_read_bio_X509_REQ(bp,x,cb) (X509_REQ *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_X509_REQ,PEM_STRING_X509_REQ,bp,(char **)x,cb)
|
||||
#define PEM_read_bio_X509_CRL(bp,x,cb) (X509_CRL *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_X509_CRL,PEM_STRING_X509_CRL,bp,(char **)x,cb)
|
||||
#define PEM_read_bio_RSAPrivateKey(bp,x,cb) (RSA *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_RSAPrivateKey,PEM_STRING_RSA,bp,(char **)x,cb)
|
||||
#define PEM_read_bio_RSAPublicKey(bp,x,cb) (RSA *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_RSAPublicKey,PEM_STRING_RSA_PUBLIC,bp,(char **)x,cb)
|
||||
#define PEM_read_bio_DSAPrivateKey(bp,x,cb) (DSA *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_DSAPrivateKey,PEM_STRING_DSA,bp,(char **)x,cb)
|
||||
#define PEM_read_bio_PrivateKey(bp,x,cb) (EVP_PKEY *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_PrivateKey,PEM_STRING_EVP_PKEY,bp,(char **)x,cb)
|
||||
#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( \
|
||||
(char *(*)())d2i_X509_REQ,PEM_STRING_X509_REQ,bp,(char **)x,cb,u)
|
||||
#define PEM_read_bio_X509_CRL(bp,x,cb,u) (X509_CRL *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_X509_CRL,PEM_STRING_X509_CRL,bp,(char **)x,cb,u)
|
||||
#define PEM_read_bio_RSAPrivateKey(bp,x,cb,u) (RSA *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_RSAPrivateKey,PEM_STRING_RSA,bp,(char **)x,cb,u)
|
||||
#define PEM_read_bio_RSAPublicKey(bp,x,cb,u) (RSA *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_RSAPublicKey,PEM_STRING_RSA_PUBLIC,bp,(char **)x,cb,u)
|
||||
#define PEM_read_bio_DSAPrivateKey(bp,x,cb,u) (DSA *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_DSAPrivateKey,PEM_STRING_DSA,bp,(char **)x,cb,u)
|
||||
#define PEM_read_bio_PrivateKey(bp,x,cb,u) (EVP_PKEY *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_PrivateKey,PEM_STRING_EVP_PKEY,bp,(char **)x,cb,u)
|
||||
|
||||
#define PEM_read_bio_PKCS7(bp,x,cb) (PKCS7 *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_PKCS7,PEM_STRING_PKCS7,bp,(char **)x,cb)
|
||||
#define PEM_read_bio_DHparams(bp,x,cb) (DH *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_DHparams,PEM_STRING_DHPARAMS,bp,(char **)x,cb)
|
||||
#define PEM_read_bio_DSAparams(bp,x,cb) (DSA *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_DSAparams,PEM_STRING_DSAPARAMS,bp,(char **)x,cb)
|
||||
#define PEM_read_bio_PKCS7(bp,x,cb,u) (PKCS7 *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_PKCS7,PEM_STRING_PKCS7,bp,(char **)x,cb,u)
|
||||
#define PEM_read_bio_DHparams(bp,x,cb,u) (DH *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_DHparams,PEM_STRING_DHPARAMS,bp,(char **)x,cb,u)
|
||||
#define PEM_read_bio_DSAparams(bp,x,cb,u) (DSA *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_DSAparams,PEM_STRING_DSAPARAMS,bp,(char **)x,cb,u)
|
||||
|
||||
#define PEM_read_bio_NETSCAPE_CERT_SEQUENCE(bp,x,cb) \
|
||||
#define PEM_read_bio_NETSCAPE_CERT_SEQUENCE(bp,x,cb,u) \
|
||||
(NETSCAPE_CERT_SEQUENCE *)PEM_ASN1_read_bio( \
|
||||
(char *(*)())d2i_NETSCAPE_CERT_SEQUENCE,PEM_STRING_X509,bp,\
|
||||
(char **)x,cb)
|
||||
(char **)x,cb,u)
|
||||
|
||||
#endif
|
||||
|
||||
#if 1
|
||||
/* "userdata": new with OpenSSL 0.9.4 */
|
||||
typedef int pem_password_cb(char *buf, int size, int rwflag, void *userdata);
|
||||
#else
|
||||
/* OpenSSL 0.9.3, 0.9.3a */
|
||||
typedef int pem_password_cb(char *buf, int size, int rwflag);
|
||||
/* "size" should be size_t, obviously, but it was always used
|
||||
* without a parameter list declaration, which makes it "int" */
|
||||
#endif
|
||||
|
||||
int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher);
|
||||
int PEM_do_header (EVP_CIPHER_INFO *cipher, unsigned char *data,long *len,
|
||||
pem_password_cb *);
|
||||
pem_password_cb *callback,void *u);
|
||||
|
||||
#ifdef HEADER_BIO_H
|
||||
int PEM_read_bio(BIO *bp, char **name, char **header,
|
||||
@@ -474,13 +480,13 @@ int PEM_read_bio(BIO *bp, char **name, char **header,
|
||||
int PEM_write_bio(BIO *bp,const char *name,char *hdr,unsigned char *data,
|
||||
long len);
|
||||
char * PEM_ASN1_read_bio(char *(*d2i)(),const char *name,BIO *bp,char **x,
|
||||
pem_password_cb *);
|
||||
pem_password_cb *cb, void *u);
|
||||
int PEM_ASN1_write_bio(int (*i2d)(),const char *name,BIO *bp,char *x,
|
||||
const EVP_CIPHER *enc,unsigned char *kstr,int klen,
|
||||
pem_password_cb *);
|
||||
STACK_OF(X509_INFO) * PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, pem_password_cb *);
|
||||
pem_password_cb *cb, void *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 *);
|
||||
unsigned char *kstr, int klen, pem_password_cb *cd, void *u);
|
||||
#endif
|
||||
|
||||
#ifndef WIN16
|
||||
@@ -488,12 +494,12 @@ 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 *);
|
||||
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 *);
|
||||
pem_password_cb *callback, void *u);
|
||||
STACK_OF(X509_INFO) * PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk,
|
||||
pem_password_cb *);
|
||||
pem_password_cb *cb, void *u);
|
||||
#endif
|
||||
|
||||
int PEM_SealInit(PEM_ENCODE_SEAL_CTX *ctx, EVP_CIPHER *type,
|
||||
@@ -565,7 +571,7 @@ DECLARE_PEM_rw_cb(PrivateKey, EVP_PKEY)
|
||||
#endif
|
||||
|
||||
int PEM_write_PKCS8PrivateKey(FILE *fp,EVP_PKEY *x,const EVP_CIPHER *enc,
|
||||
char *kstr,int klen, pem_password_cb *);
|
||||
char *kstr,int klen, pem_password_cb *cd, void *u);
|
||||
#endif /* SSLEAY_MACROS */
|
||||
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
#include <openssl/pem.h>
|
||||
|
||||
#ifndef NO_FP_API
|
||||
STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb)
|
||||
STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, void *u)
|
||||
{
|
||||
BIO *b;
|
||||
STACK_OF(X509_INFO) *ret;
|
||||
@@ -76,13 +76,13 @@ STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, pem_p
|
||||
return(0);
|
||||
}
|
||||
BIO_set_fp(b,fp,BIO_NOCLOSE);
|
||||
ret=PEM_X509_INFO_read_bio(b,sk,cb);
|
||||
ret=PEM_X509_INFO_read_bio(b,sk,cb,u);
|
||||
BIO_free(b);
|
||||
return(ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb)
|
||||
STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, void *u)
|
||||
{
|
||||
X509_INFO *xi=NULL;
|
||||
char *name=NULL,*header=NULL,**pp;
|
||||
@@ -205,7 +205,7 @@ start:
|
||||
|
||||
if (!PEM_get_EVP_CIPHER_INFO(header,&cipher))
|
||||
goto err;
|
||||
if (!PEM_do_header(&cipher,data,&len,cb))
|
||||
if (!PEM_do_header(&cipher,data,&len,cb,u))
|
||||
goto err;
|
||||
p=data;
|
||||
if (d2i(pp,&p,len) == NULL)
|
||||
@@ -266,7 +266,7 @@ err:
|
||||
|
||||
/* A TJH addition */
|
||||
int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc,
|
||||
unsigned char *kstr, int klen, pem_password_cb *cb)
|
||||
unsigned char *kstr, int klen, pem_password_cb *cb, void *u)
|
||||
{
|
||||
EVP_CIPHER_CTX ctx;
|
||||
int i,ret=0;
|
||||
@@ -328,7 +328,7 @@ int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc,
|
||||
/* normal optionally encrypted stuff */
|
||||
if (PEM_write_bio_RSAPrivateKey(bp,
|
||||
xi->x_pkey->dec_pkey->pkey.rsa,
|
||||
enc,kstr,klen,cb)<=0)
|
||||
enc,kstr,klen,cb,u)<=0)
|
||||
goto err;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -73,10 +73,10 @@ const char *PEM_version="PEM" OPENSSL_VERSION_PTEXT;
|
||||
|
||||
#define MIN_LENGTH 4
|
||||
|
||||
static int def_callback(char *buf, int num, int w);
|
||||
static int def_callback(char *buf, int num, int w, void *userdata);
|
||||
static int load_iv(unsigned char **fromp,unsigned char *to, int num);
|
||||
|
||||
static int def_callback(char *buf, int num, int w)
|
||||
static int def_callback(char *buf, int num, int w, void *userdata)
|
||||
{
|
||||
#ifdef NO_FP_API
|
||||
/* We should not ever call the default callback routine from
|
||||
@@ -151,7 +151,7 @@ void PEM_dek_info(char *buf, const char *type, int len, char *str)
|
||||
|
||||
#ifndef NO_FP_API
|
||||
char *PEM_ASN1_read(char *(*d2i)(), const char *name, FILE *fp, char **x,
|
||||
pem_password_cb *cb)
|
||||
pem_password_cb *cb, void *u)
|
||||
{
|
||||
BIO *b;
|
||||
char *ret;
|
||||
@@ -162,14 +162,14 @@ char *PEM_ASN1_read(char *(*d2i)(), const char *name, FILE *fp, char **x,
|
||||
return(0);
|
||||
}
|
||||
BIO_set_fp(b,fp,BIO_NOCLOSE);
|
||||
ret=PEM_ASN1_read_bio(d2i,name,b,x,cb);
|
||||
ret=PEM_ASN1_read_bio(d2i,name,b,x,cb,u);
|
||||
BIO_free(b);
|
||||
return(ret);
|
||||
}
|
||||
#endif
|
||||
|
||||
char *PEM_ASN1_read_bio(char *(*d2i)(), const char *name, BIO *bp, char **x,
|
||||
pem_password_cb *cb)
|
||||
pem_password_cb *cb, void *u)
|
||||
{
|
||||
EVP_CIPHER_INFO cipher;
|
||||
char *nm=NULL,*header=NULL;
|
||||
@@ -200,7 +200,7 @@ char *PEM_ASN1_read_bio(char *(*d2i)(), const char *name, BIO *bp, char **x,
|
||||
Free(data);
|
||||
}
|
||||
if (!PEM_get_EVP_CIPHER_INFO(header,&cipher)) goto err;
|
||||
if (!PEM_do_header(&cipher,data,&len,cb)) goto err;
|
||||
if (!PEM_do_header(&cipher,data,&len,cb,u)) goto err;
|
||||
p=data;
|
||||
if (strcmp(name,PEM_STRING_EVP_PKEY) == 0) {
|
||||
if (strcmp(nm,PEM_STRING_RSA) == 0)
|
||||
@@ -220,8 +220,8 @@ char *PEM_ASN1_read_bio(char *(*d2i)(), const char *name, BIO *bp, char **x,
|
||||
char psbuf[PEM_BUFSIZE];
|
||||
p8 = d2i_X509_SIG((X509_SIG **)x, &p, len);
|
||||
if(!p8) goto p8err;
|
||||
if (cb) klen=cb(psbuf,PEM_BUFSIZE,0);
|
||||
else klen=def_callback(psbuf,PEM_BUFSIZE,0);
|
||||
if (cb) klen=cb(psbuf,PEM_BUFSIZE,0,u);
|
||||
else klen=def_callback(psbuf,PEM_BUFSIZE,0,u);
|
||||
if (klen <= 0) {
|
||||
PEMerr(PEM_F_PEM_ASN1_READ_BIO,
|
||||
PEM_R_BAD_PASSWORD_READ);
|
||||
@@ -247,7 +247,7 @@ err:
|
||||
#ifndef NO_FP_API
|
||||
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)
|
||||
pem_password_cb *callback, void *u)
|
||||
{
|
||||
BIO *b;
|
||||
int ret;
|
||||
@@ -258,7 +258,7 @@ int PEM_ASN1_write(int (*i2d)(), const char *name, FILE *fp, char *x,
|
||||
return(0);
|
||||
}
|
||||
BIO_set_fp(b,fp,BIO_NOCLOSE);
|
||||
ret=PEM_ASN1_write_bio(i2d,name,b,x,enc,kstr,klen,callback);
|
||||
ret=PEM_ASN1_write_bio(i2d,name,b,x,enc,kstr,klen,callback,u);
|
||||
BIO_free(b);
|
||||
return(ret);
|
||||
}
|
||||
@@ -266,7 +266,7 @@ int PEM_ASN1_write(int (*i2d)(), const char *name, FILE *fp, char *x,
|
||||
|
||||
int PEM_ASN1_write_bio(int (*i2d)(), const char *name, BIO *bp, char *x,
|
||||
const EVP_CIPHER *enc, unsigned char *kstr, int klen,
|
||||
pem_password_cb *callback)
|
||||
pem_password_cb *callback, void *u)
|
||||
{
|
||||
EVP_CIPHER_CTX ctx;
|
||||
int dsize=0,i,j,ret=0;
|
||||
@@ -307,9 +307,9 @@ int PEM_ASN1_write_bio(int (*i2d)(), const char *name, BIO *bp, char *x,
|
||||
if (kstr == NULL)
|
||||
{
|
||||
if (callback == NULL)
|
||||
klen=def_callback(buf,PEM_BUFSIZE,1);
|
||||
klen=def_callback(buf,PEM_BUFSIZE,1,u);
|
||||
else
|
||||
klen=(*callback)(buf,PEM_BUFSIZE,1);
|
||||
klen=(*callback)(buf,PEM_BUFSIZE,1,u);
|
||||
if (klen <= 0)
|
||||
{
|
||||
PEMerr(PEM_F_PEM_ASN1_WRITE_BIO,PEM_R_READ_KEY);
|
||||
@@ -358,7 +358,7 @@ err:
|
||||
}
|
||||
|
||||
int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *plen,
|
||||
pem_password_cb *callback)
|
||||
pem_password_cb *callback,void *u)
|
||||
{
|
||||
int i,j,o,klen;
|
||||
long len;
|
||||
@@ -370,9 +370,9 @@ int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *plen,
|
||||
|
||||
if (cipher->cipher == NULL) return(1);
|
||||
if (callback == NULL)
|
||||
klen=def_callback(buf,PEM_BUFSIZE,0);
|
||||
klen=def_callback(buf,PEM_BUFSIZE,0,u);
|
||||
else
|
||||
klen=callback(buf,PEM_BUFSIZE,0);
|
||||
klen=callback(buf,PEM_BUFSIZE,0,u);
|
||||
if (klen <= 0)
|
||||
{
|
||||
PEMerr(PEM_F_PEM_DO_HEADER,PEM_R_BAD_PASSWORD_READ);
|
||||
@@ -751,7 +751,7 @@ err:
|
||||
|
||||
int PEM_write_bio_PKCS8PrivateKey(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc,
|
||||
char *kstr, int klen,
|
||||
pem_password_cb *cb)
|
||||
pem_password_cb *cb, void *u)
|
||||
{
|
||||
X509_SIG *p8;
|
||||
PKCS8_PRIV_KEY_INFO *p8inf;
|
||||
@@ -764,8 +764,8 @@ int PEM_write_bio_PKCS8PrivateKey(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc,
|
||||
}
|
||||
if(enc) {
|
||||
if(!kstr) {
|
||||
if(!cb) klen = def_callback(buf, PEM_BUFSIZE, 1);
|
||||
else klen = cb(buf, PEM_BUFSIZE, 1);
|
||||
if(!cb) klen = def_callback(buf, PEM_BUFSIZE, 1, u);
|
||||
else klen = cb(buf, PEM_BUFSIZE, 1, u);
|
||||
if(klen <= 0) {
|
||||
PEMerr(PEM_F_PEM_WRITE_BIO_PKCS8PRIVATEKEY,
|
||||
PEM_R_READ_KEY);
|
||||
@@ -789,7 +789,7 @@ int PEM_write_bio_PKCS8PrivateKey(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc,
|
||||
}
|
||||
|
||||
int PEM_write_PKCS8PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc,
|
||||
char *kstr, int klen, pem_password_cb *cb)
|
||||
char *kstr, int klen, pem_password_cb *cb, void *u)
|
||||
{
|
||||
BIO *bp;
|
||||
int ret;
|
||||
@@ -797,7 +797,7 @@ int PEM_write_PKCS8PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc,
|
||||
PEMerr(PEM_F_PEM_F_PEM_WRITE_PKCS8PRIVATEKEY,ERR_R_BUF_LIB);
|
||||
return(0);
|
||||
}
|
||||
ret = PEM_write_bio_PKCS8PrivateKey(bp, x, enc, kstr, klen, cb);
|
||||
ret = PEM_write_bio_PKCS8PrivateKey(bp, x, enc, kstr, klen, cb, u);
|
||||
BIO_free(bp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -149,7 +149,7 @@ int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type)
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
x=PEM_read_bio_X509(in,NULL,NULL);
|
||||
x=PEM_read_bio_X509(in,NULL,NULL,NULL);
|
||||
if (x == NULL)
|
||||
{
|
||||
if ((ERR_GET_REASON(ERR_peek_error()) ==
|
||||
@@ -216,7 +216,7 @@ int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type)
|
||||
{
|
||||
for (;;)
|
||||
{
|
||||
x=PEM_read_bio_X509_CRL(in,NULL,NULL);
|
||||
x=PEM_read_bio_X509_CRL(in,NULL,NULL,NULL);
|
||||
if (x == NULL)
|
||||
{
|
||||
if ((ERR_GET_REASON(ERR_peek_error()) ==
|
||||
|
||||
Reference in New Issue
Block a user