diff --git a/include/opendht/crypto.h b/include/opendht/crypto.h index 6f66db26ca870af24f4a0ea05f62fc0cd39d26d1..208c1e57513358a2704411b8fafc5c8ea8577db6 100644 --- a/include/opendht/crypto.h +++ b/include/opendht/crypto.h @@ -283,6 +283,7 @@ public: bool verify() const; Blob pack() const; + std::string toString() const; gnutls_x509_crq_t get() const { return request; } private: diff --git a/src/crypto.cpp b/src/crypto.cpp index 5e0e92e9f17567ad55b890abfaf060dafcbd2141..cad426b26d820abc4916b48ad72f805bee51ed80 100644 --- a/src/crypto.cpp +++ b/src/crypto.cpp @@ -703,6 +703,17 @@ CertificateRequest::pack() const return ret; } +std::string +CertificateRequest::toString() const +{ + gnutls_datum_t dat {nullptr, 0}; + if (auto err = gnutls_x509_crq_export2(request, GNUTLS_X509_FMT_PEM, &dat)) + throw CryptoException(std::string("Can't export certificate request: ") + gnutls_strerror(err)); + std::string ret(dat.data, dat.data + dat.size); + gnutls_free(dat.data); + return ret; +} + // Certificate static std::string