mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-16 11:28:14 +00:00
Merge branch 'master' into matejcik/coin-defs
This commit is contained in:
commit
1f6a15430c
@ -9,7 +9,7 @@
|
||||
"address_type": 76,
|
||||
"address_type_p2sh": 16,
|
||||
"maxfee_kb": 100000,
|
||||
"minfee_kb": 10000,
|
||||
"minfee_kb": 1000,
|
||||
"signed_message_header": "DarkCoin Signed Message:\n",
|
||||
"hash_genesis_block": "00000ffd590b1485b3caadc19b22e6379c733355108f107a430458cdf3407ab6",
|
||||
"xprv_magic": 50221816,
|
||||
|
@ -37,6 +37,8 @@
|
||||
"https://mona.chainsight.info",
|
||||
"https://insight.electrum-mona.org"
|
||||
],
|
||||
"blockbook": [],
|
||||
"blockbook": [
|
||||
"https://blockbook.electrum-mona.org"
|
||||
],
|
||||
"cooldown": 100
|
||||
}
|
||||
|
44
defs/coins/smartcash.json
Normal file
44
defs/coins/smartcash.json
Normal file
@ -0,0 +1,44 @@
|
||||
{
|
||||
"coin_name": "SmartCash",
|
||||
"coin_shortcut": "SMART",
|
||||
"coin_label": "SmartCash",
|
||||
"website": "https://smarcash.cc",
|
||||
"github": "https://github.com/SmartCash/Core-Smart",
|
||||
"maintainer": "Leandro Reinaux <leoreinaux@gmail.com>",
|
||||
"curve_name": "secp256k1",
|
||||
"address_type": 63,
|
||||
"address_type_p2sh": 18,
|
||||
"maxfee_kb": 1000000,
|
||||
"minfee_kb": 0,
|
||||
"signed_message_header": "SmartCash Signed Message:\n",
|
||||
"hash_genesis_block": "000007acc6970b812948d14ea5a0a13db0fdd07d5047c7e69101fa8b361e05a4",
|
||||
"xprv_magic": 76066276,
|
||||
"xpub_magic": 76067358,
|
||||
"xpub_magic_segwit_p2sh": null,
|
||||
"xpub_magic_segwit_native": null,
|
||||
"bech32_prefix": null,
|
||||
"cashaddr_prefix": null,
|
||||
"slip44": 224,
|
||||
"segwit": false,
|
||||
"decred": false,
|
||||
"fork_id": null,
|
||||
"force_bip143": false,
|
||||
"bip115": false,
|
||||
"version_group_id": null,
|
||||
"default_fee_b": {
|
||||
"Low": 1,
|
||||
"Economy": 10,
|
||||
"Normal": 100,
|
||||
"High": 200
|
||||
},
|
||||
"dust_limit": 546,
|
||||
"blocktime_seconds": 55,
|
||||
"uri_prefix": "smart",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 34,
|
||||
"bitcore": [
|
||||
"https://insight.smartcash.cc"
|
||||
],
|
||||
"blockbook": [],
|
||||
"cooldown": 100
|
||||
}
|
BIN
defs/coins/smartcash.png
Normal file
BIN
defs/coins/smartcash.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
42
defs/coins/smartcash_testnet.json
Normal file
42
defs/coins/smartcash_testnet.json
Normal file
@ -0,0 +1,42 @@
|
||||
{
|
||||
"coin_name": "SmartCash Testnet",
|
||||
"coin_shortcut": "tSMART",
|
||||
"coin_label": "SmartCash Testnet",
|
||||
"website": "https://smartcash.cc",
|
||||
"github": "https://github.com/SmartCash/Core-Smart",
|
||||
"maintainer": "Leandro Reinaux <leoreinaux@gmail.com>",
|
||||
"curve_name": "secp256k1",
|
||||
"address_type": 65,
|
||||
"address_type_p2sh": 21,
|
||||
"maxfee_kb": 1000000,
|
||||
"minfee_kb": 0,
|
||||
"signed_message_header": "SmartCash Signed Message:\n",
|
||||
"hash_genesis_block": "0000027235b5679bcd28c90d03d4bf1a9ba4c07c4efcc1c87d6c68cce25e6e5d",
|
||||
"xprv_magic": 70615956,
|
||||
"xpub_magic": 70617039,
|
||||
"xpub_magic_segwit_p2sh": null,
|
||||
"xpub_magic_segwit_native": null,
|
||||
"bech32_prefix": null,
|
||||
"cashaddr_prefix": null,
|
||||
"slip44": 224,
|
||||
"segwit": false,
|
||||
"decred": false,
|
||||
"fork_id": null,
|
||||
"force_bip143": false,
|
||||
"bip115": false,
|
||||
"version_group_id": null,
|
||||
"default_fee_b": {
|
||||
"Low": 1,
|
||||
"Economy": 10,
|
||||
"Normal": 100,
|
||||
"High": 200
|
||||
},
|
||||
"dust_limit": 546,
|
||||
"blocktime_seconds": 55,
|
||||
"uri_prefix": "testsmart",
|
||||
"min_address_length": 27,
|
||||
"max_address_length": 35,
|
||||
"bitcore": [],
|
||||
"blockbook": [],
|
||||
"cooldown": 100
|
||||
}
|
BIN
defs/coins/smartcash_testnet.png
Normal file
BIN
defs/coins/smartcash_testnet.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
@ -142,5 +142,29 @@
|
||||
"name": "Akroma",
|
||||
"rskip60": false,
|
||||
"url": "https://akroma.io"
|
||||
},
|
||||
{
|
||||
"chain_id": 7762959,
|
||||
"slip44": 184,
|
||||
"shortcut": "MUSIC",
|
||||
"name": "Musicoin",
|
||||
"rskip60": false,
|
||||
"url": "https://musicoin.org"
|
||||
},
|
||||
{
|
||||
"chain_id": 1313114,
|
||||
"slip44": 1313114,
|
||||
"shortcut": "ETHO",
|
||||
"name": "Ether-1",
|
||||
"rskip60": false,
|
||||
"url": "https://ether1.org"
|
||||
},
|
||||
{
|
||||
"chain_id": 3125659152,
|
||||
"slip44": 164,
|
||||
"shortcut": "PIRL",
|
||||
"name": "Pirl",
|
||||
"rskip60": false,
|
||||
"url": "https://pirl.io"
|
||||
}
|
||||
]
|
||||
|
1
protob/.gitignore
vendored
1
protob/.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
*.pb
|
||||
combined.proto
|
||||
graph.gv*
|
||||
|
@ -1,7 +1,12 @@
|
||||
check: messages.pb messages-bitcoin.pb messages-bootloader.pb messages-cardano.pb messages-common.pb messages-crypto.pb messages-debug.pb messages-ethereum.pb messages-lisk.pb messages-management.pb messages-monero.pb messages-nem.pb messages-ripple.pb messages-stellar.pb messages-tezos.pb
|
||||
check: messages.pb messages-bitcoin.pb messages-bootloader.pb messages-cardano.pb messages-common.pb messages-crypto.pb messages-debug.pb messages-ethereum.pb messages-lisk.pb messages-management.pb messages-monero.pb messages-nem.pb messages-ripple.pb messages-stellar.pb messages-tezos.pb messages-ontology.pb
|
||||
|
||||
%.pb: %.proto
|
||||
protoc -I/usr/include -I. $< -o $@
|
||||
|
||||
combine:
|
||||
echo 'syntax = "proto2";' > combined.proto
|
||||
echo 'import "google/protobuf/descriptor.proto";' >> combined.proto
|
||||
grep -hv -e '^import ' -e '^syntax' -e '^package' -e 'option java_' messages*.proto | sed 's/hw\.trezor\.messages\.common\.//' >> combined.proto
|
||||
|
||||
clean:
|
||||
rm -f *.pb
|
||||
|
@ -1,4 +1,5 @@
|
||||
syntax = "proto2";
|
||||
package hw.trezor.messages.bitcoin;
|
||||
|
||||
// Sugar for easier handling in Java
|
||||
option java_package = "com.satoshilabs.trezor.lib.protobuf";
|
||||
@ -29,8 +30,8 @@ message MultisigRedeemScriptType {
|
||||
* Structure representing HDNode + Path
|
||||
*/
|
||||
message HDNodePathType {
|
||||
required HDNodeType node = 1; // BIP-32 node in deserialized form
|
||||
repeated uint32 address_n = 2; // BIP-32 path to derive the key from node
|
||||
required hw.trezor.messages.common.HDNodeType node = 1; // BIP-32 node in deserialized form
|
||||
repeated uint32 address_n = 2; // BIP-32 path to derive the key from node
|
||||
}
|
||||
}
|
||||
|
||||
@ -53,7 +54,7 @@ message GetPublicKey {
|
||||
* @end
|
||||
*/
|
||||
message PublicKey {
|
||||
required HDNodeType node = 1; // BIP32 public node
|
||||
required hw.trezor.messages.common.HDNodeType node = 1; // BIP32 public node
|
||||
optional string xpub = 2; // serialized form of public node
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
syntax = "proto2";
|
||||
package hw.trezor.messages.bootloader;
|
||||
|
||||
// Sugar for easier handling in Java
|
||||
option java_package = "com.satoshilabs.trezor.lib.protobuf";
|
||||
|
@ -1,4 +1,5 @@
|
||||
syntax = "proto2";
|
||||
package hw.trezor.messages.cardano;
|
||||
|
||||
// Sugar for easier handling in Java
|
||||
option java_package = "com.satoshilabs.trezor.lib.protobuf";
|
||||
@ -40,9 +41,9 @@ message CardanoGetPublicKey {
|
||||
* @end
|
||||
*/
|
||||
message CardanoPublicKey {
|
||||
optional string xpub = 1; // Xpub key
|
||||
optional HDNodeType node = 2; // BIP-32 public node
|
||||
optional string root_hd_passphrase = 3; // HD passphrase for root in hex format
|
||||
optional string xpub = 1; // Xpub key
|
||||
optional hw.trezor.messages.common.HDNodeType node = 2; // BIP-32 public node
|
||||
optional string root_hd_passphrase = 3; // HD passphrase for root in hex format
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,4 +1,5 @@
|
||||
syntax = "proto2";
|
||||
package hw.trezor.messages.common;
|
||||
|
||||
/**
|
||||
* Response: Success of the previous request
|
||||
|
@ -1,4 +1,5 @@
|
||||
syntax = "proto2";
|
||||
package hw.trezor.messages.crypto;
|
||||
|
||||
// Sugar for easier handling in Java
|
||||
option java_package = "com.satoshilabs.trezor.lib.protobuf";
|
||||
|
@ -1,4 +1,5 @@
|
||||
syntax = "proto2";
|
||||
package hw.trezor.messages.debug;
|
||||
|
||||
// Sugar for easier handling in Java
|
||||
option java_package = "com.satoshilabs.trezor.lib.protobuf";
|
||||
@ -30,17 +31,17 @@ message DebugLinkGetState {
|
||||
* @end
|
||||
*/
|
||||
message DebugLinkState {
|
||||
optional bytes layout = 1; // raw buffer of display
|
||||
optional string pin = 2; // current PIN, blank if PIN is not set/enabled
|
||||
optional string matrix = 3; // current PIN matrix
|
||||
optional string mnemonic = 4; // current BIP-39 mnemonic
|
||||
optional HDNodeType node = 5; // current BIP-32 node
|
||||
optional bool passphrase_protection = 6; // is node/mnemonic encrypted using passphrase?
|
||||
optional string reset_word = 7; // word on device display during ResetDevice workflow
|
||||
optional bytes reset_entropy = 8; // current entropy during ResetDevice workflow
|
||||
optional string recovery_fake_word = 9; // (fake) word on display during RecoveryDevice workflow
|
||||
optional uint32 recovery_word_pos = 10; // index of mnemonic word the device is expecting during RecoveryDevice workflow
|
||||
optional uint32 reset_word_pos = 11; // index of mnemonic word the device is expecting during ResetDevice workflow
|
||||
optional bytes layout = 1; // raw buffer of display
|
||||
optional string pin = 2; // current PIN, blank if PIN is not set/enabled
|
||||
optional string matrix = 3; // current PIN matrix
|
||||
optional string mnemonic = 4; // current BIP-39 mnemonic
|
||||
optional hw.trezor.messages.common.HDNodeType node = 5; // current BIP-32 node
|
||||
optional bool passphrase_protection = 6; // is node/mnemonic encrypted using passphrase?
|
||||
optional string reset_word = 7; // word on device display during ResetDevice workflow
|
||||
optional bytes reset_entropy = 8; // current entropy during ResetDevice workflow
|
||||
optional string recovery_fake_word = 9; // (fake) word on display during RecoveryDevice workflow
|
||||
optional uint32 recovery_word_pos = 10; // index of mnemonic word the device is expecting during RecoveryDevice workflow
|
||||
optional uint32 reset_word_pos = 11; // index of mnemonic word the device is expecting during ResetDevice workflow
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,4 +1,5 @@
|
||||
syntax = "proto2";
|
||||
package hw.trezor.messages.ethereum;
|
||||
|
||||
// Sugar for easier handling in Java
|
||||
option java_package = "com.satoshilabs.trezor.lib.protobuf";
|
||||
|
@ -1,4 +1,5 @@
|
||||
syntax = "proto2";
|
||||
package hw.trezor.messages.lisk;
|
||||
|
||||
// Sugar for easier handling in Java
|
||||
option java_package = "com.satoshilabs.trezor.lib.protobuf";
|
||||
|
@ -1,4 +1,5 @@
|
||||
syntax = "proto2";
|
||||
package hw.trezor.messages.management;
|
||||
|
||||
// Sugar for easier handling in Java
|
||||
option java_package = "com.satoshilabs.trezor.lib.protobuf";
|
||||
@ -162,14 +163,14 @@ message WipeDevice {
|
||||
* @next Failure
|
||||
*/
|
||||
message LoadDevice {
|
||||
optional string mnemonic = 1; // seed encoded as BIP-39 mnemonic (12, 18 or 24 words)
|
||||
optional HDNodeType node = 2; // BIP-32 node
|
||||
optional string pin = 3; // set PIN protection
|
||||
optional bool passphrase_protection = 4; // enable master node encryption using passphrase
|
||||
optional string language = 5 [default='english']; // device language
|
||||
optional string label = 6; // device label
|
||||
optional bool skip_checksum = 7; // do not test mnemonic for valid BIP-39 checksum
|
||||
optional uint32 u2f_counter = 8; // U2F counter
|
||||
optional string mnemonic = 1; // seed encoded as BIP-39 mnemonic (12, 18 or 24 words)
|
||||
optional hw.trezor.messages.common.HDNodeType node = 2; // BIP-32 node
|
||||
optional string pin = 3; // set PIN protection
|
||||
optional bool passphrase_protection = 4; // enable master node encryption using passphrase
|
||||
optional string language = 5 [default='english']; // device language
|
||||
optional string label = 6; // device label
|
||||
optional bool skip_checksum = 7; // do not test mnemonic for valid BIP-39 checksum
|
||||
optional uint32 u2f_counter = 8; // U2F counter
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,9 +1,57 @@
|
||||
syntax = "proto2";
|
||||
package hw.trezor.messages.monero;
|
||||
|
||||
// Sugar for easier handling in Java
|
||||
option java_package = "com.satoshilabs.trezor.lib.protobuf";
|
||||
option java_outer_classname = "TrezorMessageMonero";
|
||||
|
||||
/**
|
||||
* Structure representing Monero transaction source entry, UTXO
|
||||
* @embed
|
||||
*/
|
||||
message MoneroTransactionSourceEntry {
|
||||
repeated MoneroOutputEntry outputs = 1;
|
||||
optional uint64 real_output = 2;
|
||||
optional bytes real_out_tx_key = 3;
|
||||
repeated bytes real_out_additional_tx_keys = 4;
|
||||
optional uint64 real_output_in_tx_index = 5;
|
||||
optional uint64 amount = 6;
|
||||
optional bool rct = 7;
|
||||
optional bytes mask = 8;
|
||||
optional MoneroMultisigKLRki multisig_kLRki = 9;
|
||||
message MoneroOutputEntry {
|
||||
optional uint64 idx = 1;
|
||||
optional MoneroRctKey key = 2;
|
||||
message MoneroRctKey {
|
||||
optional bytes dest = 1;
|
||||
optional bytes mask = 2;
|
||||
}
|
||||
}
|
||||
message MoneroMultisigKLRki {
|
||||
optional bytes K = 1;
|
||||
optional bytes L = 2;
|
||||
optional bytes R = 3;
|
||||
optional bytes ki = 4;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Structure representing Monero transaction destination entry
|
||||
* @embed
|
||||
*/
|
||||
message MoneroTransactionDestinationEntry {
|
||||
optional uint64 amount = 1;
|
||||
optional MoneroAccountPublicAddress addr = 2;
|
||||
optional bool is_subaddress = 3;
|
||||
/**
|
||||
* Structure representing Monero public address
|
||||
*/
|
||||
message MoneroAccountPublicAddress {
|
||||
optional bytes spend_public_key = 1;
|
||||
optional bytes view_public_key = 2;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Request: Ask device for public address derived from seed and address_n
|
||||
* @start
|
||||
@ -57,8 +105,8 @@ message MoneroTransactionInitRequest {
|
||||
optional uint32 network_type = 3; // Main-net / testnet / stagenet
|
||||
optional MoneroTransactionData tsx_data = 4;
|
||||
/**
|
||||
* Structure representing Monero initial transaction information
|
||||
*/
|
||||
* Structure representing Monero initial transaction information
|
||||
*/
|
||||
message MoneroTransactionData {
|
||||
optional uint32 version = 1;
|
||||
optional bytes payment_id = 2;
|
||||
@ -74,21 +122,6 @@ message MoneroTransactionInitRequest {
|
||||
optional bytes exp_tx_prefix_hash = 12;
|
||||
repeated bytes use_tx_keys = 13;
|
||||
optional bool is_bulletproof = 14;
|
||||
/**
|
||||
* Structure representing Monero transaction destination entry
|
||||
*/
|
||||
message MoneroTransactionDestinationEntry {
|
||||
optional uint64 amount = 1;
|
||||
optional MoneroAccountPublicAddress addr = 2;
|
||||
optional bool is_subaddress = 3;
|
||||
/**
|
||||
* Structure representing Monero public address
|
||||
*/
|
||||
message MoneroAccountPublicAddress {
|
||||
optional bytes spend_public_key = 1;
|
||||
optional bytes view_public_key = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -111,7 +144,7 @@ message MoneroTransactionInitAck {
|
||||
*/
|
||||
message MoneroTransactionSetInputRequest {
|
||||
optional uint32 version = 1;
|
||||
optional bytes src_entr = 2; // xmrtypes.TxSourceEntry
|
||||
optional MoneroTransactionSourceEntry src_entr = 2;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -147,7 +180,7 @@ message MoneroTransactionInputsPermutationAck {
|
||||
* @next MoneroTransactionInputViniAck
|
||||
*/
|
||||
message MoneroTransactionInputViniRequest {
|
||||
optional bytes src_entr = 1; // xmrtypes.TxSourceEntry
|
||||
optional MoneroTransactionSourceEntry src_entr = 1;
|
||||
optional bytes vini = 2; // xmrtypes.TxinToKey
|
||||
optional bytes vini_hmac = 3;
|
||||
optional bytes pseudo_out = 4;
|
||||
@ -166,7 +199,7 @@ message MoneroTransactionInputViniAck {
|
||||
* @next MoneroTransactionSetOutputAck
|
||||
*/
|
||||
message MoneroTransactionSetOutputRequest {
|
||||
optional bytes dst_entr = 1; // xmrtypes.TxDestinationEntry
|
||||
optional MoneroTransactionDestinationEntry dst_entr = 1;
|
||||
optional bytes dst_entr_hmac = 2;
|
||||
}
|
||||
|
||||
@ -198,8 +231,8 @@ message MoneroTransactionAllOutSetAck {
|
||||
optional bytes tx_prefix_hash = 2;
|
||||
optional MoneroRingCtSig rv = 3; // xmrtypes.RctSig
|
||||
/*
|
||||
* Structure represents initial fields of the Monero RCT signature
|
||||
*/
|
||||
* Structure represents initial fields of the Monero RCT signature
|
||||
*/
|
||||
message MoneroRingCtSig {
|
||||
optional uint64 txn_fee = 1;
|
||||
optional bytes message = 2;
|
||||
@ -227,7 +260,7 @@ message MoneroTransactionMlsagDoneAck {
|
||||
* @next MoneroTransactionSignInputAck
|
||||
*/
|
||||
message MoneroTransactionSignInputRequest {
|
||||
optional bytes src_entr = 1; // xmrtypes.TxSourceEntry
|
||||
optional MoneroTransactionSourceEntry src_entr = 1;
|
||||
optional bytes vini = 2; // xmrtypes.TxinToKey
|
||||
optional bytes vini_hmac = 3;
|
||||
optional bytes pseudo_out = 4;
|
||||
@ -299,8 +332,8 @@ message MoneroKeyImageExportInitRequest {
|
||||
optional uint32 network_type = 4; // Main-net / testnet / stagenet
|
||||
repeated MoneroSubAddressIndicesList subs = 5;
|
||||
/**
|
||||
* Structure representing Monero list of sub-addresses
|
||||
*/
|
||||
* Structure representing Monero list of sub-addresses
|
||||
*/
|
||||
message MoneroSubAddressIndicesList {
|
||||
optional uint32 account = 1;
|
||||
repeated uint32 minor_indices = 2;
|
||||
@ -321,8 +354,8 @@ message MoneroKeyImageExportInitAck {
|
||||
message MoneroKeyImageSyncStepRequest {
|
||||
repeated MoneroTransferDetails tdis = 1;
|
||||
/**
|
||||
* Structure representing Monero UTXO for key image sync
|
||||
*/
|
||||
* Structure representing Monero UTXO for key image sync
|
||||
*/
|
||||
message MoneroTransferDetails {
|
||||
optional bytes out_key = 1;
|
||||
optional bytes tx_pub_key = 2;
|
||||
@ -338,8 +371,8 @@ message MoneroKeyImageSyncStepRequest {
|
||||
message MoneroKeyImageSyncStepAck {
|
||||
repeated MoneroExportedKeyImage kis = 1;
|
||||
/**
|
||||
* Structure representing Monero encrypted exported key image
|
||||
*/
|
||||
* Structure representing Monero encrypted exported key image
|
||||
*/
|
||||
message MoneroExportedKeyImage {
|
||||
optional bytes iv = 1;
|
||||
optional bytes tag = 2;
|
||||
|
@ -1,4 +1,5 @@
|
||||
syntax = "proto2";
|
||||
package hw.trezor.messages.nem;
|
||||
|
||||
// Sugar for easier handling in Java
|
||||
option java_package = "com.satoshilabs.trezor.lib.protobuf";
|
||||
|
189
protob/messages-ontology.proto
Normal file
189
protob/messages-ontology.proto
Normal file
@ -0,0 +1,189 @@
|
||||
syntax = "proto2";
|
||||
|
||||
// Sugar for easier handling in Java
|
||||
option java_package = "com.satoshilabs.trezor.lib.protobuf";
|
||||
option java_outer_classname = "TrezorMessageOntology";
|
||||
|
||||
/**
|
||||
* Ontology Transaction
|
||||
* @embed
|
||||
*/
|
||||
message OntologyTransaction {
|
||||
optional uint32 version = 1;
|
||||
optional uint32 type = 2;
|
||||
optional uint32 nonce = 3;
|
||||
optional uint64 gas_price = 4;
|
||||
optional uint64 gas_limit = 5;
|
||||
optional string payer = 6;
|
||||
repeated OntologyTxAttribute tx_attributes = 7;
|
||||
/**
|
||||
* Attribute of Ontology transaction
|
||||
*/
|
||||
message OntologyTxAttribute {
|
||||
optional uint32 usage = 1;
|
||||
optional bytes data = 2;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Request: Ask device for Ontology public key corresponding to address_n path
|
||||
* @start
|
||||
* @next OntologyPublicKey
|
||||
*/
|
||||
message OntologyGetPublicKey {
|
||||
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
|
||||
optional bool show_display = 2; // Optionally show on display before sending the result
|
||||
}
|
||||
|
||||
/**
|
||||
* Response: Contains Ontology public key derived from device private seed
|
||||
* @end
|
||||
*/
|
||||
message OntologyPublicKey {
|
||||
optional bytes public_key = 1; // Ontology public key
|
||||
}
|
||||
|
||||
/**
|
||||
* Request: Ask device for Ontology address corresponding to address_n path
|
||||
* @start
|
||||
* @next OntologyAddress
|
||||
*/
|
||||
message OntologyGetAddress {
|
||||
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
|
||||
optional bool show_display = 2; // Optionally show on display before sending the result
|
||||
}
|
||||
|
||||
/**
|
||||
* Response: Contains Ontology address derived from device private seed
|
||||
* @end
|
||||
*/
|
||||
message OntologyAddress {
|
||||
optional string address = 1; // Ontology address
|
||||
}
|
||||
|
||||
/**
|
||||
* Request: Ask device to sign Ontology transfer
|
||||
* @start
|
||||
* @next OntologySignedTransfer
|
||||
*/
|
||||
message OntologySignTransfer {
|
||||
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
|
||||
optional OntologyTransaction transaction = 2;
|
||||
optional OntologyTransfer transfer = 3;
|
||||
/**
|
||||
* Ontology Transfer
|
||||
*/
|
||||
message OntologyTransfer {
|
||||
optional OntologyAsset asset = 1;
|
||||
optional uint64 amount = 2;
|
||||
optional string from_address = 3;
|
||||
optional string to_address = 4;
|
||||
/**
|
||||
* Ontology Asset
|
||||
*/
|
||||
enum OntologyAsset {
|
||||
ONT = 1;
|
||||
ONG = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Response: Contains Ontology transfer signature
|
||||
* @end
|
||||
*/
|
||||
message OntologySignedTransfer {
|
||||
optional bytes signature = 1;
|
||||
optional bytes payload = 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Request: Ask device to sign Ontology ONG withdrawal
|
||||
* @start
|
||||
* @next OntologySignedWithdrawOng
|
||||
*/
|
||||
message OntologySignWithdrawOng {
|
||||
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
|
||||
optional OntologyTransaction transaction = 2;
|
||||
optional OntologyWithdrawOng withdraw_ong = 3;
|
||||
/**
|
||||
* Ontology ONG Withdrawal
|
||||
*/
|
||||
message OntologyWithdrawOng {
|
||||
optional uint64 amount = 1;
|
||||
optional string from_address = 2;
|
||||
optional string to_address = 3;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Response: Contains Ontology ONG withdrawal signature
|
||||
* @end
|
||||
*/
|
||||
message OntologySignedWithdrawOng {
|
||||
optional bytes signature = 1;
|
||||
optional bytes payload = 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Request: Ask device to sign Ontology ONT ID registration
|
||||
* @start
|
||||
* @next OntologySignedOntIdRegister
|
||||
*/
|
||||
message OntologySignOntIdRegister {
|
||||
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
|
||||
optional OntologyTransaction transaction = 2;
|
||||
optional OntologyOntIdRegister ont_id_register = 3;
|
||||
/**
|
||||
* Ontology ONT ID registration
|
||||
*/
|
||||
message OntologyOntIdRegister {
|
||||
optional string ont_id = 1;
|
||||
optional bytes public_key = 2;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Response: Contains Ontology ONT ID registration signature
|
||||
* @end
|
||||
*/
|
||||
message OntologySignedOntIdRegister {
|
||||
optional bytes signature = 1;
|
||||
optional bytes payload = 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Request: Ask device to sign Ontology ONT ID attributes adding
|
||||
* @start
|
||||
* @next OntologySignedOntIdAddAttributes
|
||||
*/
|
||||
message OntologySignOntIdAddAttributes {
|
||||
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
|
||||
optional OntologyTransaction transaction = 2;
|
||||
optional OntologyOntIdAddAttributes ont_id_add_attributes = 3;
|
||||
/**
|
||||
* Ontology ONT ID attributes adding
|
||||
*/
|
||||
message OntologyOntIdAddAttributes {
|
||||
optional string ont_id = 1;
|
||||
optional bytes public_key = 2;
|
||||
repeated OntologyOntIdAttribute ont_id_attributes = 3;
|
||||
/**
|
||||
* Attribute of Ontology ONT ID
|
||||
*/
|
||||
message OntologyOntIdAttribute {
|
||||
optional string key = 1;
|
||||
optional string type = 2;
|
||||
optional string value = 3;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Response: Contains Ontology ONT ID attributes adding signature
|
||||
* @end
|
||||
*/
|
||||
message OntologySignedOntIdAddAttributes {
|
||||
optional bytes signature = 1;
|
||||
optional bytes payload = 2;
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
syntax = "proto2";
|
||||
package hw.trezor.messages.ripple;
|
||||
|
||||
// Sugar for easier handling in Java
|
||||
option java_package = "com.satoshilabs.trezor.lib.protobuf";
|
||||
|
@ -1,4 +1,5 @@
|
||||
syntax = "proto2";
|
||||
package hw.trezor.messages.stellar;
|
||||
|
||||
// Sugar for easier handling in Java
|
||||
option java_package = "com.satoshilabs.trezor.lib.protobuf";
|
||||
|
@ -1,9 +1,19 @@
|
||||
syntax = "proto2";
|
||||
package hw.trezor.messages.tezos;
|
||||
|
||||
// Sugar for easier handling in Java
|
||||
option java_package = "com.satoshilabs.trezor.lib.protobuf";
|
||||
option java_outer_classname = "TrezorMessageTezos";
|
||||
|
||||
/**
|
||||
* Tezos Curve Type
|
||||
*/
|
||||
enum TezosCurveType {
|
||||
Ed25519 = 0;
|
||||
Secp256k1 = 1;
|
||||
P256 = 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Request: Ask device for Tezos address corresponding to address_n path
|
||||
* @start
|
||||
@ -12,7 +22,8 @@ option java_outer_classname = "TrezorMessageTezos";
|
||||
*/
|
||||
message TezosGetAddress {
|
||||
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
|
||||
optional bool show_display = 2; // optionally show on display before sending the result
|
||||
optional TezosCurveType curve = 2 [default=Ed25519]; // Curve to use in trezor
|
||||
optional bool show_display = 3; // optionally show on display before sending the result
|
||||
}
|
||||
|
||||
/**
|
||||
@ -30,7 +41,8 @@ message TezosAddress {
|
||||
*/
|
||||
message TezosGetPublicKey {
|
||||
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
|
||||
optional bool show_display = 2; // Optionally show on display before sending the result
|
||||
optional TezosCurveType curve = 2 [default=Ed25519]; // Curve to use in trezor
|
||||
optional bool show_display = 3; // Optionally show on display before sending the result
|
||||
}
|
||||
|
||||
/**
|
||||
@ -38,7 +50,7 @@ message TezosGetPublicKey {
|
||||
* @end
|
||||
*/
|
||||
message TezosPublicKey {
|
||||
optional bytes public_key = 1; // Tezos public key
|
||||
optional string public_key = 1; // b58 encoded Tezos public key with prefix
|
||||
}
|
||||
|
||||
/**
|
||||
@ -48,68 +60,77 @@ message TezosPublicKey {
|
||||
*/
|
||||
message TezosSignTx {
|
||||
repeated uint32 address_n = 1; // BIP-32 path to derive the key from master node
|
||||
optional TezosOperationCommon operation = 2; // Tezos operation structure
|
||||
optional TezosTransactionType transaction = 3; // Tezos transaction part
|
||||
optional TezosOriginationType origination = 4; // Tezos origination part
|
||||
optional TezosDelegationType delegation = 5; // Tezos delegation part
|
||||
optional TezosCurveType curve = 2 [default=Ed25519]; // Curve to use in trezor
|
||||
optional bytes branch = 3; // b58 encoded branch with prefix
|
||||
|
||||
optional TezosRevealOp reveal = 4; // Tezos reveal operation (may be bundled with other op)
|
||||
optional TezosTransactionOp transaction = 5; // Tezos transaction operation
|
||||
optional TezosOriginationOp origination = 6; // Tezos origination operation
|
||||
optional TezosDelegationOp delegation = 7; // Tezos delegation operation
|
||||
/*
|
||||
* Tezos contract ID
|
||||
*/
|
||||
* Tezos contract ID
|
||||
*/
|
||||
message TezosContractID {
|
||||
optional TezosContractType tag = 1;
|
||||
optional bytes hash = 2; // Implicit = 21B, originated = 20B + 1B padding
|
||||
/*
|
||||
* Type of Tezos Contract type
|
||||
*/
|
||||
* Type of Tezos Contract type
|
||||
*/
|
||||
enum TezosContractType {
|
||||
Implicit = 0;
|
||||
Originated = 1;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Structure representing the common part for Tezos operations
|
||||
/**
|
||||
* Structure representing information for reveal
|
||||
*/
|
||||
message TezosOperationCommon {
|
||||
optional bytes branch = 1;
|
||||
optional TezosOperationType tag = 2;
|
||||
optional TezosContractID source = 3;
|
||||
optional uint64 fee = 4;
|
||||
optional uint64 counter = 5;
|
||||
optional uint64 gas_limit = 6;
|
||||
optional uint64 storage_limit = 7;
|
||||
/*
|
||||
* Type of Tezos operation
|
||||
*/
|
||||
enum TezosOperationType {
|
||||
Transaction = 8;
|
||||
Origination = 9;
|
||||
Delegation = 10;
|
||||
}
|
||||
message TezosRevealOp {
|
||||
optional TezosContractID source = 1;
|
||||
optional uint64 fee = 2;
|
||||
optional uint64 counter = 3;
|
||||
optional uint64 gas_limit = 4;
|
||||
optional uint64 storage_limit = 5;
|
||||
optional bytes public_key = 6;
|
||||
}
|
||||
/*
|
||||
* Structure representing additional information for transaction
|
||||
/**
|
||||
* Structure representing information for transaction
|
||||
*/
|
||||
message TezosTransactionType {
|
||||
optional uint64 amount = 1;
|
||||
optional TezosContractID destination = 2;
|
||||
optional bytes parameters = 3;
|
||||
message TezosTransactionOp {
|
||||
optional TezosContractID source = 1;
|
||||
optional uint64 fee = 2;
|
||||
optional uint64 counter = 3;
|
||||
optional uint64 gas_limit = 4;
|
||||
optional uint64 storage_limit = 5;
|
||||
optional uint64 amount = 6;
|
||||
optional TezosContractID destination = 7;
|
||||
optional bytes parameters = 8;
|
||||
}
|
||||
/*
|
||||
* Structure representing additional information for origination
|
||||
*/
|
||||
message TezosOriginationType {
|
||||
optional bytes manager_pubkey = 1;
|
||||
optional uint64 balance = 2;
|
||||
optional bool spendable = 3;
|
||||
optional bool delegatable = 4;
|
||||
optional bytes delegate = 5; // 1B tag + 20B public key hash
|
||||
optional bytes script = 6;
|
||||
/**
|
||||
* Structure representing information for origination
|
||||
*/
|
||||
message TezosOriginationOp {
|
||||
optional TezosContractID source = 1;
|
||||
optional uint64 fee = 2;
|
||||
optional uint64 counter = 3;
|
||||
optional uint64 gas_limit = 4;
|
||||
optional uint64 storage_limit = 5;
|
||||
optional bytes manager_pubkey = 6;
|
||||
optional uint64 balance = 7;
|
||||
optional bool spendable = 8;
|
||||
optional bool delegatable = 9;
|
||||
optional bytes delegate = 10;
|
||||
optional bytes script = 11;
|
||||
}
|
||||
/*
|
||||
* Structure representing additional information for delegation
|
||||
*/
|
||||
message TezosDelegationType {
|
||||
optional bytes delegate = 1; // 1B tag + 20B public key hash
|
||||
/**
|
||||
* Structure representing information for delegation
|
||||
*/
|
||||
message TezosDelegationOp {
|
||||
optional TezosContractID source = 1;
|
||||
optional uint64 fee = 2;
|
||||
optional uint64 counter = 3;
|
||||
optional uint64 gas_limit = 4;
|
||||
optional uint64 storage_limit = 5;
|
||||
optional bytes delegate = 6;
|
||||
}
|
||||
}
|
||||
|
||||
@ -118,7 +139,7 @@ message TezosSignTx {
|
||||
* @end
|
||||
*/
|
||||
message TezosSignedTx {
|
||||
optional bytes signature = 1; // Tezos transaction signature
|
||||
optional bytes sig_op_contents = 2; // Signed operation contents
|
||||
optional string operation_hash = 3; // b58 check encoded blake2b hashed operation contents
|
||||
optional string signature = 1; // Tezos b58 encoded transaction signature with prefix
|
||||
optional bytes sig_op_contents = 2; // operation_bytes + signed operation_bytes
|
||||
optional string operation_hash = 3; // b58 encoded hashed operation contents with prefix
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
syntax = "proto2";
|
||||
package hw.trezor.messages;
|
||||
|
||||
/**
|
||||
* Messages for TREZOR communication
|
||||
@ -173,6 +174,20 @@ enum MessageType {
|
||||
MessageType_CardanoTxAck = 309 [(wire_in) = true];
|
||||
MessageType_CardanoSignedTransaction = 310 [(wire_out) = true];
|
||||
|
||||
// Ontology
|
||||
MessageType_OntologyGetAddress = 350 [(wire_in) = true];
|
||||
MessageType_OntologyAddress = 351 [(wire_out) = true];
|
||||
MessageType_OntologyGetPublicKey = 352 [(wire_in) = true];
|
||||
MessageType_OntologyPublicKey = 353 [(wire_out) = true];
|
||||
MessageType_OntologySignTransfer = 354 [(wire_in) = true];
|
||||
MessageType_OntologySignedTransfer = 355 [(wire_out) = true];
|
||||
MessageType_OntologySignWithdrawOng = 356 [(wire_in) = true];
|
||||
MessageType_OntologySignedWithdrawOng = 357 [(wire_out) = true];
|
||||
MessageType_OntologySignOntIdRegister = 358 [(wire_in) = true];
|
||||
MessageType_OntologySignedOntIdRegister = 359 [(wire_out) = true];
|
||||
MessageType_OntologySignOntIdAddAttributes = 360 [(wire_in) = true];
|
||||
MessageType_OntologySignedOntIdAddAttributes = 361 [(wire_out) = true];
|
||||
|
||||
// Ripple
|
||||
MessageType_RippleGetAddress = 400 [(wire_in) = true];
|
||||
MessageType_RippleAddress = 401 [(wire_out) = true];
|
||||
|
@ -189,6 +189,8 @@ class Descriptor:
|
||||
if field.orig.type == field.orig.TYPE_MESSAGE
|
||||
)
|
||||
|
||||
if len(imports) > 0:
|
||||
yield "" # make isort happy
|
||||
for name in sorted(imports):
|
||||
yield self.create_message_import(name)
|
||||
|
||||
@ -218,15 +220,16 @@ class Descriptor:
|
||||
|
||||
fields = [self.parse_field(field) for field in message.field]
|
||||
|
||||
yield from self.process_message_imports(fields)
|
||||
|
||||
if any(field.repeated for field in fields):
|
||||
yield ""
|
||||
yield "if __debug__:"
|
||||
yield " try:"
|
||||
yield " from typing import List"
|
||||
yield " except ImportError:"
|
||||
yield " List = None # type: ignore"
|
||||
|
||||
yield from self.process_message_imports(fields)
|
||||
|
||||
yield ""
|
||||
yield ""
|
||||
yield "class {}(p.MessageType):".format(message.name)
|
||||
|
@ -35,6 +35,7 @@ class CoinDef(p.MessageType):
|
||||
30: ('maintainer', p.UnicodeType, 0),
|
||||
31: ('blocktime_seconds', p.UVarintType, 0),
|
||||
32: ('bip115', p.BoolType, 0),
|
||||
33: ('cooldown', p.UVarintType, 0),
|
||||
}
|
||||
|
||||
def __init__(
|
||||
@ -73,7 +74,8 @@ class CoinDef(p.MessageType):
|
||||
blocktime_seconds: int = None,
|
||||
default_fee_b: dict = None,
|
||||
bitcore: dict = None,
|
||||
blockbook: dict = None
|
||||
blockbook: dict = None,
|
||||
cooldown: int = None
|
||||
):
|
||||
self.coin_name = coin_name
|
||||
self.coin_shortcut = coin_shortcut
|
||||
@ -110,4 +112,5 @@ class CoinDef(p.MessageType):
|
||||
self.default_fee_b = default_fee_b
|
||||
self.bitcore = bitcore
|
||||
self.blockbook = blockbook
|
||||
self.cooldown = cooldown
|
||||
p.MessageType.__init__(self)
|
||||
|
Loading…
Reference in New Issue
Block a user