Skip to content

Commit

Permalink
Add signing and verifying message docs (#84)
Browse files Browse the repository at this point in the history
* Add signing and verifying message docs

* Apply review feedback
  • Loading branch information
dangeross authored Mar 3, 2025
1 parent 70c199f commit 8ca3af0
Show file tree
Hide file tree
Showing 13 changed files with 520 additions and 16 deletions.
5 changes: 0 additions & 5 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -114,11 +114,6 @@ jobs:
with:
dotnet-version: '7.0.x'

- name: Install Mono
run: |
sudo apt-get update
sudo apt-get install -y mono-complete
- name: Setup nuget
uses: nuget/setup-nuget@v2

Expand Down
51 changes: 51 additions & 0 deletions snippets/csharp/Messages.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
using Breez.Sdk.Liquid;

public class MessagesSnippets
{
public void SignMessage(BindingLiquidSdk sdk)
{
// ANCHOR: sign-message
var message = "<message to sign>";
try
{
var signMessageRequest = new SignMessageRequest(message);
var signMessageResponse = sdk.SignMessage(signMessageRequest);

// Get the wallet info for your pubkey
var info = sdk.GetInfo();

var signature = signMessageResponse?.signature;
var pubkey = info?.walletInfo?.pubkey;

Console.WriteLine($"Pubkey: {pubkey}");
Console.WriteLine($"Signature: {signature}");
}
catch (Exception)
{
// Handle error
}
// ANCHOR_END: sign-message
}

public void CheckMessage(BindingLiquidSdk sdk)
{
// ANCHOR: check-message
var message = "<message>";
var pubkey = "<pubkey of signer>";
var signature = "<message signature>";
try
{
var checkMessageRequest = new CheckMessageRequest(message, pubkey, signature);
var checkMessageResponse = sdk.CheckMessage(checkMessageRequest);

var isValid = checkMessageResponse?.isValid;

Console.WriteLine($"Signature valid: {isValid}");
}
catch (Exception)
{
// Handle error
}
// ANCHOR_END: check-message
}
}
41 changes: 41 additions & 0 deletions snippets/dart_snippets/lib/messages.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import 'package:dart_snippets/sdk_instance.dart';
import 'package:flutter_breez_liquid/flutter_breez_liquid.dart';

Future<SignMessageResponse> signMessage() async {
// ANCHOR: sign-message
SignMessageRequest signMessageRequest = SignMessageRequest(
message: "<message to sign>",
);
SignMessageResponse signMessageResponse = breezSDKLiquid.instance!.signMessage(
req: signMessageRequest,
);

// Get the wallet info for your pubkey
GetInfoResponse? info = await breezSDKLiquid.instance!.getInfo();

String signature = signMessageResponse.signature;
String pubkey = info.walletInfo.pubkey;

print("Pubkey: $pubkey");
print("Signature: $signature");
// ANCHOR_END: sign-message
return signMessageResponse;
}

Future<CheckMessageResponse> checkMessage() async {
// ANCHOR: check-message
CheckMessageRequest checkMessageRequest = CheckMessageRequest(
message: "<message>",
pubkey: "<pubkey of signer>",
signature: "<message signature>",
);
CheckMessageResponse checkMessageResponse = breezSDKLiquid.instance!.checkMessage(
req: checkMessageRequest,
);

bool isValid = checkMessageResponse.isValid;

print("Signature valid: $isValid");
// ANCHOR_END: check-message
return checkMessageResponse;
}
58 changes: 58 additions & 0 deletions snippets/go/messages.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package example

import (
"log"

"github.com/breez/breez-sdk-liquid-go/breez_sdk_liquid"
)

func SignMessage(sdk *breez_sdk_liquid.BindingLiquidSdk) {
// ANCHOR: sign-message
message := "<message to sign>"

signMessageRequest := breez_sdk_liquid.SignMessageRequest{
Message: message,
}
signMessageResponse, err := sdk.SignMessage(signMessageRequest)
if err != nil {
log.Printf("Error: %#v", err)
return
}

// Get the wallet info for your pubkey
info, err := sdk.GetInfo()
if err != nil {
log.Printf("Error: %#v", err)
return
}

signature := signMessageResponse.Signature
pubkey := info.WalletInfo.Pubkey

log.Printf("Pubkey: %v", pubkey)
log.Printf("Signature: %v", signature)
// ANCHOR_END: sign-message
}

func CheckMessage(sdk *breez_sdk_liquid.BindingLiquidSdk) {
// ANCHOR: check-message
message := "<message>"
pubkey := "<pubkey of signer>"
signature := "<message signature>"

checkMessageRequest := breez_sdk_liquid.CheckMessageRequest{
Message: message,
Pubkey: pubkey,
Signature: signature,
}
checkMessageResponse, err := sdk.CheckMessage(checkMessageRequest)
if err != nil {
log.Printf("Error: %#v", err)
return
}

isValid := checkMessageResponse.IsValid

log.Printf("Signature valid: %v", isValid)
// ANCHOR_END: check-message
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.example.kotlinmpplib

import breez_sdk_liquid.*

class Messages {
fun signMessage(sdk: BindingLiquidSdk) {
// ANCHOR: sign-message
val message = "<message to sign>"
try {
val signMessageRequest = SignMessageRequest(message)
val signMessageResponse = sdk.signMessage(signMessageRequest)

// Get the wallet info for your pubkey
val info = sdk.getInfo()

val signature = signMessageResponse?.signature
val pubkey = info?.walletInfo?.pubkey

// Log.v("Breez", "Pubkey: ${pubkey}")
// Log.v("Breez", "Signature: ${signature}")
} catch (e: Exception) {
// handle error
}
// ANCHOR_END: sign-message
}

fun checkMessage(sdk: BindingLiquidSdk) {
// ANCHOR: check-message
val message = "<message>"
val pubkey = "<pubkey of signer>"
val signature = "<message signature>"
try {
val checkMessageRequest = CheckMessageRequest(message, pubkey, signature)
val checkMessageResponse = sdk.checkMessage(checkMessageRequest)

val isValid = checkMessageResponse?.isValid

// Log.v("Breez", "Signature valid: ${isValid}")
} catch (e: Exception) {
// handle error
}
// ANCHOR_END: check-message
}

}
40 changes: 40 additions & 0 deletions snippets/python/src/messages.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import logging
from breez_sdk_liquid import BindingLiquidSdk, CheckMessageRequest, SignMessageRequest


def sign_message(sdk: BindingLiquidSdk):
# ANCHOR: sign-message
message = "<message to sign>"
try:
sign_message_request = SignMessageRequest(message)
sign_message_response = sdk.sign_message(sign_message_request)

# Get the wallet info for your pubkey
info = sdk.get_info()

signature = sign_message_response.signature
pubkey = info.wallet_info.pubkey

logging.debug(f"Pubkey: {pubkey}")
logging.debug(f"Signature: {signature}")
except Exception as error:
logging.error(error)
raise
# ANCHOR_END: sign-message

def check_message(sdk: BindingLiquidSdk):
# ANCHOR: check-message
message = "<message>"
pubkey = "<pubkey of signer>"
signature = "<message signature>"
try:
check_message_request = CheckMessageRequest(message, pubkey, signature)
check_message_response = sdk.check_message(check_message_request)

is_valid = check_message_response.is_valid

logging.debug(f"Signature valid: {is_valid}")
except Exception as error:
logging.error(error)
raise
# ANCHOR_END: check-message
35 changes: 35 additions & 0 deletions snippets/react-native/messages.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import {
checkMessage,
getInfo,
signMessage
} from '@breeztech/react-native-breez-sdk-liquid'

const exampleSignMessage = async () => {
// ANCHOR: sign-message
const signMessageResponse = await signMessage({
message: '<message to sign>'
})

// Get the wallet info for your pubkey
const info = await getInfo()

const signature = signMessageResponse.signature
const pubkey = info.walletInfo.pubkey

console.log(`Pubkey: ${pubkey}`)
console.log(`Signature: ${signature}`)
// ANCHOR_END: sign-message
}

const exampleCheckMessage = async () => {
// ANCHOR: check-message
const checkMessageResponse = await checkMessage({
message: '<message>',
pubkey: '<pubkey of signer>',
signature: '<message signature>'
})
const isValid = checkMessageResponse.isValid

console.log(`Signature valid: ${isValid}`)
// ANCHOR_END: check-message
}
42 changes: 42 additions & 0 deletions snippets/rust/src/messages.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
use std::sync::Arc;

use anyhow::Result;
use breez_sdk_liquid::prelude::*;
use log::info;

async fn sign_message(sdk: Arc<LiquidSdk>) -> Result<()> {
// ANCHOR: sign-message
let sign_message_request = SignMessageRequest {
message: "<message to sign>".to_string(),
};
let sign_message_response = sdk
.sign_message(&sign_message_request)?;

// Get the wallet info for your pubkey
let info = sdk.get_info().await?;

let signature = sign_message_response.signature;
let pubkey = info.wallet_info.pubkey;

info!("Pubkey: {}", pubkey);
info!("Signature: {}", signature);
// ANCHOR_END: sign-message
Ok(())
}

fn check_message(sdk: Arc<LiquidSdk>) -> Result<()> {
// ANCHOR: check-message
let check_message_request = CheckMessageRequest {
message: "<message>".to_string(),
pubkey: "<pubkey of signer>".to_string(),
signature: "<message signature>".to_string(),
};
let check_message_response = sdk
.check_message(&check_message_request)?;

let is_valid = check_message_response.is_valid;

info!("Signature valid: {}", is_valid);
// ANCHOR_END: check-message
Ok(())
}
8 changes: 6 additions & 2 deletions snippets/rust/src/pay_onchain.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@ async fn prepare_pay_onchain(sdk: Arc<LiquidSdk>) -> Result<()> {
// ANCHOR: prepare-pay-onchain
let prepare_res = sdk
.prepare_pay_onchain(&PreparePayOnchainRequest {
amount: PayAmount::Bitcoin { receiver_amount_sat: 5_000 },
amount: PayAmount::Bitcoin {
receiver_amount_sat: 5_000,
},
fee_rate_sat_per_vbyte: None,
})
.await?;
Expand Down Expand Up @@ -53,7 +55,9 @@ async fn prepare_pay_onchain_fee_rate(sdk: Arc<LiquidSdk>) -> Result<()> {

let prepare_res = sdk
.prepare_pay_onchain(&PreparePayOnchainRequest {
amount: PayAmount::Bitcoin { receiver_amount_sat: 5_000 },
amount: PayAmount::Bitcoin {
receiver_amount_sat: 5_000,
},
fee_rate_sat_per_vbyte: optional_sat_per_vbyte,
})
.await?;
Expand Down
38 changes: 38 additions & 0 deletions snippets/swift/BreezSDKExamples/Sources/Messages.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import BreezSDKLiquid

func signMessage(sdk: BindingLiquidSdk) -> SignMessageResponse? {
// ANCHOR: sign-message
let signMessageRequest = SignMessageRequest(
message: "<message to sign>"
)
let signMessageResponse = try? sdk
.signMessage(req: signMessageRequest)

// Get the wallet info for your pubkey
let info = try? sdk.getInfo()

let signature = signMessageResponse!.signature
let pubkey = info!.walletInfo.pubkey

print("Pubkey: {}", pubkey);
print("Signature: {}", signature);
// ANCHOR_END: sign-message
return signMessageResponse
}

func checkMessage(sdk: BindingLiquidSdk) -> CheckMessageResponse? {
// ANCHOR: check-message
let checkMessageRequest = CheckMessageRequest(
message: "<message>",
pubkey: "<pubkey of signer>",
signature: "<message signature>"
)
let checkMessageResponse = try? sdk
.checkMessage(req: checkMessageRequest)

let isValid = checkMessageResponse!.isValid

print("Signature valid: {}", isValid);
// ANCHOR_END: check-message
return checkMessageResponse
}
Loading

0 comments on commit 8ca3af0

Please sign in to comment.