]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Added files forgotten during initial import.
authorAlex Rousskov <rousskov@measurement-factory.com>
Mon, 17 Sep 2012 14:36:00 +0000 (08:36 -0600)
committerAlex Rousskov <rousskov@measurement-factory.com>
Mon, 17 Sep 2012 14:36:00 +0000 (08:36 -0600)
src/acl/ServerCertificate.cc [new file with mode: 0644]
src/acl/ServerCertificate.h [new file with mode: 0644]

diff --git a/src/acl/ServerCertificate.cc b/src/acl/ServerCertificate.cc
new file mode 100644 (file)
index 0000000..043df0e
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * $Id$
+ *
+ */
+
+#include "squid.h"
+
+#if USE_SSL
+
+#include "acl/ServerCertificate.h"
+#include "acl/Checklist.h"
+#include "acl/CertificateData.h"
+#include "fde.h"
+#include "client_side.h"
+#include "ssl/ServerBump.h"
+
+
+int
+ACLServerCertificateStrategy::match (ACLData<MatchType> * &data, ACLFilledChecklist *checklist)
+{
+    X509 *cert = NULL;
+    if (checklist->serverCert.get())
+        cert = checklist->serverCert.get();
+    else if (checklist->conn() != NULL && checklist->conn()->serverBump())
+        cert = checklist->conn()->serverBump()->serverCert.get();
+
+    if (!cert)
+        return 0;
+
+    return data->match(cert);
+}
+
+ACLServerCertificateStrategy *
+ACLServerCertificateStrategy::Instance()
+{
+    return &Instance_;
+}
+
+ACLServerCertificateStrategy ACLServerCertificateStrategy::Instance_;
+
+#endif /* USE_SSL */
diff --git a/src/acl/ServerCertificate.h b/src/acl/ServerCertificate.h
new file mode 100644 (file)
index 0000000..6edbe86
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * $Id$
+ */
+
+#ifndef SQUID_ACLSERVERCERTIFICATE_H
+#define SQUID_ACLSERVERCERTIFICATE_H
+
+#include "acl/Acl.h"
+#include "acl/Data.h"
+#include "acl/Checklist.h"
+#include "ssl/support.h"
+#include "acl/Strategised.h"
+
+/// \ingroup ACLAPI
+class ACLServerCertificateStrategy : public ACLStrategy<X509 *>
+{
+
+public:
+    virtual int match (ACLData<MatchType> * &, ACLFilledChecklist *);
+    static ACLServerCertificateStrategy *Instance();
+    /* Not implemented to prevent copies of the instance. */
+    /* Not private to prevent brain dead g+++ warnings about
+     * private constructors with no friends */
+    ACLServerCertificateStrategy(ACLServerCertificateStrategy const &);
+
+private:
+    static ACLServerCertificateStrategy Instance_;
+    ACLServerCertificateStrategy() {}
+
+    ACLServerCertificateStrategy&operator=(ACLServerCertificateStrategy const &);
+};
+
+/// \ingroup ACLAPI
+class ACLServerCertificate
+{
+private:
+    static ACL::Prototype X509FingerprintRegistryProtoype;
+    static ACLStrategised<X509*> X509FingerprintRegistryEntry_;
+};
+
+#endif /* SQUID_ACLSERVERCERTIFICATE_H */