diff options
author | Dr. Stephen Henson <steve@openssl.org> | 1999-10-05 01:17:47 +0400 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 1999-10-05 01:17:47 +0400 |
commit | 3ea23631d4d840429dbe026f50e8f46a5187054f (patch) | |
tree | 15149df9a4a431fd06f857575c00087cfa0e139a /crypto | |
parent | 393f2c651d154a8d576969f24317536f89f28649 (diff) |
Add support for public key input and output in rsa and dsa utilities with some
new DSA public key functions that were missing.
Also beginning of a cache for X509_EXTENSION structures: this will allow them
to be accessed more quickly for things like certificate chain verification...
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/asn1/x_exten.c | 9 | ||||
-rw-r--r-- | crypto/pem/pem.h | 3 | ||||
-rw-r--r-- | crypto/pem/pem_all.c | 2 | ||||
-rw-r--r-- | crypto/x509/x509.h | 9 | ||||
-rw-r--r-- | crypto/x509/x_all.c | 25 |
5 files changed, 36 insertions, 12 deletions
diff --git a/crypto/asn1/x_exten.c b/crypto/asn1/x_exten.c index d5f9e1df9e..f5931f7623 100644 --- a/crypto/asn1/x_exten.c +++ b/crypto/asn1/x_exten.c @@ -100,10 +100,6 @@ X509_EXTENSION *d2i_X509_EXTENSION(X509_EXTENSION **a, unsigned char **pp, M_ASN1_D2I_start_sequence(); M_ASN1_D2I_get(ret->object,d2i_ASN1_OBJECT); - if ((ret->argp != NULL) && (ret->ex_free != NULL)) - ret->ex_free(ret); - ret->argl=0; - ret->argp=NULL; ret->netscape_hack=0; if ((c.slen != 0) && (M_ASN1_next == (V_ASN1_UNIVERSAL|V_ASN1_BOOLEAN))) @@ -129,9 +125,6 @@ X509_EXTENSION *X509_EXTENSION_new(void) M_ASN1_New(ret->value,ASN1_OCTET_STRING_new); ret->critical=0; ret->netscape_hack=0; - ret->argl=0L; - ret->argp=NULL; - ret->ex_free=NULL; return(ret); M_ASN1_New_Error(ASN1_F_X509_EXTENSION_NEW); } @@ -139,8 +132,6 @@ X509_EXTENSION *X509_EXTENSION_new(void) void X509_EXTENSION_free(X509_EXTENSION *a) { if (a == NULL) return; - if ((a->argp != NULL) && (a->ex_free != NULL)) - a->ex_free(a); ASN1_OBJECT_free(a->object); ASN1_OCTET_STRING_free(a->value); Free((char *)a); diff --git a/crypto/pem/pem.h b/crypto/pem/pem.h index fc333e42c8..1b0c8a0aa5 100644 --- a/crypto/pem/pem.h +++ b/crypto/pem/pem.h @@ -110,6 +110,7 @@ extern "C" { #define PEM_STRING_RSA "RSA PRIVATE KEY" #define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY" #define PEM_STRING_DSA "DSA PRIVATE KEY" +#define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY" #define PEM_STRING_PKCS7 "PKCS7" #define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY" #define PEM_STRING_PKCS8INF "PRIVATE KEY" @@ -552,6 +553,8 @@ DECLARE_PEM_rw(RSAPublicKey, RSA) DECLARE_PEM_rw_cb(DSAPrivateKey, DSA) +DECLARE_PEM_rw(DSAPublicKey, DSA) + DECLARE_PEM_rw(DSAparams, DSA) #endif diff --git a/crypto/pem/pem_all.c b/crypto/pem/pem_all.c index bc473f3cff..b5857e0ebc 100644 --- a/crypto/pem/pem_all.c +++ b/crypto/pem/pem_all.c @@ -92,6 +92,8 @@ IMPLEMENT_PEM_rw(RSAPublicKey, RSA, PEM_STRING_RSA_PUBLIC, RSAPublicKey) IMPLEMENT_PEM_rw_cb(DSAPrivateKey, DSA, PEM_STRING_DSA, DSAPrivateKey) +IMPLEMENT_PEM_rw(DSAPublicKey, DSA, PEM_STRING_DSA_PUBLIC, DSAPublicKey) + IMPLEMENT_PEM_rw(DSAparams, DSA, PEM_STRING_DSAPARAMS, DSAparams) #endif diff --git a/crypto/x509/x509.h b/crypto/x509/x509.h index 262be3f9f2..17319fee11 100644 --- a/crypto/x509/x509.h +++ b/crypto/x509/x509.h @@ -176,9 +176,8 @@ typedef struct X509_extension_st short critical; short netscape_hack; ASN1_OCTET_STRING *value; - long argl; /* used when decoding */ - char *argp; /* used when decoding */ - void (*ex_free)(); /* clear argp stuff */ + struct v3_ext_method *method; /* V3 method to use */ + void *ext_val; /* extension value */ } X509_EXTENSION; DECLARE_STACK_OF(X509_EXTENSION) @@ -583,6 +582,8 @@ RSA *d2i_RSAPublicKey_fp(FILE *fp,RSA **rsa); int i2d_RSAPublicKey_fp(FILE *fp,RSA *rsa); #endif #ifndef NO_DSA +DSA *d2i_DSAPublicKey_fp(FILE *fp, DSA **dsa); +int i2d_DSAPublicKey_fp(FILE *fp, DSA *dsa); DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa); X509_SIG *d2i_PKCS8_fp(FILE *fp,X509_SIG **p8); @@ -607,6 +608,8 @@ RSA *d2i_RSAPublicKey_bio(BIO *bp,RSA **rsa); int i2d_RSAPublicKey_bio(BIO *bp,RSA *rsa); #endif #ifndef NO_DSA +DSA *d2i_DSAPublicKey_bio(BIO *bp, DSA **dsa); +int i2d_DSAPublicKey_bio(BIO *bp, DSA *dsa); DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa); #endif diff --git a/crypto/x509/x_all.c b/crypto/x509/x_all.c index f2af895df0..354d4c3f3c 100644 --- a/crypto/x509/x_all.c +++ b/crypto/x509/x_all.c @@ -329,6 +329,18 @@ int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa) { return(ASN1_i2d_fp(i2d_DSAPrivateKey,fp,(unsigned char *)dsa)); } + +DSA *d2i_DSAPublicKey_fp(FILE *fp, DSA **dsa) + { + return((DSA *)ASN1_d2i_fp((char *(*)()) + DSA_new,(char *(*)())d2i_DSAPublicKey, (fp), + (unsigned char **)(dsa))); + } + +int i2d_DSAPublicKey_fp(FILE *fp, DSA *dsa) + { + return(ASN1_i2d_fp(i2d_DSAPublicKey,fp,(unsigned char *)dsa)); + } #endif DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa) @@ -342,6 +354,19 @@ int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa) { return(ASN1_i2d_bio(i2d_DSAPrivateKey,bp,(unsigned char *)dsa)); } + +DSA *d2i_DSAPublicKey_bio(BIO *bp, DSA **dsa) + { + return((DSA *)ASN1_d2i_bio((char *(*)()) + DSA_new,(char *(*)())d2i_DSAPublicKey, (bp), + (unsigned char **)(dsa))); + } + +int i2d_DSAPublicKey_bio(BIO *bp, DSA *dsa) + { + return(ASN1_i2d_bio(i2d_DSAPublicKey,bp,(unsigned char *)dsa)); + } + #endif X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn) |