Use a QMultiMap for issuer/subjectInfo

The map can contain multiple entries for one key,
so a multi map is the correct data structure.

Change-Id: I852ba3548f46415d8078fd0e8fdd7953ec6c370b
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
bb10
Lars Knoll 2018-12-03 13:50:45 +01:00
parent 5823d391b4
commit 4e507464e4
2 changed files with 6 additions and 6 deletions

View File

@ -50,7 +50,7 @@
QT_BEGIN_NAMESPACE
// forward declaration
static QMap<QByteArray, QString> _q_mapFromX509Name(X509_NAME *name);
static QMultiMap<QByteArray, QString> _q_mapFromX509Name(X509_NAME *name);
bool QSslCertificate::operator==(const QSslCertificate &other) const
{
@ -615,16 +615,16 @@ QByteArray QSslCertificatePrivate::asn1ObjectName(ASN1_OBJECT *object)
return asn1ObjectId(object);
}
static QMap<QByteArray, QString> _q_mapFromX509Name(X509_NAME *name)
static QMultiMap<QByteArray, QString> _q_mapFromX509Name(X509_NAME *name)
{
QMap<QByteArray, QString> info;
QMultiMap<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);
QByteArray name = QSslCertificatePrivate::asn1ObjectName(q_X509_NAME_ENTRY_get_object(e));
unsigned char *data = nullptr;
int size = q_ASN1_STRING_to_UTF8(&data, q_X509_NAME_ENTRY_get_data(e));
info.insertMulti(name, QString::fromUtf8((char*)data, size));
info.insert(name, QString::fromUtf8((char*)data, size));
#if QT_CONFIG(opensslv11)
q_CRYPTO_free(data, nullptr, 0);
#else

View File

@ -102,8 +102,8 @@ public:
QByteArray versionString;
QByteArray serialNumberString;
QMap<QByteArray, QString> issuerInfo;
QMap<QByteArray, QString> subjectInfo;
QMultiMap<QByteArray, QString> issuerInfo;
QMultiMap<QByteArray, QString> subjectInfo;
QDateTime notValidAfter;
QDateTime notValidBefore;