Skip to content

Commit d05cf0c

Browse files
feat(pki): Client provide intermediate certs during pki_accept
Closes #11671
1 parent 5957394 commit d05cf0c

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

libparsec/crates/client/src/client/pki_enrollment_accept.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ pub async fn accept(
5555
info.human_handle()
5656
.context("Missing human handle from submitter certificate")
5757
})?;
58+
let accepter_intermediate_certs =
59+
libparsec_platform_pki::get_intermediate_certs_for_cert(accepter_cert_ref, DateTime::now())
60+
.map_err(anyhow::Error::from)
61+
.context("Failed to get intermediate certificates for itself")
62+
.map_err(PkiEnrollmentAcceptError::PkiOperationError)?;
5863

5964
loop {
6065
let outcome = accept_internal(
@@ -64,6 +69,7 @@ pub async fn accept(
6469
Accepter {
6570
cert_ref: accepter_cert_ref,
6671
der_cert: &accepter_der_x509_certificate,
72+
intermediate_der_certs: &accepter_intermediate_certs,
6773
},
6874
Submitter {
6975
payload: submit_payload.clone(),
@@ -89,6 +95,7 @@ pub async fn accept(
8995
struct Accepter<'a> {
9096
cert_ref: &'a X509CertificateReference,
9197
der_cert: &'a [u8],
98+
intermediate_der_certs: &'a [Bytes],
9299
}
93100

94101
struct Submitter {
@@ -131,8 +138,7 @@ async fn accept_internal(
131138
.send(Req {
132139
enrollment_id,
133140
accepter_der_x509_certificate: Bytes::copy_from_slice(accepter.der_cert),
134-
// TODO: https://github.com/Scille/parsec-cloud/issues/11671
135-
accepter_intermediate_der_x509_certificates: vec![],
141+
accepter_intermediate_der_x509_certificates: accepter.intermediate_der_certs.to_vec(),
136142
payload,
137143
payload_signature: payload_signature.signature,
138144
payload_signature_algorithm: payload_signature.algo,

0 commit comments

Comments
 (0)