Skip to content

Commit 369e61e

Browse files
committed
Add signing and verifying message docs
1 parent 5238319 commit 369e61e

File tree

20 files changed

+536
-31
lines changed

20 files changed

+536
-31
lines changed

.github/workflows/main.yml

+13
Original file line numberDiff line numberDiff line change
@@ -127,15 +127,28 @@ jobs:
127127
- build-packages
128128
name: Check C# snippets
129129
runs-on: ubuntu-latest
130+
env:
131+
DOTNET_INSTALL_DIR: "${{ github.workspace }}/dotnet"
130132
steps:
131133
- name: Checkout repo
132134
uses: actions/checkout@v4
133135

136+
- name: Install Mono
137+
run: sudo apt-get update && sudo apt-get install -y mono-complete
138+
134139
- name: Setup dotnet
135140
uses: actions/setup-dotnet@v4
136141
with:
137142
dotnet-version: '7.0.x'
138143

144+
- name: Install Mono
145+
run: |
146+
sudo apt-get update
147+
sudo apt-get install -y mono-complete
148+
149+
- name: Setup nuget
150+
uses: nuget/setup-nuget@v2
151+
139152
- name: Download archived package
140153
uses: actions/download-artifact@v4
141154
with:

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
book
22
.DS_Store
33
.idea
4+
*.sln
45
*.nupkg

snippets/csharp/Messages.cs

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using Breez.Sdk;
2+
3+
public class MessagesSnippets
4+
{
5+
public void SignMessage(BlockingBreezServices sdk)
6+
{
7+
// ANCHOR: sign-message
8+
var message = "<message to sign>";
9+
try
10+
{
11+
var signMessageResponse = sdk.SignMessage(new SignMessageRequest(message));
12+
13+
// Get the node info for your pubkey
14+
var info = sdk.NodeInfo();
15+
16+
var signature = signMessageResponse?.signature;
17+
var pubkey = info?.id;
18+
19+
Console.WriteLine($"Pubkey: {pubkey}");
20+
Console.WriteLine($"Signature: {signature}");
21+
}
22+
catch (Exception)
23+
{
24+
// Handle error
25+
}
26+
// ANCHOR_END: sign-message
27+
}
28+
29+
public void CheckMessage(BlockingBreezServices sdk)
30+
{
31+
// ANCHOR: check-message
32+
var message = "<message>";
33+
var pubkey = "<pubkey of signer>";
34+
var signature = "<message signature>";
35+
try
36+
{
37+
var checkMessageRequest = new CheckMessageRequest(message, pubkey, signature);
38+
var checkMessageResponse = sdk.CheckMessage(checkMessageRequest);
39+
40+
var isValid = checkMessageResponse?.isValid;
41+
42+
Console.WriteLine($"Signature valid: {isValid}");
43+
}
44+
catch (Exception)
45+
{
46+
// Handle error
47+
}
48+
// ANCHOR_END: check-message
49+
}
50+
}
+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import 'package:dart_snippets/sdk_instance.dart';
2+
import 'package:breez_sdk/bridge_generated.dart';
3+
4+
Future<SignMessageResponse> signMessage() async {
5+
// ANCHOR: sign-message
6+
SignMessageResponse signMessageResponse = await breezSDK.signMessage(
7+
req: SignMessageRequest(message: "<message to sign>"),
8+
);
9+
10+
// Get the node info for your pubkey
11+
NodeState? info = await breezSDK.nodeInfo();
12+
13+
String signature = signMessageResponse.signature;
14+
String pubkey = info.walletInfo.pubkey;
15+
16+
print("Pubkey: $pubkey");
17+
print("Signature: $signature");
18+
// ANCHOR_END: sign-message
19+
return signMessageResponse;
20+
}
21+
22+
Future<CheckMessageResponse> checkMessage() async {
23+
// ANCHOR: check-message
24+
CheckMessageResponse checkMessageResponse = await breezSDK.checkMessage(
25+
req: CheckMessageRequest(
26+
message: "<message>",
27+
pubkey: "<pubkey of signer>",
28+
signature: "<message signature>"
29+
),
30+
);
31+
32+
bool isValid = checkMessageResponse.isValid;
33+
34+
print("Signature valid: $isValid");
35+
// ANCHOR_END: check-message
36+
return checkMessageResponse;
37+
}

snippets/go/messages.go

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package example
2+
3+
import (
4+
"log"
5+
6+
"github.com/breez/breez-sdk-go/breez_sdk"
7+
)
8+
9+
func SignMessage() {
10+
// ANCHOR: sign-message
11+
message := "<message to sign>"
12+
13+
signMessageRequest := breez_sdk.SignMessageRequest{
14+
Message: message,
15+
}
16+
17+
signMessageResponse, err := sdk.SignMessage(signMessageRequest)
18+
if err != nil {
19+
log.Printf("Error: %#v", err)
20+
return
21+
}
22+
23+
// Get the node info for your pubkey
24+
info, err := sdk.NodeInfo()
25+
if err != nil {
26+
log.Printf("Error: %#v", err)
27+
return
28+
}
29+
30+
signature := signMessageResponse.Signature
31+
pubkey := info.Id
32+
33+
log.Printf("Pubkey: %v", pubkey)
34+
log.Printf("Signature: %v", signature)
35+
// ANCHOR_END: sign-message
36+
}
37+
38+
func CheckMessage() {
39+
// ANCHOR: check-message
40+
message := "<message>"
41+
pubkey := "<pubkey of signer>"
42+
signature := "<message signature>"
43+
44+
checkMessageRequest := breez_sdk.CheckMessageRequest{
45+
Message: message,
46+
Pubkey: pubkey,
47+
Signature: signature,
48+
}
49+
50+
checkMessageResponse, err := sdk.CheckMessage(checkMessageRequest)
51+
if err != nil {
52+
log.Printf("Error: %#v", err)
53+
return
54+
}
55+
56+
isValid := checkMessageResponse.IsValid
57+
58+
log.Printf("Signature valid: %v", isValid)
59+
// ANCHOR_END: check-message
60+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.example.kotlinmpplib
2+
3+
import breez_sdk.*
4+
5+
class Messages {
6+
fun signMessage(sdk: BlockingBreezServices) {
7+
// ANCHOR: sign-message
8+
val message = "<message to sign>"
9+
try {
10+
val signMessageResponse = sdk.signMessage(SignMessageRequest(message))
11+
12+
// Get the node info for your pubkey
13+
val info = sdk.nodeInfo()
14+
15+
val signature = signMessageResponse?.signature
16+
val pubkey = info?.id
17+
18+
// Log.v("Breez", "Pubkey: ${pubkey}")
19+
// Log.v("Breez", "Signature: ${signature}")
20+
} catch (e: Exception) {
21+
// handle error
22+
}
23+
// ANCHOR_END: sign-message
24+
}
25+
26+
fun checkMessage(sdk: BlockingBreezServices) {
27+
// ANCHOR: check-message
28+
val message = "<message>"
29+
val pubkey = "<pubkey of signer>"
30+
val signature = "<message signature>"
31+
try {
32+
val checkMessageRequest = CheckMessageRequest(message, pubkey, signature)
33+
val checkMessageResponse = sdk.checkMessage(checkMessageRequest)
34+
35+
val isValid = checkMessageResponse?.isValid
36+
37+
// Log.v("Breez", "Signature valid: ${isValid}")
38+
} catch (e: Exception) {
39+
// handle error
40+
}
41+
// ANCHOR_END: check-message
42+
}
43+
44+
}

snippets/python/src/messages.py

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import logging
2+
import breez_sdk
3+
4+
5+
def sign_message(sdk_services):
6+
# ANCHOR: sign-message
7+
message = "<message to sign>"
8+
try:
9+
sign_message_response = sdk_services.sign_message(breez_sdk.SignMessageRequest(message))
10+
11+
# Get the node info for your pubkey
12+
info = sdk_services.node_info()
13+
14+
signature = sign_message_response.signature
15+
pubkey = info.id
16+
17+
logging.debug(f"Pubkey: {pubkey}")
18+
logging.debug(f"Signature: {signature}")
19+
except Exception as error:
20+
logging.error(error)
21+
raise
22+
# ANCHOR_END: sign-message
23+
24+
def check_message(sdk_services):
25+
# ANCHOR: check-message
26+
message = "<message>"
27+
pubkey = "<pubkey of signer>"
28+
signature = "<message signature>"
29+
try:
30+
check_message_request = breez_sdk.CheckMessageRequest(message, pubkey, signature)
31+
check_message_response = sdk_services.check_message(check_message_request)
32+
33+
is_valid = check_message_response.is_valid
34+
35+
logging.debug(f"Signature valid: {is_valid}")
36+
except Exception as error:
37+
logging.error(error)
38+
raise
39+
# ANCHOR_END: check-message

snippets/react-native/messages.ts

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import {
2+
checkMessage,
3+
nodeInfo,
4+
signMessage
5+
} from '@breeztech/react-native-breez-sdk'
6+
7+
const exampleSignMessage = async () => {
8+
// ANCHOR: sign-message
9+
const signMessageResponse = await signMessage({
10+
message: '<message to sign>'
11+
})
12+
13+
// Get the node info for your pubkey
14+
const info = await nodeInfo()
15+
16+
const signature = signMessageResponse.signature
17+
const pubkey = info.id
18+
19+
console.log(`Pubkey: ${pubkey}`)
20+
console.log(`Signature: ${signature}`)
21+
// ANCHOR_END: sign-message
22+
}
23+
24+
const exampleCheckMessage = async () => {
25+
// ANCHOR: check-message
26+
const checkMessageResponse = await checkMessage({
27+
message: '<message>',
28+
pubkey: '<pubkey of signer>',
29+
signature: '<message signature>'
30+
})
31+
const isValid = checkMessageResponse.isValid
32+
33+
console.log(`Signature valid: ${isValid}`)
34+
// ANCHOR_END: check-message
35+
}

snippets/react-native/pay_onchain.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import {
22
type OnchainPaymentLimitsResponse,
33
type PrepareOnchainPaymentResponse,
4-
fetchReverseSwapFees,
54
inProgressOnchainPayments,
65
onchainPaymentLimits,
76
payOnchain,
87
prepareOnchainPayment,
9-
SwapAmountType,
10-
maxReverseSwapAmount
8+
SwapAmountType
119
} from '@breeztech/react-native-breez-sdk'
1210

1311
const exampleFetchReverseSwapLimits = async () => {

snippets/rust/Cargo.lock

+7-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

snippets/rust/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ anyhow = "1"
88
bip39 = { version = "2", features = ["rand"] }
99
breez-sdk-core = { git = "https://github.com/breez/breez-sdk", tag = "0.6.1" }
1010
log = "0.4"
11-
tokio = "1.29"
11+
tokio = "1.41"

snippets/rust/src/lnurl_auth.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ async fn auth(sdk: Arc<BreezServices>) -> Result<()> {
1111
// keyauth://domain.com/auth?key=val
1212
let lnurl_auth_url = "lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttvdankjm3lw3skw0tvdankjm3xdvcn6vtp8q6n2dfsx5mrjwtrxdjnqvtzv56rzcnyv3jrxv3sxqmkyenrvv6kve3exv6nqdtyv43nqcmzvdsnvdrzx33rsenxx5unqc3cxgeqgntfgu";
1313

14-
if let Ok(LnUrlAuth { data: ad }) = parse(lnurl_auth_url).await {
15-
match sdk.lnurl_auth(ad).await {
14+
if let Ok(LnUrlAuth { data }) = parse(lnurl_auth_url, None).await {
15+
match sdk.lnurl_auth(data).await {
1616
Ok(LnUrlCallbackStatus::Ok) => {
1717
info!("Successfully authenticated")
1818
}

snippets/rust/src/lnurl_pay.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ async fn pay(sdk: Arc<BreezServices>) -> Result<()> {
1111
// lnurl1dp68gurn8ghj7mr0vdskc6r0wd6z7mrww4excttsv9un7um9wdekjmmw84jxywf5x43rvv35xgmr2enrxanr2cfcvsmnwe3jxcukvde48qukgdec89snwde3vfjxvepjxpjnjvtpxd3kvdnxx5crxwpjvyunsephsz36jf
1212
let lnurl_pay_url = "lightning@address.com";
1313

14-
if let Ok(LnUrlPay { data: pd }) = parse(lnurl_pay_url).await {
15-
let amount_msat = pd.min_sendable;
14+
if let Ok(LnUrlPay { data, .. }) = parse(lnurl_pay_url, None).await {
15+
let amount_msat = data.min_sendable;
1616
let use_trampoline = true;
1717
let optional_comment = Some("<comment>".to_string());
1818
let optional_payment_label = Some("<label>".to_string());
1919

2020
sdk.lnurl_pay(LnUrlPayRequest {
21-
data: pd,
21+
data,
2222
amount_msat,
2323
use_trampoline,
2424
comment: optional_comment,

0 commit comments

Comments
 (0)