summaryrefslogtreecommitdiffstats
path: root/crypto/x509
diff options
context:
space:
mode:
authorDmitry Belyavskiy <beldmit@gmail.com>2019-08-21 18:28:48 +0300
committerDmitry Belyavskiy <beldmit@gmail.com>2019-09-24 10:27:09 +0300
commit4baee2d72e0c82bfd6de085df23a1bdc6af887ba (patch)
tree7d9ea5db846307e761395be2460b7573725ec88b /crypto/x509
parent6922740facabcc1d1509cd9e72dd837a60a91d2c (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.c42
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: