@@ -8,7 +8,7 @@ use std::{
88 path:: PathBuf ,
99} ;
1010
11- use catalyst_signed_doc:: { DocumentRef , KidUri , Metadata , UuidV7 } ;
11+ use catalyst_signed_doc:: { DocumentRef , KidUri , Metadata } ;
1212use clap:: Parser ;
1313use coset:: { iana:: CoapContentFormat , CborSerializable } ;
1414use ed25519_dalek:: {
@@ -68,7 +68,7 @@ fn encode_cbor_uuid(uuid: &uuid::Uuid) -> coset::cbor::Value {
6868 )
6969}
7070
71- fn decode_cbor_uuid ( val : & coset:: cbor:: Value ) -> anyhow:: Result < uuid:: Uuid > {
71+ fn _decode_cbor_uuid ( val : & coset:: cbor:: Value ) -> anyhow:: Result < uuid:: Uuid > {
7272 let Some ( ( UUID_CBOR_TAG , coset:: cbor:: Value :: Bytes ( bytes) ) ) = val. as_tag ( ) else {
7373 anyhow:: bail!( "Invalid CBOR encoded UUID type" ) ;
7474 } ;
@@ -94,18 +94,8 @@ fn _encode_cbor_document_ref(doc_ref: &DocumentRef) -> coset::cbor::Value {
9494}
9595
9696#[ allow( clippy:: indexing_slicing) ]
97- fn decode_cbor_document_ref ( val : & coset:: cbor:: Value ) -> anyhow:: Result < DocumentRef > {
98- if let Ok ( id) = UuidV7 :: try_from ( val) {
99- Ok ( DocumentRef :: Latest { id } )
100- } else {
101- let Some ( array) = val. as_array ( ) else {
102- anyhow:: bail!( "Invalid CBOR encoded document `ref` type" ) ;
103- } ;
104- anyhow:: ensure!( array. len( ) == 2 , "Invalid CBOR encoded document `ref` type" ) ;
105- let id = UuidV7 :: try_from ( & array[ 0 ] ) ?;
106- let ver = UuidV7 :: try_from ( & array[ 1 ] ) ?;
107- Ok ( DocumentRef :: WithVer { id, ver } )
108- }
97+ fn _decode_cbor_document_ref ( val : & coset:: cbor:: Value ) -> anyhow:: Result < DocumentRef > {
98+ DocumentRef :: try_from ( val)
10999}
110100
111101impl Cli {
@@ -227,7 +217,7 @@ fn build_empty_cose_doc(doc_bytes: Vec<u8>, meta: &Metadata) -> coset::CoseSign
227217 coset:: Label :: Text ( "ver" . to_string ( ) ) ,
228218 encode_cbor_uuid ( & meta. doc_ver ( ) ) ,
229219 ) ) ;
230- let meta_rest = meta. extra ( ) . header_rest ( ) ;
220+ let meta_rest = meta. extra ( ) . header_rest ( ) . unwrap_or_default ( ) ;
231221
232222 if !meta_rest. is_empty ( ) {
233223 protected_header. rest . extend ( meta_rest) ;
@@ -336,89 +326,92 @@ fn validate_cose_protected_header(cose: &coset::CoseSign) -> anyhow::Result<()>
336326 "Invalid COSE document protected header"
337327 ) ;
338328
339- let Some ( ( _, value) ) = cose
340- . protected
341- . header
342- . rest
343- . iter ( )
344- . find ( |( key, _) | key == & coset:: Label :: Text ( "type" . to_string ( ) ) )
345- else {
346- anyhow:: bail!( "Invalid COSE protected header, missing `type` field" ) ;
347- } ;
348- decode_cbor_uuid ( value)
349- . map_err ( |e| anyhow:: anyhow!( "Invalid COSE protected header `type` field, err: {e}" ) ) ?;
350-
351- let Some ( ( _, value) ) = cose
352- . protected
353- . header
354- . rest
355- . iter ( )
356- . find ( |( key, _) | key == & coset:: Label :: Text ( "id" . to_string ( ) ) )
357- else {
358- anyhow:: bail!( "Invalid COSE protected header, missing `id` field" ) ;
359- } ;
360- decode_cbor_uuid ( value)
361- . map_err ( |e| anyhow:: anyhow!( "Invalid COSE protected header `id` field, err: {e}" ) ) ?;
362-
363- let Some ( ( _, value) ) = cose
364- . protected
365- . header
366- . rest
367- . iter ( )
368- . find ( |( key, _) | key == & coset:: Label :: Text ( "ver" . to_string ( ) ) )
369- else {
370- anyhow:: bail!( "Invalid COSE protected header, missing `ver` field" ) ;
371- } ;
372- decode_cbor_uuid ( value)
373- . map_err ( |e| anyhow:: anyhow!( "Invalid COSE protected header `ver` field, err: {e}" ) ) ?;
374-
375- if let Some ( ( _, value) ) = cose
376- . protected
377- . header
378- . rest
379- . iter ( )
380- . find ( |( key, _) | key == & coset:: Label :: Text ( "ref" . to_string ( ) ) )
381- {
382- decode_cbor_document_ref ( value)
383- . map_err ( |e| anyhow:: anyhow!( "Invalid COSE protected header `ref` field, err: {e}" ) ) ?;
384- }
385-
386- if let Some ( ( _, value) ) = cose
387- . protected
388- . header
389- . rest
390- . iter ( )
391- . find ( |( key, _) | key == & coset:: Label :: Text ( "template" . to_string ( ) ) )
392- {
393- decode_cbor_document_ref ( value) . map_err ( |e| {
394- anyhow:: anyhow!( "Invalid COSE protected header `template` field, err: {e}" )
395- } ) ?;
396- }
397-
398- if let Some ( ( _, value) ) = cose
399- . protected
400- . header
401- . rest
402- . iter ( )
403- . find ( |( key, _) | key == & coset:: Label :: Text ( "reply" . to_string ( ) ) )
404- {
405- decode_cbor_document_ref ( value) . map_err ( |e| {
406- anyhow:: anyhow!( "Invalid COSE protected header `reply` field, err: {e}" )
407- } ) ?;
408- }
409-
410- if let Some ( ( _, value) ) = cose
411- . protected
412- . header
413- . rest
414- . iter ( )
415- . find ( |( key, _) | key == & coset:: Label :: Text ( "section" . to_string ( ) ) )
416- {
417- anyhow:: ensure!(
418- value. is_text( ) ,
419- "Invalid COSE protected header, missing `section` field"
420- ) ;
421- }
329+ // let Some((_, value)) = cose
330+ // .protected
331+ // .header
332+ // .rest
333+ // .iter()
334+ // .find(|(key, _)| key == &coset::Label::Text("type".to_string()))
335+ // else {
336+ // anyhow::bail!("Invalid COSE protected header, missing `type` field");
337+ // };
338+ // decode_cbor_uuid(value)
339+ // .map_err(|e| anyhow::anyhow!("Invalid COSE protected header `type` field, err:
340+ // {e}"))?;
341+
342+ // let Some((_, value)) = cose
343+ // .protected
344+ // .header
345+ // .rest
346+ // .iter()
347+ // .find(|(key, _)| key == &coset::Label::Text("id".to_string()))
348+ // else {
349+ // anyhow::bail!("Invalid COSE protected header, missing `id` field");
350+ // };
351+ // decode_cbor_uuid(value)
352+ // .map_err(|e| anyhow::anyhow!("Invalid COSE protected header `id` field, err:
353+ // {e}"))?;
354+
355+ // let Some((_, value)) = cose
356+ // .protected
357+ // .header
358+ // .rest
359+ // .iter()
360+ // .find(|(key, _)| key == &coset::Label::Text("ver".to_string()))
361+ // else {
362+ // anyhow::bail!("Invalid COSE protected header, missing `ver` field");
363+ // };
364+ // decode_cbor_uuid(value)
365+ // .map_err(|e| anyhow::anyhow!("Invalid COSE protected header `ver` field, err:
366+ // {e}"))?;
367+
368+ // if let Some((_, value)) = cose
369+ // .protected
370+ // .header
371+ // .rest
372+ // .iter()
373+ // .find(|(key, _)| key == &coset::Label::Text("ref".to_string()))
374+ // {
375+ // decode_cbor_document_ref(value)
376+ // .map_err(|e| anyhow::anyhow!("Invalid COSE protected header `ref` field, err:
377+ // {e}"))?; }
378+
379+ // if let Some((_, value)) = cose
380+ // .protected
381+ // .header
382+ // .rest
383+ // .iter()
384+ // .find(|(key, _)| key == &coset::Label::Text("template".to_string()))
385+ // {
386+ // decode_cbor_document_ref(value).map_err(|e| {
387+ // anyhow::anyhow!("Invalid COSE protected header `template` field, err: {e}")
388+ // })?;
389+ // }
390+
391+ // if let Some((_, value)) = cose
392+ // .protected
393+ // .header
394+ // .rest
395+ // .iter()
396+ // .find(|(key, _)| key == &coset::Label::Text("reply".to_string()))
397+ // {
398+ // decode_cbor_document_ref(value).map_err(|e| {
399+ // anyhow::anyhow!("Invalid COSE protected header `reply` field, err: {e}")
400+ // })?;
401+ // }
402+
403+ // if let Some((_, value)) = cose
404+ // .protected
405+ // .header
406+ // .rest
407+ // .iter()
408+ // .find(|(key, _)| key == &coset::Label::Text("section".to_string()))
409+ // {
410+ // anyhow::ensure!(
411+ // value.is_text(),
412+ // "Invalid COSE protected header, missing `section` field"
413+ // );
414+ // }
422415
423416 Ok ( ( ) )
424417}
0 commit comments