diff options
author | Dmitry Belyavskiy <beldmit@gmail.com> | 2019-08-21 18:28:48 +0300 |
---|---|---|
committer | Dmitry Belyavskiy <beldmit@gmail.com> | 2019-09-24 10:27:09 +0300 |
commit | 4baee2d72e0c82bfd6de085df23a1bdc6af887ba (patch) | |
tree | 7d9ea5db846307e761395be2460b7573725ec88b /crypto/x509 | |
parent | 6922740facabcc1d1509cd9e72dd837a60a91d2c (diff) |
Support printing out some otherName variants
The supported variants are
- SmtpUTF8Name
- xmppAddr
- MS UPN
- SRVName
Reviewed-by: Paul Dale <paul.dale@oracle.com>
(Merged from https://github.com/openssl/openssl/pull/9965)
Diffstat (limited to 'crypto/x509')
-rw-r--r-- | crypto/x509/v3_alt.c | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/crypto/x509/v3_alt.c b/crypto/x509/v3_alt.c index 307994042c..af1cd61aee 100644 --- a/crypto/x509/v3_alt.c +++ b/crypto/x509/v3_alt.c @@ -71,8 +71,28 @@ STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method, switch (gen->type) { case GEN_OTHERNAME: - if (!X509V3_add_value("othername", "<unsupported>", &ret)) - return NULL; + switch (OBJ_obj2nid(gen->d.otherName->type_id)) { + case NID_id_on_SmtpUTF8Mailbox: + if (!X509V3_add_value_uchar("othername: SmtpUTF8Mailbox:", gen->d.otherName->value->value.utf8string->data, &ret)) + return NULL; + break; + case NID_XmppAddr: + if (!X509V3_add_value_uchar("othername: XmppAddr:", gen->d.otherName->value->value.utf8string->data, &ret)) + return NULL; + break; + case NID_SRVName: + if (!X509V3_add_value_uchar("othername: SRVName:", gen->d.otherName->value->value.ia5string->data, &ret)) + return NULL; + break; + case NID_ms_upn: + if (!X509V3_add_value_uchar("othername: UPN:", gen->d.otherName->value->value.utf8string->data, &ret)) + return NULL; + break; + default: + if (!X509V3_add_value("othername", "<unsupported>", &ret)) + return NULL; + break; + } break; case GEN_X400: @@ -144,7 +164,23 @@ int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen) int i; switch (gen->type) { case GEN_OTHERNAME: - BIO_printf(out, "othername:<unsupported>"); + switch (OBJ_obj2nid(gen->d.otherName->type_id)) { + case NID_id_on_SmtpUTF8Mailbox: + BIO_printf(out, "othername:SmtpUTF8Mailbox:%s", gen->d.otherName->value->value.utf8string->data); + break; + case NID_XmppAddr: + BIO_printf(out, "othername:XmppAddr:%s", gen->d.otherName->value->value.utf8string->data); + break; + case NID_SRVName: + BIO_printf(out, "othername:SRVName:%s", gen->d.otherName->value->value.ia5string->data); + break; + case NID_ms_upn: + BIO_printf(out, "othername:UPN:%s", gen->d.otherName->value->value.utf8string->data); + break; + default: + BIO_printf(out, "othername:<unsupported>"); + break; + } break; case GEN_X400: |