]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/transport.h
Flexible SendQ
[user/henk/code/inspircd.git] / src / modules / transport.h
index f4cf3f4a5e70c1d07527fa1d86d7bba57e02cd78..ceb16cb731fa4fee090e107484292375dbc96070 100644 (file)
@@ -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)
        {
        }
 };