Skip to content

Commit 19e6083

Browse files
committed
fix ExtraFields::from_protected_header` error return
1 parent dfa5e3e commit 19e6083

File tree

2 files changed

+15
-18
lines changed

2 files changed

+15
-18
lines changed

rust/signed_doc/src/metadata/extra_fields.rs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
//! Catalyst Signed Document Extra Fields.
22
3-
use anyhow::bail;
43
use catalyst_types::{problem_report::ProblemReport, uuid::UuidV4};
54
use 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

rust/signed_doc/src/metadata/mod.rs

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -220,18 +220,7 @@ impl Metadata {
220220
error_report.missing_field("ver", "Missing ver field in COSE protected header");
221221
}
222222

223-
let extra = ExtraFields::from_protected_header(protected, error_report).map_or_else(
224-
|e| {
225-
error_report.conversion_error(
226-
"COSE protected header",
227-
&format!("{protected:?}"),
228-
&format!("Expected ExtraField: {e}"),
229-
&format!("{CONTEXT}, ExtraFields"),
230-
);
231-
None
232-
},
233-
Some,
234-
);
223+
let extra = ExtraFields::from_protected_header(protected, error_report);
235224

236225
match (content_type, content_encoding, id, doc_type, ver, extra) {
237226
(

0 commit comments

Comments
 (0)