|
limal-ca-mgm
|
00001 /*---------------------------------------------------------------------\ 00002 | | 00003 | _ _ _ _ __ _ | 00004 | | | | | | \_/ | / \ | | | 00005 | | | | | | |_| | / /\ \ | | | 00006 | | |__ | | | | | | / ____ \ | |__ | 00007 | |____||_| |_| |_|/ / \ \|____| | 00008 | | 00009 | ca-mgm library | 00010 | | 00011 | (C) SUSE Linux Products GmbH | 00012 \----------------------------------------------------------------------/ 00013 00014 File: BitExtensions.hpp 00015 00016 Author: <Michael Calmer> <mc@suse.de> 00017 Maintainer: <Michael Calmer> <mc@suse.de> 00018 00019 Purpose: 00020 00021 /-*/ 00022 #ifndef LIMAL_CA_MGM_BIT_EXTENSIONS_HPP 00023 #define LIMAL_CA_MGM_BIT_EXTENSIONS_HPP 00024 00025 #include <limal/ca-mgm/config.h> 00026 #include <limal/ca-mgm/CommonData.hpp> 00027 #include <limal/ca-mgm/ExtensionBase.hpp> 00028 #include <blocxx/COWIntrusiveReference.hpp> 00029 00030 namespace LIMAL_NAMESPACE { 00031 00032 namespace CA_MGM_NAMESPACE { 00033 00034 class CA; 00035 class CAConfig; 00036 class BitExtensionImpl; 00037 00041 class BitExtension : public ExtensionBase 00042 { 00043 public: 00044 BitExtension(); 00045 BitExtension(blocxx::UInt32 value); 00046 BitExtension(const BitExtension& extension); 00047 virtual ~BitExtension(); 00048 00049 #ifndef SWIG 00050 00051 BitExtension& operator=(const BitExtension& extension); 00052 00053 #endif 00054 00055 void setValue(blocxx::UInt32 value); 00056 blocxx::UInt32 getValue() const; 00057 00058 virtual void commit2Config(CA& ca, Type type) const = 0; 00059 00060 virtual bool valid() const = 0; 00061 virtual blocxx::StringArray verify() const = 0; 00062 00063 virtual blocxx::StringArray dump() const = 0; 00064 00065 protected: 00066 blocxx::COWIntrusiveReference<BitExtensionImpl> m_impl; 00067 00068 }; 00069 00074 class KeyUsageExt : public BitExtension { 00075 public: 00076 enum KeyUsage { 00077 digitalSignature = 0x0080, // KU_DIGITAL_SIGNATURE 00078 nonRepudiation = 0x0040, // KU_NON_REPUDIATION 00079 keyEncipherment = 0x0020, // KU_KEY_ENCIPHERMENT 00080 dataEncipherment = 0x0010, // KU_DATA_ENCIPHERMENT 00081 keyAgreement = 0x0008, // KU_KEY_AGREEMENT 00082 keyCertSign = 0x0004, // KU_KEY_CERT_SIGN 00083 cRLSign = 0x0002, // KU_CRL_SIGN 00084 encipherOnly = 0x0001, // KU_ENCIPHER_ONLY 00085 decipherOnly = 0x8000 // KU_DECIPHER_ONLY 00086 }; 00087 00088 KeyUsageExt(); 00089 KeyUsageExt(CAConfig* caConfig, Type type); 00090 00094 KeyUsageExt(blocxx::UInt32 keyUsage); 00095 KeyUsageExt(const KeyUsageExt& extension); 00096 virtual ~KeyUsageExt(); 00097 00098 #ifndef SWIG 00099 00100 KeyUsageExt& operator=(const KeyUsageExt& extension); 00101 00102 #endif 00103 00107 void setKeyUsage(blocxx::UInt32 keyUsage); 00108 00112 blocxx::UInt32 getKeyUsage() const; 00113 00117 bool isEnabledFor(KeyUsage ku) const; 00118 00125 virtual void commit2Config(CA& ca, Type type) const ; 00126 00132 virtual bool valid() const; 00133 00141 virtual blocxx::StringArray verify() const; 00142 00146 virtual blocxx::StringArray dump() const; 00147 00148 private: 00149 bool validKeyUsage(blocxx::UInt32 keyUsage) const; 00150 }; 00151 00156 class NsCertTypeExt : public BitExtension { 00157 public: 00158 enum NsCertType { 00159 client = 0x0080, // NS_SSL_CLIENT 00160 server = 0x0040, // NS_SSL_SERVER 00161 email = 0x0020, // NS_SMIME 00162 objsign = 0x0010, // NS_OBJSIGN 00163 reserved = 0x0008, // ?? 00164 sslCA = 0x0004, // NS_SSL_CA 00165 emailCA = 0x0002, // NS_SMIME_CA 00166 objCA = 0x0001 // NS_OBJSIGN_CA 00167 }; 00168 00169 NsCertTypeExt(); 00170 NsCertTypeExt(CAConfig* caConfig, Type type); 00171 00175 NsCertTypeExt(blocxx::UInt32 nsCertTypes); 00176 NsCertTypeExt(const NsCertTypeExt& extension); 00177 virtual ~NsCertTypeExt(); 00178 00179 #ifndef SWIG 00180 00181 NsCertTypeExt& operator=(const NsCertTypeExt& extension); 00182 00183 #endif 00184 00188 void setNsCertType(blocxx::UInt32 nsCertTypes); 00189 00193 blocxx::UInt32 getNsCertType() const; 00194 00198 bool isEnabledFor(NsCertType nsCertType) const; 00199 00206 virtual void commit2Config(CA& ca, Type type) const; 00207 00213 virtual bool valid() const; 00214 00222 virtual blocxx::StringArray verify() const; 00223 00227 virtual blocxx::StringArray dump() const; 00228 }; 00229 00230 } 00231 } 00232 00233 #endif // LIMAL_CA_MGM_BIT_EXTENSIONS_HPP
1.7.5.1