diff options
author | Richard Moore <rich@kde.org> | 2011-11-10 22:37:16 +0000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-11-15 10:16:12 +0100 |
commit | 6f115edd745b2f21218bbf0f4ed8584fe0ac3e3a (patch) | |
tree | 60e0642f012892173dc9e4267663ecb7370686d6 | |
parent | 6f4bdf3b6406912ccdf8ef8101e1836e73ee218b (diff) |
Always use the hex format for certificate serial numbers.
In Qt 4.x the serial number is reported by a mixture of the hex value
and the number, The hex is what is used by other tools, and we should do
the same.
Change-Id: Ia0361d43fb5b920d053c95e932e0c8a012436e5e
Reviewed-by: Peter Hartmann <peter.hartmann@nokia.com>
-rw-r--r-- | dist/changes-5.0.0 | 4 | ||||
-rw-r--r-- | src/network/ssl/qsslcertificate.cpp | 24 | ||||
-rw-r--r-- | tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp | 2 |
3 files changed, 13 insertions, 17 deletions
diff --git a/dist/changes-5.0.0 b/dist/changes-5.0.0 index df36b2caf4..da1e092a3a 100644 --- a/dist/changes-5.0.0 +++ b/dist/changes-5.0.0 @@ -99,6 +99,10 @@ QtNetwork * QHostAddress::isLoopback() API added. Returns true if the address is one of the IP loopback addresses. +* QSslCertificate::serialNumber() now always returns the serial number in + hexadecimal format. + + QtOpenGL -------- diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp index ea92485b6e..b902f451b8 100644 --- a/src/network/ssl/qsslcertificate.cpp +++ b/src/network/ssl/qsslcertificate.cpp @@ -271,28 +271,20 @@ QByteArray QSslCertificate::version() const } /*! - Returns the certificate's serial number string in decimal format. - In case the serial number cannot be converted to decimal format - (i.e. if it is bigger than 4294967295, which means it does not fit into 4 bytes), - its hexadecimal version is returned. + Returns the certificate's serial number string in hexadecimal format. */ QByteArray QSslCertificate::serialNumber() const { if (d->serialNumberString.isEmpty() && d->x509) { ASN1_INTEGER *serialNumber = d->x509->cert_info->serialNumber; - // if we cannot convert to a long, just output the hexadecimal number - if (serialNumber->length > 4) { - QByteArray hexString; - hexString.reserve(serialNumber->length * 3); - for (int a = 0; a < serialNumber->length; ++a) { - hexString += QByteArray::number(serialNumber->data[a], 16).rightJustified(2, '0'); - hexString += ':'; - } - hexString.chop(1); - d->serialNumberString = hexString; - } else { - d->serialNumberString = QByteArray::number(qlonglong(q_ASN1_INTEGER_get(serialNumber))); + QByteArray hexString; + hexString.reserve(serialNumber->length * 3); + for (int a = 0; a < serialNumber->length; ++a) { + hexString += QByteArray::number(serialNumber->data[a], 16).rightJustified(2, '0'); + hexString += ':'; } + hexString.chop(1); + d->serialNumberString = hexString; } return d->serialNumberString; } diff --git a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp index 846c50bc89..a521d0e389 100644 --- a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp +++ b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp @@ -711,7 +711,7 @@ void tst_QSslCertificate::certInfo() QCOMPARE(cert.subjectInfo("ST"), QStringList()); QCOMPARE(cert.version(), QByteArray::number(1)); - QCOMPARE(cert.serialNumber(), QByteArray::number(17)); + QCOMPARE(cert.serialNumber(), QByteArray("11")); QCOMPARE(cert.toPem().constData(), (const char*)pem); QCOMPARE(cert.toDer(), QByteArray::fromHex(der)); |