From 51839435e88f7d484b8c95f0f9efe1e704e97a58 Mon Sep 17 00:00:00 2001 From: Ross Savage Date: Thu, 27 Feb 2025 21:25:06 +0100 Subject: [PATCH 1/2] Add signing and verifying message docs --- snippets/csharp/Messages.cs | 50 ++++++ snippets/dart_snippets/lib/messages.dart | 37 +++++ snippets/go/messages.go | 60 +++++++ .../com/example/kotlinmpplib/Messages.kt | 44 ++++++ snippets/python/src/messages.py | 39 +++++ snippets/react-native/messages.ts | 35 ++++ snippets/rust/src/messages.rs | 40 +++++ .../BreezSDKExamples/Sources/Messages.swift | 36 +++++ src/SUMMARY.md | 15 +- src/guide/messages.md | 149 ++++++++++++++++++ src/notifications/advanced.md | 9 ++ 11 files changed, 505 insertions(+), 9 deletions(-) create mode 100644 snippets/csharp/Messages.cs create mode 100644 snippets/dart_snippets/lib/messages.dart create mode 100644 snippets/go/messages.go create mode 100644 snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Messages.kt create mode 100644 snippets/python/src/messages.py create mode 100644 snippets/react-native/messages.ts create mode 100644 snippets/rust/src/messages.rs create mode 100644 snippets/swift/BreezSDKExamples/Sources/Messages.swift create mode 100644 src/guide/messages.md create mode 100644 src/notifications/advanced.md diff --git a/snippets/csharp/Messages.cs b/snippets/csharp/Messages.cs new file mode 100644 index 00000000..5f50e424 --- /dev/null +++ b/snippets/csharp/Messages.cs @@ -0,0 +1,50 @@ +using Breez.Sdk.Liquid; + +public class MessagesSnippets +{ + public void SignMessage(BindingLiquidSdk sdk) + { + // ANCHOR: sign-message + var message = ""; + 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 = ""; + var pubkey = ""; + var 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 + } +} diff --git a/snippets/dart_snippets/lib/messages.dart b/snippets/dart_snippets/lib/messages.dart new file mode 100644 index 00000000..37b9d12f --- /dev/null +++ b/snippets/dart_snippets/lib/messages.dart @@ -0,0 +1,37 @@ +import 'package:dart_snippets/sdk_instance.dart'; +import 'package:flutter_breez_liquid/flutter_breez_liquid.dart'; + +Future signMessage() async { + // ANCHOR: sign-message + SignMessageResponse signMessageResponse = breezSDKLiquid.instance!.signMessage( + req: SignMessageRequest(message: ""), + ); + + // 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 checkMessage() async { + // ANCHOR: check-message + CheckMessageResponse checkMessageResponse = breezSDKLiquid.instance!.checkMessage( + req: CheckMessageRequest( + message: "", + pubkey: "", + signature: "" + ), + ); + + bool isValid = checkMessageResponse.isValid; + + print("Signature valid: $isValid"); + // ANCHOR_END: check-message + return checkMessageResponse; +} diff --git a/snippets/go/messages.go b/snippets/go/messages.go new file mode 100644 index 00000000..5ccadf6f --- /dev/null +++ b/snippets/go/messages.go @@ -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 := "" + + 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 := "" + pubkey := "" + 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 +} diff --git a/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Messages.kt b/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Messages.kt new file mode 100644 index 00000000..08efb15b --- /dev/null +++ b/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Messages.kt @@ -0,0 +1,44 @@ +package com.example.kotlinmpplib + +import breez_sdk_liquid.* + +class Messages { + fun signMessage(sdk: BindingLiquidSdk) { + // ANCHOR: sign-message + val message = "" + 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 = "" + val pubkey = "" + val 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 + } + +} diff --git a/snippets/python/src/messages.py b/snippets/python/src/messages.py new file mode 100644 index 00000000..15fa39ed --- /dev/null +++ b/snippets/python/src/messages.py @@ -0,0 +1,39 @@ +import logging +from breez_sdk_liquid import BindingLiquidSdk, CheckMessageRequest, SignMessageRequest + + +def sign_message(sdk: BindingLiquidSdk): + # ANCHOR: sign-message + message = "" + 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 = "" + pubkey = "" + 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 diff --git a/snippets/react-native/messages.ts b/snippets/react-native/messages.ts new file mode 100644 index 00000000..14e880b8 --- /dev/null +++ b/snippets/react-native/messages.ts @@ -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: '' + }) + + // 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: '', + pubkey: '', + signature: '' + }) + const isValid = checkMessageResponse.isValid + + console.log(`Signature valid: ${isValid}`) + // ANCHOR_END: check-message +} diff --git a/snippets/rust/src/messages.rs b/snippets/rust/src/messages.rs new file mode 100644 index 00000000..fa5eb739 --- /dev/null +++ b/snippets/rust/src/messages.rs @@ -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) -> Result<()> { + // ANCHOR: sign-message + let sign_message_response = sdk + .sign_message(&SignMessageRequest { + message: "".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) -> Result<()> { + // ANCHOR: check-message + let check_message_response = sdk + .check_message(&CheckMessageRequest { + message: "".to_string(), + pubkey: "".to_string(), + signature: "".to_string(), + })?; + + let is_valid = check_message_response.is_valid; + + info!("Signature valid: {}", is_valid); + // ANCHOR_END: check-message + Ok(()) +} diff --git a/snippets/swift/BreezSDKExamples/Sources/Messages.swift b/snippets/swift/BreezSDKExamples/Sources/Messages.swift new file mode 100644 index 00000000..9d4eca31 --- /dev/null +++ b/snippets/swift/BreezSDKExamples/Sources/Messages.swift @@ -0,0 +1,36 @@ +import BreezSDKLiquid + +func signMessage(sdk: BindingLiquidSdk) -> SignMessageResponse? { + // ANCHOR: sign-message + let signMessageRequest = try? sdk + .signMessage(req: SignMessageRequest( + message: "" + )) + + // 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: "", + pubkey: "", + signature: "" + )) + + let isValid = checkMessageRequest!.isValid + + print("Signature valid: {}", isValid); + // ANCHOR_END: check-message + return checkMessageRequest +} diff --git a/src/SUMMARY.md b/src/SUMMARY.md index b43ec414..b420a63f 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -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) @@ -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) diff --git a/src/guide/messages.md b/src/guide/messages.md new file mode 100644 index 00000000..c7006e5e --- /dev/null +++ b/src/guide/messages.md @@ -0,0 +1,149 @@ +# Signing and verifying messages + +Through signing and verifying messages we can provide proof that a digital signature was created by a private key. + +

+ Signing a message + API docs +

+ +By signing a message using the SDK we can provide a digital signature. Anyone with the message, pubkey and signature can verify the signature was created by the private key of this pubkey. + + +
Rust
+
+ +```rust,ignore +{{#include ../../snippets/rust/src/messages.rs:sign-message}} +``` +
+ +
Swift
+
+ +```swift,ignore +{{#include ../../snippets/swift/BreezSDKExamples/Sources/Messages.swift:sign-message}} +``` +
+ +
Kotlin
+
+ +```kotlin,ignore +{{#include ../../snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Messages.kt:sign-message}} +``` +
+ +
React Native
+
+ +```typescript +{{#include ../../snippets/react-native/messages.ts:sign-message}} +``` +
+ +
Dart
+
+ +```dart,ignore +{{#include ../../snippets/dart_snippets/lib/messages.dart:sign-message}} +``` +
+ +
Python
+
+ +```python,ignore +{{#include ../../snippets/python/src/messages.py:sign-message}} +``` +
+ +
Go
+
+ +```go,ignore +{{#include ../../snippets/go/messages.go:sign-message}} +``` +
+ +
C#
+
+ +```cs,ignore +{{#include ../../snippets/csharp/Messages.cs:sign-message}} +``` +
+
+ +

+ Verifying a message + API docs +

+ +You can prove control of a private key by verifying a message with it's signature and pubkey. + + +
Rust
+
+ +```rust,ignore +{{#include ../../snippets/rust/src/messages.rs:check-message}} +``` +
+ +
Swift
+
+ +```swift,ignore +{{#include ../../snippets/swift/BreezSDKExamples/Sources/Messages.swift:check-message}} +``` +
+ +
Kotlin
+
+ +```kotlin,ignore +{{#include ../../snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Messages.kt:check-message}} +``` +
+ +
React Native
+
+ +```typescript +{{#include ../../snippets/react-native/messages.ts:check-message}} +``` +
+ +
Dart
+
+ +```dart,ignore +{{#include ../../snippets/dart_snippets/lib/messages.dart:check-message}} +``` +
+ +
Python
+
+ +```python,ignore +{{#include ../../snippets/python/src/messages.py:check-message}} +``` +
+ +
Go
+
+ +```go,ignore +{{#include ../../snippets/go/messages.go:check-message}} +``` +
+ +
C#
+
+ +```cs,ignore +{{#include ../../snippets/csharp/Messages.cs:check-message}} +``` +
+
\ No newline at end of file diff --git a/src/notifications/advanced.md b/src/notifications/advanced.md new file mode 100644 index 00000000..0ab59612 --- /dev/null +++ b/src/notifications/advanced.md @@ -0,0 +1,9 @@ +# Advanced + +Here are some advanced topics to help extend and customise the Notification Plugin: + +- **[Adding logging](logging.md)** +- **[Changing default strings](changing_strings.md)** +- **[Customising push messages](custom_messages.md)** +- **[Handling custom notifications](custom_notifications.md)** + From 4605a49bf56a6916e529c99525604b6f28696095 Mon Sep 17 00:00:00 2001 From: Ross Savage Date: Fri, 28 Feb 2025 14:37:20 +0100 Subject: [PATCH 2/2] Apply review feedback --- .github/workflows/main.yml | 5 ---- snippets/csharp/Messages.cs | 3 +- snippets/dart_snippets/lib/messages.dart | 16 ++++++---- snippets/go/messages.go | 2 -- .../com/example/kotlinmpplib/Messages.kt | 3 +- snippets/python/src/messages.py | 3 +- snippets/rust/src/messages.rs | 18 ++++++----- snippets/rust/src/pay_onchain.rs | 8 +++-- .../BreezSDKExamples/Sources/Messages.swift | 30 ++++++++++--------- src/guide/messages.md | 4 +-- 10 files changed, 50 insertions(+), 42 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3f7f48d9..19b41d6b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -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 diff --git a/snippets/csharp/Messages.cs b/snippets/csharp/Messages.cs index 5f50e424..6e9dfccb 100644 --- a/snippets/csharp/Messages.cs +++ b/snippets/csharp/Messages.cs @@ -8,7 +8,8 @@ public void SignMessage(BindingLiquidSdk sdk) var message = ""; try { - var signMessageResponse = sdk.SignMessage(new SignMessageRequest(message)); + var signMessageRequest = new SignMessageRequest(message); + var signMessageResponse = sdk.SignMessage(signMessageRequest); // Get the wallet info for your pubkey var info = sdk.GetInfo(); diff --git a/snippets/dart_snippets/lib/messages.dart b/snippets/dart_snippets/lib/messages.dart index 37b9d12f..b4e85c8b 100644 --- a/snippets/dart_snippets/lib/messages.dart +++ b/snippets/dart_snippets/lib/messages.dart @@ -3,8 +3,11 @@ import 'package:flutter_breez_liquid/flutter_breez_liquid.dart'; Future signMessage() async { // ANCHOR: sign-message + SignMessageRequest signMessageRequest = SignMessageRequest( + message: "", + ); SignMessageResponse signMessageResponse = breezSDKLiquid.instance!.signMessage( - req: SignMessageRequest(message: ""), + req: signMessageRequest, ); // Get the wallet info for your pubkey @@ -21,12 +24,13 @@ Future signMessage() async { Future checkMessage() async { // ANCHOR: check-message + CheckMessageRequest checkMessageRequest = CheckMessageRequest( + message: "", + pubkey: "", + signature: "", + ); CheckMessageResponse checkMessageResponse = breezSDKLiquid.instance!.checkMessage( - req: CheckMessageRequest( - message: "", - pubkey: "", - signature: "" - ), + req: checkMessageRequest, ); bool isValid = checkMessageResponse.isValid; diff --git a/snippets/go/messages.go b/snippets/go/messages.go index 5ccadf6f..a17ee22a 100644 --- a/snippets/go/messages.go +++ b/snippets/go/messages.go @@ -13,7 +13,6 @@ func SignMessage(sdk *breez_sdk_liquid.BindingLiquidSdk) { signMessageRequest := breez_sdk_liquid.SignMessageRequest{ Message: message, } - signMessageResponse, err := sdk.SignMessage(signMessageRequest) if err != nil { log.Printf("Error: %#v", err) @@ -46,7 +45,6 @@ func CheckMessage(sdk *breez_sdk_liquid.BindingLiquidSdk) { Pubkey: pubkey, Signature: signature, } - checkMessageResponse, err := sdk.CheckMessage(checkMessageRequest) if err != nil { log.Printf("Error: %#v", err) diff --git a/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Messages.kt b/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Messages.kt index 08efb15b..4cb1c73b 100644 --- a/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Messages.kt +++ b/snippets/kotlin_mpp_lib/shared/src/commonMain/kotlin/com/example/kotlinmpplib/Messages.kt @@ -7,7 +7,8 @@ class Messages { // ANCHOR: sign-message val message = "" try { - val signMessageResponse = sdk.signMessage(SignMessageRequest(message)) + val signMessageRequest = SignMessageRequest(message) + val signMessageResponse = sdk.signMessage(signMessageRequest) // Get the wallet info for your pubkey val info = sdk.getInfo() diff --git a/snippets/python/src/messages.py b/snippets/python/src/messages.py index 15fa39ed..1eb43f48 100644 --- a/snippets/python/src/messages.py +++ b/snippets/python/src/messages.py @@ -6,7 +6,8 @@ def sign_message(sdk: BindingLiquidSdk): # ANCHOR: sign-message message = "" try: - sign_message_response = sdk.sign_message(SignMessageRequest(message)) + 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() diff --git a/snippets/rust/src/messages.rs b/snippets/rust/src/messages.rs index fa5eb739..01ee49b3 100644 --- a/snippets/rust/src/messages.rs +++ b/snippets/rust/src/messages.rs @@ -6,10 +6,11 @@ use log::info; async fn sign_message(sdk: Arc) -> Result<()> { // ANCHOR: sign-message + let sign_message_request = SignMessageRequest { + message: "".to_string(), + }; let sign_message_response = sdk - .sign_message(&SignMessageRequest { - message: "".to_string(), - })?; + .sign_message(&sign_message_request)?; // Get the wallet info for your pubkey let info = sdk.get_info().await?; @@ -25,12 +26,13 @@ async fn sign_message(sdk: Arc) -> Result<()> { fn check_message(sdk: Arc) -> Result<()> { // ANCHOR: check-message + let check_message_request = CheckMessageRequest { + message: "".to_string(), + pubkey: "".to_string(), + signature: "".to_string(), + }; let check_message_response = sdk - .check_message(&CheckMessageRequest { - message: "".to_string(), - pubkey: "".to_string(), - signature: "".to_string(), - })?; + .check_message(&check_message_request)?; let is_valid = check_message_response.is_valid; diff --git a/snippets/rust/src/pay_onchain.rs b/snippets/rust/src/pay_onchain.rs index 3cb8b81d..61b1f731 100644 --- a/snippets/rust/src/pay_onchain.rs +++ b/snippets/rust/src/pay_onchain.rs @@ -19,7 +19,9 @@ async fn prepare_pay_onchain(sdk: Arc) -> 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?; @@ -53,7 +55,9 @@ async fn prepare_pay_onchain_fee_rate(sdk: Arc) -> 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?; diff --git a/snippets/swift/BreezSDKExamples/Sources/Messages.swift b/snippets/swift/BreezSDKExamples/Sources/Messages.swift index 9d4eca31..fe6044f5 100644 --- a/snippets/swift/BreezSDKExamples/Sources/Messages.swift +++ b/snippets/swift/BreezSDKExamples/Sources/Messages.swift @@ -2,35 +2,37 @@ import BreezSDKLiquid func signMessage(sdk: BindingLiquidSdk) -> SignMessageResponse? { // ANCHOR: sign-message - let signMessageRequest = try? sdk - .signMessage(req: SignMessageRequest( - message: "" - )) + let signMessageRequest = SignMessageRequest( + message: "" + ) + let signMessageResponse = try? sdk + .signMessage(req: signMessageRequest) // Get the wallet info for your pubkey let info = try? sdk.getInfo() - let signature = signMessageRequest!.signature + let signature = signMessageResponse!.signature let pubkey = info!.walletInfo.pubkey print("Pubkey: {}", pubkey); print("Signature: {}", signature); // ANCHOR_END: sign-message - return signMessageRequest + return signMessageResponse } func checkMessage(sdk: BindingLiquidSdk) -> CheckMessageResponse? { // ANCHOR: check-message - let checkMessageRequest = try? sdk - .checkMessage(req: CheckMessageRequest( - message: "", - pubkey: "", - signature: "" - )) + let checkMessageRequest = CheckMessageRequest( + message: "", + pubkey: "", + signature: "" + ) + let checkMessageResponse = try? sdk + .checkMessage(req: checkMessageRequest) - let isValid = checkMessageRequest!.isValid + let isValid = checkMessageResponse!.isValid print("Signature valid: {}", isValid); // ANCHOR_END: check-message - return checkMessageRequest + return checkMessageResponse } diff --git a/src/guide/messages.md b/src/guide/messages.md index c7006e5e..904504f0 100644 --- a/src/guide/messages.md +++ b/src/guide/messages.md @@ -7,7 +7,7 @@ Through signing and verifying messages we can provide proof that a digital signa API docs -By signing a message using the SDK we can provide a digital signature. Anyone with the message, pubkey and signature can verify the signature was created by the private key of this pubkey. +By signing a message using the SDK we can provide a digital signature. Anyone with the `message`, `pubkey` and `signature` can verify the signature was created by the private key of this pubkey.
Rust
@@ -80,7 +80,7 @@ By signing a message using the SDK we can provide a digital signature. Anyone wi API docs -You can prove control of a private key by verifying a message with it's signature and pubkey. +You can prove control of a private key by verifying a `message` with it's `signature` and `pubkey`.
Rust