Skip to content

Commit

Permalink
mint - tests for DLEQ proofs returned from mint ops
Browse files Browse the repository at this point in the history
  • Loading branch information
elnosh committed Sep 20, 2024
1 parent 7270867 commit 956c464
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 2 deletions.
42 changes: 42 additions & 0 deletions mint/mint_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"github.com/elnosh/gonuts/cashu/nuts/nut05"
"github.com/elnosh/gonuts/cashu/nuts/nut07"
"github.com/elnosh/gonuts/cashu/nuts/nut11"
"github.com/elnosh/gonuts/cashu/nuts/nut12"
"github.com/elnosh/gonuts/crypto"
"github.com/elnosh/gonuts/mint"
"github.com/elnosh/gonuts/testutils"
Expand Down Expand Up @@ -959,3 +960,44 @@ func TestNUT11P2PK(t *testing.T) {
t.Fatalf("expected error '%v' but got '%v' instead", nut11.SigAllOnlySwap, err)
}
}

func TestDLEQProofs(t *testing.T) {
var amount uint64 = 5000
proofs, err := testutils.GetValidProofsForAmount(amount, testMint, lnd2)
if err != nil {
t.Fatalf("error generating valid proofs: %v", err)
}

keyset := testMint.GetActiveKeyset()

// check proofs minted from testMint have valid DLEQ proofs
for _, proof := range proofs {
if proof.DLEQ == nil {
t.Fatal("mint returned nil DLEQ proof")
}

if !nut12.VerifyProofDLEQ(proof, keyset.Keys[proof.Amount].PublicKey) {
t.Fatal("generated invalid DLEQ proof from MintTokens")
}
}

blindedMessages, _, _, err := testutils.CreateBlindedMessages(amount, keyset)
blindSignatures, err := testMint.Swap(proofs, blindedMessages)
if err != nil {
t.Fatalf("unexpected error in swap: %v", err)
}

for i, sig := range blindSignatures {
if sig.DLEQ == nil {
t.Fatal("mint returned nil DLEQ proof from swap")
}
if !nut12.VerifyBlindSignatureDLEQ(
*sig.DLEQ,
keyset.Keys[sig.Amount].PublicKey,
blindedMessages[i].B_,
sig.C_,
) {
t.Fatal("mint generated invalid DLEQ proof in swap")
}
}
}
14 changes: 12 additions & 2 deletions testutils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -402,8 +402,18 @@ func ConstructProofs(blindedSignatures cashu.BlindedSignatures,
C := crypto.UnblindSignature(C_, rs[i], keyp.PublicKey)
Cstr := hex.EncodeToString(C.SerializeCompressed())

proof := cashu.Proof{Amount: blindedSignature.Amount,
Secret: secrets[i], C: Cstr, Id: blindedSignature.Id}
r := hex.EncodeToString(rs[i].Serialize())
proof := cashu.Proof{
Amount: blindedSignature.Amount,
Secret: secrets[i],
C: Cstr,
Id: blindedSignature.Id,
DLEQ: &cashu.DLEQProof{
E: blindedSignature.DLEQ.E,
S: blindedSignature.DLEQ.S,
R: r,
},
}

proofs[i] = proof
}
Expand Down

0 comments on commit 956c464

Please sign in to comment.