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