]> git.ipfire.org Git - thirdparty/squid.git/blame - src/security/forward.h
Squid crashes on shutdown while cleaning up idle ICAP connections, part2
[thirdparty/squid.git] / src / security / forward.h
CommitLineData
fcfdf7f9 1/*
ef57eb7b 2 * Copyright (C) 1996-2016 The Squid Software Foundation and contributors
fcfdf7f9
AJ
3 *
4 * Squid software is distributed under GPLv2+ license and includes
5 * contributions from numerous individuals and organizations.
6 * Please see the COPYING and CONTRIBUTORS files for details.
7 */
8
9#ifndef SQUID_SRC_SECURITY_FORWARD_H
10#define SQUID_SRC_SECURITY_FORWARD_H
11
12#include "security/Context.h"
63b8c4d7 13#include "security/Session.h"
f97700a0
AJ
14
15#if USE_GNUTLS
16#if HAVE_GNUTLS_X509_H
17#include <gnutls/x509.h>
18#endif
19#endif
6b19d1f9 20#include <list>
83f8d8f9 21#include <unordered_set>
fcfdf7f9 22
48c7e8cb
AJ
23#if USE_OPENSSL
24// Macro to be used to define the C++ wrapper functor of the sk_*_pop_free
25// OpenSSL family of functions. The C++ functor is suffixed with the _free_wrapper
26// extension
27#define sk_dtor_wrapper(sk_object, argument_type, freefunction) \
28 struct sk_object ## _free_wrapper { \
29 void operator()(argument_type a) { sk_object ## _pop_free(a, freefunction); } \
30 }
31#endif /* USE_OPENSSL */
32
b24e9ae7
AJ
33/* flags a SSL connection can be configured with */
34#define SSL_FLAG_NO_DEFAULT_CA (1<<0)
35#define SSL_FLAG_DELAYED_AUTH (1<<1)
36#define SSL_FLAG_DONT_VERIFY_PEER (1<<2)
37#define SSL_FLAG_DONT_VERIFY_DOMAIN (1<<3)
38#define SSL_FLAG_NO_SESSION_REUSE (1<<4)
39#define SSL_FLAG_VERIFY_CRL (1<<5)
40#define SSL_FLAG_VERIFY_CRL_ALL (1<<6)
41
fcfdf7f9
AJ
42/// Network/connection security abstraction layer
43namespace Security
44{
45
f97700a0
AJ
46#if USE_OPENSSL
47CtoCpp1(X509_free, X509 *)
48typedef Security::LockingPointer<X509, X509_free_cpp, CRYPTO_LOCK_X509> CertPointer;
49#elif USE_GNUTLS
50CtoCpp1(gnutls_x509_crt_deinit, gnutls_x509_crt_t)
51typedef Security::LockingPointer<struct gnutls_x509_crt_int, gnutls_x509_crt_deinit, -1> CertPointer;
52#else
53typedef void * CertPointer;
54#endif
55
6b19d1f9
AJ
56#if USE_OPENSSL
57CtoCpp1(X509_CRL_free, X509_CRL *)
58typedef LockingPointer<X509_CRL, X509_CRL_free_cpp, CRYPTO_LOCK_X509_CRL> CrlPointer;
59#elif USE_GNUTLS
60CtoCpp1(gnutls_x509_crl_deinit, gnutls_x509_crl_t)
61typedef Security::LockingPointer<struct gnutls_x509_crl_int, gnutls_x509_crl_deinit, -1> CrlPointer;
62#else
63typedef void *CrlPointer;
64#endif
65
a34d1d2d
CT
66typedef std::list<Security::CertPointer> CertList;
67
4b5ea8a6
CT
68typedef std::list<Security::CrlPointer> CertRevokeList;
69
104deb98
AJ
70#if USE_OPENSSL
71CtoCpp1(DH_free, DH *);
72typedef Security::LockingPointer<DH, DH_free_cpp, CRYPTO_LOCK_DH> DhePointer;
73#else
74typedef void *DhePointer;
75#endif
76
a72b6e88 77class EncryptorAnswer;
13cd7dee
AJ
78
79/// Squid defined error code (<0), an error code returned by X.509 API, or SSL_ERROR_NONE
80typedef int ErrorCode;
81
83f8d8f9
AJ
82/// set of Squid defined TLS error codes
83/// \note using std::unordered_set ensures values are unique, with fast lookup
84typedef std::unordered_set<Security::ErrorCode> Errors;
85
d1d72d43 86class KeyData;
a72b6e88
AJ
87class PeerConnector;
88class PeerOptions;
89class ServerOptions;
d1d72d43 90
fcfdf7f9
AJ
91} // namespace Security
92
93#endif /* SQUID_SRC_SECURITY_FORWARD_H */
94