limal-ca-mgm
X509v3RequestExtensions.hpp
Go to the documentation of this file.
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