diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2024-04-17 11:09:58 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2024-05-08 21:13:47 -0700 |
commit | 4503dabfbd11c084c2781a679c9af12d5fb8f763 (patch) | |
tree | 276b12b705d46ad6c9b3343cae16eeca0e5eed78 /tests/manual/qdnslookup/main.cpp | |
parent | 503fd609881fb220ac5abe7da2fe367efd90ed4b (diff) |
QDnsLookup: add support for TLSA records
[ChangeLog][QtNetwork][QDnsLookup] Added support for querying records of
type TLSA, which are useful in DNS-based Authentication of Named
Entities (DANE).
Change-Id: I455fe22ef4ad4b2f9b01fffd17c723aa6ab7f278
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'tests/manual/qdnslookup/main.cpp')
-rw-r--r-- | tests/manual/qdnslookup/main.cpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/tests/manual/qdnslookup/main.cpp b/tests/manual/qdnslookup/main.cpp index 59ce2ab284..41dda45b8f 100644 --- a/tests/manual/qdnslookup/main.cpp +++ b/tests/manual/qdnslookup/main.cpp @@ -37,10 +37,18 @@ static QDnsLookup::Type typeFromString(QString str) return QDnsLookup::Type(value); } -template <typename Enum> [[maybe_unused]] static const char *enumToKey(Enum e) +template <typename Enum> QByteArray enumToString(Enum value) { QMetaEnum me = QMetaEnum::fromType<Enum>(); - return me.valueToKey(int(e)); + QByteArray keys = me.valueToKeys(int(value)); + if (keys.isEmpty()) + return QByteArrayLiteral("<unknown>"); + + // return the last one + qsizetype idx = keys.lastIndexOf('|'); + if (idx > 0) + return std::move(keys).sliced(idx + 1); + return keys; } static int showHelp(const char *argv0, int exitcode) @@ -113,6 +121,14 @@ static void printAnswers(const QDnsLookup &lookup) printf("%s ", qPrintable(QDebug::toString(data))); puts(""); } + + for (const QDnsTlsAssociationRecord &rr : lookup.tlsAssociationRecords()) { + printRecordCommon(rr, "TLSA"); + printf("( %u %u %u ; %s %s %s\n\t%s )\n", quint8(rr.usage()), quint8(rr.selector()), + quint8(rr.matchType()), enumToString(rr.usage()).constData(), + enumToString(rr.selector()).constData(), enumToString(rr.matchType()).constData(), + rr.value().toHex().toUpper().constData()); + } } static void printResults(const QDnsLookup &lookup, QElapsedTimer::Duration duration) @@ -143,7 +159,7 @@ static void printResults(const QDnsLookup &lookup, QElapsedTimer::Duration durat #if QT_CONFIG(ssl) if (lookup.nameserverProtocol() != QDnsLookup::Standard) { if (QSslConfiguration conf = lookup.sslConfiguration(); !conf.isNull()) { - printf(" (%s %s)", enumToKey(conf.sessionProtocol()), + printf(" (%s %s)", enumToString(conf.sessionProtocol()).constData(), qPrintable(conf.sessionCipher().name())); } } |