c2pa-rs

A fork of https://github.com/contentauth/c2pa-rs/
git clone git://archive.git.mtrnord.blog/mtrnords-photography-manager/c2pa-rs.git
Log | Files | Refs | README

commit aa2b5d69bbbaca8b8be180435d4fb2dbd048883c
parent 2d98327a55396f82e2cd04b1a79a911ac6701564
Author: mauricefisher64 <92736594+mauricefisher64@users.noreply.github.com>
Date:   Wed, 20 Dec 2023 17:20:28 -0500

Restore correct 1.3 CoseSign1 headers (#359)

* Restore correct 1.3 CoseSign1 headers

* Fix formatting
Diffstat:
Msdk/src/cose_sign.rs | 10++--------
1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/sdk/src/cose_sign.rs b/sdk/src/cose_sign.rs @@ -18,7 +18,7 @@ use async_generic::async_generic; use ciborium::value::Value; use coset::{ - iana::{self}, + iana::{self, EnumI64}, CoseSign1, CoseSign1Builder, Header, HeaderBuilder, Label, ProtectedHeader, TaggedCborSerializable, }; @@ -146,7 +146,7 @@ pub(crate) fn cose_sign(signer: &dyn Signer, data: &[u8], box_size: usize) -> Re #[async_generic(async_signature(signer: &dyn AsyncSigner, data: &[u8], alg: SigningAlg))] fn build_headers(signer: &dyn Signer, data: &[u8], alg: SigningAlg) -> Result<(Header, Header)> { - let protected_h = match alg { + let mut protected_h = match alg { SigningAlg::Ps256 => HeaderBuilder::new().algorithm(iana::Algorithm::PS256), SigningAlg::Ps384 => HeaderBuilder::new().algorithm(iana::Algorithm::PS384), SigningAlg::Ps512 => HeaderBuilder::new().algorithm(iana::Algorithm::PS512), @@ -170,14 +170,11 @@ fn build_headers(signer: &dyn Signer, data: &[u8], alg: SigningAlg) -> Result<(H } }; - // enable this block of code when we want to switch to 1.3 headers - /* // add certs to protected header (spec 1.3 now requires integer 33(X5Chain) in favor of string "x5chain" going forward) protected_h = protected_h.value( iana::HeaderParameter::X5Chain.to_i64(), sc_der_array_or_bytes.clone(), ); - */ let protected_header = protected_h.build(); let ph2 = ProtectedHeader { @@ -201,9 +198,6 @@ fn build_headers(signer: &dyn Signer, data: &[u8], alg: SigningAlg) -> Result<(H HeaderBuilder::new() }; - // generate old Cose header todo: remove this line when protected headers are enabled - unprotected_h = unprotected_h.text_value("x5chain".to_string(), sc_der_array_or_bytes); - // set the ocsp responder response if available if let Some(ocsp) = ocsp_val { let mut ocsp_vec: Vec<Value> = Vec::new();