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