Botan 2.13.0 Crypto and TLS for C++11

- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

pkcs10.h
Go to the documentation of this file.
1 /*
2 * PKCS #10
3 * (C) 1999-2007 Jack Lloyd
4 * (C) 2016 René Korthaus, Rohde & Schwarz Cybersecurity
5 *
6 * Botan is released under the Simplified BSD License (see license.txt)
7 */
8
9 #ifndef BOTAN_PKCS10_H_
10 #define BOTAN_PKCS10_H_
11
12 #include <botan/x509_obj.h>
13 #include <botan/x509_dn.h>
14 #include <botan/key_constraint.h>
15 #include <botan/asn1_attribute.h>
16 #include <botan/asn1_alt_name.h>
17 #include <vector>
18
19 namespace Botan {
20
21 class Private_Key;
22 class Extensions;
23 struct PKCS10_Data;
24
25 /**
26 * PKCS #10 Certificate Request.
27 */
28 class BOTAN_PUBLIC_API(2,0) PKCS10_Request final : public X509_Object
29 {
30 public:
31 /**
32 * Get the subject public key.
33 * @return subject public key
34 */
35 Public_Key* subject_public_key() const;
36
37 /**
38 * Get the raw DER encoded public key.
39 * @return raw DER encoded public key
40 */
41 const std::vector<uint8_t>& raw_public_key() const;
42
43 /**
44 * Get the subject DN.
45 * @return subject DN
46 */
47 const X509_DN& subject_dn() const;
48
49 /**
50 * Get the subject alternative name.
51 * @return subject alternative name.
52 */
53 const AlternativeName& subject_alt_name() const;
54
55 /**
56 * Get the key constraints for the key associated with this
57 * PKCS#10 object.
58 * @return key constraints
59 */
60 Key_Constraints constraints() const;
61
62 /**
63 * Get the extendend key constraints (if any).
64 * @return extended key constraints
65 */
66 std::vector<OID> ex_constraints() const;
67
68 /**
69 * Find out whether this is a CA request.
70 * @result true if it is a CA request, false otherwise.
71 */
72 bool is_CA() const;
73
74 /**
75 * Return the constraint on the path length defined
76 * in the BasicConstraints extension.
77 * @return path limit
78 */
79 size_t path_limit() const;
80
81 /**
82 * Get the challenge password for this request
83 * @return challenge password for this request
84 */
85 std::string challenge_password() const;
86
87 /**
88 * Get the X509v3 extensions.
89 * @return X509v3 extensions
90 */
91 const Extensions& extensions() const;
92
93 /**
94 * Create a PKCS#10 Request from a data source.
95 * @param source the data source providing the DER encoded request
96 */
97 explicit PKCS10_Request(DataSource& source);
98
99 #if defined(BOTAN_TARGET_OS_HAS_FILESYSTEM)
100 /**
101 * Create a PKCS#10 Request from a file.
102 * @param filename the name of the file containing the DER or PEM
103 * encoded request file
104 */
105 explicit PKCS10_Request(const std::string& filename);
106 #endif
107
108 /**
109 * Create a PKCS#10 Request from binary data.
110 * @param vec a std::vector containing the DER value
111 */
112 explicit PKCS10_Request(const std::vector<uint8_t>& vec);
113
114 /**
115 * Create a new PKCS10 certificate request
116 * @param key the key that will be included in the certificate request
117 * @param subject_dn the DN to be placed in the request
118 * @param extensions extensions to include in the request
119 * @param hash_fn the hash function to use to create the signature
120 * @param rng a random number generator
121 * @param padding_scheme if set specifies the padding scheme, otherwise an
122 * algorithm-specific default is used.
123 * @param challenge a challenge string to be included in the PKCS10 request,
124 * sometimes used for revocation purposes.
125 */
126 static PKCS10_Request create(const Private_Key& key,
127 const X509_DN& subject_dn,
128 const Extensions& extensions,
129 const std::string& hash_fn,
130 RandomNumberGenerator& rng,
131 const std::string& padding_scheme = "",
132 const std::string& challenge = "");
133
134 private:
135 std::string PEM_label() const override;
136
137 std::vector<std::string> alternate_PEM_labels() const override;
138
139 void force_decode() override;
140
141 const PKCS10_Data& data() const;
142
143 std::shared_ptr<PKCS10_Data> m_data;
144 };
145
146 }
147
148 #endif
Botan::RandomNumberGenerator
Definition: rng.h:24
Botan::Private_Key
Definition: pk_keys.h:181
final
int(* final)(unsigned char *, CTX *)
Definition: commoncrypto_hash.cpp:28
BOTAN_PUBLIC_API
#define BOTAN_PUBLIC_API(maj, min)
Definition: compiler.h:31
Botan::Extensions
Definition: x509_ext.h:90
Botan::DataSource
Definition: data_src.h:21
Botan::X509_Object
Definition: x509_obj.h:26
Botan::X509_DN
Definition: x509_dn.h:24
Botan::PKCS10_Request
Definition: pkcs10.h:28
Botan
Definition: alg_id.cpp:13
Botan::Public_Key
Definition: pk_keys.h:29
Botan::Key_Constraints
Key_Constraints
Definition: key_constraint.h:21
Botan::AlternativeName
Definition: asn1_alt_name.h:21