aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRalf S. Engelschall <rse@openssl.org>1999-05-04 08:56:51 +0000
committerRalf S. Engelschall <rse@openssl.org>1999-05-04 08:56:51 +0000
commit20b85fdd7644aa940e50a158a1b2c8010bb36443 (patch)
tree7ac94407e4e58de9fadc718886fbc62ca0972800
parent0f3e6045898e9aa5d0249e61c874b1f153ae54fa (diff)
downloadopenssl-20b85fdd7644aa940e50a158a1b2c8010bb36443.tar.gz
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--CHANGES3
-rw-r--r--apps/crl2p7.c8
-rw-r--r--crypto/asn1/x_info.c3
-rw-r--r--crypto/pem/pem.h4
-rw-r--r--crypto/pem/pem_info.c26
-rw-r--r--crypto/x509/x509.h2
6 files changed, 27 insertions, 19 deletions
diff --git a/CHANGES b/CHANGES
index 16ae0afadf..18cc5f0d4a 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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