Pages:
Author

Topic: [BOUNTY: 2.0 BTC] [CLAIMED] Message Signing in Armory - page 4. (Read 7978 times)

legendary
Activity: 1428
Merit: 1093
Core Armory Developer
Great, I thought your deadline would have been shorter. I'm ok to look at it if you're ok.
I just want to be sure I understand: you want to sign a message with a private key? I thought Armory already signed messages

Armory's signmessage is not compatible with Bitcoin-Qt.  Their signatures cannot be cross-verified (not even the same format).  I didn't want to follow Bitcoin-Qt because I hate bare signatures.  So I proposed I would become compatible if they started to support "proper" signatures:  which is the original, properly encoded text, along with the signature.  I didn't even get any commitment from them on this but someone suggested that RFC2440 was the way to go, and if I lead, I might get them to follow.  Especially if it builds off an existing standard.

"Version 0" will be compatible with the existing Bitcoin-Qt, so that bare-signatures will cross-verify.  I know some people still want the backwards compatibility. 

"Version 1" implements the target behavior:  copy this base64 block of text into and it pops up a windows saying "The following message has a verified signature from Address X:  ".  This is how message signing should be.  Not multiple copy&paste ops which fail if you miss a whitespace character.
legendary
Activity: 1176
Merit: 1260
May Bitcoin be touched by his Noodly Appendage
Great, I thought your deadline would have been shorter. I'm ok to look at it if you're ok.
I just want to be sure I understand: you want to sign a message with a private key? I thought Armory already signed messages
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
I'm interested. In how much time this needs to be done?

I'd like to have it done in a couple weeks.  But if there are snags and it can't be done before then, I guess there's not much I can do, eh?  But if you look at the RFC, it doesn't look like it will be terribly difficult.  Especially in python.
legendary
Activity: 1176
Merit: 1260
May Bitcoin be touched by his Noodly Appendage
I'm interested. In how much time this needs to be done?
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
Raised the bounty to 2 BTC!
legendary
Activity: 1428
Merit: 1093
Core Armory Developer
    Claimed by jackjack!

    Original message:



    I was going to do this myself, but it should be fairly straightforward to implement and I have some other priorities right now.  But there has been demand for it, so I'll let someone else take a shot it for me.  The string manipulations should be trivial in python.

    Goals:
    • (1) Create a new message signing algorithm that I can easily wrap with a nice GUI
    • (2) It should have three modes:
    •  
      • (a) Bare signatures, compatible with signatures from Bitcoin-Qt/bitcoind
      • (b) RFC2440-compatible, ASCII-armored signature blocks (Base64), with the CRC-24
      • (c) RFC2440-compatible, ASCII-armored signature blocks (Clearsign)
    • (3) It would be neat if the clear-signed messages were somehow compatible with bare signatures: i.e. you could copy the text into Bitcoin-Qt and signature into Bitcoin-Qt and it would verify properly.  But I highly doubt that's possible... maybe for simple messages
    • (4) Unit-tests that demonstrate dash-escaping, newline behavior, and unicode support
    • (5) Be willing to release the copyright of your solution to public domain
      The reason I think (3) is not possible is that
    Sections 6 and 7 of RFC2440 indicate changing newlines (\n) to Windows newlines (\r\n).  And dash-escaping the clear-signed text, but using the original text for signing.  I haven't looked too deeply into it, but what I've seen is that it won't be too complicated, just requires some attention to detail.  Such as getting CRC-24 coded correctly (also looks simple).  

    For Base64 encoding: go figure, python has it built-in:  "import base64;  base64.b64encode(msg), and base64.b64decode(sigBlock)"

    This doesn't need to be integrated into the GUI at all.  Just have it operate on raw strings, and I will integrate it into the GUI.  The GUI would probably have radio buttons that say "Version 0 (Bare Signature/Bitcoin-Qt)", "Version 1 (Base64)", "Version 1 (Clearsign)", and the appropriate signature would be produced for the text that is in the text box (which may include newlines, dashes, and unicode).

    Anyone up for the task?  [/list][/list]
    Pages:
    Jump to: