libcamgm
BitExtensions.hpp
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | |
3 | _ _ _ _ __ _ |
4 | | | | | | \_/ | / \ | | |
5 | | | | | | |_| | / /\ \ | | |
6 | | |__ | | | | | | / ____ \ | |__ |
7 | |____||_| |_| |_|/ / \ \|____| |
8 | |
9 | ca-mgm library |
10 | |
11 | (C) SUSE Linux Products GmbH |
12 \----------------------------------------------------------------------/
13 
14  File: BitExtensions.hpp
15 
16  Author: <Michael Calmer> <mc@suse.de>
17  Maintainer: <Michael Calmer> <mc@suse.de>
18 
19  Purpose:
20 
21 /-*/
22 #ifndef CA_MGM_BIT_EXTENSIONS_HPP
23 #define CA_MGM_BIT_EXTENSIONS_HPP
24 
25 #include <ca-mgm/config.h>
26 #include <ca-mgm/CommonData.hpp>
27 #include <ca-mgm/ExtensionBase.hpp>
28 #include <ca-mgm/PtrTypes.hpp>
29 
30 namespace CA_MGM_NAMESPACE {
31 
32  class CA;
33  class CAConfig;
34  class BitExtensionImpl;
35 
39  class BitExtension : public ExtensionBase
40  {
41  public:
42  BitExtension();
43  BitExtension(uint32_t value);
44  BitExtension(const BitExtension& extension);
45  virtual ~BitExtension();
46 
47 #ifndef SWIG
48 
49  BitExtension& operator=(const BitExtension& extension);
50 
51 #endif
52 
53  void setValue(uint32_t value);
54  uint32_t getValue() const;
55 
56  virtual void commit2Config(CA& ca, Type type) const = 0;
57 
58  virtual bool valid() const = 0;
59  virtual std::vector<std::string> verify() const = 0;
60 
61  virtual std::vector<std::string> dump() const = 0;
62 
63  protected:
64  //ca_mgm::RWCOW_pointer<BitExtensionImpl> m_impl;
66 
67  };
68 
73  class KeyUsageExt : public BitExtension {
74  public:
75  enum KeyUsage {
76  digitalSignature = 0x0080, // KU_DIGITAL_SIGNATURE
77  nonRepudiation = 0x0040, // KU_NON_REPUDIATION
78  keyEncipherment = 0x0020, // KU_KEY_ENCIPHERMENT
79  dataEncipherment = 0x0010, // KU_DATA_ENCIPHERMENT
80  keyAgreement = 0x0008, // KU_KEY_AGREEMENT
81  keyCertSign = 0x0004, // KU_KEY_CERT_SIGN
82  cRLSign = 0x0002, // KU_CRL_SIGN
83  encipherOnly = 0x0001, // KU_ENCIPHER_ONLY
84  decipherOnly = 0x8000 // KU_DECIPHER_ONLY
85  };
86 
87  KeyUsageExt();
88  KeyUsageExt(CAConfig* caConfig, Type type);
89 
93  KeyUsageExt(uint32_t keyUsage);
94  KeyUsageExt(const KeyUsageExt& extension);
95  virtual ~KeyUsageExt();
96 
97 #ifndef SWIG
98 
99  KeyUsageExt& operator=(const KeyUsageExt& extension);
100 
101 #endif
102 
106  void setKeyUsage(uint32_t keyUsage);
107 
111  uint32_t getKeyUsage() const;
112 
116  bool isEnabledFor(KeyUsage ku) const;
117 
124  virtual void commit2Config(CA& ca, Type type) const ;
125 
131  virtual bool valid() const;
132 
140  virtual std::vector<std::string> verify() const;
141 
145  virtual std::vector<std::string> dump() const;
146 
147  private:
148  bool validKeyUsage(uint32_t keyUsage) const;
149  };
150 
155  class NsCertTypeExt : public BitExtension {
156  public:
157  enum NsCertType {
158  client = 0x0080, // NS_SSL_CLIENT
159  server = 0x0040, // NS_SSL_SERVER
160  email = 0x0020, // NS_SMIME
161  objsign = 0x0010, // NS_OBJSIGN
162  reserved = 0x0008, // ??
163  sslCA = 0x0004, // NS_SSL_CA
164  emailCA = 0x0002, // NS_SMIME_CA
165  objCA = 0x0001 // NS_OBJSIGN_CA
166  };
167 
168  NsCertTypeExt();
169  NsCertTypeExt(CAConfig* caConfig, Type type);
170 
174  NsCertTypeExt(uint32_t nsCertTypes);
175  NsCertTypeExt(const NsCertTypeExt& extension);
176  virtual ~NsCertTypeExt();
177 
178 #ifndef SWIG
179 
180  NsCertTypeExt& operator=(const NsCertTypeExt& extension);
181 
182 #endif
183 
187  void setNsCertType(uint32_t nsCertTypes);
188 
192  uint32_t getNsCertType() const;
193 
197  bool isEnabledFor(NsCertType nsCertType) const;
198 
205  virtual void commit2Config(CA& ca, Type type) const;
206 
212  virtual bool valid() const;
213 
221  virtual std::vector<std::string> verify() const;
222 
226  virtual std::vector<std::string> dump() const;
227  };
228 
229 }
230 
231 #endif // CA_MGM_BIT_EXTENSIONS_HPP
KeyUsage
Definition: BitExtensions.hpp:75
Definition: ExtensionBase.hpp:34
ca_mgm::RWCOW_pointer< BitExtensionImpl > m_impl
Definition: BitExtensions.hpp:65
Managing a CA repository.
Definition: CA.hpp:54
Definition: CAConfig.hpp:43
Definition: BitExtensions.hpp:73
Type
Definition: CommonData.hpp:39
Definition: BitExtensions.hpp:155
NsCertType
Definition: BitExtensions.hpp:157
bool isEnabledFor(LogLevel level_r)
Definition: BitExtensions.hpp:39