From 37971649a9bcf4127e43215f543ad87d4b68485a Mon Sep 17 00:00:00 2001 From: Christian Hohnstaedt Date: Wed, 20 Jun 2007 10:43:46 +0200 Subject: [PATCH] improve the automatic internal name detection --- lib/pki_x509super.cpp | 13 +++++++++---- lib/x509name.cpp | 4 ++-- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/pki_x509super.cpp b/lib/pki_x509super.cpp index 073af689..dbf4e7f2 100644 --- a/lib/pki_x509super.cpp +++ b/lib/pki_x509super.cpp @@ -48,13 +48,18 @@ void pki_x509super::delRefKey(pki_key *ref) void pki_x509super::autoIntName() { + int nids[] = { NID_commonName, NID_pkcs9_emailAddress, + NID_organizationalUnitName, NID_organizationName, NID_undef }; + int i; x509name subject = getSubject(); QString s; - s = subject.getEntryByNid(NID_commonName); + for (i = 0; nids[i] != NID_undef; i++) { + s = subject.getEntryByNid(nids[i]); + if (!s.isEmpty()) + break; + } if (s.isEmpty()) - s = subject.getEntryByNid(NID_pkcs9_emailAddress); - if (s.isEmpty()) - s = subject.getEntry(0); + s = subject.getEntry(-1); setIntName(s); } diff --git a/lib/x509name.cpp b/lib/x509name.cpp index 2d1a3792..add2036b 100644 --- a/lib/x509name.cpp +++ b/lib/x509name.cpp @@ -84,8 +84,8 @@ QString x509name::getEntryTag(int i) const QString s = QObject::tr("Invalid"); ASN1_STRING *d; - if ( i<0 || i>entryCount() ) - return s; + if (i<0 || i>=entryCount()) + i = entryCount() - 1; d = X509_NAME_ENTRY_get_data(X509_NAME_get_entry(xn,i)); if (!d)