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) | ||
