@@ -145,47 +145,29 @@ struct FileOutput {
145
145
146
146
/// Process CLI args that assign two settings simultaneously
147
147
fn swizzle_args ( args : & mut Args ) {
148
- match & args. common_name {
149
- Some ( txt) => {
150
- args. ca_common_name = txt. clone ( ) ;
151
- args. srv_common_name = txt. clone ( ) ;
152
- }
153
- None => { }
148
+ if let Some ( txt) = & args. common_name {
149
+ args. ca_common_name = txt. clone ( ) ;
150
+ args. srv_common_name = txt. clone ( ) ;
154
151
}
155
- match & args. org {
156
- Some ( txt) => {
157
- args. ca_org = Some ( txt. clone ( ) ) ;
158
- args. srv_org = Some ( txt. clone ( ) ) ;
159
- }
160
- None => { }
152
+ if let Some ( txt) = & args. org {
153
+ args. ca_org = Some ( txt. clone ( ) ) ;
154
+ args. srv_org = Some ( txt. clone ( ) ) ;
161
155
}
162
- match & args. country {
163
- Some ( txt) => {
164
- args. ca_country = txt. clone ( ) ;
165
- args. srv_country = txt. clone ( ) ;
166
- }
167
- None => { }
156
+ if let Some ( txt) = & args. country {
157
+ args. ca_country = txt. clone ( ) ;
158
+ args. srv_country = txt. clone ( ) ;
168
159
}
169
- match & args. state {
170
- Some ( txt) => {
171
- args. ca_state = Some ( txt. clone ( ) ) ;
172
- args. srv_state = Some ( txt. clone ( ) ) ;
173
- }
174
- None => { }
160
+ if let Some ( txt) = & args. state {
161
+ args. ca_state = Some ( txt. clone ( ) ) ;
162
+ args. srv_state = Some ( txt. clone ( ) ) ;
175
163
}
176
- match & args. city {
177
- Some ( txt) => {
178
- args. ca_city = Some ( txt. clone ( ) ) ;
179
- args. srv_city = Some ( txt. clone ( ) ) ;
180
- }
181
- None => { }
164
+ if let Some ( txt) = & args. city {
165
+ args. ca_city = Some ( txt. clone ( ) ) ;
166
+ args. srv_city = Some ( txt. clone ( ) ) ;
182
167
}
183
- match & args. expire {
184
- Some ( val) => {
185
- args. ca_expire = * val;
186
- args. srv_expire = * val;
187
- }
188
- None => { }
168
+ if let Some ( val) = & args. expire {
169
+ args. ca_expire = * val;
170
+ args. srv_expire = * val;
189
171
}
190
172
}
191
173
@@ -198,35 +180,29 @@ fn generate_rsa_private_key() -> Result<PKey<Private>, ErrorStack> {
198
180
199
181
/// Create root CA certificate, given root CA private key
200
182
fn create_root_ca_certificate ( args : & Args , pkey : & PKey < Private > ) -> Result < X509 , ErrorStack > {
183
+ // Build the subject and issuer names.
201
184
let mut name_builder = X509NameBuilder :: new ( ) ?;
202
185
name_builder. append_entry_by_text ( "C" , & args. ca_country ) ?;
203
- match args. ca_state . clone ( ) {
204
- Some ( txt) => {
205
- name_builder. append_entry_by_text ( "ST" , & txt) ?;
206
- }
207
- None => { }
186
+ if let Some ( txt) = args. ca_state . clone ( ) {
187
+ name_builder. append_entry_by_text ( "ST" , & txt) ?;
208
188
}
209
- match args. ca_city . clone ( ) {
210
- Some ( txt) => {
211
- name_builder. append_entry_by_text ( "L" , & txt) ?;
212
- }
213
- None => { }
189
+ if let Some ( txt) = args. ca_city . clone ( ) {
190
+ name_builder. append_entry_by_text ( "L" , & txt) ?;
214
191
}
215
- match args. ca_org . clone ( ) {
216
- Some ( txt) => {
217
- name_builder. append_entry_by_text ( "O" , & txt) ?;
218
- }
219
- None => { }
192
+ if let Some ( txt) = args. ca_org . clone ( ) {
193
+ name_builder. append_entry_by_text ( "O" , & txt) ?;
220
194
}
221
195
name_builder. append_entry_by_text ( "CN" , & args. ca_common_name ) ?;
222
196
let name = name_builder. build ( ) ;
223
197
198
+ // Build base certificate settings
224
199
let mut builder = X509Builder :: new ( ) ?;
225
200
builder. set_version ( 2 ) ?;
226
201
builder. set_subject_name ( & name) ?;
227
202
builder. set_issuer_name ( & name) ?;
228
203
builder. set_pubkey ( pkey) ?;
229
204
205
+ // Set validity times for the certificate.
230
206
let not_before = Asn1Time :: days_from_now ( 0 ) ?;
231
207
let not_after = Asn1Time :: days_from_now ( args. ca_expire ) ?;
232
208
builder. set_not_before ( & not_before) ?;
@@ -268,28 +244,21 @@ fn create_root_ca_certificate(args: &Args, pkey: &PKey<Private>) -> Result<X509,
268
244
269
245
/// Generate TLS server cert signing request
270
246
fn generate_web_server_csr ( args : & Args , server_key : & PKey < Private > ) -> Result < X509Req , ErrorStack > {
247
+ // Create a new certificate signing request (CSR) builder.
271
248
let mut req_builder = X509ReqBuilder :: new ( ) ?;
272
249
req_builder. set_pubkey ( server_key) ?;
273
250
251
+ // Build the subject name.
274
252
let mut name_builder = X509NameBuilder :: new ( ) ?;
275
253
name_builder. append_entry_by_text ( "C" , & args. srv_country ) ?;
276
- match args. srv_state . clone ( ) {
277
- Some ( txt) => {
278
- name_builder. append_entry_by_text ( "ST" , & txt) ?;
279
- }
280
- None => { }
254
+ if let Some ( txt) = args. srv_state . clone ( ) {
255
+ name_builder. append_entry_by_text ( "ST" , & txt) ?;
281
256
}
282
- match args. srv_city . clone ( ) {
283
- Some ( txt) => {
284
- name_builder. append_entry_by_text ( "L" , & txt) ?;
285
- }
286
- None => { }
257
+ if let Some ( txt) = args. srv_city . clone ( ) {
258
+ name_builder. append_entry_by_text ( "L" , & txt) ?;
287
259
}
288
- match args. srv_org . clone ( ) {
289
- Some ( txt) => {
290
- name_builder. append_entry_by_text ( "O" , & txt) ?;
291
- }
292
- None => { }
260
+ if let Some ( txt) = args. srv_org . clone ( ) {
261
+ name_builder. append_entry_by_text ( "O" , & txt) ?;
293
262
}
294
263
name_builder. append_entry_by_text ( "CN" , & args. srv_common_name ) ?;
295
264
let name = name_builder. build ( ) ;
@@ -299,6 +268,7 @@ fn generate_web_server_csr(args: &Args, server_key: &PKey<Private>) -> Result<X5
299
268
// Sign the CSR with the server's private key
300
269
req_builder. sign ( server_key, MessageDigest :: sha256 ( ) ) ?;
301
270
271
+ // Return the signed CSR
302
272
let csr = req_builder. build ( ) ;
303
273
Ok ( csr)
304
274
}
0 commit comments