Skip to content

Commit 698afa3

Browse files
authoredMar 17, 2025··
update CatalystSignedDocument decoding/encoding (#237)
1 parent 4b49a31 commit 698afa3

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed
 

‎rust/signed_doc/src/lib.rs

+7-5
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ pub use catalyst_types::{
2121
uuid::{Uuid, UuidV4, UuidV7},
2222
};
2323
pub use content::Content;
24-
use coset::{CborSerializable, Header};
24+
use coset::{CborSerializable, Header, TaggedCborSerializable};
2525
pub use metadata::{
2626
Algorithm, ContentEncoding, ContentType, DocumentRef, ExtraFields, Metadata, Section,
2727
};
@@ -217,9 +217,11 @@ impl Decode<'_, ()> for CatalystSignedDocument {
217217
.get(start..end)
218218
.ok_or(minicbor::decode::Error::end_of_input())?;
219219

220-
let cose_sign = coset::CoseSign::from_slice(cose_bytes).map_err(|e| {
221-
minicbor::decode::Error::message(format!("Invalid COSE Sign document: {e}"))
222-
})?;
220+
let cose_sign = coset::CoseSign::from_tagged_slice(cose_bytes)
221+
.or_else(|_| coset::CoseSign::from_slice(cose_bytes))
222+
.map_err(|e| {
223+
minicbor::decode::Error::message(format!("Invalid COSE Sign document: {e}"))
224+
})?;
223225

224226
let report = ProblemReport::new(PROBLEM_REPORT_CTX);
225227
let metadata = Metadata::from_protected_header(&cose_sign.protected, &report);
@@ -248,7 +250,7 @@ impl Encode<()> for CatalystSignedDocument {
248250
) -> Result<(), encode::Error<W::Error>> {
249251
let cose_sign = self.as_cose_sign().map_err(encode::Error::message)?;
250252

251-
let cose_bytes = cose_sign.to_vec().map_err(|e| {
253+
let cose_bytes = cose_sign.to_tagged_vec().map_err(|e| {
252254
minicbor::encode::Error::message(format!("Failed to encode COSE Sign document: {e}"))
253255
})?;
254256

0 commit comments

Comments
 (0)
Please sign in to comment.