Add SIGN ETH PERSONAL MESSAGE specification
Ethereum application : Common Technical Specifications
=======================================================
Ledger Firmware Team <hello@ledger.fr>
-Application version 1.1 - 11th of October 2016
+Application version 1.2 - 19th of August 2017
== 1.0
- Initial release
@@ -10,6 +10,9 @@ Application version 1.1 - 11th of October 2016
- Add GET APP CONFIGURATION
- Add an option to return the chain code in GET ETH PUBLIC ADDRESS
+== 1.2
+ - Add SIGN ETH PERSONAL MESSAGE
+
== About
This application describes the APDU messages interface to communicate with the Ethereum application.
@@ -128,6 +131,61 @@ The input data is the RLP encoded transaction (as per https://github.com/ethereu
| s | 32
|======================================================================================================
+=== SIGN ETH PERSONAL MESSAGE
+
+==== Description
+
+This command signs an Ethereum message following the personal_sign specification (https://github.com/ethereum/go-ethereum/pull/2940) after having the user validate the SHA-256 hash of the message being signed.
+
+This command has been supported since firmware version 1.0.8
+
+The input data is the message to sign, streamed to the device in 255 bytes maximum data chunks
+
+==== Coding
+
+'Command'
+
+[width="80%"]
+|==============================================================================================================================
+| *CLA* | *INS* | *P1* | *P2* | *Lc* | *Le*
+| E0 | 08 | 00 : first message data block
+
+ 80 : subsequent message data block
+ | 00 | variable | variable
+|==============================================================================================================================
+
+'Input data (first message data block)'
+
+[width="80%"]
+|==============================================================================================================================
+| *Description* | *Length*
+| Number of BIP 32 derivations to perform (max 10) | 1
+| First derivation index (big endian) | 4
+| ... | 4
+| Last derivation index (big endian) | 4
+| Message chunk | variable
+|==============================================================================================================================
+
+'Input data (other transaction data block)'
+
+[width="80%"]
+|==============================================================================================================================
+| *Description* | *Length*
+| Message chunk | variable
+|==============================================================================================================================
+
+
+'Output data'
+
+[width="80%"]
+|==============================================================================================================================
+| *Description* | *Length*
+| v | 1
+| r | 32
+| s | 32
+|======================================================================================================
+
+
=== GET APP CONFIGURATION
==== Description
