xrootd
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
XrdCryptosslFactory.hh
Go to the documentation of this file.
1 #ifndef __CRYPTO_SSLFACTORY_H__
2 #define __CRYPTO_SSLFACTORY_H__
3 /******************************************************************************/
4 /* */
5 /* X r d C r y p t o S s l F a c t o r y . h h */
6 /* */
7 /* (c) 2004 by the Board of Trustees of the Leland Stanford, Jr., University */
8 /* Produced by Gerri Ganis for CERN */
9 /* */
10 /* This file is part of the XRootD software suite. */
11 /* */
12 /* XRootD is free software: you can redistribute it and/or modify it under */
13 /* the terms of the GNU Lesser General Public License as published by the */
14 /* Free Software Foundation, either version 3 of the License, or (at your */
15 /* option) any later version. */
16 /* */
17 /* XRootD is distributed in the hope that it will be useful, but WITHOUT */
18 /* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or */
19 /* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public */
20 /* License for more details. */
21 /* */
22 /* You should have received a copy of the GNU Lesser General Public License */
23 /* along with XRootD in a file called COPYING.LESSER (LGPL license) and file */
24 /* COPYING (GPL license). If not, see <http://www.gnu.org/licenses/>. */
25 /* */
26 /* The copyright holder's institutional names and contributor's names may not */
27 /* be used to endorse or promote products derived from this software without */
28 /* specific prior written permission of the institution or contributor. */
29 /******************************************************************************/
30 
31 /* ************************************************************************** */
32 /* */
33 /* Implementation of the OpenSSL crypto factory */
34 /* */
35 /* ************************************************************************** */
36 
37 #ifndef __CRYPTO_FACTORY_H__
39 #endif
40 
41 #include "XrdSys/XrdSysPthread.hh"
42 
43 int DebugON = 1;
44 
45 // The ID must be a unique number
46 #define XrdCryptosslFactoryID 1
47 
48 #define SSLFACTORY_MAX_CRYPTO_MUTEX 256
49 
51 {
52 public:
54  virtual ~XrdCryptosslFactory() { }
55 
56  // Set trace flags
57  void SetTrace(kXR_int32 trace);
58 
59  // Hook to Key Derivation Function (PBKDF2)
60  XrdCryptoKDFunLen_t KDFunLen(); // Default Length of buffer
62 
63  // Cipher constructors
64  bool SupportedCipher(const char *t);
65  bool HasPaddingSupport();
66  XrdCryptoCipher *Cipher(const char *t, int l = 0);
67  XrdCryptoCipher *Cipher(const char *t, int l, const char *k,
68  int liv, const char *iv);
70  XrdCryptoCipher *Cipher(int bits, char *pub, int lpub, const char *t = 0);
71  XrdCryptoCipher *Cipher(bool padded, int bits, char *pub, int lpub, const char *t = 0);
73 
74  // MsgDigest constructors
75  bool SupportedMsgDigest(const char *dgst);
76  XrdCryptoMsgDigest *MsgDigest(const char *dgst);
77 
78  // RSA constructors
80  XrdCryptoRSA *RSA(const char *pub, int lpub = 0);
81  XrdCryptoRSA *RSA(const XrdCryptoRSA &r);
82 
83  // X509 constructors
84  XrdCryptoX509 *X509(const char *cf, const char *kf = 0);
86 
87  // X509 CRL constructor
88  XrdCryptoX509Crl *X509Crl(const char *crlfile, int opt = 0);
90 
91  // X509 REQ constructors
93 
94  // Hooks to handle X509 certificates
101 
102  // Hooks to handle X509 proxy certificates
110 
111  // Required SSL mutexes.
113 
114 };
115 
116 #endif
int(* XrdCryptoX509ChainToFile_t)(XrdCryptoX509Chain *, const char *)
Definition: XrdCryptoFactory.hh:77
Definition: XrdCryptoRSA.hh:50
XrdCryptoX509VerifyChain_t X509VerifyChain()
Definition: XrdCryptoMsgDigest.hh:46
XrdSutBucket *(* XrdCryptoX509ExportChain_t)(XrdCryptoX509Chain *, bool)
Definition: XrdCryptoFactory.hh:74
Definition: XrdCryptoCipher.hh:47
XrdCryptoX509ParseFile_t X509ParseFile()
XrdCryptoKDFun_t KDFun()
XrdCryptoX509ExportChain_t X509ExportChain()
int(* XrdCryptoX509GetVOMSAttr_t)(XrdCryptoX509 *, XrdOucString &)
Definition: XrdCryptoFactory.hh:113
XrdCryptoKDFunLen_t KDFunLen()
bool(* XrdCryptoX509VerifyCert_t)(XrdCryptoX509 *c, XrdCryptoX509 *r)
Definition: XrdCryptoFactory.hh:69
int(* XrdCryptoKDFunLen_t)()
Definition: XrdCryptoAux.hh:59
XrdCryptoX509SignProxyReq_t X509SignProxyReq()
XrdCryptoProxyCertInfo_t ProxyCertInfo()
XrdCryptoX509Crl * X509Crl(const char *crlfile, int opt=0)
int(* XrdCryptoX509CreateProxy_t)(const char *, const char *, XrdProxyOpt_t *, XrdCryptogsiX509Chain *, XrdCryptoRSA **, const char *)
Definition: XrdCryptoFactory.hh:101
#define XrdCryptoDefRSABits
Definition: XrdCryptoAux.hh:53
XrdCryptoCipher * Cipher(const char *t, int l=0)
XrdCryptoX509GetVOMSAttr_t X509GetVOMSAttr()
int(* XrdCryptoX509CreateProxyReq_t)(XrdCryptoX509 *, XrdCryptoX509Req **, XrdCryptoRSA **)
Definition: XrdCryptoFactory.hh:104
Definition: XrdSysPthread.hh:165
void SetTrace(kXR_int32 trace)
void(* XrdCryptoSetPathLenConstraint_t)(void *, int)
Definition: XrdCryptoFactory.hh:92
Definition: XrdCryptoX509Req.hh:50
XrdCryptoX509CreateProxy_t X509CreateProxy()
int(* XrdCryptoKDFun_t)(const char *pass, int plen, const char *salt, int slen, char *key, int klen)
Definition: XrdCryptoAux.hh:60
XrdCryptoX509ChainToFile_t X509ChainToFile()
int DebugON
Definition: XrdCryptosslFactory.hh:43
#define XrdCryptoDefRSAExp
Definition: XrdCryptoAux.hh:54
static XrdSysMutex * CryptoMutexPool[SSLFACTORY_MAX_CRYPTO_MUTEX]
Definition: XrdCryptosslFactory.hh:112
int(* XrdCryptoX509SignProxyReq_t)(XrdCryptoX509 *, XrdCryptoRSA *, XrdCryptoX509Req *, XrdCryptoX509 **)
Definition: XrdCryptoFactory.hh:107
virtual ~XrdCryptosslFactory()
Definition: XrdCryptosslFactory.hh:54
bool SupportedMsgDigest(const char *dgst)
int(* XrdCryptoX509ParseFile_t)(const char *fname, XrdCryptoX509Chain *)
Definition: XrdCryptoFactory.hh:80
Definition: XrdCryptoX509Crl.hh:49
XrdCryptoX509CreateProxyReq_t X509CreateProxyReq()
Definition: XrdCryptosslFactory.hh:50
XrdCryptoSetPathLenConstraint_t SetPathLenConstraint()
XrdCryptoX509VerifyCert_t X509VerifyCert()
Definition: XrdSutBucket.hh:43
int(* XrdCryptoX509CheckProxy3_t)(XrdCryptoX509 *, XrdOucString &)
Definition: XrdCryptoFactory.hh:110
XrdCryptoMsgDigest * MsgDigest(const char *dgst)
int kXR_int32
Definition: XPtypes.hh:89
Definition: XrdCryptoFactory.hh:115
XrdCryptoX509CheckProxy3_t X509CheckProxy3()
int(* XrdCryptoX509ParseBucket_t)(XrdSutBucket *, XrdCryptoX509Chain *)
Definition: XrdCryptoFactory.hh:83
bool(* XrdCryptoProxyCertInfo_t)(const void *, int &, bool *)
Definition: XrdCryptoFactory.hh:90
XrdCryptoX509Req * X509Req(XrdSutBucket *bck)
#define SSLFACTORY_MAX_CRYPTO_MUTEX
Definition: XrdCryptosslFactory.hh:48
XrdCryptoRSA * RSA(int bits=XrdCryptoDefRSABits, int exp=XrdCryptoDefRSAExp)
XrdCryptoX509 * X509(const char *cf, const char *kf=0)
Definition: XrdCryptoX509.hh:51
bool(* XrdCryptoX509VerifyChain_t)(XrdCryptoX509Chain *chain, int &errcode)
Definition: XrdCryptoFactory.hh:71
XrdCryptoX509ParseBucket_t X509ParseBucket()
bool SupportedCipher(const char *t)