11//! Catalyst Signed Document Extra Fields.
22
3- use anyhow:: bail;
43use catalyst_types:: { problem_report:: ProblemReport , uuid:: UuidV4 } ;
54use coset:: { cbor:: Value , Label , ProtectedHeader } ;
65
@@ -160,12 +159,14 @@ impl ExtraFields {
160159 }
161160
162161 /// Converting COSE Protected Header to `ExtraFields`.
162+ /// Return `None` if it fails during
163163 #[ allow( clippy:: too_many_lines) ]
164164 pub ( crate ) fn from_protected_header (
165165 protected : & ProtectedHeader , error_report : & ProblemReport ,
166- ) -> anyhow :: Result < Self > {
166+ ) -> Option < Self > {
167167 /// Context for error messages.
168168 const CONTEXT : & str = "COSE ProtectedHeader to ExtraFields" ;
169+ let mut valid = false ;
169170
170171 let mut extra = ExtraFields :: default ( ) ;
171172
@@ -177,6 +178,7 @@ impl ExtraFields {
177178 extra. doc_ref = Some ( doc_ref) ;
178179 } ,
179180 Err ( e) => {
181+ valid = false ;
180182 error_report. conversion_error (
181183 "CBOR COSE protected header doc ref" ,
182184 & format ! ( "{cbor_doc_ref:?}" ) ,
@@ -195,6 +197,7 @@ impl ExtraFields {
195197 extra. template = Some ( doc_template) ;
196198 } ,
197199 Err ( e) => {
200+ valid = false ;
198201 error_report. conversion_error (
199202 "CBOR COSE protected header document template" ,
200203 & format ! ( "{cbor_doc_template:?}" ) ,
@@ -213,6 +216,7 @@ impl ExtraFields {
213216 extra. reply = Some ( doc_reply) ;
214217 } ,
215218 Err ( e) => {
219+ valid = false ;
216220 error_report. conversion_error (
217221 "CBOR COSE protected header document reply" ,
218222 & format ! ( "{cbor_doc_reply:?}" ) ,
@@ -231,6 +235,7 @@ impl ExtraFields {
231235 extra. section = Some ( doc_section) ;
232236 } ,
233237 Err ( e) => {
238+ valid = false ;
234239 error_report. conversion_error (
235240 "COSE protected header document section" ,
236241 & format ! ( "{cbor_doc_section:?}" ) ,
@@ -253,6 +258,7 @@ impl ExtraFields {
253258 c. push ( collaborator) ;
254259 } ,
255260 Err ( e) => {
261+ valid = false ;
256262 error_report. conversion_error (
257263 & format ! ( "COSE protected header collaborator index {ids}" ) ,
258264 & format ! ( "{collaborator:?}" ) ,
@@ -265,6 +271,7 @@ impl ExtraFields {
265271 extra. collabs = c;
266272 } ,
267273 Err ( e) => {
274+ valid = false ;
268275 error_report. conversion_error (
269276 "CBOR COSE protected header collaborators" ,
270277 & format ! ( "{cbor_doc_collabs:?}" ) ,
@@ -283,6 +290,7 @@ impl ExtraFields {
283290 extra. brand_id = Some ( brand_id) ;
284291 } ,
285292 Err ( e) => {
293+ valid = false ;
286294 error_report. conversion_error (
287295 "CBOR COSE protected header brand ID" ,
288296 & format ! ( "{cbor_doc_brand_id:?}" ) ,
@@ -301,6 +309,7 @@ impl ExtraFields {
301309 extra. campaign_id = Some ( campaign_id) ;
302310 } ,
303311 Err ( e) => {
312+ valid = false ;
304313 error_report. conversion_error (
305314 "CBOR COSE protected header campaign ID" ,
306315 & format ! ( "{cbor_doc_campaign_id:?}" ) ,
@@ -319,6 +328,7 @@ impl ExtraFields {
319328 extra. election_id = Some ( election_id) ;
320329 } ,
321330 Err ( e) => {
331+ valid = false ;
322332 error_report. conversion_error (
323333 "CBOR COSE protected header election ID" ,
324334 & format ! ( "{cbor_doc_election_id:?}" ) ,
@@ -337,6 +347,7 @@ impl ExtraFields {
337347 extra. category_id = Some ( category_id) ;
338348 } ,
339349 Err ( e) => {
350+ valid = false ;
340351 error_report. conversion_error (
341352 "CBOR COSE protected header category ID" ,
342353 & format ! ( "{cbor_doc_category_id:?}" ) ,
@@ -347,10 +358,7 @@ impl ExtraFields {
347358 }
348359 }
349360
350- if error_report. is_problematic ( ) {
351- bail ! ( "Failed to convert COSE ProtectedHeader to ExtraFields" ) ;
352- }
353- Ok ( extra)
361+ valid. then_some ( extra)
354362 }
355363}
356364
0 commit comments