8a93dd3cf82a92df105d2ce170390f01356d8f3d
[shibboleth/cpp-xmltooling.git] / xmltooling / security / OpenSSLCryptoX509CRL.h
1 /*
2  * Copyright 2001-2010 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();
39         virtual ~OpenSSLCryptoX509CRL();
40
41         const XMLCh* getProviderName() const;
42         void loadX509CRLBase64Bin(const char* buf, unsigned int len);
43         safeBuffer& getDEREncodingSB();
44     
45         /**
46          * Constructor
47          * 
48          * @param x a native CRL object
49          */
50         OpenSSLCryptoX509CRL(X509_CRL* x);
51         
52         /**
53          * Returns native CRL object.
54          * 
55          * @return  native CRL object, or nullptr
56          */
57         X509_CRL* getOpenSSLX509CRL();
58
59         XSECCryptoX509CRL* clone() const;
60     
61     private:
62         X509_CRL* mp_X509CRL;
63         safeBuffer m_DERX509CRL;
64     };
65 };
66
67 #endif /* __xmltooling_opensslx509crl_h__ */
68