diff options
| author | markus <> | 2002-09-05 12:51:50 +0000 |
|---|---|---|
| committer | markus <> | 2002-09-05 12:51:50 +0000 |
| commit | 15b5d84f9da2ce4bfae8580e56e34a859f74ad71 (patch) | |
| tree | bf939e82d7fd73cc8a01cf6959002209972091bc /src/lib/libcrypto/asn1/x_x509a.c | |
| parent | 027351f729b9e837200dae6e1520cda6577ab930 (diff) | |
| download | openbsd-15b5d84f9da2ce4bfae8580e56e34a859f74ad71.tar.gz openbsd-15b5d84f9da2ce4bfae8580e56e34a859f74ad71.tar.bz2 openbsd-15b5d84f9da2ce4bfae8580e56e34a859f74ad71.zip | |
import openssl-0.9.7-beta1
Diffstat (limited to 'src/lib/libcrypto/asn1/x_x509a.c')
| -rw-r--r-- | src/lib/libcrypto/asn1/x_x509a.c | 83 |
1 files changed, 17 insertions, 66 deletions
diff --git a/src/lib/libcrypto/asn1/x_x509a.c b/src/lib/libcrypto/asn1/x_x509a.c index b9987ea968..f244768b7e 100644 --- a/src/lib/libcrypto/asn1/x_x509a.c +++ b/src/lib/libcrypto/asn1/x_x509a.c | |||
| @@ -59,7 +59,7 @@ | |||
| 59 | #include <stdio.h> | 59 | #include <stdio.h> |
| 60 | #include "cryptlib.h" | 60 | #include "cryptlib.h" |
| 61 | #include <openssl/evp.h> | 61 | #include <openssl/evp.h> |
| 62 | #include <openssl/asn1_mac.h> | 62 | #include <openssl/asn1t.h> |
| 63 | #include <openssl/x509.h> | 63 | #include <openssl/x509.h> |
| 64 | 64 | ||
| 65 | /* X509_CERT_AUX routines. These are used to encode additional | 65 | /* X509_CERT_AUX routines. These are used to encode additional |
| @@ -71,72 +71,15 @@ | |||
| 71 | 71 | ||
| 72 | static X509_CERT_AUX *aux_get(X509 *x); | 72 | static X509_CERT_AUX *aux_get(X509 *x); |
| 73 | 73 | ||
| 74 | X509_CERT_AUX *d2i_X509_CERT_AUX(X509_CERT_AUX **a, unsigned char **pp, long length) | 74 | ASN1_SEQUENCE(X509_CERT_AUX) = { |
| 75 | { | 75 | ASN1_SEQUENCE_OF_OPT(X509_CERT_AUX, trust, ASN1_OBJECT), |
| 76 | M_ASN1_D2I_vars(a, X509_CERT_AUX *, X509_CERT_AUX_new); | 76 | ASN1_IMP_SEQUENCE_OF_OPT(X509_CERT_AUX, reject, ASN1_OBJECT, 0), |
| 77 | 77 | ASN1_OPT(X509_CERT_AUX, alias, ASN1_UTF8STRING), | |
| 78 | M_ASN1_D2I_Init(); | 78 | ASN1_OPT(X509_CERT_AUX, keyid, ASN1_OCTET_STRING), |
| 79 | M_ASN1_D2I_start_sequence(); | 79 | ASN1_IMP_SEQUENCE_OF_OPT(X509_CERT_AUX, other, X509_ALGOR, 1) |
| 80 | 80 | } ASN1_SEQUENCE_END(X509_CERT_AUX) | |
| 81 | M_ASN1_D2I_get_seq_opt_type(ASN1_OBJECT, ret->trust, | ||
| 82 | d2i_ASN1_OBJECT, ASN1_OBJECT_free); | ||
| 83 | M_ASN1_D2I_get_IMP_set_opt_type(ASN1_OBJECT, ret->reject, | ||
| 84 | d2i_ASN1_OBJECT, ASN1_OBJECT_free, 0); | ||
| 85 | M_ASN1_D2I_get_opt(ret->alias, d2i_ASN1_UTF8STRING, V_ASN1_UTF8STRING); | ||
| 86 | M_ASN1_D2I_get_opt(ret->keyid, d2i_ASN1_OCTET_STRING, V_ASN1_OCTET_STRING); | ||
| 87 | M_ASN1_D2I_get_IMP_set_opt_type(X509_ALGOR, ret->other, | ||
| 88 | d2i_X509_ALGOR, X509_ALGOR_free, 1); | ||
| 89 | |||
| 90 | M_ASN1_D2I_Finish(a, X509_CERT_AUX_free, ASN1_F_D2I_X509_CERT_AUX); | ||
| 91 | } | ||
| 92 | |||
| 93 | X509_CERT_AUX *X509_CERT_AUX_new() | ||
| 94 | { | ||
| 95 | X509_CERT_AUX *ret = NULL; | ||
| 96 | ASN1_CTX c; | ||
| 97 | M_ASN1_New_Malloc(ret, X509_CERT_AUX); | ||
| 98 | ret->trust = NULL; | ||
| 99 | ret->reject = NULL; | ||
| 100 | ret->alias = NULL; | ||
| 101 | ret->keyid = NULL; | ||
| 102 | ret->other = NULL; | ||
| 103 | return(ret); | ||
| 104 | M_ASN1_New_Error(ASN1_F_X509_CERT_AUX_NEW); | ||
| 105 | } | ||
| 106 | |||
| 107 | void X509_CERT_AUX_free(X509_CERT_AUX *a) | ||
| 108 | { | ||
| 109 | if(a == NULL) return; | ||
| 110 | sk_ASN1_OBJECT_pop_free(a->trust, ASN1_OBJECT_free); | ||
| 111 | sk_ASN1_OBJECT_pop_free(a->reject, ASN1_OBJECT_free); | ||
| 112 | ASN1_UTF8STRING_free(a->alias); | ||
| 113 | ASN1_OCTET_STRING_free(a->keyid); | ||
| 114 | sk_X509_ALGOR_pop_free(a->other, X509_ALGOR_free); | ||
| 115 | Free(a); | ||
| 116 | } | ||
| 117 | |||
| 118 | int i2d_X509_CERT_AUX(X509_CERT_AUX *a, unsigned char **pp) | ||
| 119 | { | ||
| 120 | M_ASN1_I2D_vars(a); | ||
| 121 | 81 | ||
| 122 | M_ASN1_I2D_len_SEQUENCE_opt_type(ASN1_OBJECT, a->trust, i2d_ASN1_OBJECT); | 82 | IMPLEMENT_ASN1_FUNCTIONS(X509_CERT_AUX) |
| 123 | M_ASN1_I2D_len_IMP_SEQUENCE_opt_type(ASN1_OBJECT, a->reject, i2d_ASN1_OBJECT, 0); | ||
| 124 | |||
| 125 | M_ASN1_I2D_len(a->alias, i2d_ASN1_UTF8STRING); | ||
| 126 | M_ASN1_I2D_len(a->keyid, i2d_ASN1_OCTET_STRING); | ||
| 127 | M_ASN1_I2D_len_IMP_SEQUENCE_opt_type(X509_ALGOR, a->other, i2d_X509_ALGOR, 1); | ||
| 128 | |||
| 129 | M_ASN1_I2D_seq_total(); | ||
| 130 | |||
| 131 | M_ASN1_I2D_put_SEQUENCE_opt_type(ASN1_OBJECT, a->trust, i2d_ASN1_OBJECT); | ||
| 132 | M_ASN1_I2D_put_IMP_SEQUENCE_opt_type(ASN1_OBJECT, a->reject, i2d_ASN1_OBJECT, 0); | ||
| 133 | |||
| 134 | M_ASN1_I2D_put(a->alias, i2d_ASN1_UTF8STRING); | ||
| 135 | M_ASN1_I2D_put(a->keyid, i2d_ASN1_OCTET_STRING); | ||
| 136 | M_ASN1_I2D_put_IMP_SEQUENCE_opt_type(X509_ALGOR, a->other, i2d_X509_ALGOR, 1); | ||
| 137 | |||
| 138 | M_ASN1_I2D_finish(); | ||
| 139 | } | ||
| 140 | 83 | ||
| 141 | static X509_CERT_AUX *aux_get(X509 *x) | 84 | static X509_CERT_AUX *aux_get(X509 *x) |
| 142 | { | 85 | { |
| @@ -153,6 +96,14 @@ int X509_alias_set1(X509 *x, unsigned char *name, int len) | |||
| 153 | return ASN1_STRING_set(aux->alias, name, len); | 96 | return ASN1_STRING_set(aux->alias, name, len); |
| 154 | } | 97 | } |
| 155 | 98 | ||
| 99 | int X509_keyid_set1(X509 *x, unsigned char *id, int len) | ||
| 100 | { | ||
| 101 | X509_CERT_AUX *aux; | ||
| 102 | if(!(aux = aux_get(x))) return 0; | ||
| 103 | if(!aux->keyid && !(aux->keyid = ASN1_OCTET_STRING_new())) return 0; | ||
| 104 | return ASN1_STRING_set(aux->keyid, id, len); | ||
| 105 | } | ||
| 106 | |||
| 156 | unsigned char *X509_alias_get0(X509 *x, int *len) | 107 | unsigned char *X509_alias_get0(X509 *x, int *len) |
| 157 | { | 108 | { |
| 158 | if(!x->aux || !x->aux->alias) return NULL; | 109 | if(!x->aux || !x->aux->alias) return NULL; |
