Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nut10 and Nut11 #37

Closed
wants to merge 5 commits into from
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
improve: move optional behind features
thesimplekid committed Nov 16, 2023
commit 7beb687d30d00774f7f3dc9a522c563e3f01ea15
2 changes: 1 addition & 1 deletion crates/cashu-sdk/Cargo.toml
Original file line number Diff line number Diff line change
@@ -21,7 +21,7 @@ nut09 = ["cashu/nut09"]


[dependencies]
cashu = { path = "../cashu" }
cashu = { path = "../cashu", default-features = false, features = ["nut08"] }
serde = { workspace = true }
serde_json = { workspace = true }
url = { workspace = true }
4 changes: 2 additions & 2 deletions crates/cashu-sdk/src/client/mod.rs
Original file line number Diff line number Diff line change
@@ -2,7 +2,6 @@

use async_trait::async_trait;
use cashu::nuts::nut00::wallet::BlindedMessages;
use cashu::nuts::nut00::{BlindedMessage, Proof};
use cashu::nuts::nut01::Keys;
use cashu::nuts::nut03::RequestMintResponse;
use cashu::nuts::nut04::PostMintResponse;
@@ -13,7 +12,8 @@ use cashu::nuts::nut07::CheckSpendableResponse;
use cashu::nuts::nut08::MeltResponse;
#[cfg(feature = "nut09")]
use cashu::nuts::MintInfo;
use cashu::nuts::*;
use cashu::nuts::{Proof, *, *};
use cashu::url::UncheckedUrl;
use cashu::{utils, Amount};
use serde::{Deserialize, Serialize};
use thiserror::Error;
1 change: 0 additions & 1 deletion crates/cashu/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
pub mod amount;
#[cfg(feature = "wallet")]
pub mod dhke;
pub mod error;
pub mod nuts;
7 changes: 7 additions & 0 deletions crates/cashu/src/nuts/mod.rs
Original file line number Diff line number Diff line change
@@ -33,4 +33,11 @@ pub use nut08::{MeltRequest, MeltResponse};
#[cfg(feature = "nut09")]
pub use nut09::MintInfo;

#[cfg(feature = "nut12")]
pub mod nut12;

#[cfg(feature = "nut12")]
pub use nut12::{BlindedSignature, DleqProof, Proof};

/// List of proofs
pub type Proofs = Vec<Proof>;
3 changes: 1 addition & 2 deletions crates/cashu/src/nuts/nut06.rs
Original file line number Diff line number Diff line change
@@ -2,10 +2,9 @@
// https://github.com/cashubtc/nuts/blob/main/06.md
use serde::{Deserialize, Serialize};

use super::nut00::BlindedSignature;
#[cfg(feature = "wallet")]
use crate::nuts::BlindedMessages;
use crate::nuts::{BlindedMessage, Proofs};
use crate::nuts::{BlindedMessage, BlindedSignature, Proofs};
use crate::Amount;

#[cfg(feature = "wallet")]
2 changes: 1 addition & 1 deletion crates/cashu/src/nuts/nut08.rs
Original file line number Diff line number Diff line change
@@ -4,8 +4,8 @@
use lightning_invoice::Bolt11Invoice;
use serde::{Deserialize, Serialize};

use super::{BlindedMessage, BlindedSignature, Proofs};
use crate::error::Error;
use crate::nuts::{BlindedMessage, BlindedSignature, Proofs};
use crate::Amount;

/// Melt Request [NUT-08]
26 changes: 26 additions & 0 deletions crates/cashu/src/nuts/nut12.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
//! NUT-12: Offline ecash signature validation
// TODO: link to nut

use serde::{Deserialize, Serialize};

use super::nut01::PublicKey;
use super::nut02::Id;
use crate::Amount;

#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct DleqProof {
e: String,
s: String,
r: Option<String>,
}

/// Promise (BlindedSignature) [NUT-12] with DLEQ proof
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct BlindedSignature {
pub id: Id,
pub amount: Amount,
/// blinded signature (C_) on the secret message `B_` of [BlindedMessage]
#[serde(rename = "C_")]
pub c: PublicKey,
pub dleq: Option<DleqProof>,
}