diff --git a/bindings/cashu-sdk-ffi/src/cashu_sdk.udl b/bindings/cashu-sdk-ffi/src/cashu_sdk.udl index 47dde546..06f774c8 100644 --- a/bindings/cashu-sdk-ffi/src/cashu_sdk.udl +++ b/bindings/cashu-sdk-ffi/src/cashu_sdk.udl @@ -334,8 +334,6 @@ interface Mint { PostMintResponse process_mint_request(MintRequest mint_request); [Throws=CashuSdkError] SplitResponse process_split_request(SplitRequest split_request); - [Throws=CashuSdkError] - void verify_proof(Proof proof); [Throws=CashuSdkError] void verify_melt_request(MeltRequest melt_request); [Throws=CashuSdkError] diff --git a/bindings/cashu-sdk-ffi/src/mint.rs b/bindings/cashu-sdk-ffi/src/mint.rs index 7e7b26a4..c9468f43 100644 --- a/bindings/cashu-sdk-ffi/src/mint.rs +++ b/bindings/cashu-sdk-ffi/src/mint.rs @@ -103,14 +103,6 @@ impl Mint { )) } - pub fn verify_proof(&self, proof: Arc) -> Result<()> { - Ok(self - .inner - .read() - .unwrap() - .verify_proof(proof.as_ref().deref())?) - } - pub fn check_spendable( &self, check_spendable: Arc, diff --git a/crates/cashu-sdk/src/mint.rs b/crates/cashu-sdk/src/mint.rs index 5a62c91f..09883413 100644 --- a/crates/cashu-sdk/src/mint.rs +++ b/crates/cashu-sdk/src/mint.rs @@ -135,7 +135,11 @@ impl Mint { let proof_count = split_request.proofs.len(); - let secrets: HashSet = split_request.proofs.into_iter().map(|p| p.secret).collect(); + let secrets: HashSet = split_request + .proofs + .iter() + .map(|p| p.secret.clone()) + .collect(); // Check that there are no duplicate proofs in request if secrets.len().ne(&proof_count) { @@ -146,6 +150,10 @@ impl Mint { self.spent_secrets.insert(secret); } + for proof in &split_request.proofs { + self.verify_proof(proof)? + } + match &split_request.amount { None => { let promises: Vec = split_request @@ -178,7 +186,7 @@ impl Mint { } } - pub fn verify_proof(&self, proof: &Proof) -> Result<(), Error> { + fn verify_proof(&self, proof: &Proof) -> Result<(), Error> { if self.spent_secrets.contains(&proof.secret) { return Err(Error::TokenSpent); } @@ -251,6 +259,10 @@ impl Mint { return Err(Error::DuplicateProofs); } + for proof in &melt_request.proofs { + self.verify_proof(proof)? + } + Ok(()) }