Skip to content

Add signing and verifying message docs #84

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

Merged
merged 2 commits into from
Mar 3, 2025
Merged
Show file tree
Hide file tree
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
50 changes: 50 additions & 0 deletions snippets/csharp/Messages.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
using Breez.Sdk.Liquid;

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

// 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
}
}
37 changes: 37 additions & 0 deletions snippets/dart_snippets/lib/messages.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import 'package:dart_snippets/sdk_instance.dart';
import 'package:flutter_breez_liquid/flutter_breez_liquid.dart';

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

// 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
CheckMessageResponse checkMessageResponse = breezSDKLiquid.instance!.checkMessage(
req: CheckMessageRequest(
message: "<message>",
pubkey: "<pubkey of signer>",
signature: "<message signature>"
),
);

bool isValid = checkMessageResponse.isValid;

print("Signature valid: $isValid");
// ANCHOR_END: check-message
return checkMessageResponse;
}
60 changes: 60 additions & 0 deletions snippets/go/messages.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
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,44 @@
package com.example.kotlinmpplib

import breez_sdk_liquid.*

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

// 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
}

}
39 changes: 39 additions & 0 deletions snippets/python/src/messages.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
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_response = sdk.sign_message(SignMessageRequest(message))

# 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
}
40 changes: 40 additions & 0 deletions snippets/rust/src/messages.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
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_response = sdk
.sign_message(&SignMessageRequest {
message: "<message to sign>".to_string(),
})?;

// 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_response = sdk
.check_message(&CheckMessageRequest {
message: "<message>".to_string(),
pubkey: "<pubkey of signer>".to_string(),
signature: "<message signature>".to_string(),
})?;

let is_valid = check_message_response.is_valid;

info!("Signature valid: {}", is_valid);
// ANCHOR_END: check-message
Ok(())
}
36 changes: 36 additions & 0 deletions snippets/swift/BreezSDKExamples/Sources/Messages.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import BreezSDKLiquid

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

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

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

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

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

let isValid = checkMessageRequest!.isValid

print("Signature valid: {}", isValid);
// ANCHOR_END: check-message
return checkMessageRequest
}
15 changes: 6 additions & 9 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
- [Receiving payments using LNURL-Pay/Lightning address](guide/lnurl_pay_service.md)
- [Receiving payments using LNURL-Withdraw](guide/lnurl_withdraw.md)
- [Authenticating using LNURL-Auth](guide/lnurl_auth.md)
- [Signing and verifying messages](guide/messages.md)
- [Supporting fiat currencies](guide/fiat_currencies.md)
- [Buying Bitcoin](guide/buy_btc.md)
- [End-user fees](guide/end-user_fees.md)
Expand All @@ -43,12 +44,8 @@
- [iOS](notifications/ios_setup.md)
- [Setting up the notification dervice extension](notifications/ios_service.md)
- [Adding the notification plugin](notifications/ios_plugin.md)

---

# Advanced

- [Adding logging](notifications/logging.md)
- [Changing default strings](notifications/changing_strings.md)
- [Customising push messages](notifications/custom_messages.md)
- [Handling custom notifications](notifications/custom_notifications.md)
- [Advanced](notifications/advanced.md)
- [Adding logging](notifications/logging.md)
- [Changing default strings](notifications/changing_strings.md)
- [Customising push messages](notifications/custom_messages.md)
- [Handling custom notifications](notifications/custom_notifications.md)
Loading
Loading