Reducing header overuse, non-inlining selected methods (CPPOST-35).
[shibboleth/cpp-xmltooling.git] / xmltooling / security / OpenSSLCryptoX509CRL.h
1 /*
2  * Copyright 2001-2009 The Apache Software Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 /**
18  * @file xmltooling/security/OpenSSLCryptoX509CRL.h
19  * 
20  * OpenSSL-based class for handling X.509 CRLs.
21  */
22
23 #if !defined(__xmltooling_opensslx509crl_h__) && !defined(XMLTOOLING_NO_XMLSEC)
24 #define __xmltooling_opensslx509crl_h__
25
26 #include <xmltooling/security/XSECCryptoX509CRL.h>
27
28 #include <openssl/x509v3.h>
29 #include <xsec/utils/XSECSafeBuffer.hpp>
30
31 namespace xmltooling {
32     /**
33      * OpenSSL-based class for handling X.509 CRLs
34      */
35     class XMLTOOL_API OpenSSLCryptoX509CRL : public XSECCryptoX509CRL {
36     public:
37         /** Default constructor. */
38         OpenSSLCryptoX509CRL() : mp_X509CRL(NULL), m_DERX509CRL("") {}
39         virtual ~OpenSSLCryptoX509CRL();
40
41         const XMLCh* getProviderName() const {
42             return DSIGConstants::s_unicodeStrPROVOpenSSL;
43         }
44         void loadX509CRLBase64Bin(const char* buf, unsigned int len);
45         safeBuffer& getDEREncodingSB(void) {
46             return m_DERX509CRL;
47         }
48     
49         /**
50          * Constructor
51          * 
52          * @param x a native CRL object
53          */
54         OpenSSLCryptoX509CRL(X509_CRL* x);
55         
56         /**
57          * Returns native CRL object.
58          * 
59          * @return  native CRL object, or NULL
60          */
61         X509_CRL* getOpenSSLX509CRL() {
62             return mp_X509CRL;
63         }
64
65         XSECCryptoX509CRL* clone() const;
66     
67     private:
68         X509_CRL* mp_X509CRL;
69         safeBuffer m_DERX509CRL;
70     };
71 };
72
73 #endif /* __xmltooling_opensslx509crl_h__ */
74