Skip to content

Commit 4c07b8a

Browse files
feat(pki): Load answer payload
Closes #11366
1 parent 57eaec9 commit 4c07b8a

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

libparsec/crates/platform_pki/src/errors.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,4 +58,5 @@ error_set::error_set! {
5858
DataError(libparsec_types::DataError)
5959
}
6060
LoadSubmitPayloadError := ValidatePayloadError || DataError
61+
LoadAnswerPayloadError := ValidatePayloadError || DataError
6162
}

libparsec/crates/platform_pki/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,3 +182,6 @@ pub use shared::verify_certificate;
182182

183183
pub use errors::LoadSubmitPayloadError;
184184
pub use shared::load_submit_payload;
185+
186+
pub use errors::LoadAnswerPayloadError;
187+
pub use shared::load_answer_payload;

libparsec/crates/platform_pki/src/shared/mod.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@ mod signature_verification;
55
use crate::{
66
encrypt_message,
77
errors::{
8-
InvalidPemContent, ValidatePayloadError, VerifyCertificateError, VerifySignatureError,
8+
InvalidPemContent, LoadAnswerPayloadError, ValidatePayloadError, VerifyCertificateError,
9+
VerifySignatureError,
910
},
1011
shared::signature_verification::{RsassaPssSha256SignatureVerifier, SUPPORTED_SIG_ALGS},
1112
EncryptedMessage, SignatureAlgorithm,
1213
};
1314
use libparsec_types::{
1415
DateTime, EnrollmentID, LocalPendingEnrollment, ParsecPkiEnrollmentAddr,
15-
PkiEnrollmentSubmitPayload, PrivateParts, SecretKey, X509CertificateReference,
16+
PkiEnrollmentAnswerPayload, PkiEnrollmentSubmitPayload, PrivateParts, SecretKey,
17+
X509CertificateReference,
1618
};
1719
use rustls_pki_types::{pem::PemObject, CertificateDer, TrustAnchor};
1820
use webpki::{EndEntityCert, Error as WebPkiError, KeyUsage};
@@ -167,3 +169,12 @@ pub fn validate_payload<'message>(
167169

168170
verify_message(signed_message, trusted_cert).map_err(Into::into)
169171
}
172+
173+
pub fn load_answer_payload(
174+
der_certificate: &[u8],
175+
signed_message: &SignedMessage,
176+
now: DateTime,
177+
) -> Result<PkiEnrollmentAnswerPayload, LoadAnswerPayloadError> {
178+
let validated_payload = validate_payload(der_certificate, signed_message, now)?;
179+
PkiEnrollmentAnswerPayload::load(validated_payload).map_err(Into::into)
180+
}

0 commit comments

Comments
 (0)