Skip to content

Commit 87ca127

Browse files
committed
Add KeyPair::generate() method
1 parent 684d79e commit 87ca127

File tree

9 files changed

+30
-27
lines changed

9 files changed

+30
-27
lines changed

rcgen/examples/sign-leaf-with-ca.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ fn new_ca() -> Certificate {
3333
params.not_before = yesterday;
3434
params.not_after = tomorrow;
3535

36-
let key_pair = KeyPair::generate_for(&rcgen::PKCS_ECDSA_P256_SHA256).unwrap();
36+
let key_pair = KeyPair::generate().unwrap();
3737
Certificate::generate_self_signed(params, &key_pair).unwrap()
3838
}
3939

@@ -50,7 +50,7 @@ fn new_end_entity() -> Certificate {
5050
params.not_before = yesterday;
5151
params.not_after = tomorrow;
5252

53-
let key_pair = KeyPair::generate_for(&rcgen::PKCS_ECDSA_P256_SHA256).unwrap();
53+
let key_pair = KeyPair::generate().unwrap();
5454
Certificate::generate_self_signed(params, &key_pair).unwrap()
5555
}
5656

rcgen/examples/simple.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
1919
SanType::DnsName("localhost".to_string()),
2020
];
2121

22-
let key_pair = KeyPair::generate_for(&rcgen::PKCS_ECDSA_P256_SHA256)?;
22+
let key_pair = KeyPair::generate()?;
2323
let cert = Certificate::generate_self_signed(params, &key_pair)?;
2424

2525
let pem_serialized = cert.pem();

rcgen/src/crl.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ use crate::{Certificate, Error, KeyIdMethod, KeyUsagePurpose, SerialNumber};
2626
/// let mut issuer_params = CertificateParams::new(vec!["crl.issuer.example.com".to_string()]);
2727
/// issuer_params.is_ca = IsCa::Ca(BasicConstraints::Unconstrained);
2828
/// issuer_params.key_usages = vec![KeyUsagePurpose::KeyCertSign, KeyUsagePurpose::DigitalSignature, KeyUsagePurpose::CrlSign];
29-
/// let key_pair = KeyPair::generate_for(&PKCS_ECDSA_P256_SHA256).unwrap();
29+
/// let key_pair = KeyPair::generate().unwrap();
3030
/// let issuer = Certificate::generate_self_signed(issuer_params, &key_pair).unwrap();
3131
/// // Describe a revoked certificate.
3232
/// let revoked_cert = RevokedCertParams{

rcgen/src/key_pair.rs

+5
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ pub struct KeyPair {
5656
}
5757

5858
impl KeyPair {
59+
/// Generate a new random PKCS_ECDSA_P256_SHA256 key pair
60+
pub fn generate() -> Result<Self, Error> {
61+
Self::generate_for(&PKCS_ECDSA_P256_SHA256)
62+
}
63+
5964
/// Generate a new random key pair for the specified signature algorithm
6065
///
6166
/// If you're not sure which algorithm to use, [`PKCS_ECDSA_P256_SHA256`] is a good choice.

rcgen/src/lib.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use rcgen::{generate_simple_self_signed, KeyPair};
2121
let subject_alt_names = vec!["hello.world.example".to_string(),
2222
"localhost".to_string()];
2323
24-
let key_pair = KeyPair::generate_for(&rcgen::PKCS_ECDSA_P256_SHA256).unwrap();
24+
let key_pair = KeyPair::generate().unwrap();
2525
let cert = generate_simple_self_signed(subject_alt_names, &key_pair).unwrap();
2626
println!("{}", cert.pem());
2727
println!("{}", key_pair.serialize_pem());
@@ -98,7 +98,7 @@ use rcgen::{generate_simple_self_signed, KeyPair};
9898
let subject_alt_names = vec!["hello.world.example".to_string(),
9999
"localhost".to_string()];
100100
101-
let key_pair = KeyPair::generate_for(&rcgen::PKCS_ECDSA_P256_SHA256).unwrap();
101+
let key_pair = KeyPair::generate().unwrap();
102102
let cert = generate_simple_self_signed(subject_alt_names, &key_pair).unwrap();
103103
104104
// The certificate is now valid for localhost and the domain "hello.world.example"
@@ -1802,7 +1802,7 @@ mod tests {
18021802
params.is_ca = IsCa::Ca(BasicConstraints::Constrained(0));
18031803

18041804
// Make the cert
1805-
let key_pair = KeyPair::generate_for(&PKCS_ECDSA_P256_SHA256).unwrap();
1805+
let key_pair = KeyPair::generate().unwrap();
18061806
let cert = Certificate::generate_self_signed(params, &key_pair).unwrap();
18071807

18081808
// Parse it
@@ -1840,7 +1840,7 @@ mod tests {
18401840
params.is_ca = IsCa::Ca(BasicConstraints::Constrained(0));
18411841

18421842
// Make the cert
1843-
let key_pair = KeyPair::generate_for(&PKCS_ECDSA_P256_SHA256).unwrap();
1843+
let key_pair = KeyPair::generate().unwrap();
18441844
let cert = Certificate::generate_self_signed(params, &key_pair).unwrap();
18451845

18461846
// Parse it
@@ -1875,7 +1875,7 @@ mod tests {
18751875
params.extended_key_usages = vec![ExtendedKeyUsagePurpose::Any];
18761876

18771877
// Make the cert
1878-
let key_pair = KeyPair::generate_for(&PKCS_ECDSA_P256_SHA256).unwrap();
1878+
let key_pair = KeyPair::generate().unwrap();
18791879
let cert = Certificate::generate_self_signed(params, &key_pair).unwrap();
18801880

18811881
// Parse it
@@ -1901,7 +1901,7 @@ mod tests {
19011901
];
19021902

19031903
// Make the cert
1904-
let key_pair = KeyPair::generate_for(&PKCS_ECDSA_P256_SHA256).unwrap();
1904+
let key_pair = KeyPair::generate().unwrap();
19051905
let cert = Certificate::generate_self_signed(params, &key_pair).unwrap();
19061906

19071907
// Parse it
@@ -1935,12 +1935,12 @@ mod tests {
19351935

19361936
#[cfg(feature = "pem")]
19371937
mod test_pem_serialization {
1938-
use crate::{Certificate, CertificateParams, KeyPair, PKCS_ECDSA_P256_SHA256};
1938+
use crate::{Certificate, CertificateParams, KeyPair};
19391939

19401940
#[test]
19411941
#[cfg(windows)]
19421942
fn test_windows_line_endings() {
1943-
let key_pair = KeyPair::generate_for(&PKCS_ECDSA_P256_SHA256).unwrap();
1943+
let key_pair = KeyPair::generate().unwrap();
19441944
let cert =
19451945
Certificate::generate_self_signed(CertificateParams::default(), &key_pair).unwrap();
19461946
assert!(cert.pem().contains("\r\n"));
@@ -1949,7 +1949,7 @@ mod tests {
19491949
#[test]
19501950
#[cfg(not(windows))]
19511951
fn test_not_windows_line_endings() {
1952-
let key_pair = KeyPair::generate_for(&PKCS_ECDSA_P256_SHA256).unwrap();
1952+
let key_pair = KeyPair::generate().unwrap();
19531953
let cert =
19541954
Certificate::generate_self_signed(CertificateParams::default(), &key_pair).unwrap();
19551955
assert!(!cert.pem().contains('\r'));

rcgen/tests/botan.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ fn test_botan_separate_ca() {
132132
// Botan has a sanity check that enforces a maximum expiration date
133133
params.not_after = rcgen::date_time_ymd(3016, 1, 1);
134134

135-
let key_pair = KeyPair::generate_for(&rcgen::PKCS_ECDSA_P256_SHA256).unwrap();
135+
let key_pair = KeyPair::generate().unwrap();
136136
let cert = Certificate::generate(params, &key_pair, &ca_cert, &ca_key).unwrap();
137137
check_cert_ca(cert.der(), &cert, ca_cert.der());
138138
}
@@ -160,7 +160,7 @@ fn test_botan_imported_ca() {
160160
// Botan has a sanity check that enforces a maximum expiration date
161161
params.not_after = rcgen::date_time_ymd(3016, 1, 1);
162162

163-
let key_pair = KeyPair::generate_for(&rcgen::PKCS_ECDSA_P256_SHA256).unwrap();
163+
let key_pair = KeyPair::generate().unwrap();
164164
let cert = Certificate::generate(params, &key_pair, &imported_ca_cert, &ca_key).unwrap();
165165
check_cert_ca(cert.der(), &cert, ca_cert_der);
166166
}
@@ -191,7 +191,7 @@ fn test_botan_imported_ca_with_printable_string() {
191191
.push(DnType::CommonName, "Dev domain");
192192
// Botan has a sanity check that enforces a maximum expiration date
193193
params.not_after = rcgen::date_time_ymd(3016, 1, 1);
194-
let key_pair = KeyPair::generate_for(&rcgen::PKCS_ECDSA_P256_SHA256).unwrap();
194+
let key_pair = KeyPair::generate().unwrap();
195195
let cert =
196196
Certificate::generate(params, &key_pair, &imported_ca_cert, &imported_ca_key).unwrap();
197197

rcgen/tests/openssl.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ fn test_openssl_separate_ca() {
302302
params
303303
.distinguished_name
304304
.push(DnType::CommonName, "Dev domain");
305-
let cert_key = KeyPair::generate_for(&rcgen::PKCS_ECDSA_P256_SHA256).unwrap();
305+
let cert_key = KeyPair::generate().unwrap();
306306
let cert = Certificate::generate(params, &cert_key, &ca_cert, &ca_key).unwrap();
307307
let key = cert_key.serialize_der();
308308

@@ -326,7 +326,7 @@ fn test_openssl_separate_ca_with_printable_string() {
326326
params
327327
.distinguished_name
328328
.push(DnType::CommonName, "Dev domain");
329-
let cert_key = KeyPair::generate_for(&rcgen::PKCS_ECDSA_P256_SHA256).unwrap();
329+
let cert_key = KeyPair::generate().unwrap();
330330
let cert = Certificate::generate(params, &cert_key, &ca_cert, &ca_key).unwrap();
331331
let key = cert_key.serialize_der();
332332

@@ -377,7 +377,7 @@ fn test_openssl_separate_ca_name_constraints() {
377377
params
378378
.distinguished_name
379379
.push(DnType::CommonName, "Dev domain");
380-
let cert_key = KeyPair::generate_for(&rcgen::PKCS_ECDSA_P256_SHA256).unwrap();
380+
let cert_key = KeyPair::generate().unwrap();
381381
let cert = Certificate::generate(params, &cert_key, &ca_cert, &ca_key).unwrap();
382382
let key = cert_key.serialize_der();
383383

rcgen/tests/util.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ use rcgen::{
33
CertificateRevocationList, CrlDistributionPoint, CrlIssuingDistributionPoint, CrlScope,
44
};
55
use rcgen::{CertificateRevocationListParams, DnType, IsCa, KeyIdMethod};
6-
use rcgen::{
7-
KeyUsagePurpose, RevocationReason, RevokedCertParams, SerialNumber, PKCS_ECDSA_P256_SHA256,
8-
};
6+
use rcgen::{KeyUsagePurpose, RevocationReason, RevokedCertParams, SerialNumber};
97
use time::{Duration, OffsetDateTime};
108

119
// Generated by adding `println!("{}", cert.serialize_private_key_pem());`
@@ -78,7 +76,7 @@ pub fn default_params() -> (CertificateParams, KeyPair) {
7876
.distinguished_name
7977
.push(DnType::CommonName, "Master CA");
8078

81-
let key_pair = KeyPair::generate_for(&PKCS_ECDSA_P256_SHA256).unwrap();
79+
let key_pair = KeyPair::generate().unwrap();
8280
(params, key_pair)
8381
}
8482

rcgen/tests/webpki.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ fn test_webpki_separate_ca() {
272272
.distinguished_name
273273
.push(DnType::CommonName, "Dev domain");
274274

275-
let key_pair = KeyPair::generate_for(&rcgen::PKCS_ECDSA_P256_SHA256).unwrap();
275+
let key_pair = KeyPair::generate().unwrap();
276276
let cert = Certificate::generate(params, &key_pair, &ca_cert, &ca_key).unwrap();
277277
let sign_fn = |cert, msg| sign_msg_ecdsa(cert, msg, &signature::ECDSA_P256_SHA256_ASN1_SIGNING);
278278
check_cert_ca(
@@ -426,7 +426,7 @@ fn test_webpki_imported_ca() {
426426
params
427427
.distinguished_name
428428
.push(DnType::CommonName, "Dev domain");
429-
let cert_key = KeyPair::generate_for(&rcgen::PKCS_ECDSA_P256_SHA256).unwrap();
429+
let cert_key = KeyPair::generate().unwrap();
430430
let cert = Certificate::generate(params, &cert_key, &imported_ca_cert, &ca_key).unwrap();
431431

432432
let sign_fn = |cert, msg| sign_msg_ecdsa(cert, msg, &signature::ECDSA_P256_SHA256_ASN1_SIGNING);
@@ -464,7 +464,7 @@ fn test_webpki_imported_ca_with_printable_string() {
464464
params
465465
.distinguished_name
466466
.push(DnType::CommonName, "Dev domain");
467-
let cert_key = KeyPair::generate_for(&rcgen::PKCS_ECDSA_P256_SHA256).unwrap();
467+
let cert_key = KeyPair::generate().unwrap();
468468
let cert = Certificate::generate(params, &cert_key, &imported_ca_cert, &ca_key).unwrap();
469469

470470
let sign_fn = |cert, msg| sign_msg_ecdsa(cert, msg, &signature::ECDSA_P256_SHA256_ASN1_SIGNING);
@@ -488,7 +488,7 @@ fn test_certificate_from_csr() {
488488
params
489489
.distinguished_name
490490
.push(DnType::CommonName, "Dev domain");
491-
let cert_key = KeyPair::generate_for(&rcgen::PKCS_ECDSA_P256_SHA256).unwrap();
491+
let cert_key = KeyPair::generate().unwrap();
492492
let cert = Certificate::generate_self_signed(params, &cert_key).unwrap();
493493
let csr_der = cert.serialize_request_der(&cert_key).unwrap();
494494
let csr = CertificateSigningRequestParams::from_der(&csr_der).unwrap();

0 commit comments

Comments
 (0)