diff options
Diffstat (limited to 'src/lib/libcrypto/asn1/x_x509a.c')
-rw-r--r-- | src/lib/libcrypto/asn1/x_x509a.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/lib/libcrypto/asn1/x_x509a.c b/src/lib/libcrypto/asn1/x_x509a.c index f244768b7e..13db5fd03f 100644 --- a/src/lib/libcrypto/asn1/x_x509a.c +++ b/src/lib/libcrypto/asn1/x_x509a.c | |||
@@ -91,6 +91,14 @@ static X509_CERT_AUX *aux_get(X509 *x) | |||
91 | int X509_alias_set1(X509 *x, unsigned char *name, int len) | 91 | int X509_alias_set1(X509 *x, unsigned char *name, int len) |
92 | { | 92 | { |
93 | X509_CERT_AUX *aux; | 93 | X509_CERT_AUX *aux; |
94 | if (!name) | ||
95 | { | ||
96 | if (!x || !x->aux || !x->aux->alias) | ||
97 | return 1; | ||
98 | ASN1_UTF8STRING_free(x->aux->alias); | ||
99 | x->aux->alias = NULL; | ||
100 | return 1; | ||
101 | } | ||
94 | if(!(aux = aux_get(x))) return 0; | 102 | if(!(aux = aux_get(x))) return 0; |
95 | if(!aux->alias && !(aux->alias = ASN1_UTF8STRING_new())) return 0; | 103 | if(!aux->alias && !(aux->alias = ASN1_UTF8STRING_new())) return 0; |
96 | return ASN1_STRING_set(aux->alias, name, len); | 104 | return ASN1_STRING_set(aux->alias, name, len); |
@@ -99,6 +107,14 @@ int X509_alias_set1(X509 *x, unsigned char *name, int len) | |||
99 | int X509_keyid_set1(X509 *x, unsigned char *id, int len) | 107 | int X509_keyid_set1(X509 *x, unsigned char *id, int len) |
100 | { | 108 | { |
101 | X509_CERT_AUX *aux; | 109 | X509_CERT_AUX *aux; |
110 | if (!id) | ||
111 | { | ||
112 | if (!x || !x->aux || !x->aux->keyid) | ||
113 | return 1; | ||
114 | ASN1_OCTET_STRING_free(x->aux->keyid); | ||
115 | x->aux->keyid = NULL; | ||
116 | return 1; | ||
117 | } | ||
102 | if(!(aux = aux_get(x))) return 0; | 118 | if(!(aux = aux_get(x))) return 0; |
103 | if(!aux->keyid && !(aux->keyid = ASN1_OCTET_STRING_new())) return 0; | 119 | if(!aux->keyid && !(aux->keyid = ASN1_OCTET_STRING_new())) return 0; |
104 | return ASN1_STRING_set(aux->keyid, id, len); | 120 | return ASN1_STRING_set(aux->keyid, id, len); |
@@ -111,6 +127,13 @@ unsigned char *X509_alias_get0(X509 *x, int *len) | |||
111 | return x->aux->alias->data; | 127 | return x->aux->alias->data; |
112 | } | 128 | } |
113 | 129 | ||
130 | unsigned char *X509_keyid_get0(X509 *x, int *len) | ||
131 | { | ||
132 | if(!x->aux || !x->aux->keyid) return NULL; | ||
133 | if(len) *len = x->aux->keyid->length; | ||
134 | return x->aux->keyid->data; | ||
135 | } | ||
136 | |||
114 | int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj) | 137 | int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj) |
115 | { | 138 | { |
116 | X509_CERT_AUX *aux; | 139 | X509_CERT_AUX *aux; |
@@ -149,3 +172,9 @@ void X509_reject_clear(X509 *x) | |||
149 | } | 172 | } |
150 | } | 173 | } |
151 | 174 | ||
175 | ASN1_SEQUENCE(X509_CERT_PAIR) = { | ||
176 | ASN1_EXP_OPT(X509_CERT_PAIR, forward, X509, 0), | ||
177 | ASN1_EXP_OPT(X509_CERT_PAIR, reverse, X509, 1) | ||
178 | } ASN1_SEQUENCE_END(X509_CERT_PAIR) | ||
179 | |||
180 | IMPLEMENT_ASN1_FUNCTIONS(X509_CERT_PAIR) | ||