Botan 3.9.0
Crypto and TLS for C&
Botan::X509_Cert_Options Class Referencefinal

#include <x509self.h>

Public Member Functions

void add_constraints (Key_Constraints constr)
void add_ex_constraint (const OID &oid)
void add_ex_constraint (std::string_view name)
void CA_key (size_t limit=1)
void not_after (std::string_view time)
void not_before (std::string_view time)
void set_padding_scheme (std::string_view scheme)
BOTAN_FUTURE_EXPLICIT X509_Cert_Options (std::string_view opts="", uint32_t expire_time=365 *24 *60 *60)

Public Attributes

std::string challenge
std::string common_name
Key_Constraints constraints
std::string country
std::string dns
std::string email
X509_Time end
std::vector< OIDex_constraints
Extensions extensions
std::string ip
bool is_CA = false
std::string locality
std::vector< std::string > more_dns
std::vector< std::string > more_org_units
std::string org_unit
std::string organization
std::string padding_scheme
size_t path_limit = 0
std::string serial_number
X509_Time start
std::string state
std::string uri
std::string xmpp

Detailed Description

Options for X.509 certificates.

Definition at line 23 of file x509self.h.

Constructor & Destructor Documentation

◆ X509_Cert_Options()

Botan::X509_Cert_Options::X509_Cert_Options ( std::string_view opts = "",
uint32_t expire_time = 365 * 24 * 60 * 60 )

Construct a new options object

Parameters
optsdefine the common name of this object. An example for this parameter would be "common_name/country/organization/organizational_unit".
expire_timethe expiration time (from the current clock in seconds)

Definition at line 65 of file x509opt.cpp.

65 {
66 auto now = std::chrono::system_clock::now();
67
68 start = X509_Time(now);
69 end = X509_Time(now + std::chrono::seconds(expiration_time));
70
71 if(initial_opts.empty()) {
72 return;
73 }
74
75 std::vector<std::string> parsed = split_on(initial_opts, '/');
76
77 if(parsed.size() > 4) {
78 throw Invalid_Argument("X.509 cert options: Too many names");
79 }
80
81 if(!parsed.empty()) {
82 common_name = parsed[0];
83 }
84 if(parsed.size() >= 2) {
85 country = parsed[1];
86 }
87 if(parsed.size() >= 3) {
88 organization = parsed[2];
89 }
90 if(parsed.size() == 4) {
91 org_unit = parsed[3];
92 }
93}
std::string common_name
Definition x509self.h:28
std::string organization
Definition x509self.h:38
ASN1_Time X509_Time
Definition asn1_obj.h:424
std::vector< std::string > split_on(std::string_view str, char delim)
Definition parsing.cpp:111

References common_name, country, end, org_unit, organization, Botan::split_on(), and start.

Member Function Documentation

◆ add_constraints()

void Botan::X509_Cert_Options::add_constraints ( Key_Constraints constr)

Add the key constraints of the KeyUsage extension.

Parameters
constrthe constraints to set

Definition at line 32 of file x509opt.cpp.

32 {
33 constraints = usage;
34}
Key_Constraints constraints
Definition x509self.h:127

References constraints.

◆ add_ex_constraint() [1/2]

void Botan::X509_Cert_Options::add_ex_constraint ( const OID & oid)

Add constraints to the ExtendedKeyUsage extension.

Parameters
oidthe oid to add

Definition at line 39 of file x509opt.cpp.

39 {
40 ex_constraints.push_back(oid);
41}
std::vector< OID > ex_constraints
Definition x509self.h:132

References ex_constraints.

◆ add_ex_constraint() [2/2]

void Botan::X509_Cert_Options::add_ex_constraint ( std::string_view name)

Add constraints to the ExtendedKeyUsage extension.

Parameters
namethe name to look up the oid to add

Definition at line 46 of file x509opt.cpp.

46 {
47 ex_constraints.push_back(OID::from_string(oid_str));
48}
static OID from_string(std::string_view str)
Definition asn1_oid.cpp:86

References ex_constraints, and Botan::OID::from_string().

◆ CA_key()

void Botan::X509_Cert_Options::CA_key ( size_t limit = 1)

Mark the certificate as a CA certificate and set the path limit.

Parameters
limitthe path limit to be set in the BasicConstraints extension.

Definition at line 53 of file x509opt.cpp.

53 {
54 is_CA = true;
55 path_limit = limit;
56}

References is_CA, and path_limit.

◆ not_after()

void Botan::X509_Cert_Options::not_after ( std::string_view time)

Set the notAfter of the certificate.

Parameters
timethe notAfter value of the certificate

Definition at line 25 of file x509opt.cpp.

25 {
26 end = X509_Time(time_string);
27}

References end.

◆ not_before()

void Botan::X509_Cert_Options::not_before ( std::string_view time)

Set the notBefore of the certificate.

Parameters
timethe notBefore value of the certificate

Definition at line 18 of file x509opt.cpp.

18 {
19 start = X509_Time(time_string);
20}

References start.

◆ set_padding_scheme()

void Botan::X509_Cert_Options::set_padding_scheme ( std::string_view scheme)

Choose a padding scheme different from the default for the key used.

Definition at line 58 of file x509opt.cpp.

58 {
59 padding_scheme = scheme;
60}
std::string padding_scheme
Definition x509self.h:122

References padding_scheme.

Member Data Documentation

◆ challenge

std::string Botan::X509_Cert_Options::challenge

the subject challenge password

Definition at line 98 of file x509self.h.

Referenced by Botan::X509::create_cert_req().

◆ common_name

std::string Botan::X509_Cert_Options::common_name

the subject common name

Definition at line 28 of file x509self.h.

Referenced by X509_Cert_Options().

◆ constraints

Key_Constraints Botan::X509_Cert_Options::constraints

The key constraints for the subject public key

Definition at line 127 of file x509self.h.

Referenced by add_constraints(), Botan::X509::create_cert_req(), and Botan::X509::create_self_signed_cert().

◆ country

std::string Botan::X509_Cert_Options::country

the subject counry

Definition at line 33 of file x509self.h.

Referenced by X509_Cert_Options().

◆ dns

std::string Botan::X509_Cert_Options::dns

the subject DNS

Definition at line 83 of file x509self.h.

◆ email

std::string Botan::X509_Cert_Options::email

the subject email adress

Definition at line 68 of file x509self.h.

◆ end

X509_Time Botan::X509_Cert_Options::end

the subject notAfter

Definition at line 107 of file x509self.h.

Referenced by Botan::X509::create_self_signed_cert(), not_after(), and X509_Cert_Options().

◆ ex_constraints

std::vector<OID> Botan::X509_Cert_Options::ex_constraints

The key extended constraints for the subject public key

Definition at line 132 of file x509self.h.

Referenced by add_ex_constraint(), add_ex_constraint(), Botan::X509::create_cert_req(), and Botan::X509::create_self_signed_cert().

◆ extensions

Extensions Botan::X509_Cert_Options::extensions

Additional X.509 extensions

Definition at line 137 of file x509self.h.

Referenced by Botan::X509::create_cert_req(), and Botan::X509::create_self_signed_cert().

◆ ip

std::string Botan::X509_Cert_Options::ip

the subject IPv4 address

Definition at line 78 of file x509self.h.

◆ is_CA

bool Botan::X509_Cert_Options::is_CA = false

Indicates whether the certificate request

Definition at line 112 of file x509self.h.

Referenced by CA_key(), Botan::X509::create_cert_req(), and Botan::X509::create_self_signed_cert().

◆ locality

std::string Botan::X509_Cert_Options::locality

the subject locality

Definition at line 53 of file x509self.h.

◆ more_dns

std::vector<std::string> Botan::X509_Cert_Options::more_dns

additional subject DNS entries.

Definition at line 88 of file x509self.h.

◆ more_org_units

std::vector<std::string> Botan::X509_Cert_Options::more_org_units

additional subject organizational units.

Definition at line 48 of file x509self.h.

◆ org_unit

std::string Botan::X509_Cert_Options::org_unit

the subject organizational unit

Definition at line 43 of file x509self.h.

Referenced by X509_Cert_Options().

◆ organization

std::string Botan::X509_Cert_Options::organization

the subject organization

Definition at line 38 of file x509self.h.

Referenced by X509_Cert_Options().

◆ padding_scheme

std::string Botan::X509_Cert_Options::padding_scheme

Padding scheme to use. If empty uses a default

Definition at line 122 of file x509self.h.

Referenced by Botan::X509::create_cert_req(), Botan::X509::create_self_signed_cert(), and set_padding_scheme().

◆ path_limit

size_t Botan::X509_Cert_Options::path_limit = 0

Indicates the BasicConstraints path limit

Definition at line 117 of file x509self.h.

Referenced by CA_key(), Botan::X509::create_cert_req(), and Botan::X509::create_self_signed_cert().

◆ serial_number

std::string Botan::X509_Cert_Options::serial_number

the subject serial number

Definition at line 63 of file x509self.h.

◆ start

X509_Time Botan::X509_Cert_Options::start

the subject notBefore

Definition at line 103 of file x509self.h.

Referenced by Botan::X509::create_self_signed_cert(), not_before(), and X509_Cert_Options().

◆ state

std::string Botan::X509_Cert_Options::state

the subject state

Definition at line 58 of file x509self.h.

◆ uri

std::string Botan::X509_Cert_Options::uri

the subject URI

Definition at line 73 of file x509self.h.

◆ xmpp

std::string Botan::X509_Cert_Options::xmpp

the subject XMPP

Definition at line 93 of file x509self.h.


The documentation for this class was generated from the following files: