8 #include <botan/x509self.h>
9 #include <botan/x509_ext.h>
10 #include <botan/x509_ca.h>
11 #include <botan/der_enc.h>
12 #include <botan/oids.h>
13 #include <botan/pipe.h>
23 void load_info(
const X509_Cert_Options& opts, X509_DN& subject_dn,
24 AlternativeName& subject_alt)
26 subject_dn.add_attribute(
"X520.CommonName", opts.common_name);
27 subject_dn.add_attribute(
"X520.Country", opts.country);
28 subject_dn.add_attribute(
"X520.State", opts.state);
29 subject_dn.add_attribute(
"X520.Locality", opts.locality);
30 subject_dn.add_attribute(
"X520.Organization", opts.organization);
31 subject_dn.add_attribute(
"X520.OrganizationalUnit", opts.org_unit);
32 subject_dn.add_attribute(
"X520.SerialNumber", opts.serial_number);
33 subject_alt = AlternativeName(opts.email, opts.uri, opts.dns, opts.ip);
47 const std::string& hash_fn,
58 load_info(opts, subject_dn, subject_alt);
84 subject_dn, subject_dn,
93 const std::string& hash_fn,
104 load_info(opts, subject_dn, subject_alt);
106 const size_t PKCS10_VERSION = 0;
PKCS10_Request create_cert_req(const X509_Cert_Options &opts, const Private_Key &key, const std::string &hash_fn, RandomNumberGenerator &rng)
SecureVector< byte > get_contents()
static X509_Certificate make_cert(PK_Signer *signer, RandomNumberGenerator &rng, const AlgorithmIdentifier &sig_algo, const MemoryRegion< byte > &pub_key, const X509_Time ¬_before, const X509_Time ¬_after, const X509_DN &issuer_dn, const X509_DN &subject_dn, const Extensions &extensions)
DER_Encoder & raw_bytes(const byte val[], size_t len)
MemoryVector< byte > BER_encode(const Public_Key &key)
DER_Encoder & end_explicit()
DER_Encoder & start_explicit(u16bit type_tag)
void add(Certificate_Extension *extn, bool critical=false)
DER_Encoder & encode(bool b)
RandomNumberGenerator * rng
Key_Constraints find_constraints(const Public_Key &pub_key, Key_Constraints limits)
std::string lookup(const OID &oid)
void encode(const Public_Key &key, Pipe &pipe, X509_Encoding encoding=PEM)
Key_Constraints constraints
static MemoryVector< byte > make_signed(class PK_Signer *signer, RandomNumberGenerator &rng, const AlgorithmIdentifier &alg_id, const MemoryRegion< byte > &tbs)
DER_Encoder & start_cons(ASN1_Tag type_tag, ASN1_Tag class_tag=UNIVERSAL)
void sanity_check() const
std::vector< OID > ex_constraints
PK_Signer * choose_sig_format(const Private_Key &key, const std::string &hash_fn, AlgorithmIdentifier &sig_algo)
X509_Certificate create_self_signed_cert(const X509_Cert_Options &opts, const Private_Key &key, const std::string &hash_fn, RandomNumberGenerator &rng)