X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Ftransport.h;h=ceb16cb731fa4fee090e107484292375dbc96070;hb=7107ec12d8640d35cfe3d5002db1bc1deb33625d;hp=f4cf3f4a5e70c1d07527fa1d86d7bba57e02cd78;hpb=2db8cb45f87b0406e88f6ecf6a46eb15f5238684;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/transport.h b/src/modules/transport.h index f4cf3f4a5..ceb16cb73 100644 --- a/src/modules/transport.h +++ b/src/modules/transport.h @@ -23,8 +23,7 @@ * Because gnutls and openssl represent key information in * wildly different ways, this class allows it to be accessed * in a unified manner. These classes are attached to ssl- - * connected local users using Extensible::Extend() and the - * key 'ssl_cert'. + * connected local users using SSLCertExt */ class ssl_cert { @@ -104,6 +103,19 @@ class ssl_cert { return revoked; } + + std::string GetMetaLine() + { + std::stringstream value; + bool hasError = error.length(); + value << (IsInvalid() ? "v" : "V") << (IsTrusted() ? "T" : "t") << (IsRevoked() ? "R" : "r") + << (IsUnknownSigner() ? "s" : "S") << (hasError ? "E" : "e") << " "; + if (hasError) + value << GetError(); + else + value << GetFingerprint() << " " << GetDN() << " " << GetIssuer(); + return value.str(); + } }; /** Used to represent a request to a transport provider module @@ -171,11 +183,22 @@ class BufferedSocketNameRequest : public ISHRequest } }; -class BufferedSocketFingerprintRequest : public ISHRequest +struct BufferedSocketCertificateRequest : public Request { - public: - /** Initialize request as a fingerprint message */ - BufferedSocketFingerprintRequest(BufferedSocket* is, Module* Me, Module* Target) : ISHRequest(Me, Target, "GET_FP", is) + Extensible* const item; + ssl_cert* cert; + BufferedSocketCertificateRequest(Extensible* is, Module* Me, Module* Target) + : Request(Me, Target, "GET_CERT"), item(is), cert(NULL) + { + } +}; + +struct BufferedSocketFingerprintSubmission : public Request +{ + Extensible* const item; + ssl_cert* const cert; + BufferedSocketFingerprintSubmission(Extensible* is, Module* Me, Module* Target, ssl_cert* Cert) + : Request(Me, Target, "SET_CERT"), item(is), cert(Cert) { } };