Skip to content

Commit eacc76e

Browse files
authored
add block data validation (#460)
1 parent 35b15d7 commit eacc76e

File tree

27 files changed

+1067
-597
lines changed

27 files changed

+1067
-597
lines changed

crates/bcr-ebill-api/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use bitcoin::Network;
33
use std::sync::OnceLock;
44

55
mod blockchain;
6-
mod constants;
6+
pub mod constants;
77
pub mod data;
88
pub mod external;
99
mod persistence;

crates/bcr-ebill-api/src/service/bill_service/blocks.rs

Lines changed: 164 additions & 121 deletions
Large diffs are not rendered by default.

crates/bcr-ebill-api/src/service/bill_service/issue.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use super::{BillAction, BillServiceApi, Result, error::Error, service::BillService};
22
use crate::util;
33
use bcr_ebill_core::{
4-
File,
4+
File, Validate,
55
bill::{BillKeys, BillType, BitcreditBill, validation::validate_bill_issue},
66
blockchain::{
77
Blockchain,
@@ -103,8 +103,6 @@ impl BillService {
103103
public_key: keys.get_public_key(),
104104
};
105105

106-
self.store.save_keys(&bill_id, &bill_keys).await?;
107-
108106
let mut bill_files: Vec<File> = vec![];
109107
for file_upload_id in file_upload_ids.iter() {
110108
let (file_name, file_bytes) = &self
@@ -137,8 +135,13 @@ impl BillService {
137135
};
138136

139137
let signing_keys = self.get_bill_signing_keys(&drawer_public_data, &drawer_keys, &identity);
138+
let block_data =
139+
BillIssueBlockData::from(bill.clone(), signing_keys.signatory_identity, timestamp);
140+
block_data.validate()?;
141+
142+
self.store.save_keys(&bill_id, &bill_keys).await?;
140143
let chain = BillBlockchain::new(
141-
&BillIssueBlockData::from(bill.clone(), signing_keys.signatory_identity, timestamp),
144+
&block_data,
142145
signing_keys.signatory_keys,
143146
signing_keys.company_keys,
144147
keys.clone(),

0 commit comments

Comments
 (0)