From be06e8f53858de489e07f8432ad4bd92eda564f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Haf?= Date: Tue, 25 Mar 2025 13:25:54 +0100 Subject: [PATCH] add sign message action --- Dockerfile | 1 + actions/signmessage.sh | 28 ++++++++++++++++++++++++++++ manifest.yaml | 29 +++++++++++++++++++++++++++++ 3 files changed, 58 insertions(+) create mode 100644 actions/signmessage.sh diff --git a/Dockerfile b/Dockerfile index b637410..9dfe582 100644 --- a/Dockerfile +++ b/Dockerfile @@ -87,6 +87,7 @@ COPY ./manager/target/${ARCH}-unknown-linux-musl/release/bitcoind-manager \ ./actions/reindex.sh \ ./actions/sendcoin.sh \ ./actions/sendall.sh \ + ./actions/signmessage.sh \ ./actions/reindex_chainstate.sh \ ./actions/prioritise-transaction.sh \ ./check-rpc.sh \ diff --git a/actions/signmessage.sh b/actions/signmessage.sh new file mode 100644 index 0000000..5ffca19 --- /dev/null +++ b/actions/signmessage.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +set -e + +if ! bitcoin-cli listwalletdir | jq -e '.wallets[] | select(.name == "coin")' &> /dev/null; then + bitcoin-cli createwallet "coin" &> /dev/null +fi + +if ! bitcoin-cli getwalletinfo &> /dev/null; then + bitcoin-cli loadwallet coin &> /dev/null +fi + +cat > input.json +ADDRESS=$(jq -r '.["address"]' input.json) +MESSAGE=$(jq -r '.["message"]' input.json) +rm input.json + +SIG=$(bitcoin-cli signmessage "$ADDRESS" "$MESSAGE") + +result=" { + \"version\": \"0\", + \"message\": \"Signature: $SIG\", + \"value\": null, + \"copyable\": true, + \"qr\": false +}" + +echo $result \ No newline at end of file diff --git a/manifest.yaml b/manifest.yaml index b6c2da4..52028b6 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -323,6 +323,35 @@ actions: range: "[0,1000000]" default: 0 nullable: false + signmessage: + name: "Sign message" + description: "Sign a message with a bitcoin address." + allowed-statuses: + - running + implementation: + type: docker + image: main + system: false + entrypoint: signmessage.sh + args: [] + io-format: json + mounts: + main: /root/.bitcoin + inject: true + input-spec: + address: + type: string + name: Address + description: "The bitcoin address to use to sign the message." + placeholder: "" + nullable: false + message: + type: string + name: Message + description: "The message to sign." + placeholder: "" + nullable: false + migrations: from: "*":