support passing kdf and node config from receiver when local pairing (#3179)
This commit is contained in:
parent
b9de89ca38
commit
e64091c779
|
@ -2435,7 +2435,6 @@ type SyncRawMessage struct {
|
||||||
// we need these to be able to login
|
// we need these to be able to login
|
||||||
SubAccountsJsonBytes []byte `protobuf:"bytes,2,opt,name=subAccountsJsonBytes,proto3" json:"subAccountsJsonBytes,omitempty"`
|
SubAccountsJsonBytes []byte `protobuf:"bytes,2,opt,name=subAccountsJsonBytes,proto3" json:"subAccountsJsonBytes,omitempty"`
|
||||||
SettingsJsonBytes []byte `protobuf:"bytes,3,opt,name=settingsJsonBytes,proto3" json:"settingsJsonBytes,omitempty"`
|
SettingsJsonBytes []byte `protobuf:"bytes,3,opt,name=settingsJsonBytes,proto3" json:"settingsJsonBytes,omitempty"`
|
||||||
NodeConfigJsonBytes []byte `protobuf:"bytes,4,opt,name=nodeConfigJsonBytes,proto3" json:"nodeConfigJsonBytes,omitempty"`
|
|
||||||
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
||||||
XXX_unrecognized []byte `json:"-"`
|
XXX_unrecognized []byte `json:"-"`
|
||||||
XXX_sizecache int32 `json:"-"`
|
XXX_sizecache int32 `json:"-"`
|
||||||
|
@ -2487,13 +2486,6 @@ func (m *SyncRawMessage) GetSettingsJsonBytes() []byte {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *SyncRawMessage) GetNodeConfigJsonBytes() []byte {
|
|
||||||
if m != nil {
|
|
||||||
return m.NodeConfigJsonBytes
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
proto.RegisterEnum("protobuf.SyncTrustedUser_TrustStatus", SyncTrustedUser_TrustStatus_name, SyncTrustedUser_TrustStatus_value)
|
proto.RegisterEnum("protobuf.SyncTrustedUser_TrustStatus", SyncTrustedUser_TrustStatus_name, SyncTrustedUser_TrustStatus_value)
|
||||||
proto.RegisterEnum("protobuf.SyncVerificationRequest_VerificationStatus", SyncVerificationRequest_VerificationStatus_name, SyncVerificationRequest_VerificationStatus_value)
|
proto.RegisterEnum("protobuf.SyncVerificationRequest_VerificationStatus", SyncVerificationRequest_VerificationStatus_name, SyncVerificationRequest_VerificationStatus_value)
|
||||||
|
@ -2539,154 +2531,153 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptor_d61ab7221f0b5518 = []byte{
|
var fileDescriptor_d61ab7221f0b5518 = []byte{
|
||||||
// 2378 bytes of a gzipped FileDescriptorProto
|
// 2361 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x19, 0x4d, 0x73, 0x1b, 0x49,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x19, 0x4d, 0x73, 0x1b, 0x49,
|
||||||
0x75, 0x47, 0x52, 0x2c, 0xe9, 0x49, 0x96, 0x95, 0xb6, 0x77, 0xa3, 0xd8, 0xde, 0x8a, 0x33, 0xcb,
|
0x75, 0x47, 0x52, 0x2c, 0xe9, 0x49, 0x96, 0x95, 0x8e, 0x77, 0xa3, 0xd8, 0x4e, 0xc5, 0x99, 0x90,
|
||||||
0xd6, 0x86, 0xaa, 0xc5, 0xbb, 0x95, 0x00, 0x0b, 0x9b, 0x4d, 0xed, 0x2a, 0xb2, 0xd9, 0x38, 0x1f,
|
0xda, 0x50, 0x15, 0xbc, 0x54, 0x02, 0x2c, 0x6c, 0x36, 0xb5, 0xab, 0xc8, 0x66, 0xe3, 0x7c, 0x38,
|
||||||
0x8e, 0xab, 0x6d, 0x27, 0x40, 0x51, 0x35, 0xd5, 0x9e, 0x69, 0x5b, 0x8d, 0x47, 0x33, 0xc3, 0x74,
|
0xae, 0xb6, 0x9d, 0x00, 0x45, 0xd5, 0x54, 0x7b, 0xa6, 0x63, 0x35, 0x1e, 0xcd, 0x0c, 0xd3, 0x2d,
|
||||||
0xcb, 0x41, 0xdc, 0xb8, 0xf0, 0x03, 0xb8, 0x70, 0xdd, 0x3b, 0x37, 0xaa, 0x96, 0x13, 0x3f, 0x80,
|
0x87, 0xe1, 0xc6, 0x85, 0x1f, 0xc0, 0x85, 0xeb, 0x9e, 0xe1, 0x46, 0xd5, 0x72, 0xe2, 0x07, 0x70,
|
||||||
0x1b, 0x07, 0x2e, 0x54, 0xc1, 0x2f, 0xe0, 0x57, 0x50, 0xfd, 0xba, 0x47, 0x33, 0x23, 0x4b, 0xc6,
|
0xe3, 0xc0, 0x85, 0x2a, 0xf8, 0x05, 0xfc, 0x0a, 0xaa, 0x5f, 0xf7, 0x48, 0x33, 0xb2, 0x64, 0x9c,
|
||||||
0x29, 0x4e, 0x9c, 0x3c, 0xef, 0xf5, 0x7b, 0xaf, 0x5f, 0xbf, 0xef, 0x27, 0xc3, 0x72, 0xc2, 0x44,
|
0xe2, 0xc4, 0xc9, 0xfd, 0xde, 0xbc, 0xf7, 0xfa, 0xf5, 0xfb, 0x7e, 0x32, 0x2c, 0x27, 0x4c, 0xa4,
|
||||||
0x2a, 0xa2, 0xb3, 0xed, 0x24, 0x8d, 0x55, 0x4c, 0x1a, 0xf8, 0xe7, 0x64, 0x7c, 0xba, 0xbe, 0x2a,
|
0x22, 0x3a, 0xd9, 0x4a, 0xd2, 0x58, 0xc5, 0xa4, 0x81, 0x7f, 0x8e, 0xc7, 0x6f, 0xd7, 0xae, 0xc9,
|
||||||
0x27, 0x91, 0xef, 0x49, 0xae, 0x94, 0x88, 0xce, 0xa4, 0x39, 0x5e, 0x77, 0x59, 0x92, 0x84, 0xc2,
|
0x2c, 0xf2, 0x3d, 0xc9, 0x95, 0x12, 0xd1, 0x89, 0x34, 0x9f, 0xd7, 0x5c, 0x96, 0x24, 0xa1, 0xf0,
|
||||||
0x67, 0x4a, 0xc4, 0x91, 0x37, 0xe2, 0x8a, 0x05, 0x4c, 0x31, 0x6f, 0xc4, 0xa5, 0x64, 0x67, 0xdc,
|
0x99, 0x12, 0x71, 0xe4, 0x8d, 0xb8, 0x62, 0x01, 0x53, 0xcc, 0x1b, 0x71, 0x29, 0xd9, 0x09, 0x37,
|
||||||
0xd0, 0xb8, 0x0c, 0x36, 0x7e, 0xc2, 0x95, 0x3f, 0x14, 0xd1, 0xd9, 0x63, 0xe6, 0x9f, 0xf3, 0xe0,
|
0x34, 0x2e, 0x83, 0xf5, 0x1f, 0x73, 0xe5, 0x0f, 0x45, 0x74, 0xf2, 0x84, 0xf9, 0xa7, 0x3c, 0x38,
|
||||||
0x38, 0xd9, 0x61, 0x8a, 0xed, 0x70, 0xc5, 0x44, 0x28, 0xc9, 0x1d, 0x68, 0x21, 0x53, 0x34, 0x1e,
|
0x4a, 0xb6, 0x99, 0x62, 0xdb, 0x5c, 0x31, 0x11, 0x4a, 0x72, 0x0b, 0x5a, 0xc8, 0x14, 0x8d, 0x47,
|
||||||
0x9d, 0xf0, 0xb4, 0xe7, 0x6c, 0x39, 0xf7, 0x96, 0x29, 0x68, 0xd4, 0x3e, 0x62, 0xc8, 0x5d, 0x68,
|
0xc7, 0x3c, 0xed, 0x39, 0x9b, 0xce, 0xbd, 0x65, 0x0a, 0x1a, 0xb5, 0x87, 0x18, 0x72, 0x1b, 0xda,
|
||||||
0xab, 0x58, 0xb1, 0x30, 0xa3, 0xa8, 0x20, 0x45, 0x0b, 0x71, 0x86, 0xc4, 0xfd, 0x47, 0x0d, 0x96,
|
0x2a, 0x56, 0x2c, 0xcc, 0x29, 0x2a, 0x48, 0xd1, 0x42, 0x9c, 0x21, 0x71, 0xff, 0x51, 0x83, 0x25,
|
||||||
0xb4, 0xec, 0x71, 0x42, 0xd6, 0xe0, 0x86, 0x1f, 0xc6, 0xfe, 0x39, 0x0a, 0xaa, 0x51, 0x03, 0x90,
|
0x2d, 0x7b, 0x9c, 0x90, 0x55, 0xb8, 0xe2, 0x87, 0xb1, 0x7f, 0x8a, 0x82, 0x6a, 0xd4, 0x00, 0xa4,
|
||||||
0x0e, 0x54, 0x44, 0x80, 0x9c, 0x4d, 0x5a, 0x11, 0x01, 0xf9, 0x12, 0x1a, 0x7e, 0x1c, 0x29, 0xe6,
|
0x03, 0x15, 0x11, 0x20, 0x67, 0x93, 0x56, 0x44, 0x40, 0xbe, 0x80, 0x86, 0x1f, 0x47, 0x8a, 0xf9,
|
||||||
0x2b, 0xd9, 0xab, 0x6e, 0x55, 0xef, 0xb5, 0xee, 0x7f, 0xb0, 0x9d, 0xbd, 0x74, 0xfb, 0x70, 0x12,
|
0x4a, 0xf6, 0xaa, 0x9b, 0xd5, 0x7b, 0xad, 0x07, 0x77, 0xb6, 0xf2, 0x97, 0x6e, 0x1d, 0x64, 0x91,
|
||||||
0xf9, 0x7b, 0x91, 0x54, 0x2c, 0x0c, 0xf1, 0x61, 0x03, 0x43, 0xf9, 0xea, 0x3e, 0x9d, 0x32, 0x91,
|
0xbf, 0x1b, 0x49, 0xc5, 0xc2, 0x10, 0x1f, 0x36, 0x30, 0x94, 0xaf, 0x1f, 0xd0, 0x09, 0x13, 0xf9,
|
||||||
0x1f, 0x43, 0xcb, 0x8f, 0x47, 0xa3, 0x71, 0x24, 0x94, 0xe0, 0xb2, 0x57, 0x43, 0x19, 0xb7, 0xca,
|
0x11, 0xb4, 0xfc, 0x78, 0x34, 0x1a, 0x47, 0x42, 0x09, 0x2e, 0x7b, 0x35, 0x94, 0x71, 0xbd, 0x2c,
|
||||||
0x32, 0x06, 0x96, 0x60, 0x42, 0x8b, 0xb4, 0xe4, 0x25, 0xac, 0x64, 0x62, 0xac, 0x0d, 0x7a, 0x37,
|
0x63, 0x60, 0x09, 0x32, 0x5a, 0xa4, 0x25, 0xaf, 0x60, 0x25, 0x17, 0x63, 0x6d, 0xd0, 0xbb, 0xb2,
|
||||||
0xb6, 0x9c, 0x7b, 0xad, 0xfb, 0x1f, 0xe6, 0xec, 0x57, 0x18, 0x8c, 0xce, 0x72, 0x93, 0x63, 0x20,
|
0xe9, 0xdc, 0x6b, 0x3d, 0xb8, 0x3b, 0x65, 0xbf, 0xc0, 0x60, 0x74, 0x96, 0x9b, 0x1c, 0x01, 0x29,
|
||||||
0x05, 0xf9, 0x99, 0xcc, 0xa5, 0xb7, 0x91, 0x39, 0x47, 0x00, 0x79, 0x00, 0xf5, 0x24, 0x8d, 0x4f,
|
0xc8, 0xcf, 0x65, 0x2e, 0xbd, 0x8f, 0xcc, 0x39, 0x02, 0xc8, 0x43, 0xa8, 0x27, 0x69, 0xfc, 0x56,
|
||||||
0x45, 0xc8, 0x7b, 0x75, 0x94, 0x75, 0x3b, 0x97, 0x95, 0xc9, 0x38, 0x30, 0x04, 0x34, 0xa3, 0x24,
|
0x84, 0xbc, 0x57, 0x47, 0x59, 0x37, 0xa6, 0xb2, 0x72, 0x19, 0xfb, 0x86, 0x80, 0xe6, 0x94, 0xe4,
|
||||||
0x2f, 0xa0, 0x63, 0x3f, 0x33, 0x3d, 0x1a, 0x6f, 0xa3, 0xc7, 0x0c, 0x33, 0xf9, 0x04, 0xea, 0x36,
|
0x25, 0x74, 0xec, 0x31, 0xd7, 0xa3, 0xf1, 0x3e, 0x7a, 0xcc, 0x30, 0x93, 0x4f, 0xa0, 0x6e, 0x23,
|
||||||
0xe2, 0x7a, 0x4d, 0x94, 0xf3, 0x6e, 0xd9, 0xc4, 0x87, 0xe6, 0x90, 0x66, 0x54, 0xda, 0xb8, 0x59,
|
0xae, 0xd7, 0x44, 0x39, 0x1f, 0x96, 0x4d, 0x7c, 0x60, 0x3e, 0xd2, 0x9c, 0x4a, 0x1b, 0x37, 0x0f,
|
||||||
0x88, 0x66, 0x0a, 0xc0, 0x5b, 0x19, 0x77, 0x86, 0xdb, 0xfd, 0x4b, 0x0d, 0xda, 0x2f, 0xc6, 0xa1,
|
0xd1, 0x5c, 0x01, 0x78, 0x2f, 0xe3, 0xce, 0x70, 0xbb, 0x7f, 0xa9, 0x41, 0xfb, 0xe5, 0x38, 0x54,
|
||||||
0x12, 0x7d, 0xdf, 0x8f, 0xc7, 0x91, 0x22, 0x04, 0x6a, 0x11, 0x1b, 0x71, 0x8c, 0xaf, 0x26, 0xc5,
|
0xa2, 0xef, 0xfb, 0xf1, 0x38, 0x52, 0x84, 0x40, 0x2d, 0x62, 0x23, 0x8e, 0xf1, 0xd5, 0xa4, 0x78,
|
||||||
0x6f, 0xb2, 0x09, 0x4d, 0x25, 0x46, 0x5c, 0x2a, 0x36, 0x4a, 0x30, 0xca, 0xaa, 0x34, 0x47, 0xe8,
|
0x26, 0x1b, 0xd0, 0x54, 0x62, 0xc4, 0xa5, 0x62, 0xa3, 0x04, 0xa3, 0xac, 0x4a, 0xa7, 0x08, 0xfd,
|
||||||
0x53, 0x11, 0xf0, 0x48, 0x09, 0x3f, 0x8e, 0x7a, 0x55, 0x64, 0xcb, 0x11, 0xe4, 0x2b, 0x00, 0x3f,
|
0x55, 0x04, 0x3c, 0x52, 0xc2, 0x8f, 0xa3, 0x5e, 0x15, 0xd9, 0xa6, 0x08, 0xf2, 0x25, 0x80, 0x1f,
|
||||||
0x0e, 0xe3, 0xd4, 0x1b, 0x32, 0x39, 0xb4, 0x81, 0x74, 0x37, 0x57, 0xb6, 0x78, 0xf7, 0xf6, 0x20,
|
0x87, 0x71, 0xea, 0x0d, 0x99, 0x1c, 0xda, 0x40, 0xba, 0x3d, 0x55, 0xb6, 0x78, 0xf7, 0xd6, 0x20,
|
||||||
0x0e, 0xe3, 0x71, 0xfa, 0x84, 0xc9, 0x21, 0x6d, 0x22, 0x93, 0xfe, 0x24, 0x3d, 0xa8, 0x23, 0xb0,
|
0x0e, 0xe3, 0x71, 0xfa, 0x94, 0xc9, 0x21, 0x6d, 0x22, 0x93, 0x3e, 0x92, 0x1e, 0xd4, 0x11, 0xd8,
|
||||||
0x17, 0x60, 0x20, 0x55, 0x69, 0x06, 0x92, 0x8f, 0x60, 0xe5, 0x9c, 0x4f, 0x7c, 0x96, 0x06, 0x9e,
|
0x0d, 0x30, 0x90, 0xaa, 0x34, 0x07, 0xc9, 0xc7, 0xb0, 0x72, 0xca, 0x33, 0x9f, 0xa5, 0x81, 0x67,
|
||||||
0x4d, 0x6b, 0x0c, 0x8b, 0x26, 0xed, 0x58, 0xf4, 0x81, 0xc1, 0x92, 0x5b, 0x50, 0x3f, 0xe7, 0x13,
|
0xd3, 0x1a, 0xc3, 0xa2, 0x49, 0x3b, 0x16, 0xbd, 0x6f, 0xb0, 0xe4, 0x3a, 0xd4, 0x4f, 0x79, 0xe6,
|
||||||
0x6f, 0x2c, 0x02, 0xf4, 0x75, 0x93, 0x2e, 0x9d, 0xf3, 0xc9, 0xb1, 0x08, 0xc8, 0x17, 0xb0, 0x24,
|
0x8d, 0x45, 0x80, 0xbe, 0x6e, 0xd2, 0xa5, 0x53, 0x9e, 0x1d, 0x89, 0x80, 0x7c, 0x0e, 0x4b, 0x62,
|
||||||
0x46, 0xec, 0x8c, 0x6b, 0x3f, 0x6a, 0xcd, 0xbe, 0xb3, 0x40, 0xb3, 0x3d, 0x7c, 0x8f, 0x9a, 0xec,
|
0xc4, 0x4e, 0xb8, 0xf6, 0xa3, 0xd6, 0xec, 0x5b, 0x0b, 0x34, 0xdb, 0xc5, 0xf7, 0xa8, 0x6c, 0x57,
|
||||||
0x69, 0x62, 0x6a, 0x79, 0xd6, 0x5d, 0x80, 0x5c, 0x65, 0x9d, 0x9a, 0x22, 0x0a, 0xf8, 0xaf, 0x7b,
|
0x13, 0x53, 0xcb, 0xb3, 0xe6, 0x02, 0x4c, 0x55, 0xd6, 0xa9, 0x29, 0xa2, 0x80, 0xff, 0xaa, 0xe7,
|
||||||
0xce, 0x56, 0xf5, 0x5e, 0x95, 0x1a, 0x60, 0xfd, 0x9f, 0x0e, 0x2c, 0x97, 0xb8, 0x8b, 0xca, 0x38,
|
0x6c, 0x56, 0xef, 0x55, 0xa9, 0x01, 0xd6, 0xfe, 0xe9, 0xc0, 0x72, 0x89, 0xbb, 0xa8, 0x8c, 0x53,
|
||||||
0x25, 0x65, 0x32, 0xd3, 0x57, 0x0a, 0xa6, 0xef, 0x41, 0x3d, 0x61, 0x93, 0x30, 0x66, 0x01, 0x9a,
|
0x52, 0x26, 0x37, 0x7d, 0xa5, 0x60, 0xfa, 0x1e, 0xd4, 0x13, 0x96, 0x85, 0x31, 0x0b, 0xd0, 0xb4,
|
||||||
0xb6, 0x4d, 0x33, 0x50, 0x5f, 0xf7, 0x46, 0x04, 0x4a, 0xdb, 0x54, 0x1b, 0xc5, 0x00, 0xe4, 0x3d,
|
0x6d, 0x9a, 0x83, 0xfa, 0xba, 0x77, 0x22, 0x50, 0xda, 0xa6, 0xda, 0x28, 0x06, 0x20, 0x1f, 0xc1,
|
||||||
0x58, 0x1a, 0x72, 0x71, 0x36, 0x54, 0xd6, 0x56, 0x16, 0x22, 0xeb, 0xd0, 0xd0, 0x81, 0x27, 0xc5,
|
0xd2, 0x90, 0x8b, 0x93, 0xa1, 0xb2, 0xb6, 0xb2, 0x10, 0x59, 0x83, 0x86, 0x0e, 0x3c, 0x29, 0x7e,
|
||||||
0x6f, 0x38, 0xda, 0xa8, 0x4a, 0xa7, 0x30, 0xf9, 0x00, 0x96, 0x53, 0xfc, 0xf2, 0x14, 0x4b, 0xcf,
|
0xcd, 0xd1, 0x46, 0x55, 0x3a, 0x81, 0xc9, 0x1d, 0x58, 0x4e, 0xf1, 0xe4, 0x29, 0x96, 0x9e, 0x70,
|
||||||
0xb8, 0x42, 0x1b, 0x55, 0x69, 0xdb, 0x20, 0x8f, 0x10, 0x97, 0x17, 0x9e, 0x46, 0xa1, 0xf0, 0xb8,
|
0x85, 0x36, 0xaa, 0xd2, 0xb6, 0x41, 0x1e, 0x22, 0x6e, 0x5a, 0x78, 0x1a, 0x85, 0xc2, 0xe3, 0xfe,
|
||||||
0x7f, 0x77, 0x60, 0xf5, 0x79, 0xec, 0xb3, 0xd0, 0x5a, 0xfa, 0xc0, 0x2a, 0xf7, 0x03, 0xa8, 0x9d,
|
0xdd, 0x81, 0x6b, 0x2f, 0x62, 0x9f, 0x85, 0xd6, 0xd2, 0xfb, 0x56, 0xb9, 0xef, 0x43, 0xed, 0x94,
|
||||||
0xf3, 0x89, 0x44, 0x53, 0x94, 0xfc, 0x3d, 0x87, 0x78, 0xfb, 0x19, 0x9f, 0x50, 0x24, 0x27, 0x9f,
|
0x67, 0x12, 0x4d, 0x51, 0xf2, 0xf7, 0x1c, 0xe2, 0xad, 0xe7, 0x3c, 0xa3, 0x48, 0x4e, 0x3e, 0x83,
|
||||||
0x43, 0x7b, 0xa4, 0xcd, 0xce, 0x8c, 0xd9, 0xd1, 0x12, 0xad, 0xfb, 0xef, 0xcd, 0x77, 0x0a, 0x2d,
|
0xf6, 0x48, 0x9b, 0x9d, 0x19, 0xb3, 0xa3, 0x25, 0x5a, 0x0f, 0x3e, 0x9a, 0xef, 0x14, 0x5a, 0xa2,
|
||||||
0xd1, 0xea, 0x17, 0x26, 0x4c, 0xca, 0x37, 0x71, 0x1a, 0xd8, 0x28, 0x9c, 0xc2, 0xeb, 0xdf, 0x83,
|
0xd5, 0x2f, 0x4c, 0x98, 0x94, 0xef, 0xe2, 0x34, 0xb0, 0x51, 0x38, 0x81, 0xd7, 0xbe, 0x03, 0xd5,
|
||||||
0xea, 0x33, 0x3e, 0x99, 0x1b, 0xdb, 0x04, 0x6a, 0xba, 0x18, 0xe3, 0x55, 0x6d, 0x8a, 0xdf, 0xee,
|
0xe7, 0x3c, 0x9b, 0x1b, 0xdb, 0x04, 0x6a, 0xba, 0x18, 0xe3, 0x55, 0x6d, 0x8a, 0x67, 0xf7, 0xb7,
|
||||||
0xef, 0x1c, 0xe8, 0x6a, 0x1d, 0x8b, 0x55, 0x72, 0x41, 0xe5, 0xfd, 0x08, 0x56, 0x44, 0x81, 0xca,
|
0x0e, 0x74, 0xb5, 0x8e, 0xc5, 0x2a, 0xb9, 0xa0, 0xf2, 0x7e, 0x0c, 0x2b, 0xa2, 0x40, 0xe5, 0x4d,
|
||||||
0x9b, 0x96, 0xe1, 0x4e, 0x11, 0xbd, 0x17, 0x60, 0x1f, 0xe0, 0x17, 0xc2, 0xe7, 0x9e, 0x9a, 0x24,
|
0xca, 0x70, 0xa7, 0x88, 0xde, 0x0d, 0xb0, 0x0f, 0xf0, 0x33, 0xe1, 0x73, 0x4f, 0x65, 0x09, 0xb7,
|
||||||
0xdc, 0x6a, 0x08, 0x06, 0x75, 0x34, 0x49, 0xf8, 0x54, 0xb9, 0x5a, 0xae, 0x9c, 0xfb, 0x6f, 0x07,
|
0x1a, 0x82, 0x41, 0x1d, 0x66, 0x09, 0x9f, 0x28, 0x57, 0x9b, 0x2a, 0xe7, 0xfe, 0xdb, 0x81, 0xeb,
|
||||||
0x6e, 0x2d, 0x28, 0xd7, 0xd7, 0xec, 0x04, 0x1f, 0xc0, 0xb2, 0xad, 0x39, 0x1e, 0x06, 0xad, 0xbd,
|
0x0b, 0xca, 0xf5, 0x25, 0x3b, 0xc1, 0x1d, 0x58, 0xb6, 0x35, 0xc7, 0xc3, 0xa0, 0xb5, 0x17, 0xb7,
|
||||||
0xb8, 0x6d, 0x91, 0x26, 0x22, 0x6f, 0x43, 0x83, 0x47, 0xd2, 0x2b, 0x5c, 0x5f, 0xe7, 0x91, 0xdc,
|
0x2d, 0xd2, 0x44, 0xe4, 0x0d, 0x68, 0xf0, 0x48, 0x7a, 0x85, 0xeb, 0xeb, 0x3c, 0x92, 0x7b, 0xda,
|
||||||
0xd7, 0xe6, 0xb9, 0x0b, 0xed, 0x90, 0x49, 0xe5, 0x8d, 0x93, 0x80, 0x29, 0x6e, 0x32, 0xb0, 0x46,
|
0x3c, 0xb7, 0xa1, 0x1d, 0x32, 0xa9, 0xbc, 0x71, 0x12, 0x30, 0xc5, 0x4d, 0x06, 0xd6, 0x68, 0x4b,
|
||||||
0x5b, 0x1a, 0x77, 0x6c, 0x50, 0xfa, 0x65, 0x72, 0x22, 0x15, 0x1f, 0x79, 0x8a, 0x9d, 0xe9, 0xc2,
|
0xe3, 0x8e, 0x0c, 0x4a, 0xbf, 0x4c, 0x66, 0x52, 0xf1, 0x91, 0xa7, 0xd8, 0x89, 0x2e, 0xcc, 0x55,
|
||||||
0x5c, 0xd5, 0x2f, 0x33, 0xa8, 0x23, 0x76, 0x26, 0xc9, 0x87, 0xd0, 0x09, 0xb5, 0xdb, 0xbd, 0x48,
|
0xfd, 0x32, 0x83, 0x3a, 0x64, 0x27, 0x92, 0xdc, 0x85, 0x4e, 0xa8, 0xdd, 0xee, 0x45, 0xc2, 0x3f,
|
||||||
0xf8, 0xe7, 0x78, 0x89, 0x49, 0xc2, 0x65, 0xc4, 0xee, 0x5b, 0xa4, 0xfb, 0xdb, 0x25, 0xb8, 0xbd,
|
0xc5, 0x4b, 0x4c, 0x12, 0x2e, 0x23, 0x76, 0xcf, 0x22, 0xdd, 0xdf, 0x2c, 0xc1, 0x8d, 0x85, 0xbd,
|
||||||
0xb0, 0x37, 0x91, 0x4f, 0x61, 0xad, 0xa8, 0x88, 0x87, 0xbc, 0xe1, 0xc4, 0xbe, 0x9e, 0x14, 0x14,
|
0x89, 0x7c, 0x17, 0x56, 0x8b, 0x8a, 0x78, 0xc8, 0x1b, 0x66, 0xf6, 0xf5, 0xa4, 0xa0, 0xd0, 0x0b,
|
||||||
0x7a, 0x6e, 0x4e, 0xfe, 0x8f, 0x4d, 0xa1, 0x7d, 0xcb, 0x82, 0x80, 0x07, 0xd8, 0x15, 0x1a, 0xd4,
|
0xf3, 0xe5, 0xff, 0xd8, 0x14, 0xda, 0xb7, 0x2c, 0x08, 0x78, 0x80, 0x5d, 0xa1, 0x41, 0x0d, 0xa0,
|
||||||
0x00, 0xba, 0x16, 0x9c, 0x68, 0x27, 0xf3, 0x00, 0x8b, 0x7e, 0x83, 0x66, 0xa0, 0xa6, 0x1f, 0x8d,
|
0x6b, 0xc1, 0xb1, 0x76, 0x32, 0x0f, 0xb0, 0xe8, 0x37, 0x68, 0x0e, 0x6a, 0xfa, 0xd1, 0x58, 0xeb,
|
||||||
0xb5, 0x4e, 0x2d, 0x43, 0x8f, 0x80, 0xa6, 0x4f, 0xf9, 0x28, 0xbe, 0xe0, 0x41, 0xaf, 0x6d, 0xe8,
|
0xd4, 0x32, 0xf4, 0x08, 0x68, 0xfa, 0x94, 0x8f, 0xe2, 0x33, 0x1e, 0xf4, 0xda, 0x86, 0xde, 0x82,
|
||||||
0x2d, 0x48, 0xb6, 0xa0, 0x3d, 0x64, 0xd2, 0x43, 0xb1, 0xde, 0x58, 0xf6, 0x96, 0xf1, 0x18, 0x86,
|
0x64, 0x13, 0xda, 0x43, 0x26, 0x3d, 0x14, 0xeb, 0x8d, 0x65, 0x6f, 0x19, 0x3f, 0xc3, 0x90, 0xc9,
|
||||||
0x4c, 0xf6, 0x35, 0xea, 0x58, 0x77, 0xa6, 0xd5, 0x0b, 0x9e, 0x8a, 0xd3, 0x6c, 0xf8, 0x91, 0x8a,
|
0xbe, 0x46, 0x1d, 0xe9, 0xce, 0x74, 0xed, 0x8c, 0xa7, 0xe2, 0x6d, 0x3e, 0xfc, 0x48, 0xc5, 0xd4,
|
||||||
0xa9, 0xb1, 0xec, 0x75, 0xb0, 0x32, 0x90, 0xe2, 0xd1, 0x21, 0x9e, 0xe0, 0x18, 0x93, 0x8e, 0xa5,
|
0x58, 0xf6, 0x3a, 0x58, 0x19, 0x48, 0xf1, 0xd3, 0x01, 0x7e, 0xc1, 0x31, 0x26, 0x1d, 0x4b, 0x95,
|
||||||
0xca, 0x28, 0x57, 0x90, 0xb2, 0x85, 0x38, 0x4b, 0xf2, 0x08, 0x36, 0x6c, 0x6f, 0xf7, 0x52, 0xfe,
|
0x53, 0xae, 0x20, 0x65, 0x0b, 0x71, 0x96, 0xe4, 0x31, 0xac, 0xdb, 0xde, 0xee, 0xa5, 0xfc, 0x97,
|
||||||
0xab, 0x31, 0x97, 0xca, 0x78, 0x11, 0x59, 0x78, 0xaf, 0x8b, 0x1c, 0x3d, 0x4b, 0x42, 0x0d, 0x05,
|
0x63, 0x2e, 0x95, 0xf1, 0x22, 0xb2, 0xf0, 0x5e, 0x17, 0x39, 0x7a, 0x96, 0x84, 0x1a, 0x0a, 0x74,
|
||||||
0x3a, 0x53, 0xf3, 0xf3, 0xc5, 0xec, 0x26, 0x0d, 0x6e, 0x2e, 0x64, 0x1f, 0x60, 0x66, 0x7c, 0x09,
|
0xa6, 0xe6, 0xe7, 0x8b, 0xd9, 0x4d, 0x1a, 0x5c, 0x5d, 0xc8, 0x3e, 0xc0, 0xcc, 0xf8, 0x02, 0x36,
|
||||||
0x9b, 0xb3, 0xec, 0xda, 0x1c, 0x8a, 0xdb, 0xeb, 0x09, 0xf2, 0xdf, 0x2e, 0xf3, 0x53, 0xa4, 0x30,
|
0x66, 0xd9, 0xb5, 0x39, 0x14, 0xb7, 0xd7, 0x13, 0xe4, 0xbf, 0x51, 0xe6, 0xa7, 0x48, 0x61, 0xee,
|
||||||
0xf7, 0x2f, 0x16, 0x60, 0x14, 0x58, 0x5d, 0x2c, 0xc0, 0x68, 0x70, 0x17, 0xda, 0x81, 0x90, 0x49,
|
0x5f, 0x2c, 0xc0, 0x28, 0x70, 0x6d, 0xb1, 0x00, 0xa3, 0xc1, 0x6d, 0x68, 0x07, 0x42, 0x26, 0x21,
|
||||||
0xc8, 0x26, 0x26, 0xbe, 0xd6, 0xd0, 0xf5, 0x2d, 0x8b, 0xd3, 0x31, 0xe6, 0xbe, 0xb9, 0x9c, 0xef,
|
0xcb, 0x4c, 0x7c, 0xad, 0xa2, 0xeb, 0x5b, 0x16, 0xa7, 0x63, 0xcc, 0x7d, 0x77, 0x3e, 0xdf, 0xf3,
|
||||||
0x59, 0x63, 0x9e, 0x9f, 0xef, 0x97, 0x82, 0xba, 0x32, 0x27, 0xa8, 0x67, 0x23, 0xb7, 0x7a, 0x29,
|
0xc6, 0x3c, 0x3f, 0xdf, 0xcf, 0x05, 0x75, 0x65, 0x4e, 0x50, 0xcf, 0x46, 0x6e, 0xf5, 0x5c, 0xe4,
|
||||||
0x72, 0xdd, 0xc7, 0xb0, 0x3e, 0x7b, 0xf1, 0xc1, 0xf8, 0x24, 0x14, 0xfe, 0x60, 0xc8, 0xae, 0x59,
|
0xba, 0x4f, 0x60, 0x6d, 0xf6, 0xe2, 0xfd, 0xf1, 0x71, 0x28, 0xfc, 0xc1, 0x90, 0x5d, 0xb2, 0xd6,
|
||||||
0x6b, 0xdc, 0x6f, 0xab, 0xb0, 0x5c, 0x1a, 0x0c, 0xff, 0x2b, 0x5f, 0x1b, 0x13, 0xf3, 0x0e, 0xb4,
|
0xb8, 0xdf, 0x54, 0x61, 0xb9, 0x34, 0x18, 0xfe, 0x57, 0xbe, 0x36, 0x26, 0xe6, 0x2d, 0x68, 0x25,
|
||||||
0x92, 0x54, 0x5c, 0x30, 0xc5, 0xbd, 0x73, 0x3e, 0xb1, 0x7d, 0x0e, 0x2c, 0x4a, 0xd7, 0xed, 0x2d,
|
0xa9, 0x38, 0x63, 0x8a, 0x7b, 0xa7, 0x3c, 0xb3, 0x7d, 0x0e, 0x2c, 0x4a, 0xd7, 0xed, 0x4d, 0x5d,
|
||||||
0x5d, 0x3b, 0xa5, 0x9f, 0x8a, 0x44, 0xeb, 0x85, 0x79, 0xd9, 0xa6, 0x45, 0x94, 0x6e, 0x7b, 0xbf,
|
0x3b, 0xa5, 0x9f, 0x8a, 0x44, 0xeb, 0x85, 0x79, 0xd9, 0xa6, 0x45, 0x94, 0x6e, 0x7b, 0xbf, 0x88,
|
||||||
0x8c, 0x45, 0x64, 0xb3, 0xb2, 0x41, 0x2d, 0xa4, 0x9b, 0x82, 0x89, 0x55, 0x1e, 0x60, 0xdb, 0x6b,
|
0x45, 0x64, 0xb3, 0xb2, 0x41, 0x2d, 0xa4, 0x9b, 0x82, 0x89, 0x55, 0x1e, 0x60, 0xdb, 0x6b, 0xd0,
|
||||||
0xd0, 0x29, 0x9c, 0x27, 0x4d, 0xbd, 0x98, 0x34, 0x2f, 0xa1, 0x6b, 0xbd, 0x2b, 0x3d, 0x15, 0x7b,
|
0x09, 0x3c, 0x4d, 0x9a, 0x7a, 0x31, 0x69, 0x5e, 0x41, 0xd7, 0x7a, 0x57, 0x7a, 0x2a, 0xf6, 0xb4,
|
||||||
0x5a, 0x8e, 0x9d, 0x0d, 0x3e, 0x5c, 0x34, 0xfe, 0x5a, 0xf2, 0xa3, 0xf8, 0x69, 0x2c, 0x22, 0xda,
|
0x1c, 0x3b, 0x1b, 0xdc, 0x5d, 0x34, 0xfe, 0x5a, 0xf2, 0xc3, 0xf8, 0x59, 0x2c, 0x22, 0xda, 0x49,
|
||||||
0x49, 0x4b, 0x30, 0x79, 0x08, 0x8d, 0x6c, 0xe8, 0xb2, 0x43, 0xde, 0x9d, 0x05, 0x82, 0xec, 0xb4,
|
0x4b, 0x30, 0x79, 0x04, 0x8d, 0x7c, 0xe8, 0xb2, 0x43, 0xde, 0xad, 0x05, 0x82, 0xec, 0xb4, 0x27,
|
||||||
0x27, 0xe9, 0x94, 0x41, 0xcf, 0x56, 0x3c, 0xf2, 0xd3, 0x49, 0xa2, 0xa6, 0x49, 0x9f, 0x23, 0xf4,
|
0xe9, 0x84, 0x41, 0xcf, 0x56, 0x3c, 0xf2, 0xd3, 0x2c, 0x51, 0x93, 0xa4, 0x9f, 0x22, 0xf4, 0x57,
|
||||||
0xa9, 0x4c, 0xb8, 0xaf, 0x58, 0x9e, 0xfa, 0x39, 0x42, 0xb7, 0x26, 0x4b, 0xaa, 0x13, 0x18, 0xdb,
|
0x99, 0x70, 0x5f, 0xb1, 0x69, 0xea, 0x4f, 0x11, 0xba, 0x35, 0x59, 0x52, 0x9d, 0xc0, 0xd8, 0x8e,
|
||||||
0x71, 0x1b, 0x2d, 0xd7, 0xc9, 0xd1, 0xcf, 0xf8, 0x44, 0xba, 0x7f, 0x73, 0x60, 0xe3, 0x8a, 0x17,
|
0xdb, 0x68, 0xb9, 0xce, 0x14, 0xfd, 0x9c, 0x67, 0xd2, 0xfd, 0x9b, 0x03, 0xeb, 0x17, 0xbc, 0xc8,
|
||||||
0x59, 0x7f, 0x39, 0x53, 0x7f, 0xbd, 0x0f, 0x90, 0x60, 0x6c, 0xa0, 0xbb, 0x8c, 0xff, 0x9b, 0x06,
|
0xfa, 0xcb, 0x99, 0xf8, 0xeb, 0x26, 0x40, 0x82, 0xb1, 0x81, 0xee, 0x32, 0xfe, 0x6f, 0x1a, 0x8c,
|
||||||
0xa3, 0xbd, 0x35, 0x75, 0x7a, 0xb5, 0xe8, 0xf4, 0x2b, 0x0a, 0xeb, 0x2d, 0xa8, 0xfb, 0x43, 0xa6,
|
0xf6, 0xd6, 0xc4, 0xe9, 0xd5, 0xa2, 0xd3, 0x2f, 0x28, 0xac, 0xd7, 0xa1, 0xee, 0x0f, 0x99, 0xd2,
|
||||||
0x74, 0xef, 0xbc, 0x61, 0x06, 0x22, 0x0d, 0xee, 0x05, 0x3a, 0x6e, 0xb3, 0xc1, 0x7d, 0xa2, 0x4f,
|
0xbd, 0xf3, 0x8a, 0x19, 0x88, 0x34, 0xb8, 0x1b, 0xe8, 0xb8, 0xcd, 0x07, 0xf7, 0x4c, 0x7f, 0x5d,
|
||||||
0x97, 0x8c, 0xe3, 0xa7, 0xb8, 0x3d, 0x74, 0xa2, 0x49, 0xdf, 0xba, 0xb9, 0x0c, 0x01, 0xf7, 0xf7,
|
0x32, 0x8e, 0x9f, 0xe0, 0x76, 0xd1, 0x89, 0x26, 0x7d, 0xeb, 0xe6, 0x32, 0x04, 0xdc, 0xdf, 0x55,
|
||||||
0x15, 0xe8, 0xce, 0x86, 0x33, 0x79, 0x54, 0x58, 0x8a, 0x2e, 0xcd, 0x25, 0x0b, 0x1a, 0x4f, 0x61,
|
0xa0, 0x3b, 0x1b, 0xce, 0xe4, 0x71, 0x61, 0x29, 0x3a, 0x37, 0x97, 0x2c, 0x68, 0x3c, 0x85, 0x95,
|
||||||
0x25, 0xfa, 0x1a, 0xda, 0xf6, 0xd5, 0x5a, 0x3b, 0xd9, 0xab, 0xcc, 0x0e, 0x8c, 0x8b, 0xf3, 0x87,
|
0xe8, 0x2b, 0x68, 0xdb, 0x57, 0x6b, 0xed, 0x64, 0xaf, 0x32, 0x3b, 0x30, 0x2e, 0xce, 0x1f, 0xda,
|
||||||
0xb6, 0x92, 0xe9, 0xb7, 0x24, 0x0f, 0xa1, 0x9e, 0xcd, 0x37, 0x55, 0x8c, 0x87, 0x2b, 0xd4, 0xc8,
|
0x4a, 0x26, 0x67, 0x49, 0x1e, 0x41, 0x3d, 0x9f, 0x6f, 0xaa, 0x18, 0x0f, 0x17, 0xa8, 0x91, 0x8f,
|
||||||
0x46, 0x9d, 0x8c, 0xe3, 0x7f, 0x58, 0xcc, 0xdc, 0xcf, 0x60, 0x05, 0x4f, 0xb5, 0x42, 0xb6, 0x0f,
|
0x3a, 0x39, 0xc7, 0xff, 0xb0, 0x98, 0xb9, 0x9f, 0xc2, 0x0a, 0x7e, 0xd5, 0x0a, 0xd9, 0x3e, 0x70,
|
||||||
0x5c, 0x2f, 0xaf, 0xbf, 0x80, 0xb5, 0x8c, 0xf1, 0x85, 0x59, 0x7d, 0x25, 0xe5, 0xec, 0xba, 0xdc,
|
0xb9, 0xbc, 0xfe, 0x1c, 0x56, 0x73, 0xc6, 0x97, 0x66, 0xf5, 0x95, 0x94, 0xb3, 0xcb, 0x72, 0x7f,
|
||||||
0x5f, 0xc1, 0x7b, 0x9a, 0xbb, 0xef, 0x2b, 0x71, 0x21, 0xd4, 0x64, 0xc0, 0x23, 0xc5, 0xd3, 0x2b,
|
0x09, 0x1f, 0x69, 0xee, 0xbe, 0xaf, 0xc4, 0x99, 0x50, 0xd9, 0x80, 0x47, 0x8a, 0xa7, 0x17, 0xf0,
|
||||||
0xf8, 0xbb, 0x50, 0x15, 0x81, 0x31, 0x6f, 0x9b, 0xea, 0x4f, 0x77, 0xc7, 0xd4, 0xa6, 0xb2, 0x84,
|
0x77, 0xa1, 0x2a, 0x02, 0x63, 0xde, 0x36, 0xd5, 0x47, 0x77, 0xdb, 0xd4, 0xa6, 0xb2, 0x84, 0xbe,
|
||||||
0xbe, 0xef, 0x73, 0x4c, 0x82, 0xeb, 0x4a, 0xd9, 0x35, 0x41, 0x5e, 0x96, 0xb2, 0x23, 0xe4, 0x48,
|
0xef, 0x73, 0x4c, 0x82, 0xcb, 0x4a, 0xd9, 0x31, 0x41, 0x5e, 0x96, 0xb2, 0x2d, 0xe4, 0x48, 0x48,
|
||||||
0x48, 0xf9, 0x16, 0x62, 0xbe, 0x71, 0xa0, 0xad, 0xe5, 0x3c, 0x8e, 0xe3, 0xf3, 0x11, 0x4b, 0xcf,
|
0xf9, 0x1e, 0x62, 0xbe, 0x76, 0xa0, 0xad, 0xe5, 0x3c, 0x89, 0xe3, 0xd3, 0x11, 0x4b, 0x4f, 0x17,
|
||||||
0x17, 0x33, 0x8e, 0xd3, 0xd0, 0x9a, 0x41, 0x7f, 0x4e, 0xe7, 0xbb, 0x6a, 0x61, 0xf8, 0xdc, 0x80,
|
0x33, 0x8e, 0xd3, 0xd0, 0x9a, 0x41, 0x1f, 0x27, 0xf3, 0x5d, 0xb5, 0x30, 0x7c, 0xae, 0x43, 0x13,
|
||||||
0x26, 0x56, 0x6d, 0x4f, 0xd3, 0x9a, 0xac, 0x68, 0x20, 0xe2, 0x38, 0x0d, 0x8b, 0xed, 0xfb, 0x46,
|
0xab, 0xb6, 0xa7, 0x69, 0x4d, 0x56, 0x34, 0x10, 0x71, 0x94, 0x86, 0xc5, 0xf6, 0x7d, 0xa5, 0xdc,
|
||||||
0xb9, 0x7d, 0xbf, 0x0f, 0x10, 0xf0, 0x90, 0xeb, 0x31, 0x88, 0x29, 0xcc, 0x8a, 0x1a, 0x6d, 0x5a,
|
0xbe, 0x6f, 0x02, 0x04, 0x3c, 0xe4, 0x7a, 0x0c, 0x62, 0x0a, 0xb3, 0xa2, 0x46, 0x9b, 0x16, 0xd3,
|
||||||
0x4c, 0x5f, 0xb9, 0x4f, 0x4d, 0xf0, 0x0f, 0x42, 0xce, 0xd2, 0x27, 0x42, 0xaa, 0x38, 0x9d, 0x14,
|
0x57, 0xee, 0x33, 0x13, 0xfc, 0x83, 0x90, 0xb3, 0xf4, 0xa9, 0x90, 0x2a, 0x4e, 0xb3, 0x62, 0x8e,
|
||||||
0x73, 0xcc, 0x29, 0xe5, 0xd8, 0xfb, 0x00, 0xbe, 0x26, 0x34, 0xb2, 0x2a, 0x46, 0x96, 0xc5, 0xf4,
|
0x39, 0xa5, 0x1c, 0xbb, 0x09, 0xe0, 0x6b, 0x42, 0x23, 0xab, 0x62, 0x64, 0x59, 0x4c, 0x5f, 0xb9,
|
||||||
0x95, 0xfb, 0x57, 0x07, 0x88, 0x16, 0x66, 0x37, 0xe1, 0x03, 0xe1, 0xab, 0x71, 0xca, 0xe7, 0x4e,
|
0x7f, 0x75, 0x80, 0x68, 0x61, 0x76, 0x13, 0xde, 0x17, 0xbe, 0x1a, 0xa7, 0x7c, 0xee, 0x24, 0x5d,
|
||||||
0xd2, 0x85, 0x55, 0xa5, 0xb2, 0x60, 0x55, 0xa9, 0xe2, 0x6f, 0x1b, 0x97, 0x56, 0x95, 0x1a, 0xa2,
|
0x58, 0x55, 0x2a, 0x0b, 0x56, 0x95, 0x2a, 0xfe, 0xb6, 0x71, 0x6e, 0x55, 0xa9, 0x21, 0x3a, 0x5f,
|
||||||
0xb3, 0x55, 0x65, 0x03, 0x9a, 0xd8, 0xcf, 0x70, 0x57, 0xb9, 0x81, 0x47, 0xb8, 0xab, 0x1c, 0xce,
|
0x55, 0xd6, 0xa1, 0x89, 0xfd, 0x0c, 0x77, 0x95, 0x2b, 0xf8, 0x09, 0x77, 0x95, 0x83, 0xb9, 0xbb,
|
||||||
0xdd, 0x55, 0x96, 0x90, 0x60, 0xc1, 0xae, 0x52, 0x2f, 0xee, 0x2a, 0x43, 0x58, 0xbd, 0xfc, 0x12,
|
0xca, 0x12, 0x12, 0x2c, 0xd8, 0x55, 0xea, 0xc5, 0x5d, 0x65, 0x08, 0xd7, 0xce, 0xbf, 0x44, 0x2e,
|
||||||
0xb9, 0x78, 0x1d, 0xfb, 0x11, 0x34, 0x12, 0x4b, 0x64, 0x93, 0x7d, 0xb3, 0x9c, 0x67, 0x65, 0x49,
|
0x5e, 0xc7, 0x7e, 0x08, 0x8d, 0xc4, 0x12, 0xd9, 0x64, 0xdf, 0x28, 0xe7, 0x59, 0x59, 0x12, 0x9d,
|
||||||
0x74, 0x4a, 0xed, 0xfe, 0xb1, 0x02, 0x37, 0x35, 0xc1, 0x6b, 0x16, 0x86, 0x5c, 0x5d, 0xdd, 0xc0,
|
0x50, 0xbb, 0x7f, 0xac, 0xc0, 0x55, 0x4d, 0xf0, 0x86, 0x85, 0x21, 0x57, 0x17, 0x37, 0xf0, 0x1e,
|
||||||
0x7b, 0x50, 0x67, 0x41, 0x90, 0x72, 0x29, 0x33, 0xab, 0x59, 0x50, 0xdb, 0xe7, 0x0d, 0x0a, 0x40,
|
0xd4, 0x59, 0x10, 0xa4, 0x5c, 0xca, 0xdc, 0x6a, 0x16, 0xd4, 0xf6, 0x79, 0x87, 0x02, 0xd0, 0x6c,
|
||||||
0xb3, 0x35, 0xa8, 0x85, 0xb4, 0xed, 0xb5, 0xef, 0xd0, 0x6a, 0x0d, 0x8a, 0xdf, 0x1a, 0x87, 0x6b,
|
0x0d, 0x6a, 0x21, 0x6d, 0x7b, 0xed, 0x3b, 0xb4, 0x5a, 0x83, 0xe2, 0x59, 0xe3, 0x70, 0xad, 0x30,
|
||||||
0x85, 0xa9, 0x9f, 0xf8, 0xad, 0x25, 0x6b, 0xdf, 0xeb, 0xa1, 0xc0, 0x6c, 0xc5, 0x19, 0xa8, 0xa9,
|
0xf5, 0x13, 0xcf, 0x5a, 0xb2, 0xf6, 0xbd, 0x1e, 0x0a, 0xcc, 0x56, 0x9c, 0x83, 0x9a, 0x3a, 0x61,
|
||||||
0x13, 0xa6, 0x86, 0x76, 0xf6, 0xc4, 0x6f, 0xdd, 0x4b, 0xa6, 0x25, 0x1c, 0x77, 0xbc, 0x76, 0xb1,
|
0x6a, 0x68, 0x67, 0x4f, 0x3c, 0xeb, 0x5e, 0x32, 0x29, 0xe1, 0xb8, 0xe3, 0xb5, 0x8b, 0x35, 0x3d,
|
||||||
0xa6, 0x67, 0xfe, 0x6e, 0x16, 0xfc, 0xad, 0xdf, 0xa3, 0x17, 0x71, 0xec, 0x4b, 0x4d, 0x6a, 0x00,
|
0xf7, 0x77, 0xb3, 0xe0, 0x6f, 0xfd, 0x1e, 0xbd, 0x88, 0x63, 0x5f, 0x6a, 0x52, 0x03, 0xa0, 0x57,
|
||||||
0xf4, 0xaa, 0x08, 0x02, 0x1e, 0xd9, 0x86, 0x64, 0xa1, 0xc5, 0xc3, 0xa8, 0xfb, 0xc2, 0x44, 0x58,
|
0x45, 0x10, 0xf0, 0xc8, 0x36, 0x24, 0x0b, 0x2d, 0x1e, 0x46, 0xdd, 0x97, 0x26, 0xc2, 0x4a, 0xc6,
|
||||||
0xc9, 0x58, 0x92, 0x7c, 0x06, 0x0d, 0x5b, 0xf3, 0xb2, 0x6a, 0xbd, 0x51, 0xb6, 0x7e, 0x89, 0x9e,
|
0x92, 0xe4, 0x53, 0x68, 0xd8, 0x9a, 0x97, 0x57, 0xeb, 0xf5, 0xb2, 0xf5, 0x4b, 0xf4, 0x74, 0x42,
|
||||||
0x4e, 0x89, 0xdd, 0x3f, 0x3b, 0x26, 0xfc, 0x0f, 0xd9, 0x05, 0x0f, 0xfa, 0xd6, 0x96, 0x05, 0x2b,
|
0xec, 0xfe, 0xd9, 0x31, 0xe1, 0x7f, 0xc0, 0xce, 0x78, 0xd0, 0xb7, 0xb6, 0x2c, 0x58, 0xd9, 0x29,
|
||||||
0x3b, 0x65, 0x2b, 0xcf, 0x5b, 0xba, 0x37, 0xa1, 0x79, 0xca, 0x2e, 0xe2, 0x71, 0x2a, 0x14, 0xb7,
|
0x5b, 0x79, 0xde, 0xd2, 0xbd, 0x01, 0xcd, 0xb7, 0xec, 0x2c, 0x1e, 0xa7, 0x42, 0x71, 0x6b, 0xfc,
|
||||||
0xc6, 0xcf, 0x11, 0xba, 0x93, 0xf9, 0x43, 0x26, 0x70, 0xd7, 0xab, 0xa1, 0x2b, 0xeb, 0x08, 0xef,
|
0x29, 0x42, 0x77, 0x32, 0x7f, 0xc8, 0x04, 0xee, 0x7a, 0x35, 0x74, 0x65, 0x1d, 0xe1, 0xdd, 0xe0,
|
||||||
0x05, 0x57, 0xa4, 0xec, 0x5d, 0x68, 0x9b, 0xe9, 0xcb, 0x2b, 0x46, 0x66, 0xcb, 0xe0, 0x70, 0x3c,
|
0x82, 0x94, 0xbd, 0x0d, 0x6d, 0x33, 0x7d, 0x79, 0xc5, 0xc8, 0x6c, 0x19, 0x1c, 0x8e, 0x87, 0xee,
|
||||||
0x74, 0xff, 0xe0, 0xc0, 0xbb, 0x73, 0xe7, 0x81, 0x05, 0x91, 0x33, 0xdb, 0x1d, 0xcd, 0x0b, 0x4a,
|
0xef, 0x1d, 0xf8, 0x70, 0xee, 0x3c, 0xb0, 0x20, 0x72, 0x66, 0xbb, 0xa3, 0x79, 0x41, 0xa9, 0x3b,
|
||||||
0xdd, 0x71, 0x17, 0xee, 0x0c, 0x4d, 0x01, 0xf0, 0x58, 0xea, 0x0f, 0xc5, 0x05, 0xf7, 0xe4, 0x38,
|
0xee, 0xc0, 0xad, 0xa1, 0x29, 0x00, 0x1e, 0x4b, 0xfd, 0xa1, 0x38, 0xe3, 0x9e, 0x1c, 0x27, 0x49,
|
||||||
0x49, 0xe2, 0x54, 0x79, 0x3c, 0x62, 0x27, 0xa1, 0x9d, 0x05, 0x1b, 0x74, 0xd3, 0x92, 0xf5, 0x0d,
|
0x9c, 0x2a, 0x8f, 0x47, 0xec, 0x38, 0xb4, 0xb3, 0x60, 0x83, 0x6e, 0x58, 0xb2, 0xbe, 0xa1, 0x3a,
|
||||||
0xd5, 0xa1, 0x21, 0xda, 0x35, 0x34, 0xee, 0x9f, 0x1c, 0xd3, 0x3a, 0x8e, 0xf4, 0x30, 0xaf, 0xd7,
|
0x30, 0x44, 0x3b, 0x86, 0xc6, 0xfd, 0x93, 0x63, 0x5a, 0xc7, 0xa1, 0x1e, 0xe6, 0xf5, 0x7a, 0xc0,
|
||||||
0x03, 0x9e, 0x5e, 0x73, 0xfd, 0x7c, 0x04, 0x4b, 0x76, 0x1f, 0xd0, 0xf7, 0x74, 0x66, 0x67, 0xa8,
|
0xd3, 0x4b, 0xae, 0x9f, 0x8f, 0x61, 0xc9, 0xee, 0x03, 0xfa, 0x9e, 0xce, 0xec, 0x0c, 0x55, 0x10,
|
||||||
0x82, 0xc0, 0xed, 0xa3, 0x7c, 0x53, 0xa0, 0x96, 0xc9, 0xfd, 0x1c, 0x5a, 0x05, 0x34, 0x69, 0x41,
|
0xb8, 0x75, 0x38, 0xdd, 0x14, 0xa8, 0x65, 0x72, 0x3f, 0x83, 0x56, 0x01, 0x4d, 0x5a, 0x50, 0x3f,
|
||||||
0xfd, 0x78, 0xff, 0xd9, 0xfe, 0xcb, 0xd7, 0xfb, 0xdd, 0x77, 0x34, 0x70, 0x44, 0x8f, 0x0f, 0x8f,
|
0xda, 0x7b, 0xbe, 0xf7, 0xea, 0xcd, 0x5e, 0xf7, 0x03, 0x0d, 0x1c, 0xd2, 0xa3, 0x83, 0xc3, 0x9d,
|
||||||
0x76, 0x77, 0xba, 0x0e, 0xb9, 0x09, 0xcb, 0xc7, 0xfb, 0x08, 0xbe, 0x7e, 0x49, 0x8f, 0x9e, 0xfc,
|
0xed, 0xae, 0x43, 0xae, 0xc2, 0xf2, 0xd1, 0x1e, 0x82, 0x6f, 0x5e, 0xd1, 0xc3, 0xa7, 0x3f, 0xed,
|
||||||
0xac, 0x5b, 0x71, 0xbf, 0xa9, 0x9a, 0x59, 0xfa, 0x55, 0x61, 0x57, 0xb1, 0x83, 0xcd, 0x02, 0xe5,
|
0x56, 0xdc, 0xaf, 0xab, 0x66, 0x96, 0x7e, 0x5d, 0xd8, 0x55, 0xec, 0x60, 0xb3, 0x40, 0x79, 0x02,
|
||||||
0x09, 0xd4, 0x4e, 0xd3, 0x78, 0x94, 0x85, 0x82, 0xfe, 0xd6, 0x0f, 0x52, 0xb1, 0xad, 0xd9, 0x15,
|
0xb5, 0xb7, 0x69, 0x3c, 0xca, 0x43, 0x41, 0x9f, 0xf5, 0x83, 0x54, 0x6c, 0x6b, 0x76, 0x45, 0xc5,
|
||||||
0x15, 0xeb, 0xd0, 0xf0, 0x87, 0x3a, 0xf2, 0xa2, 0xb3, 0x6c, 0x8e, 0xc9, 0x11, 0xda, 0x25, 0x76,
|
0x3a, 0x34, 0xfc, 0xa1, 0x8e, 0xbc, 0xe8, 0x24, 0x9f, 0x63, 0xa6, 0x08, 0xed, 0x12, 0x3b, 0xfd,
|
||||||
0xfa, 0x33, 0xe5, 0xd4, 0xae, 0x88, 0x53, 0x5c, 0x1f, 0x7f, 0xa6, 0x48, 0xb9, 0x4c, 0xe2, 0x48,
|
0x99, 0x72, 0x6a, 0x57, 0xc4, 0x09, 0xae, 0x8f, 0x3f, 0x53, 0xa4, 0x5c, 0x26, 0x71, 0x24, 0xf3,
|
||||||
0x66, 0x69, 0x39, 0x85, 0x75, 0x2d, 0x4e, 0x79, 0x12, 0x0a, 0xc3, 0x6c, 0x42, 0xa4, 0x69, 0x31,
|
0xb4, 0x9c, 0xc0, 0xba, 0x16, 0xa7, 0x3c, 0x09, 0x85, 0x61, 0x36, 0x21, 0xd2, 0xb4, 0x98, 0xbe,
|
||||||
0x7d, 0x45, 0xf8, 0xfc, 0x9d, 0xac, 0x81, 0x96, 0xfd, 0x7e, 0xd9, 0xb2, 0x73, 0x5e, 0xbd, 0xfd,
|
0x22, 0x7c, 0xfe, 0x4e, 0xd6, 0x40, 0xcb, 0x7e, 0xaf, 0x6c, 0xd9, 0x39, 0xaf, 0xde, 0x7a, 0x7d,
|
||||||
0xea, 0xd2, 0xd6, 0x36, 0x77, 0x93, 0x33, 0x3e, 0x6c, 0x4e, 0x1b, 0xf8, 0x4f, 0x81, 0x5c, 0xe6,
|
0x6e, 0x6b, 0x9b, 0xbb, 0xc9, 0x19, 0x1f, 0x36, 0x27, 0x0d, 0xfc, 0x27, 0x40, 0xce, 0x73, 0x9e,
|
||||||
0xbc, 0xe4, 0x8b, 0x83, 0xdd, 0xfd, 0x9d, 0xbd, 0xfd, 0xaf, 0xbb, 0x0e, 0x69, 0x43, 0xa3, 0x3f,
|
0xf3, 0xc5, 0xfe, 0xce, 0xde, 0xf6, 0xee, 0xde, 0x57, 0x5d, 0x87, 0xb4, 0xa1, 0xd1, 0x1f, 0x0c,
|
||||||
0x18, 0xec, 0x1e, 0x68, 0xcf, 0x54, 0x34, 0xb4, 0xb3, 0x3b, 0x78, 0xbe, 0xb7, 0xbf, 0xbb, 0xd3,
|
0x76, 0xf6, 0xb5, 0x67, 0x2a, 0x1a, 0xda, 0xde, 0x19, 0xbc, 0xd8, 0xdd, 0xdb, 0xd9, 0xee, 0x56,
|
||||||
0xad, 0x6a, 0x68, 0xd0, 0xdf, 0x1f, 0xec, 0x3e, 0xdf, 0xdd, 0xe9, 0xd6, 0xdc, 0x7f, 0x39, 0xa6,
|
0x35, 0x34, 0xe8, 0xef, 0x0d, 0x76, 0x5e, 0xec, 0x6c, 0x77, 0x6b, 0xee, 0xbf, 0x1c, 0xd3, 0xd9,
|
||||||
0xb3, 0x0f, 0x4a, 0x2b, 0xd3, 0x0e, 0xf7, 0x85, 0x5c, 0xfc, 0x8b, 0xcb, 0x26, 0x34, 0xad, 0x3d,
|
0x07, 0xa5, 0x95, 0x69, 0x9b, 0xfb, 0x42, 0x2e, 0xfe, 0xc5, 0x65, 0x03, 0x9a, 0xd6, 0x9e, 0xbb,
|
||||||
0xf7, 0xb2, 0x48, 0xcb, 0x11, 0xe4, 0x17, 0xb0, 0x12, 0x58, 0x7e, 0xaf, 0x14, 0x79, 0x0f, 0x66,
|
0x79, 0xa4, 0x4d, 0x11, 0xe4, 0xe7, 0xb0, 0x12, 0x58, 0x7e, 0xaf, 0x14, 0x79, 0x0f, 0x67, 0x67,
|
||||||
0x67, 0xa4, 0x79, 0x57, 0x6e, 0x67, 0x1f, 0xd6, 0x3c, 0x9d, 0xa0, 0x04, 0xbb, 0x1f, 0x43, 0xa7,
|
0xa4, 0x79, 0x57, 0x6e, 0xe5, 0x07, 0x6b, 0x9e, 0x4e, 0x50, 0x82, 0xdd, 0xfb, 0xd0, 0x29, 0x53,
|
||||||
0x4c, 0x51, 0x7a, 0xec, 0x3b, 0xa5, 0xc7, 0x3a, 0xee, 0xb7, 0x0e, 0xac, 0xcc, 0xfc, 0x92, 0xbc,
|
0x94, 0x1e, 0xfb, 0x41, 0xe9, 0xb1, 0x8e, 0xfb, 0x8d, 0x03, 0x2b, 0x33, 0xbf, 0x24, 0x2f, 0xee,
|
||||||
0xb8, 0xdb, 0xcc, 0x2e, 0x87, 0x95, 0x4b, 0xcb, 0x21, 0xf9, 0x18, 0x48, 0x91, 0xc4, 0x2b, 0x4e,
|
0x36, 0xb3, 0xcb, 0x61, 0xe5, 0xdc, 0x72, 0x48, 0xee, 0x03, 0x29, 0x92, 0x78, 0xc5, 0x29, 0xbb,
|
||||||
0xd9, 0xdd, 0x02, 0xa1, 0xd9, 0x36, 0x8b, 0xed, 0xab, 0xf6, 0x56, 0xed, 0x4b, 0x02, 0x50, 0xf6,
|
0x5b, 0x20, 0x34, 0xdb, 0x66, 0xb1, 0x7d, 0xd5, 0xde, 0xab, 0x7d, 0x49, 0x00, 0xca, 0xde, 0xd9,
|
||||||
0xc6, 0x8e, 0x7a, 0xc5, 0xb6, 0xee, 0x94, 0xdb, 0xfa, 0x33, 0x68, 0xd9, 0x7f, 0x85, 0x1c, 0xe9,
|
0x51, 0xaf, 0xd8, 0xd6, 0x9d, 0x72, 0x5b, 0x7f, 0x0e, 0x2d, 0xfb, 0xaf, 0x90, 0x43, 0xdd, 0x7b,
|
||||||
0xde, 0x53, 0x41, 0x3b, 0x7f, 0x37, 0xbf, 0xa4, 0x9f, 0xff, 0xf3, 0xe4, 0x85, 0xfd, 0xdf, 0x89,
|
0x2a, 0x68, 0xe7, 0x6f, 0x4f, 0x2f, 0xe9, 0x4f, 0xff, 0x79, 0xf2, 0xd2, 0xfe, 0xef, 0xc4, 0x0a,
|
||||||
0x15, 0xba, 0xad, 0x19, 0x68, 0x91, 0x5b, 0xc7, 0x42, 0x47, 0x6b, 0x55, 0xb8, 0xf9, 0x87, 0xd0,
|
0xdd, 0xd2, 0x0c, 0xb4, 0xc8, 0xed, 0xfe, 0xc1, 0x81, 0x8e, 0xd6, 0xaa, 0x70, 0xf3, 0x0f, 0xa0,
|
||||||
0x4a, 0xa7, 0x50, 0xd6, 0x05, 0xd6, 0x72, 0xf9, 0x39, 0x29, 0x2d, 0x12, 0x92, 0xfb, 0xb0, 0x26,
|
0x95, 0x4e, 0xa0, 0xbc, 0x0b, 0xac, 0x4e, 0xe5, 0x4f, 0x49, 0x69, 0x91, 0x90, 0x3c, 0x80, 0x55,
|
||||||
0xc7, 0x27, 0x59, 0x27, 0x79, 0x2a, 0xe3, 0xe8, 0xf1, 0x44, 0xf1, 0xac, 0xbf, 0xce, 0x3d, 0x23,
|
0x39, 0x3e, 0xce, 0x3b, 0xc9, 0x33, 0x19, 0x47, 0x4f, 0x32, 0xc5, 0xf3, 0xfe, 0x3a, 0xf7, 0x1b,
|
||||||
0x1f, 0xc3, 0xcd, 0x6c, 0xe9, 0xca, 0x19, 0xcc, 0x26, 0x7a, 0xf9, 0x80, 0x7c, 0x0a, 0xab, 0x51,
|
0xb9, 0x0f, 0x57, 0xf3, 0xa5, 0x6b, 0xca, 0x60, 0x36, 0xd1, 0xf3, 0x1f, 0x9e, 0x2c, 0xff, 0xac,
|
||||||
0x1c, 0xf0, 0x41, 0x1c, 0x9d, 0x8a, 0xb3, 0x9c, 0xde, 0x2c, 0xa6, 0xf3, 0x8e, 0x1e, 0x2f, 0xff,
|
0xb5, 0xf5, 0xc9, 0xa3, 0x5c, 0x91, 0xe3, 0x25, 0x3c, 0x3d, 0xfc, 0x4f, 0x00, 0x00, 0x00, 0xff,
|
||||||
0xbc, 0xb5, 0xfd, 0xc9, 0xc3, 0x4c, 0xf5, 0x93, 0x25, 0xfc, 0x7a, 0xf0, 0x9f, 0x00, 0x00, 0x00,
|
0xff, 0xa8, 0x44, 0x31, 0x9e, 0x5d, 0x1a, 0x00, 0x00,
|
||||||
0xff, 0xff, 0xbb, 0x15, 0xb2, 0x92, 0x8f, 0x1a, 0x00, 0x00,
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -297,5 +297,4 @@ message SyncRawMessage {
|
||||||
// we need these to be able to login
|
// we need these to be able to login
|
||||||
bytes subAccountsJsonBytes = 2;
|
bytes subAccountsJsonBytes = 2;
|
||||||
bytes settingsJsonBytes = 3;
|
bytes settingsJsonBytes = 3;
|
||||||
bytes nodeConfigJsonBytes = 4;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,6 @@ import (
|
||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
"encoding/json"
|
|
||||||
"encoding/pem"
|
"encoding/pem"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
@ -76,7 +75,7 @@ func NewPairingClient(backend *api.GethStatusBackend, c *ConnectionParams, confi
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
rmpm, err := NewRawMessagePayloadManager(logutils.ZapLogger().Named("Client"), pm.accountPayload, c.aesKey, backend, config.KeystorePath)
|
rmpm, err := NewRawMessagePayloadManager(logutils.ZapLogger().Named("Client"), pm.accountPayload, c.aesKey, backend, config.GetNodeConfig(), config.GetSettingCurrentNetwork())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -280,19 +279,18 @@ func StartUpPairingClient(backend *api.GethStatusBackend, cs, configJSON string)
|
||||||
}
|
}
|
||||||
|
|
||||||
func setupClient(backend *api.GethStatusBackend, cs string, configJSON string) (*Client, error) {
|
func setupClient(backend *api.GethStatusBackend, cs string, configJSON string) (*Client, error) {
|
||||||
var conf PayloadSourceConfig
|
|
||||||
err := json.Unmarshal([]byte(configJSON), &conf)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
ccp := new(ConnectionParams)
|
ccp := new(ConnectionParams)
|
||||||
err = ccp.FromString(cs)
|
err := ccp.FromString(cs)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
c, err := NewPairingClient(backend, ccp, &AccountPayloadManagerConfig{backend.GetMultiaccountDB(), &conf})
|
conf, err := NewPayloadSourceForClient(configJSON, ccp.serverMode)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
c, err := NewPairingClient(backend, ccp, &AccountPayloadManagerConfig{backend.GetMultiaccountDB(), conf})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -118,11 +118,7 @@ func (tpsc *TestPairingServerComponents) SetupPairingServerComponents(t *testing
|
||||||
EK: tpsc.EphemeralAES,
|
EK: tpsc.EphemeralAES,
|
||||||
Cert: &tpsc.Cert,
|
Cert: &tpsc.Cert,
|
||||||
Hostname: tpsc.OutboundIP.String(),
|
Hostname: tpsc.OutboundIP.String(),
|
||||||
AccountPayloadManagerConfig: &AccountPayloadManagerConfig{
|
AccountPayloadManagerConfig: &AccountPayloadManagerConfig{}})
|
||||||
PayloadSourceConfig: &PayloadSourceConfig{
|
|
||||||
KeystorePath: "",
|
|
||||||
},
|
|
||||||
}})
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,20 +9,23 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/status-im/status-go/api"
|
|
||||||
|
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
|
|
||||||
"github.com/status-im/status-go/account/generator"
|
"github.com/status-im/status-go/account/generator"
|
||||||
|
"github.com/status-im/status-go/api"
|
||||||
"github.com/status-im/status-go/eth-node/keystore"
|
"github.com/status-im/status-go/eth-node/keystore"
|
||||||
"github.com/status-im/status-go/multiaccounts"
|
"github.com/status-im/status-go/multiaccounts"
|
||||||
|
"github.com/status-im/status-go/params"
|
||||||
"github.com/status-im/status-go/protocol/common"
|
"github.com/status-im/status-go/protocol/common"
|
||||||
"github.com/status-im/status-go/protocol/protobuf"
|
"github.com/status-im/status-go/protocol/protobuf"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
ErrKeyFileAlreadyExists = errors.New("key file already exists")
|
ErrKeyFileAlreadyExists = errors.New("key file already exists")
|
||||||
|
ErrKeyUIDEmptyAsSender = errors.New("keyUID must be provided as sender")
|
||||||
|
ErrNodeConfigNilAsReceiver = errors.New("node config must be provided as receiver")
|
||||||
|
ErrPayloadSourceConfigBothSet = errors.New("payloadSourceSenderConfig and payloadSourceReceiverConfig cannot be both set")
|
||||||
)
|
)
|
||||||
|
|
||||||
// PayloadManager is the interface for PayloadManagers and wraps the basic functions for fulfilling payload management
|
// PayloadManager is the interface for PayloadManagers and wraps the basic functions for fulfilling payload management
|
||||||
|
@ -49,29 +52,123 @@ type PayloadManager interface {
|
||||||
LockPayload()
|
LockPayload()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type PayloadSourceSenderConfig struct {
|
||||||
|
KeyUID string `json:"keyUID"`
|
||||||
|
Password string `json:"password"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type PayloadSourceReceiverConfig struct {
|
||||||
|
KDFIterations int `json:"kdfIterations"`
|
||||||
|
NodeConfig *params.NodeConfig
|
||||||
|
// this field already exists within params.NodeConfig, but it doesn't support json marshalling, so we need to duplicate it here
|
||||||
|
RootDataDir string
|
||||||
|
// corresponding to field current_network from table settings, so that we can override current network from sender
|
||||||
|
SettingCurrentNetwork string
|
||||||
|
}
|
||||||
|
|
||||||
// PayloadSourceConfig represents location and access data of the pairing payload
|
// PayloadSourceConfig represents location and access data of the pairing payload
|
||||||
// ONLY available from the application client
|
// ONLY available from the application client
|
||||||
type PayloadSourceConfig struct {
|
type PayloadSourceConfig struct {
|
||||||
// required
|
// required for sender and receiver, there are some different cases:
|
||||||
|
// 1. for sender, KeystorePath must end with keyUID
|
||||||
|
// 2. for receiver, KeystorePath must not end with keyUID (because keyUID is not known yet)
|
||||||
KeystorePath string `json:"keystorePath"`
|
KeystorePath string `json:"keystorePath"`
|
||||||
// following 2 fields r optional.
|
*PayloadSourceSenderConfig
|
||||||
// optional cases:
|
*PayloadSourceReceiverConfig
|
||||||
// 1. server mode is Receiving and server side doesn't contain this info
|
|
||||||
// 2. server mode is Sending and client side doesn't contain this info
|
|
||||||
// they are required in other cases
|
|
||||||
KeyUID string `json:"keyUID"`
|
|
||||||
Password string `json:"password"`
|
|
||||||
|
|
||||||
// Timeout the number of milliseconds after which the pairing server will automatically terminate
|
// Timeout the number of milliseconds after which the pairing server will automatically terminate
|
||||||
Timeout uint `json:"timeout"`
|
Timeout uint `json:"timeout"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type payloadSourceUnmarshalCallback func(conf *PayloadSourceConfig) (*PayloadSourceConfig, error)
|
||||||
|
|
||||||
|
func NewPayloadSourceForClient(configJSON string, mode Mode) (*PayloadSourceConfig, error) {
|
||||||
|
return unmarshalPayloadSourceConfig(configJSON, func(conf *PayloadSourceConfig) (*PayloadSourceConfig, error) {
|
||||||
|
if mode == Sending && conf.NodeConfig == nil {
|
||||||
|
return nil, ErrNodeConfigNilAsReceiver
|
||||||
|
}
|
||||||
|
if mode == Receiving && conf.KeyUID == "" {
|
||||||
|
return nil, ErrKeyUIDEmptyAsSender
|
||||||
|
}
|
||||||
|
return updateRootDataDirToNodeConfig(conf)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewPayloadSourceForServer(configJSON string, mode Mode) (*PayloadSourceConfig, error) {
|
||||||
|
return unmarshalPayloadSourceConfig(configJSON, func(conf *PayloadSourceConfig) (*PayloadSourceConfig, error) {
|
||||||
|
if mode == Sending && conf.KeyUID == "" {
|
||||||
|
return nil, ErrKeyUIDEmptyAsSender
|
||||||
|
}
|
||||||
|
if mode == Receiving && conf.NodeConfig == nil {
|
||||||
|
return nil, ErrNodeConfigNilAsReceiver
|
||||||
|
}
|
||||||
|
return updateRootDataDirToNodeConfig(conf)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateRootDataDirToNodeConfig(conf *PayloadSourceConfig) (*PayloadSourceConfig, error) {
|
||||||
|
if conf.PayloadSourceReceiverConfig != nil && conf.PayloadSourceReceiverConfig.NodeConfig != nil {
|
||||||
|
conf.NodeConfig.RootDataDir = conf.RootDataDir
|
||||||
|
}
|
||||||
|
return conf, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func unmarshalPayloadSourceConfig(configJSON string, successCallback payloadSourceUnmarshalCallback) (*PayloadSourceConfig, error) {
|
||||||
|
var conf = PayloadSourceConfig{}
|
||||||
|
err := json.Unmarshal([]byte(configJSON), &conf)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return successCallback(&conf)
|
||||||
|
}
|
||||||
|
|
||||||
// AccountPayloadManagerConfig represents the initialisation parameters required for a AccountPayloadManager
|
// AccountPayloadManagerConfig represents the initialisation parameters required for a AccountPayloadManager
|
||||||
type AccountPayloadManagerConfig struct {
|
type AccountPayloadManagerConfig struct {
|
||||||
DB *multiaccounts.Database
|
DB *multiaccounts.Database
|
||||||
*PayloadSourceConfig
|
*PayloadSourceConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (a *AccountPayloadManagerConfig) GetNodeConfig() *params.NodeConfig {
|
||||||
|
if a.PayloadSourceConfig != nil && a.PayloadSourceConfig.PayloadSourceReceiverConfig != nil {
|
||||||
|
return a.NodeConfig
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AccountPayloadManagerConfig) GetSettingCurrentNetwork() string {
|
||||||
|
if a.PayloadSourceConfig != nil && a.PayloadSourceConfig.PayloadSourceReceiverConfig != nil {
|
||||||
|
return a.SettingCurrentNetwork
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AccountPayloadManagerConfig) GetPayloadSourceSenderConfig() *PayloadSourceSenderConfig {
|
||||||
|
if a.PayloadSourceConfig != nil && a.PayloadSourceConfig.PayloadSourceSenderConfig != nil {
|
||||||
|
return a.PayloadSourceSenderConfig
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AccountPayloadManagerConfig) GetPayloadSourceReceiverConfig() *PayloadSourceReceiverConfig {
|
||||||
|
if a.PayloadSourceConfig != nil && a.PayloadSourceConfig.PayloadSourceReceiverConfig != nil {
|
||||||
|
return a.PayloadSourceReceiverConfig
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AccountPayloadManagerConfig) GetKeystorePath() string {
|
||||||
|
if a.PayloadSourceConfig != nil {
|
||||||
|
return a.KeystorePath
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *AccountPayloadManagerConfig) GetTimeout() uint {
|
||||||
|
if a.PayloadSourceConfig != nil {
|
||||||
|
return a.Timeout
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
// AccountPayloadManager is responsible for the whole lifecycle of a AccountPayload
|
// AccountPayloadManager is responsible for the whole lifecycle of a AccountPayload
|
||||||
type AccountPayloadManager struct {
|
type AccountPayloadManager struct {
|
||||||
logger *zap.Logger
|
logger *zap.Logger
|
||||||
|
@ -93,13 +190,17 @@ func NewAccountPayloadManager(aesKey []byte, config *AccountPayloadManagerConfig
|
||||||
|
|
||||||
// A new SHARED AccountPayload
|
// A new SHARED AccountPayload
|
||||||
p := new(AccountPayload)
|
p := new(AccountPayload)
|
||||||
|
accountPayloadRepository, err := NewAccountPayloadRepository(p, config)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
return &AccountPayloadManager{
|
return &AccountPayloadManager{
|
||||||
logger: l,
|
logger: l,
|
||||||
accountPayload: p,
|
accountPayload: p,
|
||||||
PayloadEncryptionManager: pem,
|
PayloadEncryptionManager: pem,
|
||||||
accountPayloadMarshaller: NewPairingPayloadMarshaller(p, l),
|
accountPayloadMarshaller: NewPairingPayloadMarshaller(p, l),
|
||||||
payloadRepository: NewAccountPayloadRepository(p, config),
|
payloadRepository: accountPayloadRepository,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -357,22 +458,32 @@ type AccountPayloadRepository struct {
|
||||||
multiaccountsDB *multiaccounts.Database
|
multiaccountsDB *multiaccounts.Database
|
||||||
|
|
||||||
keystorePath, keyUID string
|
keystorePath, keyUID string
|
||||||
|
|
||||||
|
kdfIterations int
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewAccountPayloadRepository(p *AccountPayload, config *AccountPayloadManagerConfig) *AccountPayloadRepository {
|
func NewAccountPayloadRepository(p *AccountPayload, config *AccountPayloadManagerConfig) (*AccountPayloadRepository, error) {
|
||||||
ppr := &AccountPayloadRepository{
|
ppr := &AccountPayloadRepository{
|
||||||
AccountPayload: p,
|
AccountPayload: p,
|
||||||
}
|
}
|
||||||
|
|
||||||
if config == nil {
|
if config == nil {
|
||||||
return ppr
|
return ppr, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
ppr.multiaccountsDB = config.DB
|
ppr.multiaccountsDB = config.DB
|
||||||
ppr.keystorePath = config.KeystorePath
|
|
||||||
|
if config.GetPayloadSourceSenderConfig() != nil && config.GetPayloadSourceReceiverConfig() != nil {
|
||||||
|
return nil, ErrPayloadSourceConfigBothSet
|
||||||
|
}
|
||||||
|
if config.GetPayloadSourceSenderConfig() != nil {
|
||||||
ppr.keyUID = config.KeyUID
|
ppr.keyUID = config.KeyUID
|
||||||
ppr.password = config.Password
|
ppr.password = config.Password
|
||||||
return ppr
|
} else if config.GetPayloadSourceReceiverConfig() != nil {
|
||||||
|
ppr.kdfIterations = config.KDFIterations
|
||||||
|
}
|
||||||
|
ppr.keystorePath = config.GetKeystorePath()
|
||||||
|
return ppr, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (apr *AccountPayloadRepository) LoadFromSource() error {
|
func (apr *AccountPayloadRepository) LoadFromSource() error {
|
||||||
|
@ -515,6 +626,7 @@ func (apr *AccountPayloadRepository) storeKeys(keyStorePath string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (apr *AccountPayloadRepository) storeMultiAccount() error {
|
func (apr *AccountPayloadRepository) storeMultiAccount() error {
|
||||||
|
apr.multiaccount.KDFIterations = apr.kdfIterations
|
||||||
return apr.multiaccountsDB.SaveAccount(*apr.multiaccount)
|
return apr.multiaccountsDB.SaveAccount(*apr.multiaccount)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -526,7 +638,7 @@ type RawMessagePayloadManager struct {
|
||||||
payloadRepository *RawMessageRepository
|
payloadRepository *RawMessageRepository
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRawMessagePayloadManager(logger *zap.Logger, accountPayload *AccountPayload, aesKey []byte, backend *api.GethStatusBackend, keystorePath string) (*RawMessagePayloadManager, error) {
|
func NewRawMessagePayloadManager(logger *zap.Logger, accountPayload *AccountPayload, aesKey []byte, backend *api.GethStatusBackend, nodeConfig *params.NodeConfig, settingCurrentNetwork string) (*RawMessagePayloadManager, error) {
|
||||||
l := logger.Named("RawMessagePayloadManager")
|
l := logger.Named("RawMessagePayloadManager")
|
||||||
pem, err := NewPayloadEncryptionManager(aesKey, l)
|
pem, err := NewPayloadEncryptionManager(aesKey, l)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -536,7 +648,7 @@ func NewRawMessagePayloadManager(logger *zap.Logger, accountPayload *AccountPayl
|
||||||
logger: l,
|
logger: l,
|
||||||
accountPayload: accountPayload,
|
accountPayload: accountPayload,
|
||||||
PayloadEncryptionManager: pem,
|
PayloadEncryptionManager: pem,
|
||||||
payloadRepository: NewRawMessageRepository(backend, keystorePath, accountPayload),
|
payloadRepository: NewRawMessageRepository(backend, accountPayload, nodeConfig, settingCurrentNetwork),
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -565,16 +677,18 @@ func (r *RawMessagePayloadManager) ResetPayload() {
|
||||||
type RawMessageRepository struct {
|
type RawMessageRepository struct {
|
||||||
payload []byte
|
payload []byte
|
||||||
syncRawMessageHandler *SyncRawMessageHandler
|
syncRawMessageHandler *SyncRawMessageHandler
|
||||||
keystorePath string
|
|
||||||
accountPayload *AccountPayload
|
accountPayload *AccountPayload
|
||||||
|
nodeConfig *params.NodeConfig
|
||||||
|
settingCurrentNetwork string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRawMessageRepository(backend *api.GethStatusBackend, keystorePath string, accountPayload *AccountPayload) *RawMessageRepository {
|
func NewRawMessageRepository(backend *api.GethStatusBackend, accountPayload *AccountPayload, config *params.NodeConfig, settingCurrentNetwork string) *RawMessageRepository {
|
||||||
return &RawMessageRepository{
|
return &RawMessageRepository{
|
||||||
syncRawMessageHandler: NewSyncRawMessageHandler(backend),
|
syncRawMessageHandler: NewSyncRawMessageHandler(backend),
|
||||||
keystorePath: keystorePath,
|
|
||||||
payload: make([]byte, 0),
|
payload: make([]byte, 0),
|
||||||
accountPayload: accountPayload,
|
accountPayload: accountPayload,
|
||||||
|
nodeConfig: config,
|
||||||
|
settingCurrentNetwork: settingCurrentNetwork,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -596,5 +710,5 @@ func (r *RawMessageRepository) StoreToSource() error {
|
||||||
if accountPayload == nil || accountPayload.multiaccount == nil {
|
if accountPayload == nil || accountPayload.multiaccount == nil {
|
||||||
return fmt.Errorf("no known multiaccount when storing raw messages")
|
return fmt.Errorf("no known multiaccount when storing raw messages")
|
||||||
}
|
}
|
||||||
return r.syncRawMessageHandler.HandleRawMessage(accountPayload.multiaccount, accountPayload.password, r.keystorePath, r.payload)
|
return r.syncRawMessageHandler.HandleRawMessage(accountPayload.multiaccount, accountPayload.password, r.nodeConfig, r.settingCurrentNetwork, r.payload)
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,18 +136,22 @@ func (pms *PayloadMarshallerSuite) SetupTest() {
|
||||||
DB: db1,
|
DB: db1,
|
||||||
PayloadSourceConfig: &PayloadSourceConfig{
|
PayloadSourceConfig: &PayloadSourceConfig{
|
||||||
KeystorePath: keystore1,
|
KeystorePath: keystore1,
|
||||||
|
PayloadSourceSenderConfig: &PayloadSourceSenderConfig{
|
||||||
KeyUID: keyUID,
|
KeyUID: keyUID,
|
||||||
Password: password,
|
Password: password,
|
||||||
},
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
pms.config2 = &AccountPayloadManagerConfig{
|
pms.config2 = &AccountPayloadManagerConfig{
|
||||||
DB: db2,
|
DB: db2,
|
||||||
PayloadSourceConfig: &PayloadSourceConfig{
|
PayloadSourceConfig: &PayloadSourceConfig{
|
||||||
KeystorePath: keystore2,
|
KeystorePath: keystore2,
|
||||||
|
PayloadSourceSenderConfig: &PayloadSourceSenderConfig{
|
||||||
KeyUID: keyUID,
|
KeyUID: keyUID,
|
||||||
Password: password,
|
Password: password,
|
||||||
},
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,8 +164,9 @@ func (pms *PayloadMarshallerSuite) TestPayloadMarshaller_LoadPayloads() {
|
||||||
pp := new(AccountPayload)
|
pp := new(AccountPayload)
|
||||||
|
|
||||||
// Make and LoadFromSource PairingPayloadRepository 1
|
// Make and LoadFromSource PairingPayloadRepository 1
|
||||||
ppr := NewAccountPayloadRepository(pp, pms.config1)
|
ppr, err := NewAccountPayloadRepository(pp, pms.config1)
|
||||||
err := ppr.LoadFromSource()
|
pms.Require().NoError(err)
|
||||||
|
err = ppr.LoadFromSource()
|
||||||
pms.Require().NoError(err)
|
pms.Require().NoError(err)
|
||||||
|
|
||||||
// TEST PairingPayloadRepository 1 LoadFromSource()
|
// TEST PairingPayloadRepository 1 LoadFromSource()
|
||||||
|
@ -193,8 +198,9 @@ func (pms *PayloadMarshallerSuite) TestPayloadMarshaller_MarshalToProtobuf() {
|
||||||
pp := new(AccountPayload)
|
pp := new(AccountPayload)
|
||||||
|
|
||||||
// Make and LoadFromSource PairingPayloadRepository 1
|
// Make and LoadFromSource PairingPayloadRepository 1
|
||||||
ppr := NewAccountPayloadRepository(pp, pms.config1)
|
ppr, err := NewAccountPayloadRepository(pp, pms.config1)
|
||||||
err := ppr.LoadFromSource()
|
pms.Require().NoError(err)
|
||||||
|
err = ppr.LoadFromSource()
|
||||||
pms.Require().NoError(err)
|
pms.Require().NoError(err)
|
||||||
|
|
||||||
// Make and Load PairingPayloadMarshaller 1
|
// Make and Load PairingPayloadMarshaller 1
|
||||||
|
@ -222,8 +228,9 @@ func (pms *PayloadMarshallerSuite) TestPayloadMarshaller_UnmarshalProtobuf() {
|
||||||
pp := new(AccountPayload)
|
pp := new(AccountPayload)
|
||||||
|
|
||||||
// Make and LoadFromSource PairingPayloadRepository 1
|
// Make and LoadFromSource PairingPayloadRepository 1
|
||||||
ppr := NewAccountPayloadRepository(pp, pms.config1)
|
ppr, err := NewAccountPayloadRepository(pp, pms.config1)
|
||||||
err := ppr.LoadFromSource()
|
pms.Require().NoError(err)
|
||||||
|
err = ppr.LoadFromSource()
|
||||||
pms.Require().NoError(err)
|
pms.Require().NoError(err)
|
||||||
|
|
||||||
// Make and Load PairingPayloadMarshaller 1
|
// Make and Load PairingPayloadMarshaller 1
|
||||||
|
@ -275,8 +282,9 @@ func (pms *PayloadMarshallerSuite) TestPayloadMarshaller_StorePayloads() {
|
||||||
pp := new(AccountPayload)
|
pp := new(AccountPayload)
|
||||||
|
|
||||||
// Make and LoadFromSource PairingPayloadRepository 1
|
// Make and LoadFromSource PairingPayloadRepository 1
|
||||||
ppr := NewAccountPayloadRepository(pp, pms.config1)
|
ppr, err := NewAccountPayloadRepository(pp, pms.config1)
|
||||||
err := ppr.LoadFromSource()
|
pms.Require().NoError(err)
|
||||||
|
err = ppr.LoadFromSource()
|
||||||
pms.Require().NoError(err)
|
pms.Require().NoError(err)
|
||||||
|
|
||||||
// Make and Load PairingPayloadMarshaller 1
|
// Make and Load PairingPayloadMarshaller 1
|
||||||
|
@ -295,8 +303,8 @@ func (pms *PayloadMarshallerSuite) TestPayloadMarshaller_StorePayloads() {
|
||||||
pms.Require().NoError(err)
|
pms.Require().NoError(err)
|
||||||
|
|
||||||
// Make and Load PairingPayloadRepository 2
|
// Make and Load PairingPayloadRepository 2
|
||||||
ppr2 := NewAccountPayloadRepository(pp2, pms.config2)
|
ppr2, err := NewAccountPayloadRepository(pp2, pms.config2)
|
||||||
|
require.NoError(pms.T(), err)
|
||||||
err = ppr2.StoreToSource()
|
err = ppr2.StoreToSource()
|
||||||
pms.Require().NoError(err)
|
pms.Require().NoError(err)
|
||||||
|
|
||||||
|
|
|
@ -5,17 +5,13 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/google/uuid"
|
|
||||||
|
|
||||||
"github.com/status-im/status-go/multiaccounts/settings"
|
|
||||||
|
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
|
|
||||||
"github.com/status-im/status-go/api"
|
"github.com/status-im/status-go/api"
|
||||||
"github.com/status-im/status-go/multiaccounts"
|
"github.com/status-im/status-go/multiaccounts"
|
||||||
"github.com/status-im/status-go/multiaccounts/accounts"
|
"github.com/status-im/status-go/multiaccounts/accounts"
|
||||||
|
"github.com/status-im/status-go/multiaccounts/settings"
|
||||||
"github.com/status-im/status-go/params"
|
"github.com/status-im/status-go/params"
|
||||||
"github.com/status-im/status-go/protocol/protobuf"
|
"github.com/status-im/status-go/protocol/protobuf"
|
||||||
)
|
)
|
||||||
|
@ -81,45 +77,26 @@ func (s *SyncRawMessageHandler) PrepareRawMessage(keyUID string) ([]byte, error)
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
nodeConfig := s.backend.StatusNode().Config()
|
|
||||||
dataDir := nodeConfig.DataDir
|
|
||||||
disabledDataDir := nodeConfig.ShhextConfig.BackupDisabledDataDir
|
|
||||||
defer func() {
|
|
||||||
// restore data dir
|
|
||||||
nodeConfig.DataDir = dataDir
|
|
||||||
nodeConfig.ShhextConfig.BackupDisabledDataDir = disabledDataDir
|
|
||||||
}()
|
|
||||||
nodeConfig.DataDir = strings.Replace(dataDir, nodeConfig.RootDataDir, "", 1)
|
|
||||||
nodeConfig.ShhextConfig.BackupDisabledDataDir = strings.Replace(disabledDataDir, nodeConfig.RootDataDir, "", 1)
|
|
||||||
if syncRawMessage.NodeConfigJsonBytes, err = json.Marshal(nodeConfig); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return proto.Marshal(syncRawMessage)
|
return proto.Marshal(syncRawMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SyncRawMessageHandler) HandleRawMessage(account *multiaccounts.Account, password, keystorePath string, payload []byte) error {
|
func (s *SyncRawMessageHandler) HandleRawMessage(account *multiaccounts.Account, password string, nodeConfig *params.NodeConfig, settingCurrentNetwork string, payload []byte) error {
|
||||||
rawMessages, subAccounts, setting, nodeConfig, err := s.unmarshalSyncRawMessage(payload)
|
rawMessages, subAccounts, setting, err := s.unmarshalSyncRawMessage(payload)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
newKeystoreDir := filepath.Join(keystorePath, account.KeyUID)
|
s.backend.UpdateRootDataDir(nodeConfig.RootDataDir)
|
||||||
|
// because client don't know keyUID before received data, we need help client to update keystore dir
|
||||||
|
newKeystoreDir := filepath.Join(nodeConfig.KeyStoreDir, account.KeyUID)
|
||||||
|
nodeConfig.KeyStoreDir = newKeystoreDir
|
||||||
accountManager := s.backend.AccountManager()
|
accountManager := s.backend.AccountManager()
|
||||||
err = accountManager.InitKeystore(newKeystoreDir)
|
err = accountManager.InitKeystore(filepath.Join(nodeConfig.RootDataDir, newKeystoreDir))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
setting.InstallationID = nodeConfig.ShhextConfig.InstallationID
|
||||||
//TODO root data dir should be passed from client, following is a temporary solution
|
setting.CurrentNetwork = settingCurrentNetwork
|
||||||
nodeConfig.RootDataDir = filepath.Dir(keystorePath)
|
|
||||||
nodeConfig.KeyStoreDir = filepath.Join(filepath.Base(keystorePath), account.KeyUID)
|
|
||||||
installationID := uuid.New().String()
|
|
||||||
nodeConfig.ShhextConfig.InstallationID = installationID
|
|
||||||
setting.InstallationID = installationID
|
|
||||||
|
|
||||||
//TODO we need a better way(e.g. pass from client when doing local pair?) to handle this, following is a temporary solution
|
|
||||||
nodeConfig.LogDir = nodeConfig.RootDataDir
|
|
||||||
nodeConfig.LogFile = "geth.log"
|
|
||||||
|
|
||||||
err = s.backend.StartNodeWithAccountAndInitialConfig(*account, password, *setting, nodeConfig, subAccounts)
|
err = s.backend.StartNodeWithAccountAndInitialConfig(*account, password, *setting, nodeConfig, subAccounts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -133,28 +110,23 @@ func (s *SyncRawMessageHandler) HandleRawMessage(account *multiaccounts.Account,
|
||||||
return messenger.HandleSyncRawMessages(rawMessages)
|
return messenger.HandleSyncRawMessages(rawMessages)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SyncRawMessageHandler) unmarshalSyncRawMessage(payload []byte) ([]*protobuf.RawMessage, []*accounts.Account, *settings.Settings, *params.NodeConfig, error) {
|
func (s *SyncRawMessageHandler) unmarshalSyncRawMessage(payload []byte) ([]*protobuf.RawMessage, []*accounts.Account, *settings.Settings, error) {
|
||||||
var (
|
var (
|
||||||
syncRawMessage protobuf.SyncRawMessage
|
syncRawMessage protobuf.SyncRawMessage
|
||||||
subAccounts []*accounts.Account
|
subAccounts []*accounts.Account
|
||||||
setting *settings.Settings
|
setting *settings.Settings
|
||||||
nodeConfig *params.NodeConfig
|
|
||||||
)
|
)
|
||||||
err := proto.Unmarshal(payload, &syncRawMessage)
|
err := proto.Unmarshal(payload, &syncRawMessage)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, nil, err
|
return nil, nil, nil, err
|
||||||
}
|
}
|
||||||
err = json.Unmarshal(syncRawMessage.SubAccountsJsonBytes, &subAccounts)
|
err = json.Unmarshal(syncRawMessage.SubAccountsJsonBytes, &subAccounts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, nil, err
|
return nil, nil, nil, err
|
||||||
}
|
}
|
||||||
err = json.Unmarshal(syncRawMessage.SettingsJsonBytes, &setting)
|
err = json.Unmarshal(syncRawMessage.SettingsJsonBytes, &setting)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, nil, err
|
return nil, nil, nil, err
|
||||||
}
|
}
|
||||||
err = json.Unmarshal(syncRawMessage.NodeConfigJsonBytes, &nodeConfig)
|
return syncRawMessage.RawMessages, subAccounts, setting, nil
|
||||||
if err != nil {
|
|
||||||
return nil, nil, nil, nil, err
|
|
||||||
}
|
|
||||||
return syncRawMessage.RawMessages, subAccounts, setting, nodeConfig, nil
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,17 +5,15 @@ import (
|
||||||
"crypto/elliptic"
|
"crypto/elliptic"
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/status-im/status-go/api"
|
|
||||||
"github.com/status-im/status-go/server"
|
|
||||||
|
|
||||||
"github.com/gorilla/sessions"
|
"github.com/gorilla/sessions"
|
||||||
|
|
||||||
|
"github.com/status-im/status-go/api"
|
||||||
"github.com/status-im/status-go/logutils"
|
"github.com/status-im/status-go/logutils"
|
||||||
|
"github.com/status-im/status-go/server"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Server struct {
|
type Server struct {
|
||||||
|
@ -61,7 +59,8 @@ func makeCookieStore() (*sessions.CookieStore, error) {
|
||||||
// NewPairingServer returns a *Server init from the given *Config
|
// NewPairingServer returns a *Server init from the given *Config
|
||||||
func NewPairingServer(backend *api.GethStatusBackend, config *Config) (*Server, error) {
|
func NewPairingServer(backend *api.GethStatusBackend, config *Config) (*Server, error) {
|
||||||
logger := logutils.ZapLogger().Named("Server")
|
logger := logutils.ZapLogger().Named("Server")
|
||||||
pm, err := NewAccountPayloadManager(config.EK, config.AccountPayloadManagerConfig, logger)
|
accountPayloadManagerConfig := config.AccountPayloadManagerConfig
|
||||||
|
pm, err := NewAccountPayloadManager(config.EK, accountPayloadManagerConfig, logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -71,7 +70,7 @@ func NewPairingServer(backend *api.GethStatusBackend, config *Config) (*Server,
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
rmpm, err := NewRawMessagePayloadManager(logger, pm.accountPayload, config.EK, backend, config.KeystorePath)
|
rmpm, err := NewRawMessagePayloadManager(logger, pm.accountPayload, config.EK, backend, accountPayloadManagerConfig.GetNodeConfig(), accountPayloadManagerConfig.GetSettingCurrentNetwork())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -89,7 +88,7 @@ func NewPairingServer(backend *api.GethStatusBackend, config *Config) (*Server,
|
||||||
cookieStore: cs,
|
cookieStore: cs,
|
||||||
rawMessagePayloadManager: rmpm,
|
rawMessagePayloadManager: rmpm,
|
||||||
}
|
}
|
||||||
s.SetTimeout(config.Timeout)
|
s.SetTimeout(config.GetTimeout())
|
||||||
|
|
||||||
return s, nil
|
return s, nil
|
||||||
}
|
}
|
||||||
|
@ -189,13 +188,12 @@ func MakeFullPairingServer(backend *api.GethStatusBackend, mode Mode, storeConfi
|
||||||
// StartUpPairingServer generates a Server, starts the pairing server in the correct mode
|
// StartUpPairingServer generates a Server, starts the pairing server in the correct mode
|
||||||
// and returns the ConnectionParams string to allow a Client to make a successful connection.
|
// and returns the ConnectionParams string to allow a Client to make a successful connection.
|
||||||
func StartUpPairingServer(backend *api.GethStatusBackend, mode Mode, configJSON string) (string, error) {
|
func StartUpPairingServer(backend *api.GethStatusBackend, mode Mode, configJSON string) (string, error) {
|
||||||
var conf PayloadSourceConfig
|
conf, err := NewPayloadSourceForServer(configJSON, mode)
|
||||||
err := json.Unmarshal([]byte(configJSON), &conf)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
ps, err := MakeFullPairingServer(backend, mode, &conf)
|
ps, err := MakeFullPairingServer(backend, mode, conf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,6 +74,10 @@ func (s *PairingServerSuite) TestMultiTimeout() {
|
||||||
s.Require().False(s.PS.IsRunning())
|
s.Require().False(s.PS.IsRunning())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func newAccountPayloadManagerConfig() *AccountPayloadManagerConfig {
|
||||||
|
return &AccountPayloadManagerConfig{}
|
||||||
|
}
|
||||||
|
|
||||||
func (s *PairingServerSuite) TestPairingServer_StartPairing() {
|
func (s *PairingServerSuite) TestPairingServer_StartPairing() {
|
||||||
// Replace PairingServer.PayloadManager with a MockEncryptOnlyPayloadManager
|
// Replace PairingServer.PayloadManager with a MockEncryptOnlyPayloadManager
|
||||||
pm, err := NewMockEncryptOnlyPayloadManager(s.EphemeralAES)
|
pm, err := NewMockEncryptOnlyPayloadManager(s.EphemeralAES)
|
||||||
|
@ -101,9 +105,7 @@ func (s *PairingServerSuite) TestPairingServer_StartPairing() {
|
||||||
err = ccp.FromString(qr)
|
err = ccp.FromString(qr)
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
|
|
||||||
c, err := NewPairingClient(nil, ccp, &AccountPayloadManagerConfig{
|
c, err := NewPairingClient(nil, ccp, newAccountPayloadManagerConfig())
|
||||||
PayloadSourceConfig: &PayloadSourceConfig{KeystorePath: ""},
|
|
||||||
})
|
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
|
|
||||||
// Compare cert values
|
// Compare cert values
|
||||||
|
@ -164,9 +166,7 @@ func (s *PairingServerSuite) sendingSetup() *Client {
|
||||||
err = ccp.FromString(qr)
|
err = ccp.FromString(qr)
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
|
|
||||||
c, err := NewPairingClient(nil, ccp, &AccountPayloadManagerConfig{
|
c, err := NewPairingClient(nil, ccp, newAccountPayloadManagerConfig())
|
||||||
PayloadSourceConfig: &PayloadSourceConfig{KeystorePath: ""},
|
|
||||||
})
|
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
|
|
||||||
// Replace PairingClient.PayloadManager with a MockEncryptOnlyPayloadManager
|
// Replace PairingClient.PayloadManager with a MockEncryptOnlyPayloadManager
|
||||||
|
@ -277,9 +277,7 @@ func (s *PairingServerSuite) TestGetOutboundIPWithFullServerE2e() {
|
||||||
err = ccp.FromString(qr)
|
err = ccp.FromString(qr)
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
|
|
||||||
c, err := NewPairingClient(nil, ccp, &AccountPayloadManagerConfig{
|
c, err := NewPairingClient(nil, ccp, newAccountPayloadManagerConfig())
|
||||||
PayloadSourceConfig: &PayloadSourceConfig{KeystorePath: ""},
|
|
||||||
})
|
|
||||||
s.Require().NoError(err)
|
s.Require().NoError(err)
|
||||||
|
|
||||||
thing, err := makeThingToSay()
|
thing, err := makeThingToSay()
|
||||||
|
|
|
@ -3,7 +3,6 @@ package pairing
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -33,6 +32,8 @@ var paths = []string{pathWalletRoot, pathEIP1581, pathDefaultChat, pathDefaultWa
|
||||||
|
|
||||||
const keystoreDir = "keystore"
|
const keystoreDir = "keystore"
|
||||||
|
|
||||||
|
const currentNetwork = "mainnet_rpc"
|
||||||
|
|
||||||
func TestSyncDeviceSuite(t *testing.T) {
|
func TestSyncDeviceSuite(t *testing.T) {
|
||||||
suite.Run(t, new(SyncDeviceSuite))
|
suite.Run(t, new(SyncDeviceSuite))
|
||||||
}
|
}
|
||||||
|
@ -85,7 +86,7 @@ func (s *SyncDeviceSuite) prepareBackendWithAccount(tmpdir string) *api.GethStat
|
||||||
|
|
||||||
account.Name = settings.Name
|
account.Name = settings.Name
|
||||||
|
|
||||||
nodeConfig, err := defaultNodeConfig(tmpdir, settings.InstallationID, account.KeyUID)
|
nodeConfig, err := defaultNodeConfig(settings.InstallationID, account.KeyUID)
|
||||||
require.NoError(s.T(), err)
|
require.NoError(s.T(), err)
|
||||||
|
|
||||||
walletDerivedAccount := derivedAddresses[pathDefaultWallet]
|
walletDerivedAccount := derivedAddresses[pathDefaultWallet]
|
||||||
|
@ -135,9 +136,22 @@ func (s *SyncDeviceSuite) TestPairingSyncDeviceClientAsSender() {
|
||||||
require.NoError(s.T(), err)
|
require.NoError(s.T(), err)
|
||||||
err = serverBackend.OpenAccounts()
|
err = serverBackend.OpenAccounts()
|
||||||
require.NoError(s.T(), err)
|
require.NoError(s.T(), err)
|
||||||
serverKeystorePath := filepath.Join(serverTmpDir, keystoreDir)
|
serverNodeConfig, err := defaultNodeConfig(uuid.New().String(), "")
|
||||||
configJSON := fmt.Sprintf(`{"KeystorePath":"%s"}`, serverKeystorePath)
|
require.NoError(s.T(), err)
|
||||||
cs, err := StartUpPairingServer(serverBackend, Receiving, configJSON)
|
expectedKDFIterations := 1024
|
||||||
|
serverKeystoreDir := filepath.Join(serverTmpDir, keystoreDir)
|
||||||
|
serverPayloadSourceConfig := PayloadSourceConfig{
|
||||||
|
KeystorePath: serverKeystoreDir,
|
||||||
|
PayloadSourceReceiverConfig: &PayloadSourceReceiverConfig{
|
||||||
|
KDFIterations: expectedKDFIterations,
|
||||||
|
NodeConfig: serverNodeConfig,
|
||||||
|
RootDataDir: serverTmpDir,
|
||||||
|
SettingCurrentNetwork: currentNetwork,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
serverConfigBytes, err := json.Marshal(serverPayloadSourceConfig)
|
||||||
|
require.NoError(s.T(), err)
|
||||||
|
cs, err := StartUpPairingServer(serverBackend, Receiving, string(serverConfigBytes))
|
||||||
require.NoError(s.T(), err)
|
require.NoError(s.T(), err)
|
||||||
|
|
||||||
// generate some data for the client
|
// generate some data for the client
|
||||||
|
@ -151,14 +165,16 @@ func (s *SyncDeviceSuite) TestPairingSyncDeviceClientAsSender() {
|
||||||
clientActiveAccount, err := clientBackend.GetActiveAccount()
|
clientActiveAccount, err := clientBackend.GetActiveAccount()
|
||||||
require.NoError(s.T(), err)
|
require.NoError(s.T(), err)
|
||||||
clientKeystorePath := filepath.Join(clientTmpDir, keystoreDir, clientActiveAccount.KeyUID)
|
clientKeystorePath := filepath.Join(clientTmpDir, keystoreDir, clientActiveAccount.KeyUID)
|
||||||
var config = PayloadSourceConfig{
|
clientPayloadSourceConfig := PayloadSourceConfig{
|
||||||
KeystorePath: clientKeystorePath,
|
KeystorePath: clientKeystorePath,
|
||||||
|
PayloadSourceSenderConfig: &PayloadSourceSenderConfig{
|
||||||
KeyUID: clientActiveAccount.KeyUID,
|
KeyUID: clientActiveAccount.KeyUID,
|
||||||
Password: s.password,
|
Password: s.password,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
configBytes, err := json.Marshal(config)
|
clientConfigBytes, err := json.Marshal(clientPayloadSourceConfig)
|
||||||
require.NoError(s.T(), err)
|
require.NoError(s.T(), err)
|
||||||
err = StartUpPairingClient(clientBackend, cs, string(configBytes))
|
err = StartUpPairingClient(clientBackend, cs, string(clientConfigBytes))
|
||||||
require.NoError(s.T(), err)
|
require.NoError(s.T(), err)
|
||||||
require.NoError(s.T(), clientBackend.Logout())
|
require.NoError(s.T(), clientBackend.Logout())
|
||||||
|
|
||||||
|
@ -171,6 +187,7 @@ func (s *SyncDeviceSuite) TestPairingSyncDeviceClientAsSender() {
|
||||||
serverActiveAccount, err := serverBackend.GetActiveAccount()
|
serverActiveAccount, err := serverBackend.GetActiveAccount()
|
||||||
require.NoError(s.T(), err)
|
require.NoError(s.T(), err)
|
||||||
require.Equal(s.T(), serverActiveAccount.Name, clientActiveAccount.Name)
|
require.Equal(s.T(), serverActiveAccount.Name, clientActiveAccount.Name)
|
||||||
|
require.Equal(s.T(), serverActiveAccount.KDFIterations, expectedKDFIterations)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SyncDeviceSuite) TestPairingSyncDeviceClientAsReceiver() {
|
func (s *SyncDeviceSuite) TestPairingSyncDeviceClientAsReceiver() {
|
||||||
|
@ -188,8 +205,10 @@ func (s *SyncDeviceSuite) TestPairingSyncDeviceClientAsReceiver() {
|
||||||
serverKeystorePath := filepath.Join(serverTmpDir, keystoreDir, serverActiveAccount.KeyUID)
|
serverKeystorePath := filepath.Join(serverTmpDir, keystoreDir, serverActiveAccount.KeyUID)
|
||||||
var config = PayloadSourceConfig{
|
var config = PayloadSourceConfig{
|
||||||
KeystorePath: serverKeystorePath,
|
KeystorePath: serverKeystorePath,
|
||||||
|
PayloadSourceSenderConfig: &PayloadSourceSenderConfig{
|
||||||
KeyUID: serverActiveAccount.KeyUID,
|
KeyUID: serverActiveAccount.KeyUID,
|
||||||
Password: s.password,
|
Password: s.password,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
configBytes, err := json.Marshal(config)
|
configBytes, err := json.Marshal(config)
|
||||||
require.NoError(s.T(), err)
|
require.NoError(s.T(), err)
|
||||||
|
@ -208,9 +227,22 @@ func (s *SyncDeviceSuite) TestPairingSyncDeviceClientAsReceiver() {
|
||||||
require.NoError(s.T(), err)
|
require.NoError(s.T(), err)
|
||||||
err = clientBackend.OpenAccounts()
|
err = clientBackend.OpenAccounts()
|
||||||
require.NoError(s.T(), err)
|
require.NoError(s.T(), err)
|
||||||
clientKeystorePath := filepath.Join(clientTmpDir, keystoreDir)
|
clientNodeConfig, err := defaultNodeConfig(uuid.New().String(), "")
|
||||||
configJSON := fmt.Sprintf(`{"KeystorePath":"%s"}`, clientKeystorePath)
|
require.NoError(s.T(), err)
|
||||||
err = StartUpPairingClient(clientBackend, cs, configJSON)
|
expectedKDFIterations := 2048
|
||||||
|
clientKeystoreDir := filepath.Join(clientTmpDir, keystoreDir)
|
||||||
|
clientPayloadSourceConfig := PayloadSourceConfig{
|
||||||
|
KeystorePath: clientKeystoreDir,
|
||||||
|
PayloadSourceReceiverConfig: &PayloadSourceReceiverConfig{
|
||||||
|
KDFIterations: expectedKDFIterations,
|
||||||
|
NodeConfig: clientNodeConfig,
|
||||||
|
RootDataDir: clientTmpDir,
|
||||||
|
SettingCurrentNetwork: currentNetwork,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
clientConfigBytes, err := json.Marshal(clientPayloadSourceConfig)
|
||||||
|
require.NoError(s.T(), err)
|
||||||
|
err = StartUpPairingClient(clientBackend, cs, string(clientConfigBytes))
|
||||||
require.NoError(s.T(), err)
|
require.NoError(s.T(), err)
|
||||||
|
|
||||||
require.NoError(s.T(), serverBackend.Logout())
|
require.NoError(s.T(), serverBackend.Logout())
|
||||||
|
@ -224,6 +256,7 @@ func (s *SyncDeviceSuite) TestPairingSyncDeviceClientAsReceiver() {
|
||||||
clientActiveAccount, err := clientBackend.GetActiveAccount()
|
clientActiveAccount, err := clientBackend.GetActiveAccount()
|
||||||
require.NoError(s.T(), err)
|
require.NoError(s.T(), err)
|
||||||
require.Equal(s.T(), serverActiveAccount.Name, clientActiveAccount.Name)
|
require.Equal(s.T(), serverActiveAccount.Name, clientActiveAccount.Name)
|
||||||
|
require.Equal(s.T(), clientActiveAccount.KDFIterations, expectedKDFIterations)
|
||||||
}
|
}
|
||||||
|
|
||||||
func defaultSettings(generatedAccountInfo generator.GeneratedAccountInfo, derivedAddresses map[string]generator.AccountInfo, mnemonic *string) (*settings.Settings, error) {
|
func defaultSettings(generatedAccountInfo generator.GeneratedAccountInfo, derivedAddresses map[string]generator.AccountInfo, mnemonic *string) (*settings.Settings, error) {
|
||||||
|
@ -273,18 +306,18 @@ func defaultSettings(generatedAccountInfo generator.GeneratedAccountInfo, derive
|
||||||
}
|
}
|
||||||
networkRawMessage := json.RawMessage(networksJSON)
|
networkRawMessage := json.RawMessage(networksJSON)
|
||||||
settings.Networks = &networkRawMessage
|
settings.Networks = &networkRawMessage
|
||||||
settings.CurrentNetwork = "mainnet_rpc"
|
settings.CurrentNetwork = currentNetwork
|
||||||
|
|
||||||
return settings, nil
|
return settings, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func defaultNodeConfig(tmpdir, installationID, keyUID string) (*params.NodeConfig, error) {
|
func defaultNodeConfig(installationID, keyUID string) (*params.NodeConfig, error) {
|
||||||
// Set mainnet
|
// Set mainnet
|
||||||
nodeConfig := ¶ms.NodeConfig{}
|
nodeConfig := ¶ms.NodeConfig{}
|
||||||
nodeConfig.NetworkID = 1
|
nodeConfig.NetworkID = 1
|
||||||
nodeConfig.LogLevel = "ERROR"
|
nodeConfig.LogLevel = "ERROR"
|
||||||
nodeConfig.DataDir = filepath.Join(tmpdir, "ethereum/mainnet_rpc")
|
nodeConfig.DataDir = filepath.Join("ethereum/mainnet_rpc")
|
||||||
nodeConfig.KeyStoreDir = filepath.Join(tmpdir, keystoreDir, keyUID)
|
nodeConfig.KeyStoreDir = filepath.Join(keystoreDir, keyUID)
|
||||||
nodeConfig.UpstreamConfig = params.UpstreamRPCConfig{
|
nodeConfig.UpstreamConfig = params.UpstreamRPCConfig{
|
||||||
Enabled: true,
|
Enabled: true,
|
||||||
URL: "https://mainnet.infura.io/v3/800c641949d64d768a5070a1b0511938",
|
URL: "https://mainnet.infura.io/v3/800c641949d64d768a5070a1b0511938",
|
||||||
|
|
Loading…
Reference in New Issue