diff options
author | Ralf S. Engelschall <rse@openssl.org> | 1999-05-04 08:56:51 +0000 |
---|---|---|
committer | Ralf S. Engelschall <rse@openssl.org> | 1999-05-04 08:56:51 +0000 |
commit | 20b85fdd7644aa940e50a158a1b2c8010bb36443 (patch) | |
tree | 7ac94407e4e58de9fadc718886fbc62ca0972800 | |
parent | 0f3e6045898e9aa5d0249e61c874b1f153ae54fa (diff) |
Convert casted X509_INFO stacks to type-safe STACK_OF(X509_INFO).
PS: Feel free to move the IMPLEMENT_STACK_OF(X509_INFO) from
crypto/asn1/x_info.c to any other place where you think it fits better.
X509_INFO is a structure slightly spreaded over ASN.1, X509 and PEM code,
so I found no definitive location for IMPLEMENT_STACK_OF(X509_INFO). In
crypto/asn1/x_info.c it's at least now bundled with X509_INFO_new() and
friends.
-rw-r--r-- | CHANGES | 3 | ||||
-rw-r--r-- | apps/crl2p7.c | 8 | ||||
-rw-r--r-- | crypto/asn1/x_info.c | 3 | ||||
-rw-r--r-- | crypto/pem/pem.h | 4 | ||||
-rw-r--r-- | crypto/pem/pem_info.c | 26 | ||||
-rw-r--r-- | crypto/x509/x509.h | 2 |
6 files changed, 27 insertions, 19 deletions
@@ -5,6 +5,9 @@ Changes between 0.9.2b and 0.9.3 + *) Convert casted X509_INFO stacks to type-safe STACK_OF(X509_INFO). + [Ralf S. Engelschall] + *) New function SSL_CTX_use_certificate_chain_file that sets the "extra_cert"s in addition to the certificate. (This makes sense only for "PEM" format files, as chains as a whole are not diff --git a/apps/crl2p7.c b/apps/crl2p7.c index 611046ecf5..ba4eba16bf 100644 --- a/apps/crl2p7.c +++ b/apps/crl2p7.c @@ -287,7 +287,7 @@ static int add_certs_from_file(STACK_OF(X509) *stack, char *certfile) BIO *in=NULL; int count=0; int ret= -1; - STACK *sk=NULL; + STACK_OF(X509_INFO) *sk=NULL; X509_INFO *xi; if ((stat(certfile,&st) != 0)) @@ -311,9 +311,9 @@ static int add_certs_from_file(STACK_OF(X509) *stack, char *certfile) } /* scan over it and pull out the CRL's */ - while (sk_num(sk)) + while (sk_X509_INFO_num(sk)) { - xi=(X509_INFO *)sk_shift(sk); + xi=sk_X509_INFO_shift(sk); if (xi->x509 != NULL) { sk_X509_push(stack,xi->x509); @@ -327,7 +327,7 @@ static int add_certs_from_file(STACK_OF(X509) *stack, char *certfile) end: /* never need to Free x */ if (in != NULL) BIO_free(in); - if (sk != NULL) sk_free(sk); + if (sk != NULL) sk_X509_INFO_free(sk); return(ret); } diff --git a/crypto/asn1/x_info.c b/crypto/asn1/x_info.c index 0ee9eb7955..99ce011f07 100644 --- a/crypto/asn1/x_info.c +++ b/crypto/asn1/x_info.c @@ -108,3 +108,6 @@ void X509_INFO_free(X509_INFO *x) if (x->x_pkey != NULL) X509_PKEY_free(x->x_pkey); Free((char *)x); } + +IMPLEMENT_STACK_OF(X509_INFO) + diff --git a/crypto/pem/pem.h b/crypto/pem/pem.h index 6f0f09fcbe..effa9545a4 100644 --- a/crypto/pem/pem.h +++ b/crypto/pem/pem.h @@ -331,7 +331,7 @@ char * PEM_ASN1_read_bio(char *(*d2i)(),const char *name,BIO *bp,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, int (*callback)()); -STACK * PEM_X509_INFO_read_bio(BIO *bp, STACK *sk, int (*cb)()); +STACK_OF(X509_INFO) * PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, int (*cb)()); int PEM_X509_INFO_write_bio(BIO *bp,X509_INFO *xi, EVP_CIPHER *enc, unsigned char *kstr, int klen, int (*cb)()); #endif @@ -345,7 +345,7 @@ char * PEM_ASN1_read(char *(*d2i)(),const char *name,FILE *fp,char **x, int PEM_ASN1_write(int (*i2d)(),const char *name,FILE *fp,char *x, const EVP_CIPHER *enc,unsigned char *kstr,int klen, int (*callback)()); -STACK * PEM_X509_INFO_read(FILE *fp, STACK *sk, int (*cb)()); +STACK_OF(X509_INFO) * PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, int (*cb)()); #endif int PEM_SealInit(PEM_ENCODE_SEAL_CTX *ctx, EVP_CIPHER *type, diff --git a/crypto/pem/pem_info.c b/crypto/pem/pem_info.c index 83bdcf492f..7f74bac351 100644 --- a/crypto/pem/pem_info.c +++ b/crypto/pem/pem_info.c @@ -65,10 +65,10 @@ #include <openssl/pem.h> #ifndef NO_FP_API -STACK *PEM_X509_INFO_read(FILE *fp, STACK *sk, int (*cb)()) +STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, int (*cb)()) { BIO *b; - STACK *ret; + STACK_OF(X509_INFO) *ret; if ((b=BIO_new(BIO_s_file())) == NULL) { @@ -82,20 +82,20 @@ STACK *PEM_X509_INFO_read(FILE *fp, STACK *sk, int (*cb)()) } #endif -STACK *PEM_X509_INFO_read_bio(BIO *bp, STACK *sk, int (*cb)()) +STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, int (*cb)()) { X509_INFO *xi=NULL; char *name=NULL,*header=NULL,**pp; unsigned char *data=NULL,*p; long len,error=0; int ok=0; - STACK *ret=NULL; + STACK_OF(X509_INFO) *ret=NULL; unsigned int i,raw; char *(*d2i)(); if (sk == NULL) { - if ((ret=sk_new_null()) == NULL) + if ((ret=sk_X509_INFO_new_null()) == NULL) { PEMerr(PEM_F_PEM_X509_INFO_READ_BIO,ERR_R_MALLOC_FAILURE); goto err; @@ -126,7 +126,7 @@ start: d2i=(char *(*)())d2i_X509; if (xi->x509 != NULL) { - if (!sk_push(ret,(char *)xi)) goto err; + if (!sk_X509_INFO_push(ret,xi)) goto err; if ((xi=X509_INFO_new()) == NULL) goto err; goto start; } @@ -137,7 +137,7 @@ start: d2i=(char *(*)())d2i_X509_CRL; if (xi->crl != NULL) { - if (!sk_push(ret,(char *)xi)) goto err; + if (!sk_X509_INFO_push(ret,xi)) goto err; if ((xi=X509_INFO_new()) == NULL) goto err; goto start; } @@ -150,7 +150,7 @@ start: d2i=(char *(*)())d2i_RSAPrivateKey; if (xi->x_pkey != NULL) { - if (!sk_push(ret,(char *)xi)) goto err; + if (!sk_X509_INFO_push(ret,xi)) goto err; if ((xi=X509_INFO_new()) == NULL) goto err; goto start; } @@ -174,7 +174,7 @@ start: d2i=(char *(*)())d2i_DSAPrivateKey; if (xi->x_pkey != NULL) { - if (!sk_push(ret,(char *)xi)) goto err; + if (!sk_X509_INFO_push(ret,xi)) goto err; if ((xi=X509_INFO_new()) == NULL) goto err; goto start; } @@ -240,7 +240,7 @@ start: if ((xi->x509 != NULL) || (xi->crl != NULL) || (xi->x_pkey != NULL) || (xi->enc_data != NULL)) { - if (!sk_push(ret,(char *)xi)) goto err; + if (!sk_X509_INFO_push(ret,xi)) goto err; xi=NULL; } ok=1; @@ -248,12 +248,12 @@ err: if (xi != NULL) X509_INFO_free(xi); if (!ok) { - for (i=0; ((int)i)<sk_num(ret); i++) + for (i=0; ((int)i)<sk_X509_INFO_num(ret); i++) { - xi=(X509_INFO *)sk_value(ret,i); + xi=sk_X509_INFO_value(ret,i); X509_INFO_free(xi); } - if (ret != sk) sk_free(ret); + if (ret != sk) sk_X509_INFO_free(ret); ret=NULL; } diff --git a/crypto/x509/x509.h b/crypto/x509/x509.h index 43ce3cfd42..fb9be71079 100644 --- a/crypto/x509/x509.h +++ b/crypto/x509/x509.h @@ -292,6 +292,8 @@ typedef struct X509_info_st int references; } X509_INFO; + +DECLARE_STACK_OF(X509_INFO) #endif /* The next 2 structures and their 8 routines were sent to me by |