|
@@ -1,5 +1,4 @@
|
|
use std::collections::HashSet;
|
|
use std::collections::HashSet;
|
|
-use std::str::FromStr;
|
|
|
|
use std::sync::Arc;
|
|
use std::sync::Arc;
|
|
|
|
|
|
use cashu::dhke::{hash_to_curve, sign_message, verify_message};
|
|
use cashu::dhke::{hash_to_curve, sign_message, verify_message};
|
|
@@ -12,7 +11,6 @@ use cashu::nuts::{
|
|
};
|
|
};
|
|
#[cfg(feature = "nut07")]
|
|
#[cfg(feature = "nut07")]
|
|
use cashu::nuts::{CheckStateRequest, CheckStateResponse};
|
|
use cashu::nuts::{CheckStateRequest, CheckStateResponse};
|
|
-use cashu::secret::Secret;
|
|
|
|
use cashu::types::{MeltQuote, MintQuote};
|
|
use cashu::types::{MeltQuote, MintQuote};
|
|
use cashu::Amount;
|
|
use cashu::Amount;
|
|
use http::StatusCode;
|
|
use http::StatusCode;
|
|
@@ -359,8 +357,7 @@ impl Mint {
|
|
let secrets: HashSet<Vec<u8>> = swap_request
|
|
let secrets: HashSet<Vec<u8>> = swap_request
|
|
.inputs
|
|
.inputs
|
|
.iter()
|
|
.iter()
|
|
- .flat_map(|p| Secret::from_str(&p.secret))
|
|
|
|
- .flat_map(|p| p.to_bytes())
|
|
|
|
|
|
+ .flat_map(|p| p.secret.to_bytes())
|
|
.flat_map(|p| hash_to_curve(&p))
|
|
.flat_map(|p| hash_to_curve(&p))
|
|
.map(|p| p.to_sec1_bytes().to_vec())
|
|
.map(|p| p.to_sec1_bytes().to_vec())
|
|
.collect();
|
|
.collect();
|
|
@@ -424,19 +421,14 @@ impl Mint {
|
|
}
|
|
}
|
|
|
|
|
|
async fn verify_proof(&self, proof: &Proof) -> Result<(), Error> {
|
|
async fn verify_proof(&self, proof: &Proof) -> Result<(), Error> {
|
|
- let secret = Secret::from_str(&proof.secret)?;
|
|
|
|
- if self
|
|
|
|
- .localstore
|
|
|
|
- .get_spent_proof_by_secret(&secret)
|
|
|
|
- .await?
|
|
|
|
- .is_some()
|
|
|
|
- {
|
|
|
|
|
|
+ let y = hash_to_curve(&proof.secret.to_bytes()?).unwrap();
|
|
|
|
+ if self.localstore.get_spent_proof_by_hash(&y).await?.is_some() {
|
|
return Err(Error::TokenSpent);
|
|
return Err(Error::TokenSpent);
|
|
}
|
|
}
|
|
|
|
|
|
if self
|
|
if self
|
|
.localstore
|
|
.localstore
|
|
- .get_pending_proof_by_secret(&secret)
|
|
|
|
|
|
+ .get_pending_proof_by_hash(&y)
|
|
.await?
|
|
.await?
|
|
.is_some()
|
|
.is_some()
|
|
{
|
|
{
|
|
@@ -456,7 +448,7 @@ impl Mint {
|
|
verify_message(
|
|
verify_message(
|
|
keypair.secret_key.clone().into(),
|
|
keypair.secret_key.clone().into(),
|
|
proof.c.clone().into(),
|
|
proof.c.clone().into(),
|
|
- &secret,
|
|
|
|
|
|
+ &proof.secret,
|
|
)?;
|
|
)?;
|
|
|
|
|
|
Ok(())
|
|
Ok(())
|
|
@@ -565,8 +557,7 @@ impl Mint {
|
|
let secrets: HashSet<Vec<u8>> = melt_request
|
|
let secrets: HashSet<Vec<u8>> = melt_request
|
|
.inputs
|
|
.inputs
|
|
.iter()
|
|
.iter()
|
|
- .flat_map(|p| Secret::from_str(&p.secret))
|
|
|
|
- .flat_map(|p| p.to_bytes())
|
|
|
|
|
|
+ .flat_map(|p| p.secret.to_bytes())
|
|
.flat_map(|p| hash_to_curve(&p))
|
|
.flat_map(|p| hash_to_curve(&p))
|
|
.map(|p| p.to_sec1_bytes().to_vec())
|
|
.map(|p| p.to_sec1_bytes().to_vec())
|
|
.collect();
|
|
.collect();
|