aboutsummaryrefslogtreecommitdiff
path: root/crypto/x509
diff options
context:
space:
mode:
Diffstat (limited to 'crypto/x509')
-rw-r--r--crypto/x509/v3_x509.c1
-rw-r--r--crypto/x509/x509.h14
-rw-r--r--crypto/x509/x509_cmp.c44
-rw-r--r--crypto/x509/x509_err.c4
-rw-r--r--crypto/x509/x509_lu.c6
-rw-r--r--crypto/x509/x509_r2x.c16
-rw-r--r--crypto/x509/x509_vfy.c53
-rw-r--r--crypto/x509/x509_vfy.h5
-rw-r--r--crypto/x509/x_all.c14
9 files changed, 91 insertions, 66 deletions
diff --git a/crypto/x509/v3_x509.c b/crypto/x509/v3_x509.c
index f685aa4..fcf30f7 100644
--- a/crypto/x509/v3_x509.c
+++ b/crypto/x509/v3_x509.c
@@ -174,6 +174,7 @@ unsigned int use;
key_usage_data[i].name);
first=0;
}
+ break;
}
return(1);
}
diff --git a/crypto/x509/x509.h b/crypto/x509/x509.h
index 95114f7..4ae05bc 100644
--- a/crypto/x509/x509.h
+++ b/crypto/x509/x509.h
@@ -355,6 +355,9 @@ typedef struct CBCParameter_st
#define X509_dup(x509) (X509 *)ASN1_dup((int (*)())i2d_X509, \
(char *(*)())d2i_X509,(char *)x509)
+#define X509_ATTRIBUTE_dup(xa) (X509_ATTRIBUTE *)ASN1_dup(\
+ (int (*)())i2d_X509_ATTRIBUTE, \
+ (char *(*)())d2i_X509_ATTRIBUTE,(char *)xa)
#define X509_EXTENSION_dup(ex) (X509_EXTENSION *)ASN1_dup( \
(int (*)())i2d_X509_EXTENSION, \
(char *(*)())d2i_X509_EXTENSION,(char *)ex)
@@ -442,6 +445,9 @@ typedef struct CBCParameter_st
#define i2d_DSAPrivateKey_bio(bp,dsa) ASN1_i2d_bio(i2d_DSAPrivateKey,bp, \
(unsigned char *)dsa)
+#define X509_ALGOR_dup(xn) (X509_ALGOR *)ASN1_dup((int (*)())i2d_X509_ALGOR,\
+ (char *(*)())d2i_X509_ALGOR,(char *)xn)
+
#define X509_NAME_dup(xn) (X509_NAME *)ASN1_dup((int (*)())i2d_X509_NAME, \
(char *(*)())d2i_X509_NAME,(char *)xn)
#define X509_NAME_ENTRY_dup(ne) (X509_NAME_ENTRY *)ASN1_dup( \
@@ -453,10 +459,12 @@ typedef struct CBCParameter_st
ASN1_digest((int (*)())i2d_X509,type,(char *)data,md,len)
#define X509_NAME_digest(data,type,md,len) \
ASN1_digest((int (*)())i2d_X509_NAME,type,(char *)data,md,len)
+#ifndef PKCS7_ISSUER_AND_SERIAL_digest
#define PKCS7_ISSUER_AND_SERIAL_digest(data,type,md,len) \
ASN1_digest((int (*)())i2d_PKCS7_ISSUER_AND_SERIAL,type,\
(char *)data,md,len)
#endif
+#endif
#define X509_EXT_PACK_UNKNOWN 1
#define X509_EXT_PACK_STRING 2
@@ -528,9 +536,11 @@ int i2d_RSAPublicKey_bio(BIO *bp,RSA *rsa);
#endif
X509 *X509_dup(X509 *x509);
+X509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa);
X509_EXTENSION *X509_EXTENSION_dup(X509_EXTENSION *ex);
X509_CRL *X509_CRL_dup(X509_CRL *crl);
X509_REQ *X509_REQ_dup(X509_REQ *req);
+X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn);
X509_NAME *X509_NAME_dup(X509_NAME *xn);
X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne);
RSA *RSAPublicKey_dup(RSA *rsa);
@@ -595,6 +605,8 @@ void X509_ATTRIBUTE_free(X509_ATTRIBUTE *a);
int i2d_X509_ATTRIBUTE(X509_ATTRIBUTE *a,unsigned char **pp);
X509_ATTRIBUTE *d2i_X509_ATTRIBUTE(X509_ATTRIBUTE **a,unsigned char **pp,
long length);
+X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, char *value);
+
X509_EXTENSION *X509_EXTENSION_new(void );
void X509_EXTENSION_free(X509_EXTENSION *a);
@@ -852,6 +864,7 @@ RSA *d2i_RSAPublicKey_bio();
int i2d_RSAPublicKey_bio();
X509 *X509_dup();
+X509_ATTRIBUTE *X509_ATTRIBUTE_dup();
X509_EXTENSION *X509_EXTENSION_dup();
X509_CRL *X509_CRL_dup();
X509_REQ *X509_REQ_dup();
@@ -913,6 +926,7 @@ X509_ATTRIBUTE *X509_ATTRIBUTE_new();
void X509_ATTRIBUTE_free();
int i2d_X509_ATTRIBUTE();
X509_ATTRIBUTE *d2i_X509_ATTRIBUTE();
+X509_ATTRIBUTE *X509_ATTRIBUTE_create();
X509_EXTENSION *X509_EXTENSION_new();
void X509_EXTENSION_free();
diff --git a/crypto/x509/x509_cmp.c b/crypto/x509/x509_cmp.c
index f9d9510..ea6a65d 100644
--- a/crypto/x509/x509_cmp.c
+++ b/crypto/x509/x509_cmp.c
@@ -255,3 +255,47 @@ X509_NAME *name;
return(NULL);
}
+EVP_PKEY *X509_get_pubkey(x)
+X509 *x;
+ {
+ if ((x == NULL) || (x->cert_info == NULL))
+ return(NULL);
+ return(X509_PUBKEY_get(x->cert_info->key));
+ }
+
+int X509_check_private_key(x,k)
+X509 *x;
+EVP_PKEY *k;
+ {
+ EVP_PKEY *xk=NULL;
+ int ok=0;
+
+ xk=X509_get_pubkey(x);
+ if (xk->type != k->type) goto err;
+ switch (k->type)
+ {
+#ifndef NO_RSA
+ case EVP_PKEY_RSA:
+ if (BN_cmp(xk->pkey.rsa->n,k->pkey.rsa->n) != 0) goto err;
+ if (BN_cmp(xk->pkey.rsa->e,k->pkey.rsa->e) != 0) goto err;
+ break;
+#endif
+#ifndef NO_DSA
+ case EVP_PKEY_DSA:
+ if (BN_cmp(xk->pkey.dsa->pub_key,k->pkey.dsa->pub_key) != 0)
+ goto err;
+ break;
+#endif
+#ifndef NO_DH
+ case EVP_PKEY_DH:
+ /* No idea */
+ goto err;
+#endif
+ default:
+ goto err;
+ }
+
+ ok=1;
+err:
+ return(ok);
+ }
diff --git a/crypto/x509/x509_err.c b/crypto/x509/x509_err.c
index 9304721..0c7e30b 100644
--- a/crypto/x509/x509_err.c
+++ b/crypto/x509/x509_err.c
@@ -118,8 +118,8 @@ void ERR_load_X509_strings()
{
static int init=1;
- if (init);
- {;
+ if (init)
+ {
init=0;
#ifndef NO_ERR
ERR_load_strings(ERR_LIB_X509,X509_str_functs);
diff --git a/crypto/x509/x509_lu.c b/crypto/x509/x509_lu.c
index 2c7e10a..a740510 100644
--- a/crypto/x509/x509_lu.c
+++ b/crypto/x509/x509_lu.c
@@ -109,7 +109,7 @@ int X509_LOOKUP_shutdown(ctx)
X509_LOOKUP *ctx;
{
if (ctx->method == NULL) return(0);
- if (ctx->method->init != NULL)
+ if (ctx->method->shutdown != NULL)
return(ctx->method->shutdown(ctx));
else
return(1);
@@ -318,7 +318,7 @@ X509_OBJECT *ret;
X509_OBJECT stmp,*tmp;
int i,j;
- tmp=X509_OBJECT_retrive_by_subject(ctx->certs,type,name);
+ tmp=X509_OBJECT_retrieve_by_subject(ctx->certs,type,name);
if (tmp == NULL)
{
@@ -381,7 +381,7 @@ X509_OBJECT *a;
}
}
-X509_OBJECT *X509_OBJECT_retrive_by_subject(h,type,name)
+X509_OBJECT *X509_OBJECT_retrieve_by_subject(h,type,name)
LHASH *h;
int type;
X509_NAME *name;
diff --git a/crypto/x509/x509_r2x.c b/crypto/x509/x509_r2x.c
index 6aec242..2d87213 100644
--- a/crypto/x509/x509_r2x.c
+++ b/crypto/x509/x509_r2x.c
@@ -72,8 +72,6 @@ int days;
EVP_PKEY *pkey;
{
X509 *ret=NULL;
- int er=1;
- X509_REQ_INFO *ri=NULL;
X509_CINF *xi=NULL;
X509_NAME *xn;
@@ -84,13 +82,9 @@ EVP_PKEY *pkey;
}
/* duplicate the request */
- ri=(X509_REQ_INFO *)ASN1_dup(i2d_X509_REQ_INFO,
- (char *(*)())d2i_X509_REQ_INFO,(char *)r->req_info);
- if (ri == NULL) goto err;
-
xi=ret->cert_info;
- if (sk_num(ri->attributes) != 0)
+ if (sk_num(r->req_info->attributes) != 0)
{
if ((xi->version=ASN1_INTEGER_new()) == NULL) goto err;
if (!ASN1_INTEGER_set(xi->version,2)) goto err;
@@ -109,13 +103,11 @@ EVP_PKEY *pkey;
if (!X509_sign(ret,pkey,EVP_md5()))
goto err;
- er=0;
-err:
- if (er)
+ if (0)
{
+err:
X509_free(ret);
- X509_REQ_INFO_free(ri);
- return(NULL);
+ ret=NULL;
}
return(ret);
}
diff --git a/crypto/x509/x509_vfy.c b/crypto/x509/x509_vfy.c
index c1be91e..1d62f2d 100644
--- a/crypto/x509/x509_vfy.c
+++ b/crypto/x509/x509_vfy.c
@@ -80,7 +80,7 @@ static int null_callback();
static int internal_verify();
#endif
-char *X509_version="X509 part of SSLeay 0.9.0b 29-Jun-1998";
+char *X509_version="X509 part of SSLeay 0.9.1a 06-Jul-1998";
static STACK *x509_store_ctx_method=NULL;
static int x509_store_ctx_num=0;
#if 0
@@ -285,7 +285,11 @@ X509_STORE_CTX *ctx;
ok=ctx->ctx->verify(ctx);
else
ok=internal_verify(ctx);
+ if (0)
+ {
end:
+ X509_get_pubkey_parameters(NULL,ctx->chain);
+ }
if (sktmp != NULL) sk_free(sktmp);
if (chain_ss != NULL) X509_free(chain_ss);
return(ok);
@@ -434,7 +438,7 @@ ASN1_UTCTIME *ctm;
offset=((str[1]-'0')*10+(str[2]-'0'))*60;
offset+=(str[3]-'0')*10+(str[4]-'0');
if (*str == '-')
- offset=-offset;
+ offset= -offset;
}
atm.type=V_ASN1_UTCTIME;
atm.length=sizeof(buff2);
@@ -509,51 +513,6 @@ STACK *chain;
return(1);
}
-EVP_PKEY *X509_get_pubkey(x)
-X509 *x;
- {
- if ((x == NULL) || (x->cert_info == NULL))
- return(NULL);
- return(X509_PUBKEY_get(x->cert_info->key));
- }
-
-int X509_check_private_key(x,k)
-X509 *x;
-EVP_PKEY *k;
- {
- EVP_PKEY *xk=NULL;
- int ok=0;
-
- xk=X509_get_pubkey(x);
- if (xk->type != k->type) goto err;
- switch (k->type)
- {
-#ifndef NO_RSA
- case EVP_PKEY_RSA:
- if (BN_cmp(xk->pkey.rsa->n,k->pkey.rsa->n) != 0) goto err;
- if (BN_cmp(xk->pkey.rsa->e,k->pkey.rsa->e) != 0) goto err;
- break;
-#endif
-#ifndef NO_DSA
- case EVP_PKEY_DSA:
- if (BN_cmp(xk->pkey.dsa->pub_key,k->pkey.dsa->pub_key) != 0)
- goto err;
- break;
-#endif
-#ifndef NO_DH
- case EVP_PKEY_DH:
- /* No idea */
- goto err;
-#endif
- default:
- goto err;
- }
-
- ok=1;
-err:
- return(ok);
- }
-
int X509_STORE_add_cert(ctx,x)
X509_STORE *ctx;
X509 *x;
diff --git a/crypto/x509/x509_vfy.h b/crypto/x509/x509_vfy.h
index dfc060f..6849a8c 100644
--- a/crypto/x509/x509_vfy.h
+++ b/crypto/x509/x509_vfy.h
@@ -245,7 +245,7 @@ X509_LOOKUP_METHOD *X509_LOOKUP_dir();
#ifndef NOPROTO
#ifdef HEADER_LHASH_H
-X509_OBJECT *X509_OBJECT_retrive_by_subject(LHASH *h,int type,X509_NAME *name);
+X509_OBJECT *X509_OBJECT_retrieve_by_subject(LHASH *h,int type,X509_NAME *name);
#endif
void X509_OBJECT_up_ref_count(X509_OBJECT *a);
void X509_OBJECT_free_contents(X509_OBJECT *a);
@@ -313,7 +313,7 @@ void X509_STORE_CTX_set_chain(X509_STORE_CTX *c,STACK /* X509 */ *sk);
#else
#ifdef HEADER_LHASH_H
-X509_OBJECT *X509_OBJECT_retrive_by_subject();
+X509_OBJECT *X509_OBJECT_retrieve_by_subject();
#endif
void X509_OBJECT_up_ref_count();
void X509_OBJECT_free_contents();
@@ -359,6 +359,7 @@ int X509_STORE_load_locations ();
int X509_STORE_set_default_paths();
#endif
+int X509_STORE_CTX_get_ex_new_index();
int X509_STORE_CTX_set_ex_data();
char * X509_STORE_CTX_get_ex_data();
int X509_STORE_CTX_get_error();
diff --git a/crypto/x509/x_all.c b/crypto/x509/x_all.c
index b7dde23..682de16 100644
--- a/crypto/x509/x_all.c
+++ b/crypto/x509/x_all.c
@@ -133,6 +133,13 @@ EVP_MD *md;
x->signature, (char *)x->spkac,pkey,md));
}
+X509_ATTRIBUTE *X509_ATTRIBUTE_dup(xa)
+X509_ATTRIBUTE *xa;
+ {
+ return((X509_ATTRIBUTE *)ASN1_dup((int (*)())i2d_X509_ATTRIBUTE,
+ (char *(*)())d2i_X509_ATTRIBUTE,(char *)xa));
+ }
+
X509 *X509_dup(x509)
X509 *x509;
{
@@ -421,6 +428,13 @@ DSA *dsa;
}
#endif
+X509_ALGOR *X509_ALGOR_dup(xn)
+X509_ALGOR *xn;
+ {
+ return((X509_ALGOR *)ASN1_dup((int (*)())i2d_X509_ALGOR,
+ (char *(*)())d2i_X509_ALGOR,(char *)xn));
+ }
+
X509_NAME *X509_NAME_dup(xn)
X509_NAME *xn;
{