diff options
author | Timur Pocheptsov <timur.pocheptsov@qt.io> | 2017-07-14 10:40:49 +0200 |
---|---|---|
committer | Timur Pocheptsov <timur.pocheptsov@qt.io> | 2017-07-18 13:09:16 +0000 |
commit | 07c0e0fdcf6ccea2a60b2acc7059f56a834ad040 (patch) | |
tree | 93f190225e8964d1384cc13ba19c26fb01ff1384 /tests/auto | |
parent | 4a7ec2d9b0c353d40ab9702e8d7b7fdab52dfd0e (diff) |
QAsn1Element - fix toDateTime function
ASN UTCTime uses two characters to encode a year (YY). When converting it
into QDate, it's quite naive to just add 2000. According to RFC 2459,
these YY represent dates in the range [1950, 2049].
This patch also introduces a helper function doing the checked conversion
from a string to int (to be reused in the following-up patches).
Task-number: QTBUG-61934
Change-Id: I3f6f471d24e8357b83b2f5973023b2b842751389
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/network/ssl/qasn1element/tst_qasn1element.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/tests/auto/network/ssl/qasn1element/tst_qasn1element.cpp b/tests/auto/network/ssl/qasn1element/tst_qasn1element.cpp index 401ed85587..0928ecc5a1 100644 --- a/tests/auto/network/ssl/qasn1element/tst_qasn1element.cpp +++ b/tests/auto/network/ssl/qasn1element/tst_qasn1element.cpp @@ -134,6 +134,33 @@ void tst_QAsn1Element::dateTime_data() QTest::newRow("UTCTime - no trailing Z") << QByteArray::fromHex("170d30373034313730373430323659") << QDateTime(); + QTest::newRow("UTCTime - year 1950") + << QByteArray::fromHex("170d3530313232343035353530305a") + << QDateTime(QDate(1950, 12, 24), QTime(5, 55), Qt::UTC); + QTest::newRow("UTCTime - year 1999") + << QByteArray::fromHex("170d3939313232343035353530305a") + << QDateTime(QDate(1999, 12, 24), QTime(5, 55), Qt::UTC); + QTest::newRow("UTCTime - year 2000") + << QByteArray::fromHex("170d3030313232343035353530305a") + << QDateTime(QDate(2000, 12, 24), QTime(5, 55), Qt::UTC); + QTest::newRow("UTCTime - year 2049") + << QByteArray::fromHex("170d3439313232343035353530305a") + << QDateTime(QDate(2049, 12, 24), QTime(5, 55), Qt::UTC); + QTest::newRow("UTCTime - invalid year ('-9')") + << QByteArray::fromHex("170d2d39313232343035353530305a") + << QDateTime(); + QTest::newRow("UTCTime - invalid year ('*9')") + << QByteArray::fromHex("170d2a39313232343035353530305a") + << QDateTime(); + QTest::newRow("UTCTime - invalid year ('5*')") + << QByteArray::fromHex("170d352a313232343035353530305a") + << QDateTime(); + QTest::newRow("UTCTime - invalid year ('AB')") + << QByteArray::fromHex("170d4142313232343035353530305a") + << QDateTime(); + QTest::newRow("UTCTime - invalid year ('+1')") + << QByteArray::fromHex("170d2b31313232343035353530305a") + << QDateTime(); QTest::newRow("GeneralizedTime - 20510829095341Z") << QByteArray::fromHex("180f32303531303832393039353334315a") << QDateTime(QDate(2051, 8, 29), QTime(9, 53, 41), Qt::UTC); |