Skip to content
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

Add API commands to sign & verify arbitrary messages #1499

Merged
merged 19 commits into from
Aug 7, 2020

Conversation

dariuskramer
Copy link
Contributor

@dariuskramer dariuskramer commented Jul 30, 2020

Fixes #1496

End to End tests

Sign by -> Verified by

  • Eclair -> Eclair
  • Eclair -> Lnd
  • Eclair -> C-lightning
  • Lnd -> Eclair
  • C-lightning -> Eclair

How to use the signmessage command

$> eclair-cli signmessage --msg=$(echo -n 'hello, world' | base64)
{
  "nodeId": "02ca7361934233f6d4defd4d792fb2ce2cd0b50c7605e6c5cd16006bcd5be2bf70",
  "message": "aGVsbG8gd29ybGQK",
  "signature": "1f730dce842c31b692dc041c2d0f00423d2a2a67b0c63c1a905d500f09652a5b1a036763a1603333fa589ae92d1f7963428ff170e976d0966a113f4b9f9d0efc7f"
}

How to use the verifymessage command

$> eclair-clir verifymessage --msg=$(echo -n 'hello, world' | base64) --sig=1f730dce842c31b692dc041c2d0f00423d2a2a67b0c63c1a905d500f09652a5b1a036763a1603333fa589ae92d1f7963428ff170e976d0966a113f4b9f9d0efc7f
{
  "valid": true,
  "publicKey": "02ca7361934233f6d4defd4d792fb2ce2cd0b50c7605e6c5cd16006bcd5be2bf70"
}

Signature format conversion

The signature we return are in hexadecimal format. Lnd & C-lightning use a zbase32 format. To convert from and to zbase32 you can use zbase32 and some basics Unix tools.

Hexadecimal to zbase32

echo -n "${eclair_signature}" | xxd -revert -plain | zbase32-encode

zbase32 to Hexadecimal

zbase32-decode "${zbase32_signature}" | xxd -cols 256 -plain

Message format

We expect the msg argument, for both commands, to be a valid base64 string, to avoid issues with charset and encoding:

$> eclair-cli signmessage --msg=0123456789-invalid
The form field 'msg' was malformed:
Invalid base 64 character '-' at index 10

@dariuskramer dariuskramer force-pushed the feature/api-signmessage-verifymessage branch from 5c00653 to defcc7d Compare July 30, 2020 15:55
Donovan Jean added 8 commits July 30, 2020 17:55
Signed-off-by: Donovan Jean <donovan@acinq.fr>
Signed-off-by: Donovan Jean <donovan@acinq.fr>
Signed-off-by: Donovan Jean <donovan@acinq.fr>
Signed-off-by: Donovan Jean <donovan@acinq.fr>
Signed-off-by: Donovan Jean <donovan@acinq.fr>
Signed-off-by: Donovan Jean <donovan@acinq.fr>
Signed-off-by: Donovan Jean <donovan@acinq.fr>
Signed-off-by: Donovan Jean <donovan@acinq.fr>
Donovan Jean added 5 commits August 4, 2020 17:20
Signed-off-by: Donovan Jean <donovan@acinq.fr>
Signed-off-by: Donovan Jean <donovan@acinq.fr>
Signed-off-by: Donovan Jean <donovan@acinq.fr>
Signed-off-by: Donovan Jean <donovan@acinq.fr>
Signed-off-by: Donovan Jean <donovan@acinq.fr>
Signed-off-by: Donovan Jean <donovan@acinq.fr>
@dariuskramer dariuskramer force-pushed the feature/api-signmessage-verifymessage branch from 03a643d to 5f53fd9 Compare August 6, 2020 09:52
Donovan Jean added 3 commits August 6, 2020 11:52
Signed-off-by: Donovan Jean <donovan@acinq.fr>
Signed-off-by: Donovan Jean <donovan@acinq.fr>
Signed-off-by: Donovan Jean <donovan@acinq.fr>
Signed-off-by: Donovan Jean <donovan@acinq.fr>
@dariuskramer dariuskramer marked this pull request as ready for review August 7, 2020 12:29
Signed-off-by: Donovan Jean <donovan@acinq.fr>
Copy link
Member

@t-bast t-bast left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! 🚀

@dariuskramer dariuskramer merged commit 01f924a into master Aug 7, 2020
@t-bast t-bast deleted the feature/api-signmessage-verifymessage branch August 11, 2020 07:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add signmessage and verifymessage APIs
2 participants