messages.proto 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. // This file originates from the SatoshiLabs Trezor `common` repository at:
  2. // https://github.com/trezor/trezor-common/blob/master/protob/messages.proto
  3. // dated 28.05.2019, commit 893fd219d4a01bcffa0cd9cfa631856371ec5aa9.
  4. syntax = "proto2";
  5. package hw.trezor.messages;
  6. /**
  7. * Messages for TREZOR communication
  8. */
  9. // Sugar for easier handling in Java
  10. option java_package = "com.satoshilabs.trezor.lib.protobuf";
  11. option java_outer_classname = "TrezorMessage";
  12. import "google/protobuf/descriptor.proto";
  13. /**
  14. * Options for specifying message direction and type of wire (normal/debug)
  15. */
  16. extend google.protobuf.EnumValueOptions {
  17. optional bool wire_in = 50002; // message can be transmitted via wire from PC to TREZOR
  18. optional bool wire_out = 50003; // message can be transmitted via wire from TREZOR to PC
  19. optional bool wire_debug_in = 50004; // message can be transmitted via debug wire from PC to TREZOR
  20. optional bool wire_debug_out = 50005; // message can be transmitted via debug wire from TREZOR to PC
  21. optional bool wire_tiny = 50006; // message is handled by TREZOR when the USB stack is in tiny mode
  22. optional bool wire_bootloader = 50007; // message is only handled by TREZOR Bootloader
  23. optional bool wire_no_fsm = 50008; // message is not handled by TREZOR unless the USB stack is in tiny mode
  24. }
  25. /**
  26. * Mapping between TREZOR wire identifier (uint) and a protobuf message
  27. */
  28. enum MessageType {
  29. // Management
  30. MessageType_Initialize = 0 [(wire_in) = true, (wire_tiny) = true];
  31. MessageType_Ping = 1 [(wire_in) = true];
  32. MessageType_Success = 2 [(wire_out) = true];
  33. MessageType_Failure = 3 [(wire_out) = true];
  34. MessageType_ChangePin = 4 [(wire_in) = true];
  35. MessageType_WipeDevice = 5 [(wire_in) = true];
  36. MessageType_GetEntropy = 9 [(wire_in) = true];
  37. MessageType_Entropy = 10 [(wire_out) = true];
  38. MessageType_LoadDevice = 13 [(wire_in) = true];
  39. MessageType_ResetDevice = 14 [(wire_in) = true];
  40. MessageType_Features = 17 [(wire_out) = true];
  41. MessageType_PinMatrixRequest = 18 [(wire_out) = true];
  42. MessageType_PinMatrixAck = 19 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true];
  43. MessageType_Cancel = 20 [(wire_in) = true, (wire_tiny) = true];
  44. MessageType_ClearSession = 24 [(wire_in) = true];
  45. MessageType_ApplySettings = 25 [(wire_in) = true];
  46. MessageType_ButtonRequest = 26 [(wire_out) = true];
  47. MessageType_ButtonAck = 27 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true];
  48. MessageType_ApplyFlags = 28 [(wire_in) = true];
  49. MessageType_BackupDevice = 34 [(wire_in) = true];
  50. MessageType_EntropyRequest = 35 [(wire_out) = true];
  51. MessageType_EntropyAck = 36 [(wire_in) = true];
  52. MessageType_PassphraseRequest = 41 [(wire_out) = true];
  53. MessageType_PassphraseAck = 42 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true];
  54. MessageType_PassphraseStateRequest = 77 [(wire_out) = true];
  55. MessageType_PassphraseStateAck = 78 [(wire_in) = true, (wire_tiny) = true, (wire_no_fsm) = true];
  56. MessageType_RecoveryDevice = 45 [(wire_in) = true];
  57. MessageType_WordRequest = 46 [(wire_out) = true];
  58. MessageType_WordAck = 47 [(wire_in) = true];
  59. MessageType_GetFeatures = 55 [(wire_in) = true];
  60. MessageType_SetU2FCounter = 63 [(wire_in) = true];
  61. // Bootloader
  62. MessageType_FirmwareErase = 6 [(wire_in) = true, (wire_bootloader) = true];
  63. MessageType_FirmwareUpload = 7 [(wire_in) = true, (wire_bootloader) = true];
  64. MessageType_FirmwareRequest = 8 [(wire_out) = true, (wire_bootloader) = true];
  65. MessageType_SelfTest = 32 [(wire_in) = true, (wire_bootloader) = true];
  66. // Bitcoin
  67. MessageType_GetPublicKey = 11 [(wire_in) = true];
  68. MessageType_PublicKey = 12 [(wire_out) = true];
  69. MessageType_SignTx = 15 [(wire_in) = true];
  70. MessageType_TxRequest = 21 [(wire_out) = true];
  71. MessageType_TxAck = 22 [(wire_in) = true];
  72. MessageType_GetAddress = 29 [(wire_in) = true];
  73. MessageType_Address = 30 [(wire_out) = true];
  74. MessageType_SignMessage = 38 [(wire_in) = true];
  75. MessageType_VerifyMessage = 39 [(wire_in) = true];
  76. MessageType_MessageSignature = 40 [(wire_out) = true];
  77. // Crypto
  78. MessageType_CipherKeyValue = 23 [(wire_in) = true];
  79. MessageType_CipheredKeyValue = 48 [(wire_out) = true];
  80. MessageType_SignIdentity = 53 [(wire_in) = true];
  81. MessageType_SignedIdentity = 54 [(wire_out) = true];
  82. MessageType_GetECDHSessionKey = 61 [(wire_in) = true];
  83. MessageType_ECDHSessionKey = 62 [(wire_out) = true];
  84. MessageType_CosiCommit = 71 [(wire_in) = true];
  85. MessageType_CosiCommitment = 72 [(wire_out) = true];
  86. MessageType_CosiSign = 73 [(wire_in) = true];
  87. MessageType_CosiSignature = 74 [(wire_out) = true];
  88. // Debug
  89. MessageType_DebugLinkDecision = 100 [(wire_debug_in) = true, (wire_tiny) = true, (wire_no_fsm) = true];
  90. MessageType_DebugLinkGetState = 101 [(wire_debug_in) = true, (wire_tiny) = true];
  91. MessageType_DebugLinkState = 102 [(wire_debug_out) = true];
  92. MessageType_DebugLinkStop = 103 [(wire_debug_in) = true];
  93. MessageType_DebugLinkLog = 104 [(wire_debug_out) = true];
  94. MessageType_DebugLinkMemoryRead = 110 [(wire_debug_in) = true];
  95. MessageType_DebugLinkMemory = 111 [(wire_debug_out) = true];
  96. MessageType_DebugLinkMemoryWrite = 112 [(wire_debug_in) = true];
  97. MessageType_DebugLinkFlashErase = 113 [(wire_debug_in) = true];
  98. // Ethereum
  99. MessageType_EthereumGetPublicKey = 450 [(wire_in) = true];
  100. MessageType_EthereumPublicKey = 451 [(wire_out) = true];
  101. MessageType_EthereumGetAddress = 56 [(wire_in) = true];
  102. MessageType_EthereumAddress = 57 [(wire_out) = true];
  103. MessageType_EthereumSignTx = 58 [(wire_in) = true];
  104. MessageType_EthereumTxRequest = 59 [(wire_out) = true];
  105. MessageType_EthereumTxAck = 60 [(wire_in) = true];
  106. MessageType_EthereumSignMessage = 64 [(wire_in) = true];
  107. MessageType_EthereumVerifyMessage = 65 [(wire_in) = true];
  108. MessageType_EthereumMessageSignature = 66 [(wire_out) = true];
  109. // NEM
  110. MessageType_NEMGetAddress = 67 [(wire_in) = true];
  111. MessageType_NEMAddress = 68 [(wire_out) = true];
  112. MessageType_NEMSignTx = 69 [(wire_in) = true];
  113. MessageType_NEMSignedTx = 70 [(wire_out) = true];
  114. MessageType_NEMDecryptMessage = 75 [(wire_in) = true];
  115. MessageType_NEMDecryptedMessage = 76 [(wire_out) = true];
  116. // Lisk
  117. MessageType_LiskGetAddress = 114 [(wire_in) = true];
  118. MessageType_LiskAddress = 115 [(wire_out) = true];
  119. MessageType_LiskSignTx = 116 [(wire_in) = true];
  120. MessageType_LiskSignedTx = 117 [(wire_out) = true];
  121. MessageType_LiskSignMessage = 118 [(wire_in) = true];
  122. MessageType_LiskMessageSignature = 119 [(wire_out) = true];
  123. MessageType_LiskVerifyMessage = 120 [(wire_in) = true];
  124. MessageType_LiskGetPublicKey = 121 [(wire_in) = true];
  125. MessageType_LiskPublicKey = 122 [(wire_out) = true];
  126. // Tezos
  127. MessageType_TezosGetAddress = 150 [(wire_in) = true];
  128. MessageType_TezosAddress = 151 [(wire_out) = true];
  129. MessageType_TezosSignTx = 152 [(wire_in) = true];
  130. MessageType_TezosSignedTx = 153 [(wire_out) = true];
  131. MessageType_TezosGetPublicKey = 154 [(wire_in) = true];
  132. MessageType_TezosPublicKey = 155 [(wire_out) = true];
  133. // Stellar
  134. MessageType_StellarSignTx = 202 [(wire_in) = true];
  135. MessageType_StellarTxOpRequest = 203 [(wire_out) = true];
  136. MessageType_StellarGetAddress = 207 [(wire_in) = true];
  137. MessageType_StellarAddress = 208 [(wire_out) = true];
  138. MessageType_StellarCreateAccountOp = 210 [(wire_in) = true];
  139. MessageType_StellarPaymentOp = 211 [(wire_in) = true];
  140. MessageType_StellarPathPaymentOp = 212 [(wire_in) = true];
  141. MessageType_StellarManageOfferOp = 213 [(wire_in) = true];
  142. MessageType_StellarCreatePassiveOfferOp = 214 [(wire_in) = true];
  143. MessageType_StellarSetOptionsOp = 215 [(wire_in) = true];
  144. MessageType_StellarChangeTrustOp = 216 [(wire_in) = true];
  145. MessageType_StellarAllowTrustOp = 217 [(wire_in) = true];
  146. MessageType_StellarAccountMergeOp = 218 [(wire_in) = true];
  147. // omitted: StellarInflationOp is not a supported operation, would be 219
  148. MessageType_StellarManageDataOp = 220 [(wire_in) = true];
  149. MessageType_StellarBumpSequenceOp = 221 [(wire_in) = true];
  150. MessageType_StellarSignedTx = 230 [(wire_out) = true];
  151. // TRON
  152. MessageType_TronGetAddress = 250 [(wire_in) = true];
  153. MessageType_TronAddress = 251 [(wire_out) = true];
  154. MessageType_TronSignTx = 252 [(wire_in) = true];
  155. MessageType_TronSignedTx = 253 [(wire_out) = true];
  156. // Cardano
  157. // dropped Sign/VerifyMessage ids 300-302
  158. MessageType_CardanoSignTx = 303 [(wire_in) = true];
  159. MessageType_CardanoTxRequest = 304 [(wire_out) = true];
  160. MessageType_CardanoGetPublicKey = 305 [(wire_in) = true];
  161. MessageType_CardanoPublicKey = 306 [(wire_out) = true];
  162. MessageType_CardanoGetAddress = 307 [(wire_in) = true];
  163. MessageType_CardanoAddress = 308 [(wire_out) = true];
  164. MessageType_CardanoTxAck = 309 [(wire_in) = true];
  165. MessageType_CardanoSignedTx = 310 [(wire_out) = true];
  166. // Ontology
  167. MessageType_OntologyGetAddress = 350 [(wire_in) = true];
  168. MessageType_OntologyAddress = 351 [(wire_out) = true];
  169. MessageType_OntologyGetPublicKey = 352 [(wire_in) = true];
  170. MessageType_OntologyPublicKey = 353 [(wire_out) = true];
  171. MessageType_OntologySignTransfer = 354 [(wire_in) = true];
  172. MessageType_OntologySignedTransfer = 355 [(wire_out) = true];
  173. MessageType_OntologySignWithdrawOng = 356 [(wire_in) = true];
  174. MessageType_OntologySignedWithdrawOng = 357 [(wire_out) = true];
  175. MessageType_OntologySignOntIdRegister = 358 [(wire_in) = true];
  176. MessageType_OntologySignedOntIdRegister = 359 [(wire_out) = true];
  177. MessageType_OntologySignOntIdAddAttributes = 360 [(wire_in) = true];
  178. MessageType_OntologySignedOntIdAddAttributes = 361 [(wire_out) = true];
  179. // Ripple
  180. MessageType_RippleGetAddress = 400 [(wire_in) = true];
  181. MessageType_RippleAddress = 401 [(wire_out) = true];
  182. MessageType_RippleSignTx = 402 [(wire_in) = true];
  183. MessageType_RippleSignedTx = 403 [(wire_in) = true];
  184. // Monero
  185. MessageType_MoneroTransactionInitRequest = 501 [(wire_out) = true];
  186. MessageType_MoneroTransactionInitAck = 502 [(wire_out) = true];
  187. MessageType_MoneroTransactionSetInputRequest = 503 [(wire_out) = true];
  188. MessageType_MoneroTransactionSetInputAck = 504 [(wire_out) = true];
  189. MessageType_MoneroTransactionInputsPermutationRequest = 505 [(wire_out) = true];
  190. MessageType_MoneroTransactionInputsPermutationAck = 506 [(wire_out) = true];
  191. MessageType_MoneroTransactionInputViniRequest = 507 [(wire_out) = true];
  192. MessageType_MoneroTransactionInputViniAck = 508 [(wire_out) = true];
  193. MessageType_MoneroTransactionAllInputsSetRequest = 509 [(wire_out) = true];
  194. MessageType_MoneroTransactionAllInputsSetAck = 510 [(wire_out) = true];
  195. MessageType_MoneroTransactionSetOutputRequest = 511 [(wire_out) = true];
  196. MessageType_MoneroTransactionSetOutputAck = 512 [(wire_out) = true];
  197. MessageType_MoneroTransactionAllOutSetRequest = 513 [(wire_out) = true];
  198. MessageType_MoneroTransactionAllOutSetAck = 514 [(wire_out) = true];
  199. MessageType_MoneroTransactionSignInputRequest = 515 [(wire_out) = true];
  200. MessageType_MoneroTransactionSignInputAck = 516 [(wire_out) = true];
  201. MessageType_MoneroTransactionFinalRequest = 517 [(wire_out) = true];
  202. MessageType_MoneroTransactionFinalAck = 518 [(wire_out) = true];
  203. MessageType_MoneroKeyImageExportInitRequest = 530 [(wire_out) = true];
  204. MessageType_MoneroKeyImageExportInitAck = 531 [(wire_out) = true];
  205. MessageType_MoneroKeyImageSyncStepRequest = 532 [(wire_out) = true];
  206. MessageType_MoneroKeyImageSyncStepAck = 533 [(wire_out) = true];
  207. MessageType_MoneroKeyImageSyncFinalRequest = 534 [(wire_out) = true];
  208. MessageType_MoneroKeyImageSyncFinalAck = 535 [(wire_out) = true];
  209. MessageType_MoneroGetAddress = 540 [(wire_in) = true];
  210. MessageType_MoneroAddress = 541 [(wire_out) = true];
  211. MessageType_MoneroGetWatchKey = 542 [(wire_in) = true];
  212. MessageType_MoneroWatchKey = 543 [(wire_out) = true];
  213. MessageType_DebugMoneroDiagRequest = 546 [(wire_in) = true];
  214. MessageType_DebugMoneroDiagAck = 547 [(wire_out) = true];
  215. MessageType_MoneroGetTxKeyRequest = 550 [(wire_in) = true];
  216. MessageType_MoneroGetTxKeyAck = 551 [(wire_out) = true];
  217. MessageType_MoneroLiveRefreshStartRequest = 552 [(wire_in) = true];
  218. MessageType_MoneroLiveRefreshStartAck = 553 [(wire_out) = true];
  219. MessageType_MoneroLiveRefreshStepRequest = 554 [(wire_in) = true];
  220. MessageType_MoneroLiveRefreshStepAck = 555 [(wire_out) = true];
  221. MessageType_MoneroLiveRefreshFinalRequest = 556 [(wire_in) = true];
  222. MessageType_MoneroLiveRefreshFinalAck = 557 [(wire_out) = true];
  223. // EOS
  224. MessageType_EosGetPublicKey = 600 [(wire_in) = true];
  225. MessageType_EosPublicKey = 601 [(wire_out) = true];
  226. MessageType_EosSignTx = 602 [(wire_in) = true];
  227. MessageType_EosTxActionRequest = 603 [(wire_out) = true];
  228. MessageType_EosTxActionAck = 604 [(wire_in) = true];
  229. MessageType_EosSignedTx = 605 [(wire_out) = true];
  230. // Binance
  231. MessageType_BinanceGetAddress = 700 [(wire_in) = true];
  232. MessageType_BinanceAddress = 701 [(wire_out) = true];
  233. MessageType_BinanceGetPublicKey = 702 [(wire_in) = true];
  234. MessageType_BinancePublicKey = 703 [(wire_out) = true];
  235. MessageType_BinanceSignTx = 704 [(wire_in) = true];
  236. MessageType_BinanceTxRequest = 705 [(wire_out) = true];
  237. MessageType_BinanceTransferMsg = 706 [(wire_in) = true];
  238. MessageType_BinanceOrderMsg = 707 [(wire_in) = true];
  239. MessageType_BinanceCancelMsg = 708 [(wire_in) = true];
  240. MessageType_BinanceSignedTx = 709 [(wire_out) = true];
  241. }