summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard Moore <rich@kde.org>2011-07-11 16:15:15 +0200
committerQt by Nokia <qt-info@nokia.com>2011-07-11 17:33:37 +0200
commiteab215070efb43867dd53279759b4f2c9b348567 (patch)
treed6b18a944cfeeb4a6a30793359bb938a19c8a1f2 /src
parent852d4b03f612748fb16f592dda884e9634b468cf (diff)
SSL: Move the code for extracting the name of an ASN1_OBJECT
Moves the code for extracting the name of an ASN1_OBJECT to a function. We're going to need this again for implementing support for X509 extensions. Change-Id: I43276eb375b37f5fef0d981f4003220d7e7b81ba Merge-request: 18 Reviewed-by: Peter Hartmann <peter.hartmann@nokia.com> Reviewed-on: http://codereview.qt.nokia.com/1452 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Diffstat (limited to 'src')
-rw-r--r--src/network/ssl/qsslcertificate.cpp27
-rw-r--r--src/network/ssl/qsslcertificate_p.h1
2 files changed, 16 insertions, 12 deletions
diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp
index 9cc74c633c..06a2071161 100644
--- a/src/network/ssl/qsslcertificate.cpp
+++ b/src/network/ssl/qsslcertificate.cpp
@@ -744,26 +744,29 @@ QByteArray QSslCertificatePrivate::text_from_X509(X509 *x509)
return result;
}
+QByteArray QSslCertificatePrivate::asn1ObjectName(ASN1_OBJECT *object)
+{
+ int nid = q_OBJ_obj2nid(object);
+ if (nid != NID_undef)
+ return QByteArray(q_OBJ_nid2sn(nid));
+
+ // This is used for unknown info so we get the OID as text
+ char buf[80];
+ q_i2t_ASN1_OBJECT(buf, sizeof(buf), object);
+
+ return QByteArray(buf);
+}
+
static QMap<QByteArray, QString> _q_mapFromX509Name(X509_NAME *name)
{
QMap<QByteArray, QString> info;
for (int i = 0; i < q_X509_NAME_entry_count(name); ++i) {
X509_NAME_ENTRY *e = q_X509_NAME_get_entry(name, i);
- int nid = q_OBJ_obj2nid(q_X509_NAME_ENTRY_get_object(e));
- const char *obj=0;
- char buf[80];
- if (nid != NID_undef) {
- obj = q_OBJ_nid2sn(nid);
- }
- else {
- // This is used for unknown info so we get the OID as text
- q_i2t_ASN1_OBJECT(buf,sizeof(buf),e->object);
- }
+ QByteArray name = QSslCertificatePrivate::asn1ObjectName(q_X509_NAME_ENTRY_get_object(e));
unsigned char *data = 0;
int size = q_ASN1_STRING_to_UTF8(&data, q_X509_NAME_ENTRY_get_data(e));
- info.insertMulti(QByteArray(obj ? obj : reinterpret_cast<const char *>(&buf)),
- QString::fromUtf8((char*)data, size));
+ info.insertMulti(name, QString::fromUtf8((char*)data, size));
q_CRYPTO_free(data);
}
diff --git a/src/network/ssl/qsslcertificate_p.h b/src/network/ssl/qsslcertificate_p.h
index fdffc7218b..3cfcef7b57 100644
--- a/src/network/ssl/qsslcertificate_p.h
+++ b/src/network/ssl/qsslcertificate_p.h
@@ -92,6 +92,7 @@ public:
void init(const QByteArray &data, QSsl::EncodingFormat format);
+ static QByteArray asn1ObjectName(ASN1_OBJECT *object);
static QByteArray QByteArray_from_X509(X509 *x509, QSsl::EncodingFormat format);
static QByteArray text_from_X509(X509 *x509);
static QSslCertificate QSslCertificate_from_X509(X509 *x509);