@@ -4,10 +4,10 @@ use rcgen::{
4
4
} ;
5
5
use time:: { Duration , OffsetDateTime } ;
6
6
7
- /// Example demonstrating signing end-endity certificate with ca
7
+ /// Example demonstrating signing end-entity certificate with ca
8
8
fn main ( ) {
9
- let ca = new_ca ( ) ;
10
- let end_entity = new_end_entity ( ) ;
9
+ let ( ca , ca_key ) = new_ca ( ) ;
10
+ let end_entity = new_end_entity ( & ca , & ca_key ) ;
11
11
12
12
let end_entity_pem = end_entity. pem ( ) ;
13
13
println ! ( "directly signed end-entity certificate: {end_entity_pem}" ) ;
@@ -16,7 +16,7 @@ fn main() {
16
16
println ! ( "ca certificate: {ca_cert_pem}" ) ;
17
17
}
18
18
19
- fn new_ca ( ) -> Certificate {
19
+ fn new_ca ( ) -> ( Certificate , KeyPair ) {
20
20
let mut params =
21
21
CertificateParams :: new ( Vec :: default ( ) ) . expect ( "empty subject alt name can't produce error" ) ;
22
22
let ( yesterday, tomorrow) = validity_period ( ) ;
@@ -36,10 +36,10 @@ fn new_ca() -> Certificate {
36
36
params. not_after = tomorrow;
37
37
38
38
let key_pair = KeyPair :: generate ( ) . unwrap ( ) ;
39
- params. self_signed ( & key_pair) . unwrap ( )
39
+ ( params. self_signed ( & key_pair) . unwrap ( ) , key_pair )
40
40
}
41
41
42
- fn new_end_entity ( ) -> Certificate {
42
+ fn new_end_entity ( ca : & Certificate , ca_key : & KeyPair ) -> Certificate {
43
43
let name = "entity.other.host" ;
44
44
let mut params = CertificateParams :: new ( vec ! [ name. into( ) ] ) . expect ( "we know the name is valid" ) ;
45
45
let ( yesterday, tomorrow) = validity_period ( ) ;
@@ -53,7 +53,7 @@ fn new_end_entity() -> Certificate {
53
53
params. not_after = tomorrow;
54
54
55
55
let key_pair = KeyPair :: generate ( ) . unwrap ( ) ;
56
- params. self_signed ( & key_pair) . unwrap ( )
56
+ params. signed_by ( & key_pair, ca , ca_key ) . unwrap ( )
57
57
}
58
58
59
59
fn validity_period ( ) -> ( OffsetDateTime , OffsetDateTime ) {
0 commit comments