00001 /*---------------------------------------------------------------------\ 00002 | | 00003 | _ _ _ _ __ _ | 00004 | | | | | | \_/ | / \ | | | 00005 | | | | | | |_| | / /\ \ | | | 00006 | | |__ | | | | | | / ____ \ | |__ | 00007 | |____||_| |_| |_|/ / \ \|____| | 00008 | | 00009 | ca-mgm library | 00010 | | 00011 | (C) SUSE Linux Products GmbH | 00012 \----------------------------------------------------------------------/ 00013 00014 File: X509v3RequestExtensions.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_X509V3_REQUEST_EXTENSIONS_HPP 00023 #define LIMAL_CA_MGM_X509V3_REQUEST_EXTENSIONS_HPP 00024 00025 #include <limal/ca-mgm/config.h> 00026 #include <limal/ca-mgm/CommonData.hpp> 00027 #include <limal/ca-mgm/StringExtensions.hpp> 00028 #include <limal/ca-mgm/BitExtensions.hpp> 00029 #include <limal/ca-mgm/ExtendedKeyUsageExt.hpp> 00030 #include <limal/ca-mgm/BasicConstraintsExtension.hpp> 00031 #include <limal/ca-mgm/SubjectKeyIdentifierExtension.hpp> 00032 #include <limal/ca-mgm/SubjectAlternativeNameExtension.hpp> 00033 #include <blocxx/COWIntrusiveReference.hpp> 00034 00035 namespace LIMAL_NAMESPACE { 00036 00037 namespace CA_MGM_NAMESPACE { 00038 00039 class CA; 00040 class CAConfig; 00041 class X509v3RequestExtsImpl; 00042 00049 class X509v3RequestExts { 00050 00051 public: 00052 X509v3RequestExts(); 00053 X509v3RequestExts(CAConfig* caConfig, Type type); 00054 X509v3RequestExts(const X509v3RequestExts& extensions); 00055 virtual ~X509v3RequestExts(); 00056 00057 #ifndef SWIG 00058 00059 X509v3RequestExts& 00060 operator=(const X509v3RequestExts& extensions); 00061 00062 #endif 00063 00064 void 00065 setNsSslServerName(const NsSslServerNameExt &ext); 00066 00067 NsSslServerNameExt 00068 getNsSslServerName() const; 00069 00070 NsSslServerNameExt& 00071 nsSslServerName(); 00072 00073 void 00074 setNsComment(const NsCommentExt &ext); 00075 00076 NsCommentExt 00077 getNsComment() const; 00078 00079 NsCommentExt& 00080 nsComment(); 00081 00082 void 00083 setNsCertType(const NsCertTypeExt &ext); 00084 00085 NsCertTypeExt 00086 getNsCertType() const; 00087 00088 NsCertTypeExt& 00089 nsCertType(); 00090 00091 void 00092 setKeyUsage(const KeyUsageExt &ext); 00093 00094 KeyUsageExt 00095 getKeyUsage() const; 00096 00097 KeyUsageExt& 00098 keyUsage(); 00099 00100 void 00101 setBasicConstraints(const BasicConstraintsExt &ext); 00102 00103 BasicConstraintsExt 00104 getBasicConstraints() const; 00105 00106 BasicConstraintsExt& 00107 basicConstraints(); 00108 00109 void 00110 setExtendedKeyUsage(const ExtendedKeyUsageExt &ext); 00111 00112 ExtendedKeyUsageExt 00113 getExtendedKeyUsage() const; 00114 00115 ExtendedKeyUsageExt& 00116 extendedKeyUsage(); 00117 00118 void 00119 setSubjectKeyIdentifier(const SubjectKeyIdentifierExt &ext); 00120 00121 SubjectKeyIdentifierExt 00122 getSubjectKeyIdentifier() const; 00123 00124 SubjectKeyIdentifierExt& 00125 subjectKeyIdentifier(); 00126 00127 void 00128 setSubjectAlternativeName(const SubjectAlternativeNameExt &ext); 00129 00130 SubjectAlternativeNameExt 00131 getSubjectAlternativeName() const; 00132 00133 SubjectAlternativeNameExt& 00134 subjectAlternativeName(); 00135 00136 void 00137 commit2Config(CA& ca, Type type) const; 00138 00139 virtual bool 00140 valid() const; 00141 00142 virtual blocxx::StringArray 00143 verify() const; 00144 00145 virtual blocxx::StringArray 00146 dump() const; 00147 00148 protected: 00149 blocxx::COWIntrusiveReference<X509v3RequestExtsImpl> m_impl; 00150 00151 }; 00152 00153 } 00154 } 00155 00156 #endif // LIMAL_CA_MGM_X509V3_REQUEST_EXTENSIONS_HPP