Bitcoin Forum
May 08, 2024, 03:07:48 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: HOW TO: Sign and verify messages  (Read 2446 times)
PulsarAV (OP)
Newbie
*
Offline Offline

Activity: 12
Merit: 0



View Profile
June 02, 2013, 07:05:18 PM
 #1

I recently had the need to sign a message and the lack of a clear explanation about the "how to", and the "what is it doing" was very frustrating.  I had to piece together the answers.

So, with that being said, here is my attempt at answering the questions above for the benefit of others.  All feedback (errors, omissions, etc...) is welcome.

First some nomenclature clarifications:

Send Address:  This is the BTC address of the seller/person that you are sending BTC to.
Sending Address: This is YOUR address (in your wallet known as a receive address) that the BTC is coming from.
Receive Address: This is YOUR address (also known as the Sending Address when you send BTC) that the BTC is coming to when you receive BTC


The "How to":

I will use the bitcoin-qt wallet (v0.8.2-beta) for reference.

In your wallet, click on the Receive button and locate the "Sign Message" button at the bottom.

http://s22.postimg.org/vojynbopt/screenshot_1.png

Click on the "Sign Message" button to open the sign message window
http://s22.postimg.org/8lb0hnh7l/screenshot_2.png

Find your Sending address:

If you have a single address in the Receive window - that's it, your Sending Address.  If you have multiple addresses in the Receive window like in the example above, you can go to https://blockchain.info/ and search for your last transaction.

http://s22.postimg.org/k0qdc5gip/screenshot_4.png

Once you know your sending address, select it from your addresses in the sign message window.

Write your message in the message area.

Generate a signature by clicking on the Sign Message button.

NOTE: Once you generate a signature, DO NOT modify anything in the Sign Message window.  If you do, the signature becomes invalid.

Now that you have the signature, SELECT, COPY, and PASTE the Sending address, Message, and Signature into a private message or email to the merchant for the merchant to verify.

I suggest the following format for the PM or email however the merchant may have other requirements.

Sending Address:
13FquMwkrDwj2yYFp2XJSgf4uKbfLbzTPc

Message:
---BEGIN WITH LINE BELOW ----
PulsarAV just sent you 40 BTC for the purchase of 20 Block Erupter USB Miners

Please ship to:
PulsarAV
1234 Anywhere Street
AnyCity, AnyState, AnyZip

Thanks,
---END WITH LINE ABOVE---

Signature:
HNtryLdIkjfWZ/8jGzoH255Aa96xG3sa+j5/XrrAjoL3NZ6YoseNMvYxRpBZNlwK+TeJP/JASJijHozKpUlXa8w=




The "What is it doing?":

The bitcoin wallet takes the information you provide (Sending Address and Message) and generates a unique cryptological Key (the signature).
The merchant takes the same information and copies it into the Verify window of his wallet and the wallet's algorithm verifies the message came from your wallet.  This proves you own that address and the BTC came from you.

I hope this helps someone avoid the frustration I had when trying to figure out the Sign Message feature of Bitcoin.

PulsarAV
13FquMwkrDwj2yYFp2XJSgf4uKbfLbzTPc

 
1715137668
Hero Member
*
Offline Offline

Posts: 1715137668

View Profile Personal Message (Offline)

Ignore
1715137668
Reply with quote  #2

1715137668
Report to moderator
1715137668
Hero Member
*
Offline Offline

Posts: 1715137668

View Profile Personal Message (Offline)

Ignore
1715137668
Reply with quote  #2

1715137668
Report to moderator
Remember that Bitcoin is still beta software. Don't put all of your money into BTC!
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
Birdy
Sr. Member
****
Offline Offline

Activity: 364
Merit: 250



View Profile
June 02, 2013, 07:15:55 PM
 #2

Thank you for making a nice explantion, I will suggest people wondering about signing to read this thread Smiley
tcrasher
Newbie
*
Offline Offline

Activity: 15
Merit: 0


View Profile
June 02, 2013, 07:52:27 PM
 #3

nice explantion
Alpha|FWZ
Newbie
*
Offline Offline

Activity: 8
Merit: 0


View Profile
June 02, 2013, 07:54:58 PM
 #4

Good info Thanks!
Lethn
Legendary
*
Offline Offline

Activity: 1540
Merit: 1000



View Profile WWW
June 02, 2013, 07:57:42 PM
 #5

wow thanks, I was aware of those buttons but I wasn't entirely sure what they did, like with a lot of stuff programmers do not just with Bitcoins you never get explanations as clear as this.
Chrithu
Full Member
***
Offline Offline

Activity: 224
Merit: 100


View Profile
June 02, 2013, 09:44:16 PM
 #6

Any mod please sticky this thread. That's exactly the kind of info that should be posted more frequently into the newbie area instead of the announcement for the next possible opportunity to burn money through gambling (Ignore my sig, I just take their money for advertising. I'm not using the site, since I am not into gambling, if you are into gambling that's fine and this site should satisfy you).

jackjack
Legendary
*
Offline Offline

Activity: 1176
Merit: 1233


May Bitcoin be touched by his Noodly Appendage


View Profile
June 03, 2013, 04:44:39 PM
 #7

wow thanks, I was aware of those buttons but I wasn't entirely sure what they did, like with a lot of stuff programmers do not just with Bitcoins you never get explanations as clear as this.
Ask for a How to in the dev forum, and I'm SURE at least one of the ones you will get will be clear

Any mod please sticky this thread. That's exactly the kind of info that should be posted more frequently into the newbie area instead of the announcement for the next possible opportunity to burn money through gambling (Ignore my sig, I just take their money for advertising. I'm not using the site, since I am not into gambling, if you are into gambling that's fine and this site should satisfy you).
Ask for How to's in the dev forum, some of them will be glad to make one


Own address: 19QkqAza7BHFTuoz9N8UQkryP4E9jHo4N3 - Pywallet support: 1AQDfx22pKGgXnUZFL1e4UKos3QqvRzNh5 - Bitcointalk++ script support: 1Pxeccscj1ygseTdSV1qUqQCanp2B2NMM2
Pywallet: instructions. Encrypted wallet support, export/import keys/addresses, backup wallets, export/import CSV data from/into wallet, merge wallets, delete/import addresses and transactions, recover altcoins sent to bitcoin addresses, sign/verify messages and files with Bitcoin addresses, recover deleted wallets, etc.
DannyHamilton
Legendary
*
Offline Offline

Activity: 3388
Merit: 4653



View Profile
June 04, 2013, 05:47:06 AM
 #8

All in all, a pretty good tutorial.  Be aware however that the following statement is not necessarily true:

- snip -
Find your Sending address:

If you have a single address in the Receive window - that's it, your Sending Address.
- snip -

Because of the way the Bitcoin-Qt wallet handles "change" it is entirely possible that your bitcoins "come from" an address that is not in your Receive window at all.  If you want to be sure that you are signing with the correct address, you'll have to wait until after you've already sent the bitcoins, and then you'll have to look up the transaction somewhere (such as blockchain.info).
darkfriend77
Sr. Member
****
Offline Offline

Activity: 434
Merit: 265


View Profile WWW
June 04, 2013, 05:56:20 AM
 #9

nice info :-)

-:| www.DOTMog.com |:-
tehsoto
Newbie
*
Offline Offline

Activity: 6
Merit: 0


View Profile
June 04, 2013, 06:02:54 AM
 #10

Thanks for the info.
sf2
Sr. Member
****
Offline Offline

Activity: 273
Merit: 250



View Profile
June 04, 2013, 09:14:36 PM
Last edit: August 19, 2014, 05:05:55 AM by sf2
 #11

 Smiley
mrmann
Newbie
*
Offline Offline

Activity: 12
Merit: 0



View Profile
June 04, 2013, 09:56:42 PM
 #12

Thanks. Good info.
riazg
Newbie
*
Offline Offline

Activity: 46
Merit: 0


View Profile
June 04, 2013, 10:05:36 PM
 #13

I have an online blockchain wallet. How can I do this for an online wallet?
Dealer
Newbie
*
Offline Offline

Activity: 41
Merit: 0



View Profile
June 04, 2013, 10:07:07 PM
 #14

Thanks for this, explains it really well!
tuntap
Newbie
*
Offline Offline

Activity: 16
Merit: 0



View Profile
June 04, 2013, 10:37:30 PM
 #15

Thanks for the info!
drico
Member
**
Offline Offline

Activity: 68
Merit: 10


View Profile
June 04, 2013, 11:00:54 PM
 #16

Thanks
pand70
Sr. Member
****
Offline Offline

Activity: 476
Merit: 250



View Profile
June 04, 2013, 11:16:05 PM
 #17

I m confused because i don't really now alot about cryptography.

Which key the software uses to create the signature?

And which key the receivers wallet uses to verify the message?

Thanks.

DannyHamilton
Legendary
*
Offline Offline

Activity: 3388
Merit: 4653



View Profile
June 05, 2013, 12:29:18 AM
 #18

I m confused because i don't really now alot about cryptography.

Which key the software uses to create the signature?

And which key the receivers wallet uses to verify the message?

Thanks.

Your wallet uses the private key associated with the address to create the signature.  It is called "private" because only you have access to it.  Since nobody else has access to it, they certainly wouldn't be able to use it to verify the signature.

The receiver's wallet uses the public key associated with the address to verify the signature.  It is called "public" because it is what is made publicly available to anyone that would verify a signature.
MikeMike
Legendary
*
Offline Offline

Activity: 2254
Merit: 1020


★ Ⓚ KORE TEAM Ⓚ ★


View Profile
June 05, 2013, 02:43:35 AM
 #19

When Canary asks for a signed message sent separately the below is what they are asking for.
Nothing but your shipping address.
No blank lines nor spaces.


-------------BEGIN---------------------
Please ship to:
John Smith
123 Way Ave
City, IL 60188
--------------END----------------------


https://bitcointalk.org/index.php?topic=219422.msg2310127#msg2310127

CDI
Newbie
*
Offline Offline

Activity: 12
Merit: 0


View Profile
June 05, 2013, 03:40:00 AM
 #20

Good info
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!