00001 /*---------------------------------------------------------------------\ 00002 | | 00003 | _ _ _ _ __ _ | 00004 | | | | | | \_/ | / \ | | | 00005 | | | | | | |_| | / /\ \ | | | 00006 | | |__ | | | | | | / ____ \ | |__ | 00007 | |____||_| |_| |_|/ / \ \|____| | 00008 | | 00009 | ca-mgm library | 00010 | | 00011 | (C) SUSE Linux Products GmbH | 00012 \----------------------------------------------------------------------/ 00013 00014 File: X509v3CertificateIssueExtensions.hpp 00015 00016 Author: <Michael Calmer> <mc@suse.de> 00017 Maintainer: <Michael Calmer> <mc@suse.de> 00018 00019 Purpose: 00020 00021 /-*/ 00022 00023 #ifndef LIMAL_CA_MGM_X509V_CERTIFICATE_ISSUE_EXTENSIONS_HPP 00024 #define LIMAL_CA_MGM_X509V_CERTIFICATE_ISSUE_EXTENSIONS_HPP 00025 00026 #include <limal/ca-mgm/config.h> 00027 #include <limal/ca-mgm/CommonData.hpp> 00028 #include <limal/ca-mgm/StringExtensions.hpp> 00029 #include <limal/ca-mgm/BitExtensions.hpp> 00030 #include <limal/ca-mgm/ExtendedKeyUsageExt.hpp> 00031 #include <limal/ca-mgm/BasicConstraintsExtension.hpp> 00032 #include <limal/ca-mgm/SubjectKeyIdentifierExtension.hpp> 00033 #include <limal/ca-mgm/SubjectKeyIdentifierExtension.hpp> 00034 #include <limal/ca-mgm/AuthorityKeyIdentifierGenerateExtension.hpp> 00035 #include <limal/ca-mgm/SubjectAlternativeNameExtension.hpp> 00036 #include <limal/ca-mgm/IssuerAlternativeNameExtension.hpp> 00037 #include <limal/ca-mgm/AuthorityInfoAccessExtension.hpp> 00038 #include <limal/ca-mgm/CRLDistributionPointsExtension.hpp> 00039 #include <limal/ca-mgm/CertificatePoliciesExtension.hpp> 00040 #include <blocxx/COWIntrusiveReference.hpp> 00041 00042 namespace LIMAL_NAMESPACE 00043 { 00044 namespace CA_MGM_NAMESPACE 00045 { 00046 00047 class CA; 00048 class CAConfig; 00049 class X509v3CertificateIssueExtsImpl; 00050 00056 class X509v3CertificateIssueExts { 00057 public: 00058 X509v3CertificateIssueExts(); 00059 X509v3CertificateIssueExts(CAConfig* caConfig, Type type); 00060 X509v3CertificateIssueExts(const X509v3CertificateIssueExts& extensions); 00061 virtual ~X509v3CertificateIssueExts(); 00062 00063 #ifndef SWIG 00064 00065 X509v3CertificateIssueExts& 00066 operator=(const X509v3CertificateIssueExts& extensions); 00067 00068 #endif 00069 00070 void 00071 setNsBaseUrl(const NsBaseUrlExt &ext); 00072 00073 NsBaseUrlExt 00074 getNsBaseUrl() const; 00075 00076 NsBaseUrlExt& 00077 nsBaseUrl(); 00078 00079 void 00080 setNsRevocationUrl(const NsRevocationUrlExt &ext); 00081 00082 NsRevocationUrlExt 00083 getNsRevocationUrl() const; 00084 00085 NsRevocationUrlExt& 00086 nsRevocationUrl(); 00087 00088 void 00089 setNsCaRevocationUrl(const NsCaRevocationUrlExt &ext); 00090 00091 NsCaRevocationUrlExt 00092 getNsCaRevocationUrl() const; 00093 00094 NsCaRevocationUrlExt& 00095 nsCaRevocationUrl(); 00096 00097 void 00098 setNsRenewalUrl(const NsRenewalUrlExt &ext); 00099 00100 NsRenewalUrlExt 00101 getNsRenewalUrl() const; 00102 00103 NsRenewalUrlExt& 00104 nsRenewalUrl(); 00105 00106 void 00107 setNsCaPolicyUrl(const NsCaPolicyUrlExt &ext); 00108 00109 NsCaPolicyUrlExt 00110 getNsCaPolicyUrl() const; 00111 00112 NsCaPolicyUrlExt& 00113 nsCaPolicyUrl(); 00114 00115 void 00116 setNsSslServerName(const NsSslServerNameExt &ext); 00117 00118 NsSslServerNameExt 00119 getNsSslServerName() const; 00120 00121 NsSslServerNameExt& 00122 nsSslServerName(); 00123 00124 void 00125 setNsComment(const NsCommentExt &ext); 00126 00127 NsCommentExt 00128 getNsComment() const; 00129 00130 NsCommentExt& 00131 nsComment(); 00132 00133 void 00134 setNsCertType(const NsCertTypeExt &ext); 00135 00136 NsCertTypeExt 00137 getNsCertType() const; 00138 00139 NsCertTypeExt& 00140 nsCertType(); 00141 00142 void 00143 setKeyUsage(const KeyUsageExt &ext); 00144 00145 KeyUsageExt 00146 getKeyUsage() const; 00147 00148 KeyUsageExt& 00149 keyUsage(); 00150 00151 void 00152 setBasicConstraints(const BasicConstraintsExt &ext); 00153 00154 BasicConstraintsExt 00155 getBasicConstraints() const; 00156 00157 BasicConstraintsExt& 00158 basicConstraints(); 00159 00160 void 00161 setExtendedKeyUsage(const ExtendedKeyUsageExt &ext); 00162 00163 ExtendedKeyUsageExt 00164 getExtendedKeyUsage() const; 00165 00166 ExtendedKeyUsageExt& 00167 extendedKeyUsage(); 00168 00169 void 00170 setSubjectKeyIdentifier(const SubjectKeyIdentifierExt &ext); 00171 00172 SubjectKeyIdentifierExt 00173 getSubjectKeyIdentifier() const; 00174 00175 SubjectKeyIdentifierExt& 00176 subjectKeyIdentifier(); 00177 00178 void 00179 setAuthorityKeyIdentifier(const AuthorityKeyIdentifierGenerateExt &ext); 00180 00181 AuthorityKeyIdentifierGenerateExt 00182 getAuthorityKeyIdentifier() const; 00183 00184 AuthorityKeyIdentifierGenerateExt& 00185 authorityKeyIdentifier(); 00186 00187 void 00188 setSubjectAlternativeName(const SubjectAlternativeNameExt &ext); 00189 00190 SubjectAlternativeNameExt 00191 getSubjectAlternativeName() const; 00192 00193 SubjectAlternativeNameExt& 00194 subjectAlternativeName(); 00195 00196 void 00197 setIssuerAlternativeName(const IssuerAlternativeNameExt &ext); 00198 00199 IssuerAlternativeNameExt 00200 getIssuerAlternativeName() const; 00201 00202 IssuerAlternativeNameExt& 00203 issuerAlternativeName(); 00204 00205 void 00206 setAuthorityInfoAccess(const AuthorityInfoAccessExt &ext); 00207 00208 AuthorityInfoAccessExt 00209 getAuthorityInfoAccess() const; 00210 00211 AuthorityInfoAccessExt& 00212 authorityInfoAccess(); 00213 00214 void 00215 setCRLDistributionPoints(const CRLDistributionPointsExt &ext); 00216 00217 CRLDistributionPointsExt 00218 getCRLDistributionPoints() const; 00219 00220 CRLDistributionPointsExt& 00221 crlDistributionPoints(); 00222 00223 void 00224 setCertificatePolicies(const CertificatePoliciesExt &ext); 00225 00226 CertificatePoliciesExt 00227 getCertificatePolicies() const; 00228 00229 CertificatePoliciesExt& 00230 certificatePolicies(); 00231 00232 void 00233 commit2Config(CA& ca, Type type) const; 00234 00235 virtual bool 00236 valid() const; 00237 00238 virtual blocxx::StringArray 00239 verify() const; 00240 00241 virtual blocxx::StringArray 00242 dump() const; 00243 00244 private: 00245 blocxx::COWIntrusiveReference<X509v3CertificateIssueExtsImpl> m_impl; 00246 00247 }; 00248 00249 } 00250 } 00251 00252 #endif // LIMAL_CA_MGM_X509V_CERTIFICATE_ISSUE_EXTENSIONS_HPP