qasn1element.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/network/ssl/qasn1element.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5typedef QMap<QByteArray, QByteArray> OidNameMap;-
6static OidNameMap createOidMap()-
7{-
8 OidNameMap oids;-
9-
10 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("0.9.2342.19200300.100.1.5") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "0.9.2342.19200300.100.1.5" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("favouriteDrink") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "favouriteDrink" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
11 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("1.2.840.113549.1.9.1") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "1.2.840.113549.1.9.1" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("emailAddress") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "emailAddress" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
12 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("1.3.6.1.5.5.7.1.1") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "1.3.6.1.5.5.7.1.1" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("authorityInfoAccess") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "authorityInfoAccess" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
13 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("1.3.6.1.5.5.7.48.1") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "1.3.6.1.5.5.7.48.1" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("OCSP") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "OCSP" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
14 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("1.3.6.1.5.5.7.48.2") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "1.3.6.1.5.5.7.48.2" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("caIssuers") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "caIssuers" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
15 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.29.14") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.29.14" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("subjectKeyIdentifier") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "subjectKeyIdentifier" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
16 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.29.15") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.29.15" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("keyUsage") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "keyUsage" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
17 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.29.17") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.29.17" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("subjectAltName") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "subjectAltName" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
18 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.29.19") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.29.19" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("basicConstraints") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "basicConstraints" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
19 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.29.35") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.29.35" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("authorityKeyIdentifier") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "authorityKeyIdentifier" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
20 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.4.10") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.4.10" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("O") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "O" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
21 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.4.11") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.4.11" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("OU") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "OU" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
22 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.4.12") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.4.12" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("title") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "title" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
23 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.4.13") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.4.13" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("description") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "description" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
24 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.4.17") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.4.17" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("postalCode") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "postalCode" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
25 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.4.3") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.4.3" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("CN") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "CN" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
26 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.4.4") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.4.4" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("SN") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "SN" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
27 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.4.41") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.4.41" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("name") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "name" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
28 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.4.42") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.4.42" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("GN") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "GN" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
29 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.4.43") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.4.43" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("initials") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "initials" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
30 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.4.46") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.4.46" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("dnQualifier") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "dnQualifier" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
31 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.4.5") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.4.5" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("serialNumber") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "serialNumber" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
32 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.4.6") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.4.6" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("C") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "C" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
33 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.4.7") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.4.7" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("L") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "L" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
34 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.4.8") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.4.8" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("ST") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "ST" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
35 oids.insert(oids.cend(), ([]() -> QByteArray { enum { Size = sizeof("2.5.4.9") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "2.5.4.9" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()), ([]() -> QByteArray { enum { Size = sizeof("street") - 1 }; static const QStaticByteArrayData<Size> qbytearray_literal = { { { { -1 } }, Size, 0, 0, sizeof(QByteArrayData) }, "street" }; QByteArrayDataPtr holder = { qbytearray_literal.data_ptr() }; const QByteArray ba(holder); return ba; }()));-
36 return oids;-
37}-
38namespace { namespace Q_QGS_oidNameMap { typedef OidNameMap Type; QBasicAtomicInt guard = { QtGlobalStatic::Uninitialized }; __attribute__((visibility("hidden"))) inline Type *innerFunction() { struct HolderBase { ~HolderBase() noexcept { if (guard.load() == QtGlobalStatic::Initialized) guard.store(QtGlobalStatic::Destroyed); } }; static struct Holder : public HolderBase { Type value; Holder() noexcept(noexcept(Type (createOidMap()))) : value (createOidMap()) { guard.store(QtGlobalStatic::Initialized); } } holder; return &holder.value; } } } static QGlobalStatic<OidNameMap, Q_QGS_oidNameMap::innerFunction, Q_QGS_oidNameMap::guard> oidNameMap;-
39-
40QAsn1Element::QAsn1Element(quint8 type, const QByteArray &value)-
41 : mType(type)-
42 , mValue(value)-
43{-
44}-
45-
46bool QAsn1Element::read(QDataStream &stream)-
47{-
48-
49 quint8 tmpType;-
50 stream >> tmpType;-
51 if (!tmpType)-
52 return false;-
53-
54-
55 qint64 length = 0;-
56 quint8 first;-
57 stream >> first;-
58 if (first & 0x80) {-
59-
60 const quint8 bytes = (first & 0x7f);-
61 if (bytes > 7)-
62 return false;-
63-
64 quint8 b;-
65 for (int i = 0; i < bytes; i++) {-
66 stream >> b;-
67 length = (length << 8) | b;-
68 }-
69 } else {-
70-
71 length = (first & 0x7f);-
72 }-
73-
74-
75 QByteArray tmpValue;-
76 tmpValue.resize(length);-
77 int count = stream.readRawData(tmpValue.data(), tmpValue.size());-
78 if (count != length)-
79 return false;-
80-
81 mType = tmpType;-
82 mValue.swap(tmpValue);-
83 return true;-
84}-
85-
86bool QAsn1Element::read(const QByteArray &data)-
87{-
88 QDataStream stream(data);-
89 return read(stream);-
90}-
91-
92void QAsn1Element::write(QDataStream &stream) const-
93{-
94-
95 stream << mType;-
96-
97-
98 qint64 length = mValue.size();-
99 if (length >= 128) {-
100-
101 quint8 encodedLength = 0x80;-
102 QByteArray ba;-
103 while (length) {-
104 ba.prepend(quint8((length & 0xff)));-
105 length >>= 8;-
106 encodedLength += 1;-
107 }-
108 stream << encodedLength;-
109 stream.writeRawData(ba.data(), ba.size());-
110 } else {-
111-
112 stream << quint8(length);-
113 }-
114-
115-
116 stream.writeRawData(mValue.data(), mValue.size());-
117}-
118-
119QAsn1Element QAsn1Element::fromBool(bool val)-
120{-
121 return QAsn1Element(QAsn1Element::BooleanType,-
122 QByteArray(1, val ? 0xff : 0x00));-
123}-
124-
125QAsn1Element QAsn1Element::fromInteger(unsigned int val)-
126{-
127 QAsn1Element elem(QAsn1Element::IntegerType);-
128 while (val > 127) {-
129 elem.mValue.prepend(val & 0xff);-
130 val >>= 8;-
131 }-
132 elem.mValue.prepend(val & 0x7f);-
133 return elem;-
134}-
135-
136QAsn1Element QAsn1Element::fromVector(const QVector<QAsn1Element> &items)-
137{-
138 QAsn1Element seq;-
139 seq.mType = SequenceType;-
140 QDataStream stream(&seq.mValue, QIODevice::WriteOnly);-
141 for (QVector<QAsn1Element>::const_iterator it = items.cbegin(), end = items.cend(); it != end; ++it)-
142 it->write(stream);-
143 return seq;-
144}-
145-
146QAsn1Element QAsn1Element::fromObjectId(const QByteArray &id)-
147{-
148 QAsn1Element elem;-
149 elem.mType = ObjectIdentifierType;-
150 const QList<QByteArray> bits = id.split('.');-
151 ((!(bits.size() > 2)) ? qt_assert("bits.size() > 2",__FILE__,190196) : qt_noop());-
152 elem.mValue += quint8((bits[0].toUInt() * 40 + bits[1].toUInt()));-
153 for (int i = 2; i < bits.size()
i < bits.size()Description
TRUEevaluated 7 times by 1 test
Evaluated by:
  • tst_qasn1element - unknown status
FALSEevaluated 2 times by 1 test
Evaluated by:
  • tst_qasn1element - unknown status
; ++i) {
2-7
154 char buffer[std::numeric_limits<unsigned int>::digits / 7 + 2];-
155 char *pBuffer = buffer + sizeof(buffer);-
156 *--pBuffer = '\0';-
157 unsigned int node = bits[i].toUInt();-
158 *--pBuffer = quint8((node & 0x7f));-
159 node >>= 7;-
160 while (node
nodeDescription
TRUEevaluated 4 times by 1 test
Evaluated by:
  • tst_qasn1element - unknown status
FALSEevaluated 7 times by 1 test
Evaluated by:
  • tst_qasn1element - unknown status
) {
4-7
161 *--pBuffer = quint8(((node & 0x7f) | 0x80));-
162 node >>= 7;-
163 }
executed 4 times by 1 test: end of block
Executed by:
  • tst_qasn1element - unknown status
4
164 elem.mValue += pBuffer;-
165 }
executed 7 times by 1 test: end of block
Executed by:
  • tst_qasn1element - unknown status
7
166 return
executed 2 times by 1 test: return elem;
Executed by:
  • tst_qasn1element - unknown status
elem;
executed 2 times by 1 test: return elem;
Executed by:
  • tst_qasn1element - unknown status
2
167}-
168-
169bool QAsn1Element::toBool(bool *ok) const-
170{-
171 if (*this == fromBool(true)) {-
172 if (ok)-
173 *ok = true;-
174 return true;-
175 } else if (*this == fromBool(false)) {-
176 if (ok)-
177 *ok = true;-
178 return false;-
179 } else {-
180 if (ok)-
181 *ok = false;-
182 return false;-
183 }-
184}-
185-
186QDateTime QAsn1Element::toDateTime() const-
187{-
188 if (mValue.endsWith('Z')) {-
189 if (mType == UtcTimeType && mValue.size() == 13)-
190 return QDateTime(QDate(2000 + mValue.mid(0, 2).toInt(),-
191 mValue.mid(2, 2).toInt(),-
192 mValue.mid(4, 2).toInt()),-
193 QTime(mValue.mid(6, 2).toInt(),-
194 mValue.mid(8, 2).toInt(),-
195 mValue.mid(10, 2).toInt()),-
196 Qt::UTC);-
197 else if (mType == GeneralizedTimeType && mValue.size() == 15)-
198 return QDateTime(QDate(mValue.mid(0, 4).toInt(),-
199 mValue.mid(4, 2).toInt(),-
200 mValue.mid(6, 2).toInt()),-
201 QTime(mValue.mid(8, 2).toInt(),-
202 mValue.mid(10, 2).toInt(),-
203 mValue.mid(12, 2).toInt()),-
204 Qt::UTC);-
205 }-
206 return QDateTime();-
207}-
208-
209QMultiMap<QByteArray, QString> QAsn1Element::toInfo() const-
210{-
211 QMultiMap<QByteArray, QString> info;-
212 QAsn1Element elem;-
213 QDataStream issuerStream(mValue);-
214 while (elem.read(issuerStream) && elem.mType == QAsn1Element::SetType) {-
215 QAsn1Element issuerElem;-
216 QDataStream setStream(elem.mValue);-
217 if (issuerElem.read(setStream) && issuerElem.mType == QAsn1Element::SequenceType) {-
218 QVector<QAsn1Element> elems = issuerElem.toVector();-
219 if (elems.size() == 2) {-
220 const QByteArray key = elems.front().toObjectName();-
221 if (!key.isEmpty())-
222 info.insert(key, elems.back().toString());-
223 }-
224 }-
225 }-
226 return info;-
227}-
228-
229qint64 QAsn1Element::toInteger(bool *ok) const-
230{-
231 if (mType != QAsn1Element::IntegerType || mValue.isEmpty()) {-
232 if (ok)-
233 *ok = false;-
234 return 0;-
235 }-
236-
237-
238 if (mValue.at(0) & 0x80) {-
239 if (ok)-
240 *ok = false;-
241 return 0;-
242 }-
243-
244 qint64 value = mValue.at(0) & 0x7f;-
245 for (int i = 1; i < mValue.size(); ++i)-
246 value = (value << 8) | quint8(mValue.at(i));-
247-
248 if (ok)-
249 *ok = true;-
250 return value;-
251}-
252-
253QVector<QAsn1Element> QAsn1Element::toVector() const-
254{-
255 QVector<QAsn1Element> items;-
256 if (mType == SequenceType) {-
257 QAsn1Element elem;-
258 QDataStream stream(mValue);-
259 while (elem.read(stream))-
260 items << elem;-
261 }-
262 return items;-
263}-
264-
265QByteArray QAsn1Element::toObjectId() const-
266{-
267 QByteArray key;-
268 if (mType == ObjectIdentifierType
mType == ObjectIdentifierTypeDescription
TRUEevaluated 6 times by 1 test
Evaluated by:
  • tst_qasn1element - unknown status
FALSEnever evaluated
&& !mValue.isEmpty()
!mValue.isEmpty()Description
TRUEevaluated 6 times by 1 test
Evaluated by:
  • tst_qasn1element - unknown status
FALSEnever evaluated
) {
0-6
269 quint8 b = mValue[.at(0];);-
270 key += QByteArray::number(b / 40) + '.' + QByteArray::number (b % 40);-
271 unsigned int val = 0;-
272 for (int i = 1; i < mValue.size()
i < mValue.size()Description
TRUEevaluated 33 times by 1 test
Evaluated by:
  • tst_qasn1element - unknown status
FALSEevaluated 6 times by 1 test
Evaluated by:
  • tst_qasn1element - unknown status
; ++i) {
6-33
273 b = mValue[.at(i];);-
274 val = (val << 7) | (b & 0x7f);-
275 if (!(b & 0x80)
!(b & 0x80)Description
TRUEevaluated 21 times by 1 test
Evaluated by:
  • tst_qasn1element - unknown status
FALSEevaluated 12 times by 1 test
Evaluated by:
  • tst_qasn1element - unknown status
) {
12-21
276 key += '.' + QByteArray::number(val);-
277 val = 0;-
278 }
executed 21 times by 1 test: end of block
Executed by:
  • tst_qasn1element - unknown status
21
279 }
executed 33 times by 1 test: end of block
Executed by:
  • tst_qasn1element - unknown status
33
280 }
executed 6 times by 1 test: end of block
Executed by:
  • tst_qasn1element - unknown status
6
281 return
executed 6 times by 1 test: return key;
Executed by:
  • tst_qasn1element - unknown status
key;
executed 6 times by 1 test: return key;
Executed by:
  • tst_qasn1element - unknown status
6
282}-
283-
284QByteArray QAsn1Element::toObjectName() const-
285{-
286 QByteArray key = toObjectId();-
287 return oidNameMap->value(key, key);-
288}-
289-
290QString QAsn1Element::toString() const-
291{-
292-
293 if (qstrlen(mValue) < uint(mValue.size()))-
294 return QString();-
295-
296 if (mType == PrintableStringType || mType == TeletexStringType-
297 || mType == Rfc822NameType || mType == DnsNameType-
298 || mType == UniformResourceIdentifierType)-
299 return QString::fromLatin1(mValue, mValue.size());-
300 if (mType == Utf8StringType)-
301 return QString::fromUtf8(mValue, mValue.size());-
302-
303 return QString();-
304}-
305-
306-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9