From: Alex Rousskov Date: Mon, 17 Sep 2012 14:36:00 +0000 (-0600) Subject: Added files forgotten during initial import. X-Git-Tag: SQUID_3_4_0_1~458^2~9^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8578e64a790ca1edeb91a5a64b4bc831c50d9efe;p=thirdparty%2Fsquid.git Added files forgotten during initial import. --- diff --git a/src/acl/ServerCertificate.cc b/src/acl/ServerCertificate.cc new file mode 100644 index 0000000000..043df0e9de --- /dev/null +++ b/src/acl/ServerCertificate.cc @@ -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 * &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 index 0000000000..6edbe86061 --- /dev/null +++ b/src/acl/ServerCertificate.h @@ -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 +{ + +public: + virtual int match (ACLData * &, 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 X509FingerprintRegistryEntry_; +}; + +#endif /* SQUID_ACLSERVERCERTIFICATE_H */