subdir('meson' / 'libcurl') # Curl
subdir('meson' / 'libcap') # Capabilities
subdir('meson' / 'dlopen') # our Rust static library needs dlopen
+subdir('meson' / 'gnutls') # GNUTLS
subdir('rec-rust-lib')
dep_libsnmp,
dep_libsodium,
dep_libssl,
+ dep_gnutls,
dep_lua,
dep_protozero,
dep_yahttp_header_only,
option('nod', type: 'feature', value: 'enabled', description: 'Enable Newly Observed Domains')
option('libcap', type: 'feature', value: 'auto', description: 'Enable libcap for capabilities handling')
option('clang-coverage-format', type: 'boolean', value: false, description: 'Whether to generate coverage data in clang format')
+option('tls-gnutls', type: 'feature', value: 'auto', description: 'GnuTLS-based TLS')
[[nodiscard]] std::pair<long, std::string> getVerifyResult() const override
{
- return {-1, "Not implemented yet"};
+ if (d_conn) {
+ auto status = gnutls_session_get_verify_cert_status(d_conn.get());
+ gnutls_datum_t out{};
+ if (gnutls_certificate_verification_status_print(status, GNUTLS_CRT_X509, &out, 0) == 0) {
+ auto errString = std::string(reinterpret_cast<const char*>(out.data), out.size);
+ gnutls_free(out.data);
+ return {status, errString};
+ }
+ return {status, ""};
+ }
+ return {0, ""};
}
bool hasSessionBeenResumed() const override