From e78da178290f0242e63792527c0270621b34e4a0 Mon Sep 17 00:00:00 2001 From: asi345 Date: Thu, 29 Aug 2024 13:50:53 +0200 Subject: [PATCH 1/2] eth_sign_tx: integrate address case feature to go library see : BitBoxSwiss/bitbox02-firmware@055bda6 For ETH signing legacy and EIP1559 transactions, the BitBox02 device shows confirmation screens for recipient and amount. For recipient, the device was previously showing the address in mixed case according to EIP-55, no matter the case user has entered. This created confusions among the users. That is why not the go library detects the case of the recipient address useer inputted and sends this case information to BitBox02 device, which will in turn show the recipient address in the same case that it got from the library. Signed-off-by: asi345 --- api/firmware/eth.go | 25 +- api/firmware/messages/antiklepto.pb.go | 12 +- api/firmware/messages/backup_commands.pb.go | 20 +- api/firmware/messages/bitbox02_system.pb.go | 24 +- api/firmware/messages/btc.pb.go | 66 +- api/firmware/messages/cardano.pb.go | 48 +- api/firmware/messages/common.pb.go | 18 +- api/firmware/messages/eth.pb.go | 582 ++++++++++-------- api/firmware/messages/eth.proto | 8 + api/firmware/messages/hww.pb.go | 18 +- api/firmware/messages/keystore.pb.go | 20 +- api/firmware/messages/mnemonic.pb.go | 12 +- .../messages/perform_attestation.pb.go | 10 +- api/firmware/messages/system.pb.go | 8 +- 14 files changed, 492 insertions(+), 379 deletions(-) diff --git a/api/firmware/eth.go b/api/firmware/eth.go index 96b1267..0080779 100644 --- a/api/firmware/eth.go +++ b/api/firmware/eth.go @@ -141,6 +141,22 @@ func (device *Device) handleSignerNonceCommitment(response *messages.ETHResponse return signature, nil } +// ETHIdentifyCase identifies the case of the recipient address given as hexadecimal string. +// This function exists as a convenience to potentially help clients to determine the case of the +// recipient address. The output of the function goes to ETHSign and ETHSignEIP1559 as the +// recipientAddressCase parameter, which is forwarded to BitBox02 device to reconstruct the address +// in the correct case(the one that the user enters). +func ETHIdentifyCase(recipientAddress string) messages.ETHAddressCase { + switch { + case strings.ToUpper(recipientAddress) == recipientAddress: + return messages.ETHAddressCase_ETH_ADDRESS_CASE_UPPER + case strings.ToLower(recipientAddress) == recipientAddress: + return messages.ETHAddressCase_ETH_ADDRESS_CASE_LOWER + default: + return messages.ETHAddressCase_ETH_ADDRESS_CASE_MIXED + } +} + // ETHSign signs an ethereum transaction. It returns a 65 byte signature (R, S, and 1 byte recID). func (device *Device) ETHSign( chainID uint64, @@ -150,7 +166,8 @@ func (device *Device) ETHSign( gasLimit uint64, recipient [20]byte, value *big.Int, - data []byte) ([]byte, error) { + data []byte, + recipientAddressCase messages.ETHAddressCase) ([]byte, error) { supportsAntiklepto := device.version.AtLeast(semver.NewSemVer(9, 5, 0)) var hostNonceCommitment *messages.AntiKleptoHostNonceCommitment @@ -168,6 +185,7 @@ func (device *Device) ETHSign( if err != nil { return nil, err } + request := &messages.ETHRequest{ Request: &messages.ETHRequest_Sign{ Sign: &messages.ETHSignRequest{ @@ -181,6 +199,7 @@ func (device *Device) ETHSign( Value: value.Bytes(), Data: data, HostNonceCommitment: hostNonceCommitment, + AddressCase: recipientAddressCase, }, }, } @@ -213,7 +232,8 @@ func (device *Device) ETHSignEIP1559( gasLimit uint64, recipient [20]byte, value *big.Int, - data []byte) ([]byte, error) { + data []byte, + recipientAddressCase messages.ETHAddressCase) ([]byte, error) { if !device.version.AtLeast(semver.NewSemVer(9, 16, 0)) { return nil, UnsupportedError("9.16.0") @@ -237,6 +257,7 @@ func (device *Device) ETHSignEIP1559( Value: value.Bytes(), Data: data, HostNonceCommitment: hostNonceCommitment, + AddressCase: recipientAddressCase, }, }, } diff --git a/api/firmware/messages/antiklepto.pb.go b/api/firmware/messages/antiklepto.pb.go index 90a0ad6..652b4ad 100644 --- a/api/firmware/messages/antiklepto.pb.go +++ b/api/firmware/messages/antiklepto.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.2 +// protoc v5.27.1 // source: antiklepto.proto package messages @@ -208,7 +208,7 @@ func file_antiklepto_proto_rawDescGZIP() []byte { } var file_antiklepto_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_antiklepto_proto_goTypes = []interface{}{ +var file_antiklepto_proto_goTypes = []any{ (*AntiKleptoHostNonceCommitment)(nil), // 0: shiftcrypto.bitbox02.AntiKleptoHostNonceCommitment (*AntiKleptoSignerCommitment)(nil), // 1: shiftcrypto.bitbox02.AntiKleptoSignerCommitment (*AntiKleptoSignatureRequest)(nil), // 2: shiftcrypto.bitbox02.AntiKleptoSignatureRequest @@ -227,7 +227,7 @@ func file_antiklepto_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_antiklepto_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_antiklepto_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*AntiKleptoHostNonceCommitment); i { case 0: return &v.state @@ -239,7 +239,7 @@ func file_antiklepto_proto_init() { return nil } } - file_antiklepto_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_antiklepto_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*AntiKleptoSignerCommitment); i { case 0: return &v.state @@ -251,7 +251,7 @@ func file_antiklepto_proto_init() { return nil } } - file_antiklepto_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_antiklepto_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*AntiKleptoSignatureRequest); i { case 0: return &v.state diff --git a/api/firmware/messages/backup_commands.pb.go b/api/firmware/messages/backup_commands.pb.go index 29204a6..93b1cad 100644 --- a/api/firmware/messages/backup_commands.pb.go +++ b/api/firmware/messages/backup_commands.pb.go @@ -16,8 +16,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.2 +// protoc v5.27.1 // source: backup_commands.proto package messages @@ -449,7 +449,7 @@ func file_backup_commands_proto_rawDescGZIP() []byte { } var file_backup_commands_proto_msgTypes = make([]protoimpl.MessageInfo, 7) -var file_backup_commands_proto_goTypes = []interface{}{ +var file_backup_commands_proto_goTypes = []any{ (*CheckBackupRequest)(nil), // 0: shiftcrypto.bitbox02.CheckBackupRequest (*CheckBackupResponse)(nil), // 1: shiftcrypto.bitbox02.CheckBackupResponse (*CreateBackupRequest)(nil), // 2: shiftcrypto.bitbox02.CreateBackupRequest @@ -473,7 +473,7 @@ func file_backup_commands_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_backup_commands_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_backup_commands_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*CheckBackupRequest); i { case 0: return &v.state @@ -485,7 +485,7 @@ func file_backup_commands_proto_init() { return nil } } - file_backup_commands_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_backup_commands_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*CheckBackupResponse); i { case 0: return &v.state @@ -497,7 +497,7 @@ func file_backup_commands_proto_init() { return nil } } - file_backup_commands_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_backup_commands_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*CreateBackupRequest); i { case 0: return &v.state @@ -509,7 +509,7 @@ func file_backup_commands_proto_init() { return nil } } - file_backup_commands_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_backup_commands_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*ListBackupsRequest); i { case 0: return &v.state @@ -521,7 +521,7 @@ func file_backup_commands_proto_init() { return nil } } - file_backup_commands_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_backup_commands_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*BackupInfo); i { case 0: return &v.state @@ -533,7 +533,7 @@ func file_backup_commands_proto_init() { return nil } } - file_backup_commands_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_backup_commands_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*ListBackupsResponse); i { case 0: return &v.state @@ -545,7 +545,7 @@ func file_backup_commands_proto_init() { return nil } } - file_backup_commands_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_backup_commands_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*RestoreBackupRequest); i { case 0: return &v.state diff --git a/api/firmware/messages/bitbox02_system.pb.go b/api/firmware/messages/bitbox02_system.pb.go index 5cf93d1..003337f 100644 --- a/api/firmware/messages/bitbox02_system.pb.go +++ b/api/firmware/messages/bitbox02_system.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.2 +// protoc v5.27.1 // source: bitbox02_system.proto package messages @@ -584,7 +584,7 @@ func file_bitbox02_system_proto_rawDescGZIP() []byte { var file_bitbox02_system_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_bitbox02_system_proto_msgTypes = make([]protoimpl.MessageInfo, 9) -var file_bitbox02_system_proto_goTypes = []interface{}{ +var file_bitbox02_system_proto_goTypes = []any{ (InsertRemoveSDCardRequest_SDCardAction)(0), // 0: shiftcrypto.bitbox02.InsertRemoveSDCardRequest.SDCardAction (*CheckSDCardRequest)(nil), // 1: shiftcrypto.bitbox02.CheckSDCardRequest (*CheckSDCardResponse)(nil), // 2: shiftcrypto.bitbox02.CheckSDCardResponse @@ -611,7 +611,7 @@ func file_bitbox02_system_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_bitbox02_system_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_bitbox02_system_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*CheckSDCardRequest); i { case 0: return &v.state @@ -623,7 +623,7 @@ func file_bitbox02_system_proto_init() { return nil } } - file_bitbox02_system_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_bitbox02_system_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*CheckSDCardResponse); i { case 0: return &v.state @@ -635,7 +635,7 @@ func file_bitbox02_system_proto_init() { return nil } } - file_bitbox02_system_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_bitbox02_system_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*DeviceInfoRequest); i { case 0: return &v.state @@ -647,7 +647,7 @@ func file_bitbox02_system_proto_init() { return nil } } - file_bitbox02_system_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_bitbox02_system_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*DeviceInfoResponse); i { case 0: return &v.state @@ -659,7 +659,7 @@ func file_bitbox02_system_proto_init() { return nil } } - file_bitbox02_system_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_bitbox02_system_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*InsertRemoveSDCardRequest); i { case 0: return &v.state @@ -671,7 +671,7 @@ func file_bitbox02_system_proto_init() { return nil } } - file_bitbox02_system_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_bitbox02_system_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*ResetRequest); i { case 0: return &v.state @@ -683,7 +683,7 @@ func file_bitbox02_system_proto_init() { return nil } } - file_bitbox02_system_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_bitbox02_system_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*SetDeviceLanguageRequest); i { case 0: return &v.state @@ -695,7 +695,7 @@ func file_bitbox02_system_proto_init() { return nil } } - file_bitbox02_system_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_bitbox02_system_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*SetDeviceNameRequest); i { case 0: return &v.state @@ -707,7 +707,7 @@ func file_bitbox02_system_proto_init() { return nil } } - file_bitbox02_system_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_bitbox02_system_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*SetPasswordRequest); i { case 0: return &v.state diff --git a/api/firmware/messages/btc.pb.go b/api/firmware/messages/btc.pb.go index 47761c9..792e0e9 100644 --- a/api/firmware/messages/btc.pb.go +++ b/api/firmware/messages/btc.pb.go @@ -15,8 +15,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.2 +// protoc v5.27.1 // source: btc.proto package messages @@ -2691,7 +2691,7 @@ func file_btc_proto_rawDescGZIP() []byte { var file_btc_proto_enumTypes = make([]protoimpl.EnumInfo, 8) var file_btc_proto_msgTypes = make([]protoimpl.MessageInfo, 24) -var file_btc_proto_goTypes = []interface{}{ +var file_btc_proto_goTypes = []any{ (BTCCoin)(0), // 0: shiftcrypto.bitbox02.BTCCoin (BTCOutputType)(0), // 1: shiftcrypto.bitbox02.BTCOutputType (BTCScriptConfig_SimpleType)(0), // 2: shiftcrypto.bitbox02.BTCScriptConfig.SimpleType @@ -2786,7 +2786,7 @@ func file_btc_proto_init() { file_common_proto_init() file_antiklepto_proto_init() if !protoimpl.UnsafeEnabled { - file_btc_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*BTCScriptConfig); i { case 0: return &v.state @@ -2798,7 +2798,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*BTCPubRequest); i { case 0: return &v.state @@ -2810,7 +2810,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*BTCScriptConfigWithKeypath); i { case 0: return &v.state @@ -2822,7 +2822,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*BTCSignInitRequest); i { case 0: return &v.state @@ -2834,7 +2834,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*BTCSignNextResponse); i { case 0: return &v.state @@ -2846,7 +2846,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*BTCSignInputRequest); i { case 0: return &v.state @@ -2858,7 +2858,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*BTCSignOutputRequest); i { case 0: return &v.state @@ -2870,7 +2870,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*BTCScriptConfigRegistration); i { case 0: return &v.state @@ -2882,7 +2882,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*BTCSuccess); i { case 0: return &v.state @@ -2894,7 +2894,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*BTCIsScriptConfigRegisteredRequest); i { case 0: return &v.state @@ -2906,7 +2906,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*BTCIsScriptConfigRegisteredResponse); i { case 0: return &v.state @@ -2918,7 +2918,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*BTCRegisterScriptConfigRequest); i { case 0: return &v.state @@ -2930,7 +2930,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*BTCPrevTxInitRequest); i { case 0: return &v.state @@ -2942,7 +2942,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*BTCPrevTxInputRequest); i { case 0: return &v.state @@ -2954,7 +2954,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*BTCPrevTxOutputRequest); i { case 0: return &v.state @@ -2966,7 +2966,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[15].Exporter = func(v any, i int) any { switch v := v.(*BTCPaymentRequestRequest); i { case 0: return &v.state @@ -2978,7 +2978,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[16].Exporter = func(v any, i int) any { switch v := v.(*BTCSignMessageRequest); i { case 0: return &v.state @@ -2990,7 +2990,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[17].Exporter = func(v any, i int) any { switch v := v.(*BTCSignMessageResponse); i { case 0: return &v.state @@ -3002,7 +3002,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[18].Exporter = func(v any, i int) any { switch v := v.(*BTCRequest); i { case 0: return &v.state @@ -3014,7 +3014,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[19].Exporter = func(v any, i int) any { switch v := v.(*BTCResponse); i { case 0: return &v.state @@ -3026,7 +3026,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[20].Exporter = func(v any, i int) any { switch v := v.(*BTCScriptConfig_Multisig); i { case 0: return &v.state @@ -3038,7 +3038,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[21].Exporter = func(v any, i int) any { switch v := v.(*BTCScriptConfig_Policy); i { case 0: return &v.state @@ -3050,7 +3050,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[22].Exporter = func(v any, i int) any { switch v := v.(*BTCPaymentRequestRequest_Memo); i { case 0: return &v.state @@ -3062,7 +3062,7 @@ func file_btc_proto_init() { return nil } } - file_btc_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_btc_proto_msgTypes[23].Exporter = func(v any, i int) any { switch v := v.(*BTCPaymentRequestRequest_Memo_TextMemo); i { case 0: return &v.state @@ -3075,17 +3075,17 @@ func file_btc_proto_init() { } } } - file_btc_proto_msgTypes[0].OneofWrappers = []interface{}{ + file_btc_proto_msgTypes[0].OneofWrappers = []any{ (*BTCScriptConfig_SimpleType_)(nil), (*BTCScriptConfig_Multisig_)(nil), (*BTCScriptConfig_Policy_)(nil), } - file_btc_proto_msgTypes[1].OneofWrappers = []interface{}{ + file_btc_proto_msgTypes[1].OneofWrappers = []any{ (*BTCPubRequest_XpubType)(nil), (*BTCPubRequest_ScriptConfig)(nil), } - file_btc_proto_msgTypes[6].OneofWrappers = []interface{}{} - file_btc_proto_msgTypes[18].OneofWrappers = []interface{}{ + file_btc_proto_msgTypes[6].OneofWrappers = []any{} + file_btc_proto_msgTypes[18].OneofWrappers = []any{ (*BTCRequest_IsScriptConfigRegistered)(nil), (*BTCRequest_RegisterScriptConfig)(nil), (*BTCRequest_PrevtxInit)(nil), @@ -3095,14 +3095,14 @@ func file_btc_proto_init() { (*BTCRequest_AntikleptoSignature)(nil), (*BTCRequest_PaymentRequest)(nil), } - file_btc_proto_msgTypes[19].OneofWrappers = []interface{}{ + file_btc_proto_msgTypes[19].OneofWrappers = []any{ (*BTCResponse_Success)(nil), (*BTCResponse_IsScriptConfigRegistered)(nil), (*BTCResponse_SignNext)(nil), (*BTCResponse_SignMessage)(nil), (*BTCResponse_AntikleptoSignerCommitment)(nil), } - file_btc_proto_msgTypes[22].OneofWrappers = []interface{}{ + file_btc_proto_msgTypes[22].OneofWrappers = []any{ (*BTCPaymentRequestRequest_Memo_TextMemo_)(nil), } type x struct{} diff --git a/api/firmware/messages/cardano.pb.go b/api/firmware/messages/cardano.pb.go index 463ea49..bc8ed13 100644 --- a/api/firmware/messages/cardano.pb.go +++ b/api/firmware/messages/cardano.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.2 +// protoc v5.27.1 // source: cardano.proto package messages @@ -1436,7 +1436,7 @@ func file_cardano_proto_rawDescGZIP() []byte { var file_cardano_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_cardano_proto_msgTypes = make([]protoimpl.MessageInfo, 17) -var file_cardano_proto_goTypes = []interface{}{ +var file_cardano_proto_goTypes = []any{ (CardanoNetwork)(0), // 0: shiftcrypto.bitbox02.CardanoNetwork (*CardanoXpubsRequest)(nil), // 1: shiftcrypto.bitbox02.CardanoXpubsRequest (*CardanoXpubsResponse)(nil), // 2: shiftcrypto.bitbox02.CardanoXpubsResponse @@ -1495,7 +1495,7 @@ func file_cardano_proto_init() { } file_common_proto_init() if !protoimpl.UnsafeEnabled { - file_cardano_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_cardano_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*CardanoXpubsRequest); i { case 0: return &v.state @@ -1507,7 +1507,7 @@ func file_cardano_proto_init() { return nil } } - file_cardano_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_cardano_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*CardanoXpubsResponse); i { case 0: return &v.state @@ -1519,7 +1519,7 @@ func file_cardano_proto_init() { return nil } } - file_cardano_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_cardano_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*CardanoScriptConfig); i { case 0: return &v.state @@ -1531,7 +1531,7 @@ func file_cardano_proto_init() { return nil } } - file_cardano_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_cardano_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*CardanoAddressRequest); i { case 0: return &v.state @@ -1543,7 +1543,7 @@ func file_cardano_proto_init() { return nil } } - file_cardano_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_cardano_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*CardanoSignTransactionRequest); i { case 0: return &v.state @@ -1555,7 +1555,7 @@ func file_cardano_proto_init() { return nil } } - file_cardano_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_cardano_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*CardanoSignTransactionResponse); i { case 0: return &v.state @@ -1567,7 +1567,7 @@ func file_cardano_proto_init() { return nil } } - file_cardano_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_cardano_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*CardanoRequest); i { case 0: return &v.state @@ -1579,7 +1579,7 @@ func file_cardano_proto_init() { return nil } } - file_cardano_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_cardano_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*CardanoResponse); i { case 0: return &v.state @@ -1591,7 +1591,7 @@ func file_cardano_proto_init() { return nil } } - file_cardano_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_cardano_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*CardanoScriptConfig_PkhSkh); i { case 0: return &v.state @@ -1603,7 +1603,7 @@ func file_cardano_proto_init() { return nil } } - file_cardano_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_cardano_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*CardanoSignTransactionRequest_Input); i { case 0: return &v.state @@ -1615,7 +1615,7 @@ func file_cardano_proto_init() { return nil } } - file_cardano_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_cardano_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*CardanoSignTransactionRequest_AssetGroup); i { case 0: return &v.state @@ -1627,7 +1627,7 @@ func file_cardano_proto_init() { return nil } } - file_cardano_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_cardano_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*CardanoSignTransactionRequest_Output); i { case 0: return &v.state @@ -1639,7 +1639,7 @@ func file_cardano_proto_init() { return nil } } - file_cardano_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_cardano_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*CardanoSignTransactionRequest_Certificate); i { case 0: return &v.state @@ -1651,7 +1651,7 @@ func file_cardano_proto_init() { return nil } } - file_cardano_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_cardano_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*CardanoSignTransactionRequest_Withdrawal); i { case 0: return &v.state @@ -1663,7 +1663,7 @@ func file_cardano_proto_init() { return nil } } - file_cardano_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_cardano_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*CardanoSignTransactionRequest_AssetGroup_Token); i { case 0: return &v.state @@ -1675,7 +1675,7 @@ func file_cardano_proto_init() { return nil } } - file_cardano_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_cardano_proto_msgTypes[15].Exporter = func(v any, i int) any { switch v := v.(*CardanoSignTransactionRequest_Certificate_StakeDelegation); i { case 0: return &v.state @@ -1687,7 +1687,7 @@ func file_cardano_proto_init() { return nil } } - file_cardano_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_cardano_proto_msgTypes[16].Exporter = func(v any, i int) any { switch v := v.(*CardanoSignTransactionResponse_ShelleyWitness); i { case 0: return &v.state @@ -1700,20 +1700,20 @@ func file_cardano_proto_init() { } } } - file_cardano_proto_msgTypes[2].OneofWrappers = []interface{}{ + file_cardano_proto_msgTypes[2].OneofWrappers = []any{ (*CardanoScriptConfig_PkhSkh_)(nil), } - file_cardano_proto_msgTypes[6].OneofWrappers = []interface{}{ + file_cardano_proto_msgTypes[6].OneofWrappers = []any{ (*CardanoRequest_Xpubs)(nil), (*CardanoRequest_Address)(nil), (*CardanoRequest_SignTransaction)(nil), } - file_cardano_proto_msgTypes[7].OneofWrappers = []interface{}{ + file_cardano_proto_msgTypes[7].OneofWrappers = []any{ (*CardanoResponse_Xpubs)(nil), (*CardanoResponse_Pub)(nil), (*CardanoResponse_SignTransaction)(nil), } - file_cardano_proto_msgTypes[12].OneofWrappers = []interface{}{ + file_cardano_proto_msgTypes[12].OneofWrappers = []any{ (*CardanoSignTransactionRequest_Certificate_StakeRegistration)(nil), (*CardanoSignTransactionRequest_Certificate_StakeDeregistration)(nil), (*CardanoSignTransactionRequest_Certificate_StakeDelegation_)(nil), diff --git a/api/firmware/messages/common.pb.go b/api/firmware/messages/common.pb.go index 28c4f16..5a5d747 100644 --- a/api/firmware/messages/common.pb.go +++ b/api/firmware/messages/common.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.2 +// protoc v5.27.1 // source: common.proto package messages @@ -408,7 +408,7 @@ func file_common_proto_rawDescGZIP() []byte { } var file_common_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_common_proto_goTypes = []interface{}{ +var file_common_proto_goTypes = []any{ (*PubResponse)(nil), // 0: shiftcrypto.bitbox02.PubResponse (*RootFingerprintRequest)(nil), // 1: shiftcrypto.bitbox02.RootFingerprintRequest (*RootFingerprintResponse)(nil), // 2: shiftcrypto.bitbox02.RootFingerprintResponse @@ -431,7 +431,7 @@ func file_common_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_common_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_common_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*PubResponse); i { case 0: return &v.state @@ -443,7 +443,7 @@ func file_common_proto_init() { return nil } } - file_common_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_common_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*RootFingerprintRequest); i { case 0: return &v.state @@ -455,7 +455,7 @@ func file_common_proto_init() { return nil } } - file_common_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_common_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*RootFingerprintResponse); i { case 0: return &v.state @@ -467,7 +467,7 @@ func file_common_proto_init() { return nil } } - file_common_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_common_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*XPub); i { case 0: return &v.state @@ -479,7 +479,7 @@ func file_common_proto_init() { return nil } } - file_common_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_common_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*Keypath); i { case 0: return &v.state @@ -491,7 +491,7 @@ func file_common_proto_init() { return nil } } - file_common_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_common_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*KeyOriginInfo); i { case 0: return &v.state diff --git a/api/firmware/messages/eth.pb.go b/api/firmware/messages/eth.pb.go index e94c8c6..9901a7f 100644 --- a/api/firmware/messages/eth.pb.go +++ b/api/firmware/messages/eth.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.2 +// protoc v5.27.1 // source: eth.proto package messages @@ -86,6 +86,55 @@ func (ETHCoin) EnumDescriptor() ([]byte, []int) { return file_eth_proto_rawDescGZIP(), []int{0} } +type ETHAddressCase int32 + +const ( + ETHAddressCase_ETH_ADDRESS_CASE_MIXED ETHAddressCase = 0 + ETHAddressCase_ETH_ADDRESS_CASE_UPPER ETHAddressCase = 1 + ETHAddressCase_ETH_ADDRESS_CASE_LOWER ETHAddressCase = 2 +) + +// Enum value maps for ETHAddressCase. +var ( + ETHAddressCase_name = map[int32]string{ + 0: "ETH_ADDRESS_CASE_MIXED", + 1: "ETH_ADDRESS_CASE_UPPER", + 2: "ETH_ADDRESS_CASE_LOWER", + } + ETHAddressCase_value = map[string]int32{ + "ETH_ADDRESS_CASE_MIXED": 0, + "ETH_ADDRESS_CASE_UPPER": 1, + "ETH_ADDRESS_CASE_LOWER": 2, + } +) + +func (x ETHAddressCase) Enum() *ETHAddressCase { + p := new(ETHAddressCase) + *p = x + return p +} + +func (x ETHAddressCase) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ETHAddressCase) Descriptor() protoreflect.EnumDescriptor { + return file_eth_proto_enumTypes[1].Descriptor() +} + +func (ETHAddressCase) Type() protoreflect.EnumType { + return &file_eth_proto_enumTypes[1] +} + +func (x ETHAddressCase) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ETHAddressCase.Descriptor instead. +func (ETHAddressCase) EnumDescriptor() ([]byte, []int) { + return file_eth_proto_rawDescGZIP(), []int{1} +} + type ETHPubRequest_OutputType int32 const ( @@ -116,11 +165,11 @@ func (x ETHPubRequest_OutputType) String() string { } func (ETHPubRequest_OutputType) Descriptor() protoreflect.EnumDescriptor { - return file_eth_proto_enumTypes[1].Descriptor() + return file_eth_proto_enumTypes[2].Descriptor() } func (ETHPubRequest_OutputType) Type() protoreflect.EnumType { - return &file_eth_proto_enumTypes[1] + return &file_eth_proto_enumTypes[2] } func (x ETHPubRequest_OutputType) Number() protoreflect.EnumNumber { @@ -183,11 +232,11 @@ func (x ETHSignTypedMessageRequest_DataType) String() string { } func (ETHSignTypedMessageRequest_DataType) Descriptor() protoreflect.EnumDescriptor { - return file_eth_proto_enumTypes[2].Descriptor() + return file_eth_proto_enumTypes[3].Descriptor() } func (ETHSignTypedMessageRequest_DataType) Type() protoreflect.EnumType { - return &file_eth_proto_enumTypes[2] + return &file_eth_proto_enumTypes[3] } func (x ETHSignTypedMessageRequest_DataType) Number() protoreflect.EnumNumber { @@ -232,11 +281,11 @@ func (x ETHTypedMessageValueResponse_RootObject) String() string { } func (ETHTypedMessageValueResponse_RootObject) Descriptor() protoreflect.EnumDescriptor { - return file_eth_proto_enumTypes[3].Descriptor() + return file_eth_proto_enumTypes[4].Descriptor() } func (ETHTypedMessageValueResponse_RootObject) Type() protoreflect.EnumType { - return &file_eth_proto_enumTypes[3] + return &file_eth_proto_enumTypes[4] } func (x ETHTypedMessageValueResponse_RootObject) Number() protoreflect.EnumNumber { @@ -354,7 +403,8 @@ type ETHSignRequest struct { Data []byte `protobuf:"bytes,8,opt,name=data,proto3" json:"data,omitempty"` HostNonceCommitment *AntiKleptoHostNonceCommitment `protobuf:"bytes,9,opt,name=host_nonce_commitment,json=hostNonceCommitment,proto3" json:"host_nonce_commitment,omitempty"` // If non-zero, `coin` is ignored and `chain_id` is used to identify the network. - ChainId uint64 `protobuf:"varint,10,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + ChainId uint64 `protobuf:"varint,10,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + AddressCase ETHAddressCase `protobuf:"varint,11,opt,name=address_case,json=addressCase,proto3,enum=shiftcrypto.bitbox02.ETHAddressCase" json:"address_case,omitempty"` } func (x *ETHSignRequest) Reset() { @@ -459,6 +509,13 @@ func (x *ETHSignRequest) GetChainId() uint64 { return 0 } +func (x *ETHSignRequest) GetAddressCase() ETHAddressCase { + if x != nil { + return x.AddressCase + } + return ETHAddressCase_ETH_ADDRESS_CASE_MIXED +} + // TX payload for an EIP-1559 (type 2) transaction: https://eips.ethereum.org/EIPS/eip-1559 type ETHSignEIP1559Request struct { state protoimpl.MessageState @@ -475,6 +532,7 @@ type ETHSignEIP1559Request struct { Value []byte `protobuf:"bytes,8,opt,name=value,proto3" json:"value,omitempty"` // smallest big endian serialization, max. 32 bytes Data []byte `protobuf:"bytes,9,opt,name=data,proto3" json:"data,omitempty"` HostNonceCommitment *AntiKleptoHostNonceCommitment `protobuf:"bytes,10,opt,name=host_nonce_commitment,json=hostNonceCommitment,proto3" json:"host_nonce_commitment,omitempty"` + AddressCase ETHAddressCase `protobuf:"varint,11,opt,name=address_case,json=addressCase,proto3,enum=shiftcrypto.bitbox02.ETHAddressCase" json:"address_case,omitempty"` } func (x *ETHSignEIP1559Request) Reset() { @@ -579,6 +637,13 @@ func (x *ETHSignEIP1559Request) GetHostNonceCommitment() *AntiKleptoHostNonceCom return nil } +func (x *ETHSignEIP1559Request) GetAddressCase() ETHAddressCase { + if x != nil { + return x.AddressCase + } + return ETHAddressCase_ETH_ADDRESS_CASE_MIXED +} + type ETHSignMessageRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1355,7 +1420,7 @@ var file_eth_proto_rawDesc = []byte{ 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x22, 0x23, 0x0a, 0x0a, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, - 0x58, 0x50, 0x55, 0x42, 0x10, 0x01, 0x22, 0xf9, 0x02, 0x0a, 0x0e, 0x45, 0x54, 0x48, 0x53, 0x69, + 0x58, 0x50, 0x55, 0x42, 0x10, 0x01, 0x22, 0xc2, 0x03, 0x0a, 0x0e, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, @@ -1379,184 +1444,200 @@ var file_eth_proto_rawDesc = []byte{ 0x6e, 0x74, 0x52, 0x13, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, - 0x49, 0x64, 0x22, 0x8f, 0x03, 0x0a, 0x15, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x45, 0x49, - 0x50, 0x31, 0x35, 0x35, 0x39, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, - 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, - 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x70, 0x61, 0x74, - 0x68, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x70, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, - 0x67, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x14, 0x6d, 0x61, 0x78, 0x50, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, 0x65, 0x65, 0x50, 0x65, 0x72, 0x47, 0x61, 0x73, 0x12, - 0x25, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, - 0x61, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x65, 0x65, - 0x50, 0x65, 0x72, 0x47, 0x61, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x67, 0x61, 0x73, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x67, 0x0a, 0x15, 0x68, - 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x68, 0x69, - 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, - 0x32, 0x2e, 0x41, 0x6e, 0x74, 0x69, 0x4b, 0x6c, 0x65, 0x70, 0x74, 0x6f, 0x48, 0x6f, 0x73, 0x74, - 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, - 0x13, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xfa, 0x01, 0x0a, 0x15, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x31, - 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x73, - 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, - 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x04, 0x63, 0x6f, 0x69, - 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x03, - 0x28, 0x0d, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x70, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6d, - 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x67, 0x0a, - 0x15, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, - 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, - 0x78, 0x30, 0x32, 0x2e, 0x41, 0x6e, 0x74, 0x69, 0x4b, 0x6c, 0x65, 0x70, 0x74, 0x6f, 0x48, 0x6f, - 0x73, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, - 0x74, 0x52, 0x13, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, - 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, - 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, - 0x64, 0x22, 0x2f, 0x0a, 0x0f, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, - 0x72, 0x65, 0x22, 0xf4, 0x06, 0x0a, 0x1a, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, - 0x6b, 0x65, 0x79, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x6b, - 0x65, 0x79, 0x70, 0x61, 0x74, 0x68, 0x12, 0x51, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, - 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x69, - 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x67, 0x0a, 0x15, - 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x68, - 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, - 0x30, 0x32, 0x2e, 0x41, 0x6e, 0x74, 0x69, 0x4b, 0x6c, 0x65, 0x70, 0x74, 0x6f, 0x48, 0x6f, 0x73, - 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, - 0x52, 0x13, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, - 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0xec, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, + 0x49, 0x64, 0x12, 0x47, 0x0a, 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x61, + 0x73, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, + 0x45, 0x54, 0x48, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x61, 0x73, 0x65, 0x52, 0x0b, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x61, 0x73, 0x65, 0x22, 0xd8, 0x03, 0x0a, 0x15, + 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x45, 0x49, 0x50, 0x31, 0x35, 0x35, 0x39, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0d, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x70, 0x61, 0x74, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x6f, + 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x63, 0x65, + 0x12, 0x36, 0x0a, 0x18, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, + 0x5f, 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x14, 0x6d, 0x61, 0x78, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x46, + 0x65, 0x65, 0x50, 0x65, 0x72, 0x47, 0x61, 0x73, 0x12, 0x25, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f, + 0x66, 0x65, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x67, 0x61, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0c, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x65, 0x65, 0x50, 0x65, 0x72, 0x47, 0x61, 0x73, 0x12, + 0x1b, 0x0a, 0x09, 0x67, 0x61, 0x73, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x08, 0x67, 0x61, 0x73, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, + 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, + 0x09, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x67, 0x0a, 0x15, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x6f, 0x6e, + 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x41, 0x6e, 0x74, 0x69, 0x4b, + 0x6c, 0x65, 0x70, 0x74, 0x6f, 0x48, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x13, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x6f, + 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x47, 0x0a, + 0x0c, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x63, 0x61, 0x73, 0x65, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x41, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x61, 0x73, 0x65, 0x52, 0x0b, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x43, 0x61, 0x73, 0x65, 0x22, 0xfa, 0x01, 0x0a, 0x15, 0x45, 0x54, 0x48, 0x53, 0x69, + 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x31, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, + 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, + 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x04, 0x63, + 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0d, 0x52, 0x07, 0x6b, 0x65, 0x79, 0x70, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, + 0x03, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, + 0x67, 0x0a, 0x15, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, + 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, + 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x41, 0x6e, 0x74, 0x69, 0x4b, 0x6c, 0x65, 0x70, 0x74, 0x6f, + 0x48, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, + 0x65, 0x6e, 0x74, 0x52, 0x13, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, + 0x6e, 0x49, 0x64, 0x22, 0x2f, 0x0a, 0x0f, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x22, 0xf4, 0x06, 0x0a, 0x1a, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x64, 0x12, 0x18, + 0x0a, 0x07, 0x6b, 0x65, 0x79, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, + 0x07, 0x6b, 0x65, 0x79, 0x70, 0x61, 0x74, 0x68, 0x12, 0x51, 0x0a, 0x05, 0x74, 0x79, 0x70, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, + 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x74, 0x79, 0x70, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x70, + 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x67, + 0x0a, 0x15, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x6e, 0x6f, 0x6e, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, + 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, + 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x41, 0x6e, 0x74, 0x69, 0x4b, 0x6c, 0x65, 0x70, 0x74, 0x6f, 0x48, + 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, + 0x6e, 0x74, 0x52, 0x13, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6d, + 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0xec, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x39, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, + 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x53, + 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x5a, 0x0a, 0x0a, 0x61, 0x72, + 0x72, 0x61, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, + 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, + 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, + 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x61, 0x72, 0x72, + 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x1a, 0x6d, 0x0a, 0x06, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x4f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x5a, 0x0a, 0x0a, 0x61, 0x72, 0x72, 0x61, - 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x73, - 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, - 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x64, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x61, 0x72, 0x72, 0x61, 0x79, - 0x54, 0x79, 0x70, 0x65, 0x1a, 0x6d, 0x0a, 0x06, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x4f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x3b, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, - 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x54, - 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x1a, 0x73, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x51, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x73, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x51, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, + 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, + 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, + 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x6f, 0x0a, 0x08, 0x44, 0x61, + 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, + 0x4e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x01, 0x12, 0x08, + 0x0a, 0x04, 0x55, 0x49, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4e, 0x54, 0x10, + 0x03, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x41, + 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, + 0x4e, 0x47, 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x52, 0x52, 0x41, 0x59, 0x10, 0x07, 0x12, + 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x10, 0x08, 0x22, 0xc6, 0x01, 0x0a, 0x1c, + 0x45, 0x54, 0x48, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x0b, + 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x3d, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, + 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x54, 0x79, 0x70, 0x65, + 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x6f, 0x6f, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x52, 0x0a, 0x72, 0x6f, 0x6f, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, + 0x22, 0x32, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x0b, + 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, + 0x4f, 0x4d, 0x41, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x45, 0x53, 0x53, 0x41, + 0x47, 0x45, 0x10, 0x02, 0x22, 0x33, 0x0a, 0x1b, 0x45, 0x54, 0x48, 0x54, 0x79, 0x70, 0x65, 0x64, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc6, 0x04, 0x0a, 0x0a, 0x45, 0x54, + 0x48, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x03, 0x70, 0x75, 0x62, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, + 0x50, 0x75, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x03, 0x70, 0x75, + 0x62, 0x12, 0x3a, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, + 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x48, 0x0a, + 0x08, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2b, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, + 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x07, + 0x73, 0x69, 0x67, 0x6e, 0x4d, 0x73, 0x67, 0x12, 0x65, 0x0a, 0x14, 0x61, 0x6e, 0x74, 0x69, 0x6b, + 0x6c, 0x65, 0x70, 0x74, 0x6f, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, + 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x41, 0x6e, 0x74, + 0x69, 0x4b, 0x6c, 0x65, 0x70, 0x74, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x13, 0x61, 0x6e, 0x74, 0x69, 0x6b, + 0x6c, 0x65, 0x70, 0x74, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x58, + 0x0a, 0x0e, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x73, 0x67, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, - 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x6f, 0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, - 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, - 0x00, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, - 0x55, 0x49, 0x4e, 0x54, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x4e, 0x54, 0x10, 0x03, 0x12, - 0x08, 0x0a, 0x04, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x04, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x44, 0x44, - 0x52, 0x45, 0x53, 0x53, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, - 0x10, 0x06, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x52, 0x52, 0x41, 0x59, 0x10, 0x07, 0x12, 0x0a, 0x0a, - 0x06, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x10, 0x08, 0x22, 0xc6, 0x01, 0x0a, 0x1c, 0x45, 0x54, - 0x48, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x0b, 0x72, 0x6f, - 0x6f, 0x74, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x3d, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, - 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x2e, 0x52, 0x6f, 0x6f, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x0a, - 0x72, 0x6f, 0x6f, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x32, - 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x0b, 0x0a, 0x07, - 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x4f, 0x4d, - 0x41, 0x49, 0x4e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, - 0x10, 0x02, 0x22, 0x33, 0x0a, 0x1b, 0x45, 0x54, 0x48, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc6, 0x04, 0x0a, 0x0a, 0x45, 0x54, 0x48, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x03, 0x70, 0x75, 0x62, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x50, 0x75, - 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x03, 0x70, 0x75, 0x62, 0x12, - 0x3a, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, - 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x48, 0x0a, 0x08, 0x73, - 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, - 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, - 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x07, 0x73, 0x69, - 0x67, 0x6e, 0x4d, 0x73, 0x67, 0x12, 0x65, 0x0a, 0x14, 0x61, 0x6e, 0x74, 0x69, 0x6b, 0x6c, 0x65, - 0x70, 0x74, 0x6f, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x41, 0x6e, 0x74, 0x69, 0x4b, - 0x6c, 0x65, 0x70, 0x74, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x13, 0x61, 0x6e, 0x74, 0x69, 0x6b, 0x6c, 0x65, - 0x70, 0x74, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x74, 0x75, 0x72, 0x65, 0x12, 0x58, 0x0a, 0x0e, - 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x53, - 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x5b, 0x0a, 0x0f, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, - 0x6d, 0x73, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x31, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, - 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x50, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x69, 0x70, 0x31, - 0x35, 0x35, 0x39, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x68, 0x69, 0x66, - 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, - 0x2e, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x45, 0x49, 0x50, 0x31, 0x35, 0x35, 0x39, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x45, 0x69, - 0x70, 0x31, 0x35, 0x35, 0x39, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0xe1, 0x02, 0x0a, 0x0b, 0x45, 0x54, 0x48, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x35, 0x0a, 0x03, 0x70, 0x75, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, - 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, - 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x50, 0x75, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x48, 0x00, 0x52, 0x03, 0x70, 0x75, 0x62, 0x12, 0x3b, 0x0a, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x69, 0x67, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x5b, 0x0a, 0x0f, 0x74, 0x79, 0x70, 0x65, + 0x64, 0x5f, 0x6d, 0x73, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, + 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x54, 0x79, 0x70, 0x65, + 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x73, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x50, 0x0a, 0x0c, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x69, + 0x70, 0x31, 0x35, 0x35, 0x39, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x73, 0x68, + 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, + 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x45, 0x49, 0x50, 0x31, 0x35, 0x35, + 0x39, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x69, 0x67, 0x6e, + 0x45, 0x69, 0x70, 0x31, 0x35, 0x35, 0x39, 0x42, 0x09, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x22, 0xe1, 0x02, 0x0a, 0x0b, 0x45, 0x54, 0x48, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x35, 0x0a, 0x03, 0x70, 0x75, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, + 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x50, 0x75, 0x62, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x48, 0x00, 0x52, 0x03, 0x70, 0x75, 0x62, 0x12, 0x3b, 0x0a, 0x04, 0x73, 0x69, 0x67, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, + 0x54, 0x48, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, + 0x52, 0x04, 0x73, 0x69, 0x67, 0x6e, 0x12, 0x74, 0x0a, 0x1c, 0x61, 0x6e, 0x74, 0x69, 0x6b, 0x6c, + 0x65, 0x70, 0x74, 0x6f, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, + 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, + 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, + 0x78, 0x30, 0x32, 0x2e, 0x41, 0x6e, 0x74, 0x69, 0x4b, 0x6c, 0x65, 0x70, 0x74, 0x6f, 0x53, 0x69, + 0x67, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, + 0x52, 0x1a, 0x61, 0x6e, 0x74, 0x69, 0x6b, 0x6c, 0x65, 0x70, 0x74, 0x6f, 0x53, 0x69, 0x67, 0x6e, + 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x5c, 0x0a, 0x0f, + 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x73, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, - 0x53, 0x69, 0x67, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x04, - 0x73, 0x69, 0x67, 0x6e, 0x12, 0x74, 0x0a, 0x1c, 0x61, 0x6e, 0x74, 0x69, 0x6b, 0x6c, 0x65, 0x70, - 0x74, 0x6f, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, - 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x73, 0x68, 0x69, - 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, - 0x32, 0x2e, 0x41, 0x6e, 0x74, 0x69, 0x4b, 0x6c, 0x65, 0x70, 0x74, 0x6f, 0x53, 0x69, 0x67, 0x6e, - 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x1a, - 0x61, 0x6e, 0x74, 0x69, 0x6b, 0x6c, 0x65, 0x70, 0x74, 0x6f, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, - 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x5c, 0x0a, 0x0f, 0x74, 0x79, - 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x73, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x73, 0x68, 0x69, 0x66, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, - 0x6f, 0x2e, 0x62, 0x69, 0x74, 0x62, 0x6f, 0x78, 0x30, 0x32, 0x2e, 0x45, 0x54, 0x48, 0x54, 0x79, - 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x79, 0x70, 0x65, 0x64, - 0x4d, 0x73, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x32, 0x0a, 0x07, 0x45, 0x54, 0x48, 0x43, 0x6f, 0x69, 0x6e, 0x12, - 0x07, 0x0a, 0x03, 0x45, 0x54, 0x48, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x6f, 0x70, 0x73, - 0x74, 0x65, 0x6e, 0x45, 0x54, 0x48, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x69, 0x6e, 0x6b, - 0x65, 0x62, 0x79, 0x45, 0x54, 0x48, 0x10, 0x02, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x79, 0x70, + 0x65, 0x64, 0x4d, 0x73, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x32, 0x0a, 0x07, 0x45, 0x54, 0x48, 0x43, 0x6f, 0x69, + 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x45, 0x54, 0x48, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x6f, + 0x70, 0x73, 0x74, 0x65, 0x6e, 0x45, 0x54, 0x48, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x69, + 0x6e, 0x6b, 0x65, 0x62, 0x79, 0x45, 0x54, 0x48, 0x10, 0x02, 0x2a, 0x64, 0x0a, 0x0e, 0x45, 0x54, + 0x48, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x43, 0x61, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x16, + 0x45, 0x54, 0x48, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x43, 0x41, 0x53, 0x45, + 0x5f, 0x4d, 0x49, 0x58, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x54, 0x48, 0x5f, + 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x55, 0x50, 0x50, + 0x45, 0x52, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x54, 0x48, 0x5f, 0x41, 0x44, 0x44, 0x52, + 0x45, 0x53, 0x53, 0x5f, 0x43, 0x41, 0x53, 0x45, 0x5f, 0x4c, 0x4f, 0x57, 0x45, 0x52, 0x10, 0x02, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1571,62 +1652,65 @@ func file_eth_proto_rawDescGZIP() []byte { return file_eth_proto_rawDescData } -var file_eth_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_eth_proto_enumTypes = make([]protoimpl.EnumInfo, 5) var file_eth_proto_msgTypes = make([]protoimpl.MessageInfo, 13) -var file_eth_proto_goTypes = []interface{}{ +var file_eth_proto_goTypes = []any{ (ETHCoin)(0), // 0: shiftcrypto.bitbox02.ETHCoin - (ETHPubRequest_OutputType)(0), // 1: shiftcrypto.bitbox02.ETHPubRequest.OutputType - (ETHSignTypedMessageRequest_DataType)(0), // 2: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.DataType - (ETHTypedMessageValueResponse_RootObject)(0), // 3: shiftcrypto.bitbox02.ETHTypedMessageValueResponse.RootObject - (*ETHPubRequest)(nil), // 4: shiftcrypto.bitbox02.ETHPubRequest - (*ETHSignRequest)(nil), // 5: shiftcrypto.bitbox02.ETHSignRequest - (*ETHSignEIP1559Request)(nil), // 6: shiftcrypto.bitbox02.ETHSignEIP1559Request - (*ETHSignMessageRequest)(nil), // 7: shiftcrypto.bitbox02.ETHSignMessageRequest - (*ETHSignResponse)(nil), // 8: shiftcrypto.bitbox02.ETHSignResponse - (*ETHSignTypedMessageRequest)(nil), // 9: shiftcrypto.bitbox02.ETHSignTypedMessageRequest - (*ETHTypedMessageValueResponse)(nil), // 10: shiftcrypto.bitbox02.ETHTypedMessageValueResponse - (*ETHTypedMessageValueRequest)(nil), // 11: shiftcrypto.bitbox02.ETHTypedMessageValueRequest - (*ETHRequest)(nil), // 12: shiftcrypto.bitbox02.ETHRequest - (*ETHResponse)(nil), // 13: shiftcrypto.bitbox02.ETHResponse - (*ETHSignTypedMessageRequest_MemberType)(nil), // 14: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.MemberType - (*ETHSignTypedMessageRequest_Member)(nil), // 15: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.Member - (*ETHSignTypedMessageRequest_StructType)(nil), // 16: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.StructType - (*AntiKleptoHostNonceCommitment)(nil), // 17: shiftcrypto.bitbox02.AntiKleptoHostNonceCommitment - (*AntiKleptoSignatureRequest)(nil), // 18: shiftcrypto.bitbox02.AntiKleptoSignatureRequest - (*PubResponse)(nil), // 19: shiftcrypto.bitbox02.PubResponse - (*AntiKleptoSignerCommitment)(nil), // 20: shiftcrypto.bitbox02.AntiKleptoSignerCommitment + (ETHAddressCase)(0), // 1: shiftcrypto.bitbox02.ETHAddressCase + (ETHPubRequest_OutputType)(0), // 2: shiftcrypto.bitbox02.ETHPubRequest.OutputType + (ETHSignTypedMessageRequest_DataType)(0), // 3: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.DataType + (ETHTypedMessageValueResponse_RootObject)(0), // 4: shiftcrypto.bitbox02.ETHTypedMessageValueResponse.RootObject + (*ETHPubRequest)(nil), // 5: shiftcrypto.bitbox02.ETHPubRequest + (*ETHSignRequest)(nil), // 6: shiftcrypto.bitbox02.ETHSignRequest + (*ETHSignEIP1559Request)(nil), // 7: shiftcrypto.bitbox02.ETHSignEIP1559Request + (*ETHSignMessageRequest)(nil), // 8: shiftcrypto.bitbox02.ETHSignMessageRequest + (*ETHSignResponse)(nil), // 9: shiftcrypto.bitbox02.ETHSignResponse + (*ETHSignTypedMessageRequest)(nil), // 10: shiftcrypto.bitbox02.ETHSignTypedMessageRequest + (*ETHTypedMessageValueResponse)(nil), // 11: shiftcrypto.bitbox02.ETHTypedMessageValueResponse + (*ETHTypedMessageValueRequest)(nil), // 12: shiftcrypto.bitbox02.ETHTypedMessageValueRequest + (*ETHRequest)(nil), // 13: shiftcrypto.bitbox02.ETHRequest + (*ETHResponse)(nil), // 14: shiftcrypto.bitbox02.ETHResponse + (*ETHSignTypedMessageRequest_MemberType)(nil), // 15: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.MemberType + (*ETHSignTypedMessageRequest_Member)(nil), // 16: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.Member + (*ETHSignTypedMessageRequest_StructType)(nil), // 17: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.StructType + (*AntiKleptoHostNonceCommitment)(nil), // 18: shiftcrypto.bitbox02.AntiKleptoHostNonceCommitment + (*AntiKleptoSignatureRequest)(nil), // 19: shiftcrypto.bitbox02.AntiKleptoSignatureRequest + (*PubResponse)(nil), // 20: shiftcrypto.bitbox02.PubResponse + (*AntiKleptoSignerCommitment)(nil), // 21: shiftcrypto.bitbox02.AntiKleptoSignerCommitment } var file_eth_proto_depIdxs = []int32{ 0, // 0: shiftcrypto.bitbox02.ETHPubRequest.coin:type_name -> shiftcrypto.bitbox02.ETHCoin - 1, // 1: shiftcrypto.bitbox02.ETHPubRequest.output_type:type_name -> shiftcrypto.bitbox02.ETHPubRequest.OutputType + 2, // 1: shiftcrypto.bitbox02.ETHPubRequest.output_type:type_name -> shiftcrypto.bitbox02.ETHPubRequest.OutputType 0, // 2: shiftcrypto.bitbox02.ETHSignRequest.coin:type_name -> shiftcrypto.bitbox02.ETHCoin - 17, // 3: shiftcrypto.bitbox02.ETHSignRequest.host_nonce_commitment:type_name -> shiftcrypto.bitbox02.AntiKleptoHostNonceCommitment - 17, // 4: shiftcrypto.bitbox02.ETHSignEIP1559Request.host_nonce_commitment:type_name -> shiftcrypto.bitbox02.AntiKleptoHostNonceCommitment - 0, // 5: shiftcrypto.bitbox02.ETHSignMessageRequest.coin:type_name -> shiftcrypto.bitbox02.ETHCoin - 17, // 6: shiftcrypto.bitbox02.ETHSignMessageRequest.host_nonce_commitment:type_name -> shiftcrypto.bitbox02.AntiKleptoHostNonceCommitment - 16, // 7: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.types:type_name -> shiftcrypto.bitbox02.ETHSignTypedMessageRequest.StructType - 17, // 8: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.host_nonce_commitment:type_name -> shiftcrypto.bitbox02.AntiKleptoHostNonceCommitment - 3, // 9: shiftcrypto.bitbox02.ETHTypedMessageValueResponse.root_object:type_name -> shiftcrypto.bitbox02.ETHTypedMessageValueResponse.RootObject - 4, // 10: shiftcrypto.bitbox02.ETHRequest.pub:type_name -> shiftcrypto.bitbox02.ETHPubRequest - 5, // 11: shiftcrypto.bitbox02.ETHRequest.sign:type_name -> shiftcrypto.bitbox02.ETHSignRequest - 7, // 12: shiftcrypto.bitbox02.ETHRequest.sign_msg:type_name -> shiftcrypto.bitbox02.ETHSignMessageRequest - 18, // 13: shiftcrypto.bitbox02.ETHRequest.antiklepto_signature:type_name -> shiftcrypto.bitbox02.AntiKleptoSignatureRequest - 9, // 14: shiftcrypto.bitbox02.ETHRequest.sign_typed_msg:type_name -> shiftcrypto.bitbox02.ETHSignTypedMessageRequest - 11, // 15: shiftcrypto.bitbox02.ETHRequest.typed_msg_value:type_name -> shiftcrypto.bitbox02.ETHTypedMessageValueRequest - 6, // 16: shiftcrypto.bitbox02.ETHRequest.sign_eip1559:type_name -> shiftcrypto.bitbox02.ETHSignEIP1559Request - 19, // 17: shiftcrypto.bitbox02.ETHResponse.pub:type_name -> shiftcrypto.bitbox02.PubResponse - 8, // 18: shiftcrypto.bitbox02.ETHResponse.sign:type_name -> shiftcrypto.bitbox02.ETHSignResponse - 20, // 19: shiftcrypto.bitbox02.ETHResponse.antiklepto_signer_commitment:type_name -> shiftcrypto.bitbox02.AntiKleptoSignerCommitment - 10, // 20: shiftcrypto.bitbox02.ETHResponse.typed_msg_value:type_name -> shiftcrypto.bitbox02.ETHTypedMessageValueResponse - 2, // 21: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.MemberType.type:type_name -> shiftcrypto.bitbox02.ETHSignTypedMessageRequest.DataType - 14, // 22: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.MemberType.array_type:type_name -> shiftcrypto.bitbox02.ETHSignTypedMessageRequest.MemberType - 14, // 23: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.Member.type:type_name -> shiftcrypto.bitbox02.ETHSignTypedMessageRequest.MemberType - 15, // 24: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.StructType.members:type_name -> shiftcrypto.bitbox02.ETHSignTypedMessageRequest.Member - 25, // [25:25] is the sub-list for method output_type - 25, // [25:25] is the sub-list for method input_type - 25, // [25:25] is the sub-list for extension type_name - 25, // [25:25] is the sub-list for extension extendee - 0, // [0:25] is the sub-list for field type_name + 18, // 3: shiftcrypto.bitbox02.ETHSignRequest.host_nonce_commitment:type_name -> shiftcrypto.bitbox02.AntiKleptoHostNonceCommitment + 1, // 4: shiftcrypto.bitbox02.ETHSignRequest.address_case:type_name -> shiftcrypto.bitbox02.ETHAddressCase + 18, // 5: shiftcrypto.bitbox02.ETHSignEIP1559Request.host_nonce_commitment:type_name -> shiftcrypto.bitbox02.AntiKleptoHostNonceCommitment + 1, // 6: shiftcrypto.bitbox02.ETHSignEIP1559Request.address_case:type_name -> shiftcrypto.bitbox02.ETHAddressCase + 0, // 7: shiftcrypto.bitbox02.ETHSignMessageRequest.coin:type_name -> shiftcrypto.bitbox02.ETHCoin + 18, // 8: shiftcrypto.bitbox02.ETHSignMessageRequest.host_nonce_commitment:type_name -> shiftcrypto.bitbox02.AntiKleptoHostNonceCommitment + 17, // 9: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.types:type_name -> shiftcrypto.bitbox02.ETHSignTypedMessageRequest.StructType + 18, // 10: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.host_nonce_commitment:type_name -> shiftcrypto.bitbox02.AntiKleptoHostNonceCommitment + 4, // 11: shiftcrypto.bitbox02.ETHTypedMessageValueResponse.root_object:type_name -> shiftcrypto.bitbox02.ETHTypedMessageValueResponse.RootObject + 5, // 12: shiftcrypto.bitbox02.ETHRequest.pub:type_name -> shiftcrypto.bitbox02.ETHPubRequest + 6, // 13: shiftcrypto.bitbox02.ETHRequest.sign:type_name -> shiftcrypto.bitbox02.ETHSignRequest + 8, // 14: shiftcrypto.bitbox02.ETHRequest.sign_msg:type_name -> shiftcrypto.bitbox02.ETHSignMessageRequest + 19, // 15: shiftcrypto.bitbox02.ETHRequest.antiklepto_signature:type_name -> shiftcrypto.bitbox02.AntiKleptoSignatureRequest + 10, // 16: shiftcrypto.bitbox02.ETHRequest.sign_typed_msg:type_name -> shiftcrypto.bitbox02.ETHSignTypedMessageRequest + 12, // 17: shiftcrypto.bitbox02.ETHRequest.typed_msg_value:type_name -> shiftcrypto.bitbox02.ETHTypedMessageValueRequest + 7, // 18: shiftcrypto.bitbox02.ETHRequest.sign_eip1559:type_name -> shiftcrypto.bitbox02.ETHSignEIP1559Request + 20, // 19: shiftcrypto.bitbox02.ETHResponse.pub:type_name -> shiftcrypto.bitbox02.PubResponse + 9, // 20: shiftcrypto.bitbox02.ETHResponse.sign:type_name -> shiftcrypto.bitbox02.ETHSignResponse + 21, // 21: shiftcrypto.bitbox02.ETHResponse.antiklepto_signer_commitment:type_name -> shiftcrypto.bitbox02.AntiKleptoSignerCommitment + 11, // 22: shiftcrypto.bitbox02.ETHResponse.typed_msg_value:type_name -> shiftcrypto.bitbox02.ETHTypedMessageValueResponse + 3, // 23: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.MemberType.type:type_name -> shiftcrypto.bitbox02.ETHSignTypedMessageRequest.DataType + 15, // 24: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.MemberType.array_type:type_name -> shiftcrypto.bitbox02.ETHSignTypedMessageRequest.MemberType + 15, // 25: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.Member.type:type_name -> shiftcrypto.bitbox02.ETHSignTypedMessageRequest.MemberType + 16, // 26: shiftcrypto.bitbox02.ETHSignTypedMessageRequest.StructType.members:type_name -> shiftcrypto.bitbox02.ETHSignTypedMessageRequest.Member + 27, // [27:27] is the sub-list for method output_type + 27, // [27:27] is the sub-list for method input_type + 27, // [27:27] is the sub-list for extension type_name + 27, // [27:27] is the sub-list for extension extendee + 0, // [0:27] is the sub-list for field type_name } func init() { file_eth_proto_init() } @@ -1637,7 +1721,7 @@ func file_eth_proto_init() { file_common_proto_init() file_antiklepto_proto_init() if !protoimpl.UnsafeEnabled { - file_eth_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_eth_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*ETHPubRequest); i { case 0: return &v.state @@ -1649,7 +1733,7 @@ func file_eth_proto_init() { return nil } } - file_eth_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_eth_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*ETHSignRequest); i { case 0: return &v.state @@ -1661,7 +1745,7 @@ func file_eth_proto_init() { return nil } } - file_eth_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_eth_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*ETHSignEIP1559Request); i { case 0: return &v.state @@ -1673,7 +1757,7 @@ func file_eth_proto_init() { return nil } } - file_eth_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_eth_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*ETHSignMessageRequest); i { case 0: return &v.state @@ -1685,7 +1769,7 @@ func file_eth_proto_init() { return nil } } - file_eth_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_eth_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*ETHSignResponse); i { case 0: return &v.state @@ -1697,7 +1781,7 @@ func file_eth_proto_init() { return nil } } - file_eth_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_eth_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*ETHSignTypedMessageRequest); i { case 0: return &v.state @@ -1709,7 +1793,7 @@ func file_eth_proto_init() { return nil } } - file_eth_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_eth_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*ETHTypedMessageValueResponse); i { case 0: return &v.state @@ -1721,7 +1805,7 @@ func file_eth_proto_init() { return nil } } - file_eth_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_eth_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*ETHTypedMessageValueRequest); i { case 0: return &v.state @@ -1733,7 +1817,7 @@ func file_eth_proto_init() { return nil } } - file_eth_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_eth_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*ETHRequest); i { case 0: return &v.state @@ -1745,7 +1829,7 @@ func file_eth_proto_init() { return nil } } - file_eth_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_eth_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*ETHResponse); i { case 0: return &v.state @@ -1757,7 +1841,7 @@ func file_eth_proto_init() { return nil } } - file_eth_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_eth_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*ETHSignTypedMessageRequest_MemberType); i { case 0: return &v.state @@ -1769,7 +1853,7 @@ func file_eth_proto_init() { return nil } } - file_eth_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_eth_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*ETHSignTypedMessageRequest_Member); i { case 0: return &v.state @@ -1781,7 +1865,7 @@ func file_eth_proto_init() { return nil } } - file_eth_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_eth_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*ETHSignTypedMessageRequest_StructType); i { case 0: return &v.state @@ -1794,7 +1878,7 @@ func file_eth_proto_init() { } } } - file_eth_proto_msgTypes[8].OneofWrappers = []interface{}{ + file_eth_proto_msgTypes[8].OneofWrappers = []any{ (*ETHRequest_Pub)(nil), (*ETHRequest_Sign)(nil), (*ETHRequest_SignMsg)(nil), @@ -1803,7 +1887,7 @@ func file_eth_proto_init() { (*ETHRequest_TypedMsgValue)(nil), (*ETHRequest_SignEip1559)(nil), } - file_eth_proto_msgTypes[9].OneofWrappers = []interface{}{ + file_eth_proto_msgTypes[9].OneofWrappers = []any{ (*ETHResponse_Pub)(nil), (*ETHResponse_Sign)(nil), (*ETHResponse_AntikleptoSignerCommitment)(nil), @@ -1814,7 +1898,7 @@ func file_eth_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_eth_proto_rawDesc, - NumEnums: 4, + NumEnums: 5, NumMessages: 13, NumExtensions: 0, NumServices: 0, diff --git a/api/firmware/messages/eth.proto b/api/firmware/messages/eth.proto index c552e49..65c8f90 100644 --- a/api/firmware/messages/eth.proto +++ b/api/firmware/messages/eth.proto @@ -27,6 +27,12 @@ enum ETHCoin { RinkebyETH = 2; } +enum ETHAddressCase { + ETH_ADDRESS_CASE_MIXED = 0; + ETH_ADDRESS_CASE_UPPER = 1; + ETH_ADDRESS_CASE_LOWER = 2; +} + message ETHPubRequest { repeated uint32 keypath = 1; // Deprecated: use chain_id instead. @@ -56,6 +62,7 @@ message ETHSignRequest { AntiKleptoHostNonceCommitment host_nonce_commitment = 9; // If non-zero, `coin` is ignored and `chain_id` is used to identify the network. uint64 chain_id = 10; + ETHAddressCase address_case = 11; } // TX payload for an EIP-1559 (type 2) transaction: https://eips.ethereum.org/EIPS/eip-1559 @@ -70,6 +77,7 @@ message ETHSignEIP1559Request { bytes value = 8; // smallest big endian serialization, max. 32 bytes bytes data = 9; AntiKleptoHostNonceCommitment host_nonce_commitment = 10; + ETHAddressCase address_case = 11; } message ETHSignMessageRequest { diff --git a/api/firmware/messages/hww.pb.go b/api/firmware/messages/hww.pb.go index 8490fe0..607ecaf 100644 --- a/api/firmware/messages/hww.pb.go +++ b/api/firmware/messages/hww.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.2 +// protoc v5.27.1 // source: hww.proto package messages @@ -1050,7 +1050,7 @@ func file_hww_proto_rawDescGZIP() []byte { } var file_hww_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_hww_proto_goTypes = []interface{}{ +var file_hww_proto_goTypes = []any{ (*Error)(nil), // 0: shiftcrypto.bitbox02.Error (*Success)(nil), // 1: shiftcrypto.bitbox02.Success (*Request)(nil), // 2: shiftcrypto.bitbox02.Request @@ -1160,7 +1160,7 @@ func file_hww_proto_init() { file_system_proto_init() file_perform_attestation_proto_init() if !protoimpl.UnsafeEnabled { - file_hww_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_hww_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*Error); i { case 0: return &v.state @@ -1172,7 +1172,7 @@ func file_hww_proto_init() { return nil } } - file_hww_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_hww_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*Success); i { case 0: return &v.state @@ -1184,7 +1184,7 @@ func file_hww_proto_init() { return nil } } - file_hww_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_hww_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*Request); i { case 0: return &v.state @@ -1196,7 +1196,7 @@ func file_hww_proto_init() { return nil } } - file_hww_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_hww_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*Response); i { case 0: return &v.state @@ -1209,7 +1209,7 @@ func file_hww_proto_init() { } } } - file_hww_proto_msgTypes[2].OneofWrappers = []interface{}{ + file_hww_proto_msgTypes[2].OneofWrappers = []any{ (*Request_DeviceName)(nil), (*Request_DeviceLanguage)(nil), (*Request_DeviceInfo)(nil), @@ -1237,7 +1237,7 @@ func file_hww_proto_init() { (*Request_Cardano)(nil), (*Request_Bip85)(nil), } - file_hww_proto_msgTypes[3].OneofWrappers = []interface{}{ + file_hww_proto_msgTypes[3].OneofWrappers = []any{ (*Response_Success)(nil), (*Response_Error)(nil), (*Response_DeviceInfo)(nil), diff --git a/api/firmware/messages/keystore.pb.go b/api/firmware/messages/keystore.pb.go index c9923c7..0125a9e 100644 --- a/api/firmware/messages/keystore.pb.go +++ b/api/firmware/messages/keystore.pb.go @@ -3,8 +3,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.2 +// protoc v5.27.1 // source: keystore.proto package messages @@ -374,7 +374,7 @@ func file_keystore_proto_rawDescGZIP() []byte { } var file_keystore_proto_msgTypes = make([]protoimpl.MessageInfo, 5) -var file_keystore_proto_goTypes = []interface{}{ +var file_keystore_proto_goTypes = []any{ (*ElectrumEncryptionKeyRequest)(nil), // 0: shiftcrypto.bitbox02.ElectrumEncryptionKeyRequest (*ElectrumEncryptionKeyResponse)(nil), // 1: shiftcrypto.bitbox02.ElectrumEncryptionKeyResponse (*BIP85Request)(nil), // 2: shiftcrypto.bitbox02.BIP85Request @@ -399,7 +399,7 @@ func file_keystore_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_keystore_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_keystore_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*ElectrumEncryptionKeyRequest); i { case 0: return &v.state @@ -411,7 +411,7 @@ func file_keystore_proto_init() { return nil } } - file_keystore_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_keystore_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*ElectrumEncryptionKeyResponse); i { case 0: return &v.state @@ -423,7 +423,7 @@ func file_keystore_proto_init() { return nil } } - file_keystore_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_keystore_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*BIP85Request); i { case 0: return &v.state @@ -435,7 +435,7 @@ func file_keystore_proto_init() { return nil } } - file_keystore_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_keystore_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*BIP85Response); i { case 0: return &v.state @@ -447,7 +447,7 @@ func file_keystore_proto_init() { return nil } } - file_keystore_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_keystore_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*BIP85Request_AppLn); i { case 0: return &v.state @@ -460,11 +460,11 @@ func file_keystore_proto_init() { } } } - file_keystore_proto_msgTypes[2].OneofWrappers = []interface{}{ + file_keystore_proto_msgTypes[2].OneofWrappers = []any{ (*BIP85Request_Bip39)(nil), (*BIP85Request_Ln)(nil), } - file_keystore_proto_msgTypes[3].OneofWrappers = []interface{}{ + file_keystore_proto_msgTypes[3].OneofWrappers = []any{ (*BIP85Response_Bip39)(nil), (*BIP85Response_Ln)(nil), } diff --git a/api/firmware/messages/mnemonic.pb.go b/api/firmware/messages/mnemonic.pb.go index d31aa5d..b6b9653 100644 --- a/api/firmware/messages/mnemonic.pb.go +++ b/api/firmware/messages/mnemonic.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.2 +// protoc v5.27.1 // source: mnemonic.proto package messages @@ -207,7 +207,7 @@ func file_mnemonic_proto_rawDescGZIP() []byte { } var file_mnemonic_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_mnemonic_proto_goTypes = []interface{}{ +var file_mnemonic_proto_goTypes = []any{ (*ShowMnemonicRequest)(nil), // 0: shiftcrypto.bitbox02.ShowMnemonicRequest (*RestoreFromMnemonicRequest)(nil), // 1: shiftcrypto.bitbox02.RestoreFromMnemonicRequest (*SetMnemonicPassphraseEnabledRequest)(nil), // 2: shiftcrypto.bitbox02.SetMnemonicPassphraseEnabledRequest @@ -226,7 +226,7 @@ func file_mnemonic_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_mnemonic_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_mnemonic_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*ShowMnemonicRequest); i { case 0: return &v.state @@ -238,7 +238,7 @@ func file_mnemonic_proto_init() { return nil } } - file_mnemonic_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_mnemonic_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*RestoreFromMnemonicRequest); i { case 0: return &v.state @@ -250,7 +250,7 @@ func file_mnemonic_proto_init() { return nil } } - file_mnemonic_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_mnemonic_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*SetMnemonicPassphraseEnabledRequest); i { case 0: return &v.state diff --git a/api/firmware/messages/perform_attestation.pb.go b/api/firmware/messages/perform_attestation.pb.go index c152d0a..d8db698 100644 --- a/api/firmware/messages/perform_attestation.pb.go +++ b/api/firmware/messages/perform_attestation.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.2 +// protoc v5.27.1 // source: perform_attestation.proto package messages @@ -190,7 +190,7 @@ func file_perform_attestation_proto_rawDescGZIP() []byte { } var file_perform_attestation_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_perform_attestation_proto_goTypes = []interface{}{ +var file_perform_attestation_proto_goTypes = []any{ (*PerformAttestationRequest)(nil), // 0: shiftcrypto.bitbox02.PerformAttestationRequest (*PerformAttestationResponse)(nil), // 1: shiftcrypto.bitbox02.PerformAttestationResponse } @@ -208,7 +208,7 @@ func file_perform_attestation_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_perform_attestation_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_perform_attestation_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*PerformAttestationRequest); i { case 0: return &v.state @@ -220,7 +220,7 @@ func file_perform_attestation_proto_init() { return nil } } - file_perform_attestation_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_perform_attestation_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*PerformAttestationResponse); i { case 0: return &v.state diff --git a/api/firmware/messages/system.pb.go b/api/firmware/messages/system.pb.go index 181386c..c83dbcb 100644 --- a/api/firmware/messages/system.pb.go +++ b/api/firmware/messages/system.pb.go @@ -14,8 +14,8 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.30.0 -// protoc v3.21.12 +// protoc-gen-go v1.34.2 +// protoc v5.27.1 // source: system.proto package messages @@ -157,7 +157,7 @@ func file_system_proto_rawDescGZIP() []byte { var file_system_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_system_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_system_proto_goTypes = []interface{}{ +var file_system_proto_goTypes = []any{ (RebootRequest_Purpose)(0), // 0: shiftcrypto.bitbox02.RebootRequest.Purpose (*RebootRequest)(nil), // 1: shiftcrypto.bitbox02.RebootRequest } @@ -176,7 +176,7 @@ func file_system_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_system_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_system_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*RebootRequest); i { case 0: return &v.state From b8e26727e98411e1ad022fa80b48011634601b11 Mon Sep 17 00:00:00 2001 From: asi345 Date: Thu, 29 Aug 2024 13:54:53 +0200 Subject: [PATCH 2/2] eth_test: add unit tests for ethsign and ethsignEIP1559 There was no unit tests for these functionalities before. For any occasion, we added them so that modifications to these functions will be tested. Signed-off-by: asi345 --- api/firmware/eth_test.go | 73 ++++++++++++++++++++++++++++++++++++++++ cmd/playground/main.go | 1 + 2 files changed, 74 insertions(+) diff --git a/api/firmware/eth_test.go b/api/firmware/eth_test.go index 3be03cd..1706152 100644 --- a/api/firmware/eth_test.go +++ b/api/firmware/eth_test.go @@ -15,6 +15,7 @@ package firmware import ( + "math/big" "testing" "github.com/BitBoxSwiss/bitbox02-api-go/api/firmware/messages" @@ -378,3 +379,75 @@ func TestSimulatorETHSignTypedMessage(t *testing.T) { require.Len(t, sig, 65) }) } + +func TestSimulatorETHSign(t *testing.T) { + testInitializedSimulators(t, func(t *testing.T, device *Device) { + t.Helper() + chainID := uint64(1) + keypath := []uint32{ + 44 + hardenedKeyStart, + 60 + hardenedKeyStart, + 0 + hardenedKeyStart, + 0, + 10, + } + nonce := uint64(8156) + gasPrice := new(big.Int).SetUint64(6000000000) + gasLimit := uint64(21000) + recipient := [20]byte{0x04, 0xf2, 0x64, 0xcf, 0x34, 0x44, 0x03, 0x13, 0xb4, 0xa0, + 0x19, 0x2a, 0x35, 0x28, 0x14, 0xfb, 0xe9, 0x27, 0xb8, 0x85} + value := new(big.Int).SetUint64(530564000000000000) + + sig, err := device.ETHSign( + chainID, + keypath, + nonce, + gasPrice, + gasLimit, + recipient, + value, + nil, + messages.ETHAddressCase_ETH_ADDRESS_CASE_MIXED, + ) + require.NoError(t, err) + + require.Len(t, sig, 65, "The signature should have exactly 65 bytes") + }) +} + +func TestSimulatorETHSignEIP1559(t *testing.T) { + testInitializedSimulators(t, func(t *testing.T, device *Device) { + t.Helper() + chainID := uint64(1) + keypath := []uint32{ + 44 + hardenedKeyStart, + 60 + hardenedKeyStart, + 0 + hardenedKeyStart, + 0, + 10, + } + nonce := uint64(8156) + maxPriorityFeePerGas := new(big.Int) + maxFeePerGas := new(big.Int).SetUint64(6000000000) + gasLimit := uint64(21000) + recipient := [20]byte{0x04, 0xf2, 0x64, 0xcf, 0x34, 0x44, 0x03, 0x13, 0xb4, 0xa0, + 0x19, 0x2a, 0x35, 0x28, 0x14, 0xfb, 0xe9, 0x27, 0xb8, 0x85} + value := new(big.Int).SetUint64(530564000000000000) + + sig, err := device.ETHSignEIP1559( + chainID, + keypath, + nonce, + maxPriorityFeePerGas, + maxFeePerGas, + gasLimit, + recipient, + value, + nil, + messages.ETHAddressCase_ETH_ADDRESS_CASE_MIXED, + ) + require.NoError(t, err) + + require.Len(t, sig, 65, "The signature should have exactly 65 bytes") + }) +} diff --git a/cmd/playground/main.go b/cmd/playground/main.go index e00334c..d2823f8 100644 --- a/cmd/playground/main.go +++ b/cmd/playground/main.go @@ -221,6 +221,7 @@ func main() { [20]byte{0xd6, 0x10, 0x54, 0xf4, 0x45, 0x6d, 0x05, 0x55, 0xdc, 0x2d, 0xd8, 0x2b, 0x77, 0xf7, 0xad, 0x60, 0x74, 0x83, 0x61, 0x49}, new(big.Int).SetBytes([]byte("\x5a\xf3\x10\x7a\x40\x00")), nil, + messages.ETHAddressCase_ETH_ADDRESS_CASE_MIXED, ) errpanic(err) fmt.Println(sig)