aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/x509
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>1999-10-04 21:17:47 +0000
committerDr. Stephen Henson <steve@openssl.org>1999-10-04 21:17:47 +0000
commit3ea23631d4d840429dbe026f50e8f46a5187054f (patch)
tree15149df9a4a431fd06f857575c00087cfa0e139a /crypto/x509
parent393f2c651d154a8d576969f24317536f89f28649 (diff)
downloadopenssl-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.h9
-rw-r--r--crypto/x509/x_all.c25
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)