diff options
author | Dr. Stephen Henson <steve@openssl.org> | 1999-10-04 21:17:47 +0000 |
---|---|---|
committer | Dr. Stephen Henson <steve@openssl.org> | 1999-10-04 21:17:47 +0000 |
commit | 3ea23631d4d840429dbe026f50e8f46a5187054f (patch) | |
tree | 15149df9a4a431fd06f857575c00087cfa0e139a /crypto/x509 | |
parent | 393f2c651d154a8d576969f24317536f89f28649 (diff) | |
download | openssl-3ea23631d4d840429dbe026f50e8f46a5187054f.tar.gz |
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/x509')
-rw-r--r-- | crypto/x509/x509.h | 9 | ||||
-rw-r--r-- | crypto/x509/x_all.c | 25 |
2 files changed, 31 insertions, 3 deletions
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) |