8 #ifndef BOTAN_X509_EXTENSIONS_H__ 9 #define BOTAN_X509_EXTENSIONS_H__ 11 #include <botan/asn1_int.h> 12 #include <botan/asn1_oid.h> 13 #include <botan/asn1_obj.h> 14 #include <botan/datastor.h> 15 #include <botan/pubkey_enums.h> 48 virtual std::string config_id()
const = 0;
53 virtual std::string oid_name()
const = 0;
84 std::vector<std::pair<Certificate_Extension*, bool> > extensions;
88 namespace Cert_Extension {
90 static const size_t NO_CERT_PATH_LIMIT = 0xFFFFFFF0;
102 is_ca(ca), path_limit(limit) {}
105 size_t get_path_limit()
const;
107 std::string config_id()
const {
return "basic_constraints"; }
108 std::string oid_name()
const {
return "X509v3.BasicConstraints"; }
130 std::string config_id()
const {
return "key_usage"; }
131 std::string oid_name()
const {
return "X509v3.KeyUsage"; }
133 bool should_encode()
const {
return (constraints !=
NO_CONSTRAINTS); }
154 std::string config_id()
const {
return "subject_key_id"; }
155 std::string oid_name()
const {
return "X509v3.SubjectKeyIdentifier"; }
157 bool should_encode()
const {
return (key_id.size() > 0); }
178 std::string config_id()
const {
return "authority_key_id"; }
179 std::string oid_name()
const {
return "X509v3.AuthorityKeyIdentifier"; }
181 bool should_encode()
const {
return (key_id.size() > 0); }
199 const std::string&,
const std::string&);
203 std::string config_id()
const {
return config_name_str; }
204 std::string oid_name()
const {
return oid_name_str; }
206 bool should_encode()
const {
return alt_name.has_items(); }
211 std::string config_name_str, oid_name_str;
252 std::string config_id()
const {
return "extended_key_usage"; }
253 std::string oid_name()
const {
return "X509v3.ExtendedKeyUsage"; }
255 bool should_encode()
const {
return (oids.size() > 0); }
260 std::vector<OID> oids;
277 std::string config_id()
const {
return "policy_info"; }
278 std::string oid_name()
const {
return "X509v3.CertificatePolicies"; }
280 bool should_encode()
const {
return (oids.size() > 0); }
285 std::vector<OID> oids;
299 size_t get_crl_number()
const;
301 std::string config_id()
const {
return "crl_number"; }
302 std::string oid_name()
const {
return "X509v3.CRLNumber"; }
304 bool should_encode()
const {
return has_value; }
325 std::string config_id()
const {
return "crl_reason"; }
326 std::string oid_name()
const {
return "X509v3.ReasonCode"; }
328 bool should_encode()
const {
return (reason !=
UNSPECIFIED); }
Extended_Key_Usage * copy() const
Certificate_Policies * copy() const
CRL_Code get_reason() const
Key_Constraints get_constraints() const
virtual ~Certificate_Extension()
Subject_Alternative_Name * copy() const
Certificate_Policies(const std::vector< OID > &o)
Basic_Constraints(bool ca=false, size_t limit=0)
MemoryVector< byte > get_key_id() const
Basic_Constraints * copy() const
Authority_Key_ID(const MemoryRegion< byte > &k)
Subject_Key_ID * copy() const
AlternativeName get_alt_name() const
Extended_Key_Usage(const std::vector< OID > &o)
Authority_Key_ID * copy() const
std::vector< OID > get_oids() const
std::vector< OID > get_oids() const
Key_Usage(Key_Constraints c=NO_CONSTRAINTS)
CRL_ReasonCode * copy() const
Issuer_Alternative_Name * copy() const
MemoryVector< byte > get_key_id() const
CRL_ReasonCode(CRL_Code r=UNSPECIFIED)
virtual bool should_encode() const