diff --git a/api/authenticatedChannel.go b/api/authenticatedChannel.go index 0debb583f3496b945f3601118a5940d69683a3bd..0af89ff00d7f87f5590d55f4b2dfcd2788d013d0 100644 --- a/api/authenticatedChannel.go +++ b/api/authenticatedChannel.go @@ -12,7 +12,7 @@ import ( jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/auth" "gitlab.com/elixxir/client/interfaces" - "gitlab.com/elixxir/client/interfaces/contact" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/primitives/fact" "gitlab.com/xx_network/primitives/id" ) diff --git a/auth/callback.go b/auth/callback.go index 362efcaade20a3ed5e00d0b44c6847855c6471fa..ef21512f88a06c19322c03518bc262d7d2e94ebe 100644 --- a/auth/callback.go +++ b/auth/callback.go @@ -11,10 +11,10 @@ import ( "github.com/pkg/errors" jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/interfaces" - "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/interfaces/message" "gitlab.com/elixxir/client/stoppable" "gitlab.com/elixxir/client/storage/auth" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/crypto/cyclic" "gitlab.com/elixxir/crypto/diffieHellman" cAuth "gitlab.com/elixxir/crypto/e2e/auth" diff --git a/auth/confirm.go b/auth/confirm.go index d1b88bf99d9a1fe2871850b5d7c810ea39f7f6a6..fee1433a2c22b7323cb5c1ce9d1ea57c6108c9a4 100644 --- a/auth/confirm.go +++ b/auth/confirm.go @@ -11,11 +11,11 @@ import ( "github.com/pkg/errors" jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/interfaces" - "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/interfaces/params" "gitlab.com/elixxir/client/interfaces/utility" "gitlab.com/elixxir/client/storage" ds "gitlab.com/elixxir/comms/network/dataStructures" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/crypto/diffieHellman" cAuth "gitlab.com/elixxir/crypto/e2e/auth" "gitlab.com/elixxir/primitives/format" diff --git a/auth/request.go b/auth/request.go index be8f08d23532b67e74575f8eb45368ad66c467d7..7c963123b49dd532734871c687277a318887093d 100644 --- a/auth/request.go +++ b/auth/request.go @@ -11,13 +11,13 @@ import ( "github.com/pkg/errors" jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/interfaces" - "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/interfaces/params" "gitlab.com/elixxir/client/interfaces/utility" "gitlab.com/elixxir/client/storage" "gitlab.com/elixxir/client/storage/auth" "gitlab.com/elixxir/client/storage/e2e" ds "gitlab.com/elixxir/comms/network/dataStructures" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/crypto/diffieHellman" cAuth "gitlab.com/elixxir/crypto/e2e/auth" "gitlab.com/elixxir/primitives/format" diff --git a/auth/verify.go b/auth/verify.go index 76850a17dfc6728c10b5c7304e04d7f2437f2545..66a86df6f125bb0abe7c28be4ecbb408603b0a98 100644 --- a/auth/verify.go +++ b/auth/verify.go @@ -8,8 +8,8 @@ package auth import ( - "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/storage" + "gitlab.com/elixxir/crypto/contact" cAuth "gitlab.com/elixxir/crypto/e2e/auth" ) diff --git a/bindings/authenticatedChannels.go b/bindings/authenticatedChannels.go index 70ff0285173740f5ef302e1a678ffe127318a002..28784c87f944bd3d15e43b873194f968dd513971 100644 --- a/bindings/authenticatedChannels.go +++ b/bindings/authenticatedChannels.go @@ -10,7 +10,7 @@ package bindings import ( "errors" "fmt" - "gitlab.com/elixxir/client/interfaces/contact" + "gitlab.com/elixxir/crypto/contact" ) // Create an insecure e2e relationship with a precanned user diff --git a/bindings/client.go b/bindings/client.go index 391aa361c6da731a19d2647d6d3aacd003e70208..34fb521076fca455294824ef3104f1c67445669d 100644 --- a/bindings/client.go +++ b/bindings/client.go @@ -13,10 +13,10 @@ import ( "fmt" jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/api" - "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/interfaces/message" "gitlab.com/elixxir/client/interfaces/params" "gitlab.com/elixxir/comms/mixmessages" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/primitives/states" "gitlab.com/xx_network/primitives/id" "sync" @@ -82,7 +82,7 @@ func Login(storageDir string, password []byte, parameters string) (*Client, erro loginMux.Lock() defer loginMux.Unlock() - if extantClient{ + if extantClient { return nil, errors.New("cannot login when another session " + "already exists") } @@ -96,7 +96,7 @@ func Login(storageDir string, password []byte, parameters string) (*Client, erro if err != nil { return nil, errors.New(fmt.Sprintf("Failed to login: %+v", err)) } - extantClient=true + extantClient = true return &Client{api: *client}, nil } @@ -140,8 +140,8 @@ func LogLevel(level int) error { } //RegisterLogWriter registers a callback on which logs are written. -func RegisterLogWriter(writer LogWriter){ - jww.SetLogOutput(&writerAdapter{lw:writer}) +func RegisterLogWriter(writer LogWriter) { + jww.SetLogOutput(&writerAdapter{lw: writer}) } //Unmarshals a marshaled contact object, returns an error if it fails @@ -225,12 +225,12 @@ func (c *Client) StopNetworkFollower(timeoutMS int) error { // passed timeout. It will return true if the network is healthy func (c *Client) WaitForNetwork(timeoutMS int) bool { start := time.Now() - timeout := time.Duration(timeoutMS)*time.Millisecond - for time.Now().Sub(start)<timeout{ - if c.api.GetHealth().IsHealthy(){ + timeout := time.Duration(timeoutMS) * time.Millisecond + for time.Now().Sub(start) < timeout { + if c.api.GetHealth().IsHealthy() { return true } - time.Sleep(250*time.Millisecond) + time.Sleep(250 * time.Millisecond) } return false } diff --git a/bindings/contact.go b/bindings/contact.go index daa45aa357095fa243c1a8b699198265e027a7f8..47a7a7290e4fec3684523d54312d359643fc3dbb 100644 --- a/bindings/contact.go +++ b/bindings/contact.go @@ -8,7 +8,7 @@ package bindings import ( - "gitlab.com/elixxir/client/interfaces/contact" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/primitives/fact" ) diff --git a/bindings/list.go b/bindings/list.go index 382303a3d6e80bc3002bc38a6bc3fba7a5cce0dd..c44fb1679fc0e6492c7c711e7d610bab01198c78 100644 --- a/bindings/list.go +++ b/bindings/list.go @@ -9,7 +9,7 @@ package bindings import ( "errors" - "gitlab.com/elixxir/client/interfaces/contact" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/primitives/fact" "gitlab.com/xx_network/primitives/id" ) diff --git a/bindings/ud.go b/bindings/ud.go index a4c3cb5babca0236b546e5cb10fc74b10a98f0f3..91a700d3b5e94316418699396dccf2f68ab00d5a 100644 --- a/bindings/ud.go +++ b/bindings/ud.go @@ -9,9 +9,9 @@ package bindings import ( "github.com/pkg/errors" - "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/single" "gitlab.com/elixxir/client/ud" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/primitives/fact" "gitlab.com/xx_network/primitives/id" "time" diff --git a/cmd/getndf.go b/cmd/getndf.go index e794fb4d38b6f3d7e0ca82b2b3a2576afef0d6d6..914412093c8f1247953473c29a02edcd68346235 100644 --- a/cmd/getndf.go +++ b/cmd/getndf.go @@ -13,7 +13,7 @@ import ( "github.com/spf13/cobra" jww "github.com/spf13/jwalterweatherman" "github.com/spf13/viper" - // "gitlab.com/elixxir/client/interfaces/contact" + // "gitlab.com/elixxir/crypto/contact" // "gitlab.com/elixxir/client/interfaces/message" // "gitlab.com/elixxir/client/switchboard" // "gitlab.com/elixxir/client/ud" diff --git a/cmd/root.go b/cmd/root.go index 4078f628d38d6b6aee00d72bb18cfb36dfea2595..c6ea6c91425d2cf96f532287dfcbfdc387fc7639 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -17,10 +17,10 @@ import ( jww "github.com/spf13/jwalterweatherman" "github.com/spf13/viper" "gitlab.com/elixxir/client/api" - "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/interfaces/message" "gitlab.com/elixxir/client/interfaces/params" "gitlab.com/elixxir/client/switchboard" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/xx_network/primitives/id" "io/ioutil" "os" diff --git a/cmd/single.go b/cmd/single.go index 13a61c79a8a3318ccd09d70997b43ca19c0f30ef..7fe8e2038ef34240bd2ee363e6f38d8d94d26ed9 100644 --- a/cmd/single.go +++ b/cmd/single.go @@ -14,10 +14,10 @@ import ( "github.com/spf13/cobra" jww "github.com/spf13/jwalterweatherman" "github.com/spf13/viper" - "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/interfaces/message" "gitlab.com/elixxir/client/single" "gitlab.com/elixxir/client/switchboard" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/xx_network/primitives/utils" "time" ) diff --git a/cmd/ud.go b/cmd/ud.go index fb9603dd52b18eb096bd3699c87b398dbcc8a7a5..ccefe891a4e87c2053ec62fd95e835115aa21a45 100644 --- a/cmd/ud.go +++ b/cmd/ud.go @@ -13,11 +13,11 @@ import ( "github.com/spf13/cobra" jww "github.com/spf13/jwalterweatherman" "github.com/spf13/viper" - "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/interfaces/message" "gitlab.com/elixxir/client/single" "gitlab.com/elixxir/client/switchboard" "gitlab.com/elixxir/client/ud" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/primitives/fact" "time" ) diff --git a/go.mod b/go.mod index cf0474f9bb8f46c19e7871eda16b6b4091fbab6e..a2fc35a1ab8c0ad2d16566e13f94743a29491e22 100644 --- a/go.mod +++ b/go.mod @@ -3,16 +3,13 @@ module gitlab.com/elixxir/client go 1.13 require ( - github.com/aws/aws-lambda-go v1.8.1 // indirect github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 github.com/golang/protobuf v1.4.3 github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect - github.com/liyue201/goqr v0.0.0-20200803022322-df443203d4ea github.com/magiconair/properties v1.8.4 // indirect github.com/mitchellh/mapstructure v1.4.0 // indirect github.com/pelletier/go-toml v1.8.1 // indirect github.com/pkg/errors v0.9.1 - github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e github.com/smartystreets/assertions v1.0.1 // indirect github.com/spf13/afero v1.5.1 // indirect github.com/spf13/cast v1.3.1 // indirect @@ -21,7 +18,7 @@ require ( github.com/spf13/viper v1.7.1 gitlab.com/elixxir/bloomfilter v0.0.0-20200930191214-10e9ac31b228 gitlab.com/elixxir/comms v0.0.4-0.20210409192302-249b5af3dbc8 - gitlab.com/elixxir/crypto v0.0.7-0.20210409192145-eab67f2f8931 + gitlab.com/elixxir/crypto v0.0.7-0.20210412231025-6f75c577f803 gitlab.com/elixxir/ekv v0.1.5 gitlab.com/elixxir/primitives v0.0.3-0.20210409190923-7bf3cd8d97e7 gitlab.com/xx_network/comms v0.0.4-0.20210406210737-45d1e87d294a diff --git a/go.sum b/go.sum index ef0412035b9754434e8c4974338bda8ac183267d..56d8aa511eb8e7a7746598374e1f42ca1ca7557d 100644 --- a/go.sum +++ b/go.sum @@ -19,7 +19,6 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aws/aws-lambda-go v1.8.1/go.mod h1:zUsUQhAUjYzR8AuduJPCfhBuKWUaDbQiPOG+ouzmE1A= github.com/badoux/checkmail v1.2.1 h1:TzwYx5pnsV6anJweMx2auXdekBwGr/yt1GgalIx9nBQ= github.com/badoux/checkmail v1.2.1/go.mod h1:XroCOBU5zzZJcLvgwU15I+2xXyCdTWXyR9MGfRhBYy0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -254,42 +253,20 @@ github.com/zeebo/pcg v1.0.0 h1:dt+dx+HvX8g7Un32rY9XWoYnd0NmKmrIzpHF7qiTDj0= github.com/zeebo/pcg v1.0.0/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4= gitlab.com/elixxir/bloomfilter v0.0.0-20200930191214-10e9ac31b228 h1:Gi6rj4mAlK0BJIk1HIzBVMjWNjIUfstrsXC2VqLYPcA= gitlab.com/elixxir/bloomfilter v0.0.0-20200930191214-10e9ac31b228/go.mod h1:H6jztdm0k+wEV2QGK/KYA+MY9nj9Zzatux/qIvDDv3k= -gitlab.com/elixxir/comms v0.0.4-0.20210402183711-0350710740e7 h1:JfR2UVZDqAIQeicHq7ZIPuJyPzkcr59OT5uGz4XyFiI= -gitlab.com/elixxir/comms v0.0.4-0.20210402183711-0350710740e7/go.mod h1:3ikLStVfz4wUMgzL/WkDE9umkeizAKMlO5GQcnDmH5c= -gitlab.com/elixxir/comms v0.0.4-0.20210402205438-eca60a717c47 h1:w0SarO3yraN81dZJan7lDz6OjexoqP52kRAdlnfCr4o= -gitlab.com/elixxir/comms v0.0.4-0.20210402205438-eca60a717c47/go.mod h1:Hd9NbUwdRXFcs5ZgukPYsChmM8AqxJRjzMNvQuUXqh4= -gitlab.com/elixxir/comms v0.0.4-0.20210402205854-0ea056917a98 h1:6GF+txzdbf5EKZKXcwfHagH7G+vmDmMjQZAoMSsHXm4= -gitlab.com/elixxir/comms v0.0.4-0.20210402205854-0ea056917a98/go.mod h1:Hd9NbUwdRXFcs5ZgukPYsChmM8AqxJRjzMNvQuUXqh4= -gitlab.com/elixxir/comms v0.0.4-0.20210402222700-7fac5f85c596 h1:jX6H4vu//StDLKZn5lcmxp9S3IhzS/8Uttg0K5r7Iqo= -gitlab.com/elixxir/comms v0.0.4-0.20210402222700-7fac5f85c596/go.mod h1:jqqUYnsftpfQXJ57BPYp5A+i7qfA5IXhKUE9ZOSrqaE= -gitlab.com/elixxir/comms v0.0.4-0.20210405224735-cff3ab4d7d66 h1:i9fg2U9pdiJZkKhT7FEipABtN75SjtjJs8S+z4xw40k= -gitlab.com/elixxir/comms v0.0.4-0.20210405224735-cff3ab4d7d66/go.mod h1:f2LlGnYbYW4VF8h/YVhcZNN5odPbCZO0vQeDIKbo8pM= -gitlab.com/elixxir/comms v0.0.4-0.20210407162937-a2d7ebd9cacd h1:g14XDx0fcLld8cbiACaKjW2ijvRjXOUqCoAh9P/YT6I= -gitlab.com/elixxir/comms v0.0.4-0.20210407162937-a2d7ebd9cacd/go.mod h1:W9t2gIAjfRvzlB++k/suuLUHEfvj41Ezq68BKo7FJ40= -gitlab.com/elixxir/comms v0.0.4-0.20210409164117-ce218393248a h1:exiQEBz1xjFglfwApHLGTTFsv0Av7uRU4l0u/cm/Zow= -gitlab.com/elixxir/comms v0.0.4-0.20210409164117-ce218393248a/go.mod h1:gHx+JiC7RSRMd1eLb3Tgj2Iz7j5UD2U8Sy2a5NvfJLQ= -gitlab.com/elixxir/comms v0.0.4-0.20210409190025-e999b1f81f67 h1:8o/6L66J8SbaqWr7Lm/TMgcTY/ZgEAhhcmJvl/iLNfs= -gitlab.com/elixxir/comms v0.0.4-0.20210409190025-e999b1f81f67/go.mod h1:ZKlb3ClKMEA7mpT24dk+1aRjs4cbY4besFi8I9T/pUk= gitlab.com/elixxir/comms v0.0.4-0.20210409192302-249b5af3dbc8 h1:k9BLWNw7CHwH4H3gNWA0Q/BXNg7923AFflWJtYZr5z4= gitlab.com/elixxir/comms v0.0.4-0.20210409192302-249b5af3dbc8/go.mod h1:/y5QIivolXMa6TO+ZqFWAV49wxlXXxUCqZH9Zi82kXU= gitlab.com/elixxir/crypto v0.0.0-20200804182833-984246dea2c4 h1:28ftZDeYEko7xptCZzeFWS1Iam95dj46TWFVVlKmw6A= gitlab.com/elixxir/crypto v0.0.0-20200804182833-984246dea2c4/go.mod h1:ucm9SFKJo+K0N2GwRRpaNr+tKXMIOVWzmyUD0SbOu2c= gitlab.com/elixxir/crypto v0.0.3 h1:znCt/x2bL4y8czTPaaFkwzdgSgW3BJc/1+dxyf1jqVw= gitlab.com/elixxir/crypto v0.0.3/go.mod h1:ZNgBOblhYToR4m8tj4cMvJ9UsJAUKq+p0gCp07WQmhA= -gitlab.com/elixxir/crypto v0.0.7-0.20210401210040-b7f1da24ef13 h1:x6oSLhgzhBcXeItHQ7OlDNoyvebgyNdGCaywAP/IkMc= -gitlab.com/elixxir/crypto v0.0.7-0.20210401210040-b7f1da24ef13/go.mod h1:5k+LGynIQa42jZ/UbNVwBiZGHKvLXbXXkqyuTY6uHs0= -gitlab.com/elixxir/crypto v0.0.7-0.20210405224356-e2748985102a h1:r2k2zjIX89vYjBFwu6AVOLQQvvs47mxubW726PttL6g= -gitlab.com/elixxir/crypto v0.0.7-0.20210405224356-e2748985102a/go.mod h1:bNreAI0RMzHToO7uAiYNcrAFfF4tf7NzoKo2wE6FwVM= -gitlab.com/elixxir/crypto v0.0.7-0.20210407162800-3e6c0c204107 h1:9zR58jujCynJy6LCdtugEy32LATl1A6QMZ0eNK+8Bqs= -gitlab.com/elixxir/crypto v0.0.7-0.20210407162800-3e6c0c204107/go.mod h1:cwPJWsRNOMMp1pTCuEzKJA4gUuwoBwKoDMLKDo5U9J0= -gitlab.com/elixxir/crypto v0.0.7-0.20210409164001-5cb03c4d99b4 h1:ey4PVwIYbTrhdOgzC0NnDGf3tlxsh7kCYug/E6OpHrQ= -gitlab.com/elixxir/crypto v0.0.7-0.20210409164001-5cb03c4d99b4/go.mod h1:0uL6HPmRlxuTm2NEosDfHGmJV3ybQ/5Li8pQ5x3QkU8= -gitlab.com/elixxir/crypto v0.0.7-0.20210409185910-0d4cea833616 h1:uuhfWgnM9b3ooqj0m12XlbgvGTF24qZiQKrOuiyLDLs= -gitlab.com/elixxir/crypto v0.0.7-0.20210409185910-0d4cea833616/go.mod h1:EQcmID0funFIQXjRi5GR5HSp1fpg9WfLsQ0h2dyJrs4= gitlab.com/elixxir/crypto v0.0.7-0.20210409192145-eab67f2f8931 h1:kY/qBfjrZTFHJnvM1IcxB03+ZQL4+ESUjV4I4kCxoE8= gitlab.com/elixxir/crypto v0.0.7-0.20210409192145-eab67f2f8931/go.mod h1:ZktO3MT3oNo+g2Nq0GuC3ebJWJphh7t5KwwDDGBegnY= -gitlab.com/elixxir/ekv v0.1.4 h1:NLVMwsFEKArWcsDHu2DbXlm9374iSgn7oIA3rVSsvjc= -gitlab.com/elixxir/ekv v0.1.4/go.mod h1:e6WPUt97taFZe5PFLPb1Dupk7tqmDCTQu1kkstqJvw4= +gitlab.com/elixxir/crypto v0.0.7-0.20210412193049-f3718fa4facb h1:9CT5f+nV4sisutLx8Z3BAEiqjktcCL2ZpEqcpmgzyqA= +gitlab.com/elixxir/crypto v0.0.7-0.20210412193049-f3718fa4facb/go.mod h1:ZktO3MT3oNo+g2Nq0GuC3ebJWJphh7t5KwwDDGBegnY= +gitlab.com/elixxir/crypto v0.0.7-0.20210412195114-be927031747a h1:DSYIXSCWrwkyHUs2fJMliI4+Bd9h+WA5PXI78uvhCj4= +gitlab.com/elixxir/crypto v0.0.7-0.20210412195114-be927031747a/go.mod h1:HMMRBuv/yMqB5c31G9OPlOAifOOqGypCyD5v6py+4vo= +gitlab.com/elixxir/crypto v0.0.7-0.20210412231025-6f75c577f803 h1:8sLODlAYRT0Y9NA+uoMoF1qBrBRrW5TikyKAOvyCd+E= +gitlab.com/elixxir/crypto v0.0.7-0.20210412231025-6f75c577f803/go.mod h1:HMMRBuv/yMqB5c31G9OPlOAifOOqGypCyD5v6py+4vo= gitlab.com/elixxir/ekv v0.1.5 h1:R8M1PA5zRU1HVnTyrtwybdABh7gUJSCvt1JZwUSeTzk= gitlab.com/elixxir/ekv v0.1.5/go.mod h1:e6WPUt97taFZe5PFLPb1Dupk7tqmDCTQu1kkstqJvw4= gitlab.com/elixxir/primitives v0.0.0-20200731184040-494269b53b4d/go.mod h1:OQgUZq7SjnE0b+8+iIAT2eqQF+2IFHn73tOo+aV11mg= @@ -297,32 +274,14 @@ gitlab.com/elixxir/primitives v0.0.0-20200804170709-a1896d262cd9/go.mod h1:p0Vel gitlab.com/elixxir/primitives v0.0.0-20200804182913-788f47bded40/go.mod h1:tzdFFvb1ESmuTCOl1z6+yf6oAICDxH2NPUemVgoNLxc= gitlab.com/elixxir/primitives v0.0.1 h1:q61anawANlNAExfkeQEE1NCsNih6vNV1FFLoUQX6txQ= gitlab.com/elixxir/primitives v0.0.1/go.mod h1:kNp47yPqja2lHSiS4DddTvFpB/4D9dB2YKnw5c+LJCE= -gitlab.com/elixxir/primitives v0.0.3-0.20210401175645-9b7b92f74ec4 h1:PFrOIpax1IMXS7jVGFhOF3bSOWh3IWhNUD18n1DzSZM= -gitlab.com/elixxir/primitives v0.0.3-0.20210401175645-9b7b92f74ec4/go.mod h1:9qqDucNbLP9ArL1VKCXQuqYrcAbJIUcI8uzbP7NmKDw= -gitlab.com/elixxir/primitives v0.0.3-0.20210405224302-03092a268566 h1:Wu7AXDWlqLu9yFzZ/ovHUaWIUOPi1v26b2QHmNC1bfY= -gitlab.com/elixxir/primitives v0.0.3-0.20210405224302-03092a268566/go.mod h1:MkG5S32UvI6/ZcTLQxFpvEAnCshR6MNG8d8gUrvKC7g= -gitlab.com/elixxir/primitives v0.0.3-0.20210406002149-ae7bd4896baf h1:1SPT7Z/9IwDQ+CkdpLPP9QyIX7KFtvgVw7/gxLbWzak= -gitlab.com/elixxir/primitives v0.0.3-0.20210406002149-ae7bd4896baf/go.mod h1:MkG5S32UvI6/ZcTLQxFpvEAnCshR6MNG8d8gUrvKC7g= -gitlab.com/elixxir/primitives v0.0.3-0.20210409005800-dcf8c07295b7 h1:X1nhxyige7V/n1Hf3Ggt6AZB7vd9xK9vA7nVybM92Lk= -gitlab.com/elixxir/primitives v0.0.3-0.20210409005800-dcf8c07295b7/go.mod h1:MkG5S32UvI6/ZcTLQxFpvEAnCshR6MNG8d8gUrvKC7g= -gitlab.com/elixxir/primitives v0.0.3-0.20210409163616-5e22bc27ea48 h1:regx/2XFZODFTmWCnufnhQ6j1KYjHtvC3pc+PvuHfvg= -gitlab.com/elixxir/primitives v0.0.3-0.20210409163616-5e22bc27ea48/go.mod h1:MkG5S32UvI6/ZcTLQxFpvEAnCshR6MNG8d8gUrvKC7g= -gitlab.com/elixxir/primitives v0.0.3-0.20210409183455-a45e87dbea39 h1:dhf2VwmAn0U/4EFb1CnS+b3HKwbV5ZR7m9miZ/y0vLA= -gitlab.com/elixxir/primitives v0.0.3-0.20210409183455-a45e87dbea39/go.mod h1:MkG5S32UvI6/ZcTLQxFpvEAnCshR6MNG8d8gUrvKC7g= gitlab.com/elixxir/primitives v0.0.3-0.20210409190923-7bf3cd8d97e7 h1:q3cw7WVtD6hDqTi8ydky+yiqJ4RkWp/hkTSNirr9Z6Y= gitlab.com/elixxir/primitives v0.0.3-0.20210409190923-7bf3cd8d97e7/go.mod h1:h0QHrjrixLNaP24ZXAgDOZXP4eegrQ24BCZPGitg8Jg= gitlab.com/xx_network/comms v0.0.0-20200805174823-841427dd5023/go.mod h1:owEcxTRl7gsoM8c3RQ5KAm5GstxrJp5tn+6JfQ4z5Hw= -gitlab.com/xx_network/comms v0.0.4-0.20210401160731-7b8890cdd8ad h1:0E4wnLoOqODo6K2SwVG18y63sns4WLN3x+nSM9SWfiM= -gitlab.com/xx_network/comms v0.0.4-0.20210401160731-7b8890cdd8ad/go.mod h1:inre/Ot0UJkxcfF4Oy4jk2A1MXyicRkPZB9FfnCfKQY= -gitlab.com/xx_network/comms v0.0.4-0.20210405224241-5447394f79d7 h1:PoQJb9ky67US1uB2mscL+bl7o5YxzCq2lptS9RAbkkg= -gitlab.com/xx_network/comms v0.0.4-0.20210405224241-5447394f79d7/go.mod h1:7ciuA+LTE0GC7upviGbyyb2hrpJG9Pnq2cc5oz2N5Ss= gitlab.com/xx_network/comms v0.0.4-0.20210406210737-45d1e87d294a h1:r0mvBjHPBCYEVmhEe6JhLQDc0+dCORf1ejtuZ8IbyKY= gitlab.com/xx_network/comms v0.0.4-0.20210406210737-45d1e87d294a/go.mod h1:7ciuA+LTE0GC7upviGbyyb2hrpJG9Pnq2cc5oz2N5Ss= gitlab.com/xx_network/crypto v0.0.3/go.mod h1:DF2HYvvCw9wkBybXcXAgQMzX+MiGbFPjwt3t17VRqRE= gitlab.com/xx_network/crypto v0.0.4 h1:lpKOL5mTJ2awWMfgBy30oD/UvJVrWZzUimSHlOdZZxo= gitlab.com/xx_network/crypto v0.0.4/go.mod h1:+lcQEy+Th4eswFgQDwT0EXKp4AXrlubxalwQFH5O0Mk= -gitlab.com/xx_network/crypto v0.0.5-0.20210401160648-4f06cace9123 h1:i2PajAamYlacUpAFWqE7g5qtM6Vt/xG9iDfoK1nc2l4= -gitlab.com/xx_network/crypto v0.0.5-0.20210401160648-4f06cace9123/go.mod h1:CWV349I9Nv1zPCIY/f8Ej6yWs7NG0HLTWnm+Jlz7jKc= gitlab.com/xx_network/crypto v0.0.5-0.20210405224157-2b1f387b42c1 h1:4Hrphjtqn3vO8LI872YwVKy5dCFJdD5u0dE4O2QCZqU= gitlab.com/xx_network/crypto v0.0.5-0.20210405224157-2b1f387b42c1/go.mod h1:CUhRpioyLaKIylg+LIyZX1rhOmFaEXQQ6esNycx9dcA= gitlab.com/xx_network/primitives v0.0.0-20200803231956-9b192c57ea7c/go.mod h1:wtdCMr7DPePz9qwctNoAUzZtbOSHSedcK++3Df3psjA= @@ -330,12 +289,6 @@ gitlab.com/xx_network/primitives v0.0.0-20200804183002-f99f7a7284da h1:CCVslUwNC gitlab.com/xx_network/primitives v0.0.0-20200804183002-f99f7a7284da/go.mod h1:OK9xevzWCaPO7b1wiluVJGk7R5ZsuC7pHY5hteZFQug= gitlab.com/xx_network/primitives v0.0.2 h1:r45yKenJ9e7PylI1ZXJ1Es09oYNaYXjxVy9+uYlwo7Y= gitlab.com/xx_network/primitives v0.0.2/go.mod h1:cs0QlFpdMDI6lAo61lDRH2JZz+3aVkHy+QogOB6F/qc= -gitlab.com/xx_network/primitives v0.0.4-0.20210331161816-ed23858bdb93 h1:ZV5ZfSBX7+7moL8pywpCB3HTNXd03tSwMgDA7SDYaFA= -gitlab.com/xx_network/primitives v0.0.4-0.20210331161816-ed23858bdb93/go.mod h1:9imZHvYwNFobxueSvVtHneZLk9wTK7HQTzxPm+zhFhE= -gitlab.com/xx_network/primitives v0.0.4-0.20210402183235-e04f174cf8c4 h1:uPTABEykN9moPQjb427tqVFPcxWbYbiqLZ26iwI8Cws= -gitlab.com/xx_network/primitives v0.0.4-0.20210402183235-e04f174cf8c4/go.mod h1:9imZHvYwNFobxueSvVtHneZLk9wTK7HQTzxPm+zhFhE= -gitlab.com/xx_network/primitives v0.0.4-0.20210402205313-e9b80f75e701 h1:svcqDo2heNLjmUncmgymwRH3lkV5Jy3PdhvLuqmI39o= -gitlab.com/xx_network/primitives v0.0.4-0.20210402205313-e9b80f75e701/go.mod h1:9imZHvYwNFobxueSvVtHneZLk9wTK7HQTzxPm+zhFhE= gitlab.com/xx_network/primitives v0.0.4-0.20210402222416-37c1c4d3fac4 h1:YPYTKF0zQf08y0eQrjQP01C/EWQTypdqawjZPr5c6rc= gitlab.com/xx_network/primitives v0.0.4-0.20210402222416-37c1c4d3fac4/go.mod h1:9imZHvYwNFobxueSvVtHneZLk9wTK7HQTzxPm+zhFhE= gitlab.com/xx_network/ring v0.0.2 h1:TlPjlbFdhtJrwvRgIg4ScdngMTaynx/ByHBRZiXCoL0= @@ -398,8 +351,6 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201029221708-28c70e62bb1d/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b h1:iFwSg7t5GZmB/Q5TjiEAsdoLDrdJRC1RiF2WhuV29Qw= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= diff --git a/interfaces/auth.go b/interfaces/auth.go index 68e18be6fc51bb90a67b082f396582bb79b88625..bb3cae74d0a37f0fda2c34e8ce0623af6f8a789f 100644 --- a/interfaces/auth.go +++ b/interfaces/auth.go @@ -8,7 +8,7 @@ package interfaces import ( - "gitlab.com/elixxir/client/interfaces/contact" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/xx_network/primitives/id" ) diff --git a/interfaces/contact/contact.go b/interfaces/contact/contact.go deleted file mode 100644 index 1edf828319c5b0cb14e9bf5698f6a0fba72e94f4..0000000000000000000000000000000000000000 --- a/interfaces/contact/contact.go +++ /dev/null @@ -1,251 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Copyright © 2020 xx network SEZC // -// // -// Use of this source code is governed by a license that can be found in the // -// LICENSE file // -/////////////////////////////////////////////////////////////////////////////// - -package contact - -import ( - "bytes" - "crypto" - "encoding/base64" - "encoding/binary" - "github.com/pkg/errors" - "github.com/skip2/go-qrcode" - "gitlab.com/elixxir/crypto/cyclic" - "gitlab.com/elixxir/primitives/fact" - "gitlab.com/xx_network/primitives/id" - "strings" -) - -const ( - version = "0" - headTag = "<xxc" - footTag = "xxc>" - openVerTag = "(" - closeVerTag = ")" - sizeLength = 2 - minLength = (sizeLength * 3) + len(headTag) + len(footTag) + id.ArrIDLen - fingerprintLength = 15 -) - -// Contact implements the Contact interface defined in interface/contact.go, -// in go, the structure is meant to be edited directly, the functions are for -// bindings compatibility. -type Contact struct { - ID *id.ID - DhPubKey *cyclic.Int - OwnershipProof []byte - Facts fact.FactList -} - -// Marshal saves the Contact in a compact binary format with base 64 encoding. -// The data has a header and footer that specify the format version and allow -// the data to be recognized in a stream of data. The format has the following -// structure. -// -// +----------------+---------------------------------------------------------------------------------------+--------+ -// | header | contact data | footer | -// +------+---------+----------+----------------+---------+----------+----------+----------------+----------+--------+ -// | Open | | DhPubKey | OwnershipProof | Facts | ID | | | | Close | -// | Tag | Version | size | size | size | | DhPubKey | OwnershipProof | FactList | Tag | -// | | | 2 bytes | 2 bytes | 2 bytes | 33 bytes | | | | | -// +------+---------+----------+----------------+---------+----------+----------+----------------+----------+--------+ -// | string | base 64 encoded | string | -// +----------------+---------------------------------------------------------------------------------------+--------+ -func (c Contact) Marshal() []byte { - var buff bytes.Buffer - b := make([]byte, sizeLength) - - // Write size of DhPubKey - var dhPubKey []byte - if c.DhPubKey != nil { - dhPubKey = c.DhPubKey.BinaryEncode() - binary.PutVarint(b, int64(len(dhPubKey))) - } - buff.Write(b) - - // Write size of OwnershipProof - binary.PutVarint(b, int64(len(c.OwnershipProof))) - buff.Write(b) - - // Write length of Facts - factList := c.Facts.Stringify() - binary.PutVarint(b, int64(len(factList))) - buff.Write(b) - - // Write ID - if c.ID != nil { - buff.Write(c.ID.Marshal()) - } else { - // Handle nil ID - buff.Write(make([]byte, id.ArrIDLen)) - } - - // Write DhPubKey - buff.Write(dhPubKey) - - // Write OwnershipProof - buff.Write(c.OwnershipProof) - - // Write fact list - buff.Write([]byte(factList)) - - // Base 64 encode buffer - encodedBuff := make([]byte, base64.StdEncoding.EncodedLen(buff.Len())) - base64.StdEncoding.Encode(encodedBuff, buff.Bytes()) - - // Add header tag, version number, and footer tag - encodedBuff = append([]byte(headTag+openVerTag+version+closeVerTag), encodedBuff...) - encodedBuff = append(encodedBuff, []byte(footTag)...) - - return encodedBuff -} - -// Unmarshal decodes the byte slice produced by Contact.Marshal into a Contact. -func Unmarshal(b []byte) (Contact, error) { - if len(b) < minLength { - return Contact{}, errors.Errorf("Length of provided buffer (%d) too "+ - "short; length must be at least %d.", - len(b), minLength) - } - - var err error - - // Get data from between the header and footer tags - b, err = getTagContents(b, headTag, footTag) - if err != nil { - return Contact{}, errors.Errorf("data not found: %+v", err) - } - - // Check that the version matches - currentVersion, err := getTagContents(b, openVerTag, closeVerTag) - if string(currentVersion) != version { - return Contact{}, errors.Errorf("found version %s incomptible, "+ - "requires version %s", string(currentVersion), version) - } - - // Strip version number - b = b[len(currentVersion)+len(openVerTag)+len(closeVerTag):] - - // Create new decoder - decoder := base64.NewDecoder(base64.StdEncoding, bytes.NewReader(b)) - - // Create a new buffer from the data found between the open and close tags - var buff bytes.Buffer - _, err = buff.ReadFrom(decoder) - if err != nil { - return Contact{}, errors.Errorf("failed to read from decoder: %+v", err) - } - - // Get size of each field - dhPubKeySize, _ := binary.Varint(buff.Next(sizeLength)) - ownershipProofSize, _ := binary.Varint(buff.Next(sizeLength)) - factsSize, _ := binary.Varint(buff.Next(sizeLength)) - - // Create empty client - c := Contact{DhPubKey: &cyclic.Int{}} - - // Get and unmarshal ID - c.ID, err = id.Unmarshal(buff.Next(id.ArrIDLen)) - if err != nil { - return Contact{}, errors.Errorf("failed to unmarshal Contact ID: %+v", err) - } - - // Handle nil ID - if bytes.Equal(c.ID.Marshal(), make([]byte, id.ArrIDLen)) { - c.ID = nil - } - - // Get and decode DhPubKey - if dhPubKeySize == 0 { - // Handle nil key - c.DhPubKey = nil - } else { - if err = c.DhPubKey.BinaryDecode(buff.Next(int(dhPubKeySize))); err != nil { - return Contact{}, errors.Errorf("failed to binary decode Contact DhPubKey: %+v", err) - } - } - - // Get OwnershipProof - if ownershipProofSize == 0 { - // Handle nil OwnershipProof - c.OwnershipProof = nil - } else { - c.OwnershipProof = buff.Next(int(ownershipProofSize)) - } - - // Get and unstringify fact list - c.Facts, _, err = fact.UnstringifyFactList(string(buff.Next(int(factsSize)))) - if err != nil { - return Contact{}, errors.Errorf("failed to unstringify Contact fact list: %+v", err) - } - - return c, nil -} - -// GetFingerprint creates a 15 character long fingerprint of the contact off of -// the ID and DH public key. -func (c Contact) GetFingerprint() string { - // Generate hash - sha := crypto.SHA256 - h := sha.New() - - // Hash ID and DH public key - h.Write(c.ID.Bytes()) - h.Write(c.DhPubKey.Bytes()) - data := h.Sum(nil) - - // Base64 encode hash and truncate it - return base64.StdEncoding.EncodeToString(data)[:fingerprintLength] -} - -// MakeQR generates a QR code PNG of the Contact. -func (c Contact) MakeQR(size int, level qrcode.RecoveryLevel) ([]byte, error) { - qrCode, err := qrcode.Encode(string(c.Marshal()), level, size) - if err != nil { - return nil, errors.Errorf("failed to encode contact to QR code: %v", err) - } - - return qrCode, nil -} - -func (c Contact) String() string { - return "ID: " + c.ID.String() + - " DhPubKey: " + c.DhPubKey.Text(10) + - " OwnershipProof: " + base64.StdEncoding.EncodeToString(c.OwnershipProof) + - " Facts: " + c.Facts.Stringify() -} - -// Equal determines if the two contacts have the same values. -func Equal(a, b Contact) bool { - return a.ID.Cmp(b.ID) && - a.DhPubKey.Cmp(b.DhPubKey) == 0 && - bytes.Equal(a.OwnershipProof, b.OwnershipProof) && - a.Facts.Stringify() == b.Facts.Stringify() -} - -// getTagContents returns the bytes between the two tags. An error is returned -// if one ore more tags cannot be found or closing tag precedes the opening tag. -func getTagContents(b []byte, openTag, closeTag string) ([]byte, error) { - // Search for opening tag - openIndex := strings.Index(string(b), openTag) - if openIndex < 0 { - return nil, errors.New("missing opening tag") - } - - // Search for closing tag - closeIndex := strings.Index(string(b), closeTag) - if closeIndex < 0 { - return nil, errors.New("missing closing tag") - } - - // Return an error if the closing tag comes first - if openIndex > closeIndex { - return nil, errors.New("tags in wrong order") - } - - return b[openIndex+len(openTag) : closeIndex], nil -} diff --git a/interfaces/contact/contact_test.go b/interfaces/contact/contact_test.go deleted file mode 100644 index 578143c15262ae055b0bb9263f94c5a733c909c9..0000000000000000000000000000000000000000 --- a/interfaces/contact/contact_test.go +++ /dev/null @@ -1,542 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Copyright © 2020 xx network SEZC // -// // -// Use of this source code is governed by a license that can be found in the // -// LICENSE file // -/////////////////////////////////////////////////////////////////////////////// - -package contact - -import ( - "bytes" - "crypto" - "encoding/base64" - "encoding/json" - "fmt" - "github.com/liyue201/goqr" - "github.com/skip2/go-qrcode" - "gitlab.com/elixxir/crypto/cyclic" - "gitlab.com/elixxir/primitives/fact" - "gitlab.com/xx_network/crypto/csprng" - "gitlab.com/xx_network/crypto/large" - "gitlab.com/xx_network/primitives/id" - "image" - "math/rand" - "reflect" - "strings" - "testing" -) - -// Tests marshaling and unmarshalling of a common Contact. -func TestContact_Marshal_Unmarshal(t *testing.T) { - expectedContact := Contact{ - ID: id.NewIdFromUInt(rand.Uint64(), id.User, t), - DhPubKey: getCycInt(256), - Facts: fact.FactList{ - {Fact: "myUsername", T: fact.Username}, - {Fact: "devinputvalidation@elixxir.io", T: fact.Email}, - {Fact: "6502530000US", T: fact.Phone}, - {Fact: "6502530001US", T: fact.Phone}, - }, - } - - buff := expectedContact.Marshal() - - testContact, err := Unmarshal(buff) - if err != nil { - t.Errorf("Unmarshal() produced an error: %+v", err) - } - - if !reflect.DeepEqual(expectedContact, testContact) { - t.Errorf("Unmarshaled Contact does not match expected."+ - "\nexpected: %s\nreceived: %s", expectedContact, testContact) - } -} - -// Tests marshaling and unmarshalling of a Contact with nil fields. -func TestContact_Marshal_Unmarshal_Nil(t *testing.T) { - expectedContact := Contact{} - - buff := expectedContact.Marshal() - - testContact, err := Unmarshal(buff) - if err != nil { - t.Errorf("Unmarshal() produced an error: %+v", err) - } - - if !reflect.DeepEqual(expectedContact, testContact) { - t.Errorf("Unmarshaled Contact does not match expected."+ - "\nexpected: %s\nreceived: %s", expectedContact, testContact) - } -} - -// Consistency test. -func TestUnmarshal_Consistency(t *testing.T) { - prng := rand.New(rand.NewSource(42)) - var contacts []Contact - expectedContact := []string{ - "PHh4YygwKUpBQUFBTHdKcjc5a3NaWi9qRk1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQrNlNkZ01lZnhKWHBBUWh5dEV1ZnU1Y2JWVU5rTW1SVmRDOVliVEF4TWxGd2RHaGxaM2xtYm5jd04zQldjMDEzVGxsVlZFbHBSazVaVVdGNUswSjNiWGRrV1VORU9XZ3dNMWM0UVhKUlpEbFFhMXBMWlVkUU1uQTFkbWQxVms5a1NUWkNOVFUxVEhaWEwycFVUbmsyYUVRM2J6RnFOazFVTHpSak5pdHdWV0paSzNORk9UQmhja0ZVVDB4eFMwaG1SbFkxZWpaTVNHcG9jMHh5TmpaSlJ6UkxibFZTUTB0UmRUQTRhMFI1Y1ZFd1dtRmxSMGxIUm5CbFN6ZFJlbXA0YzFSNmNtNTJSRFJGYkdKV2VFd3JMMkkwVFVWRGFVZzBVVVJoZWxNeVNWZ3lhM04wWjJaaFFVdEZZMGhJUW5nc1ZUVTFZV2w1VTAxdFoyODBja0pYTkRSR01sZFBSVWRHU21sVlpqazRNRkpDUkhSVVFrWm5TUzl4VDA1WVlUSXZkRW92SzBwa1RISkJlWFl5WVRCR1lWTnpWRmxhTlhwcFYxUm1NMGh1YnpGVVVUTk9iVWhRTVcweE1DOXpTR2gxU2xOU2NUTkpNalZNWkZOR2FXdE5PSEkyTUV4RWVXbGplV2hYUkhoeGMwSnVlbkZpYjNZd1lsVnhlWFJIWjBWQmMxZzNTME5FYjJoa1RXMUVlRE53WlVObk9WTm5iV3BpTldKRFExVkdNR0pxTjFVd1BTeFZjR3RaZVdWdllUUnpUVTloT0dNdlUzTTNWVk5IWlhBMVZYcHhMMUpKTUhOU05UQjVXVWhWZW10R2ExVjVUWGRqT0VveWFtNW5ObE51VVVwTGRreDVlR0ZVYkRkMGVsUnVOM2R3ZFVGbVIwWlVaWFJtTlVOVUt6azJkMmhEU2tneGJERTBjRXR4U3pSeFoxSTRXV015ZWswelVISTFlWGR1YjBwcVFVbGFabUUxY21ONWR6RklabHB2SzBoVWFYbG1TRTlEWTNGSFFWZzFLMGxZVTBSQkx6bENkMkpKSzBWalUwOHdXRlUxTVc5WU0ySjVjRFZwT0ZwT05FOVlZa3RIVTNseVZIZG5QVDA3eHhjPg==", - "PHh4YygwKUpBQUFBSkFHOGZaZzl5M2xsdFlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQrNlNkZ01lZnhKWHBBVkdrM0tBcFhrYkRWV0pFUlVaVlZDOVpVWEJ6V2xOMVJ6WnVlWEZFYUhFMWVYTXlXV1kyUTNkeGVHc3lMMUpvVlZsS1QwbDNWWGhLYW1aS2JrTjFTREYwT0U0eFpUaHZUbTVIVVdOMFduazVhQ3R4UXl0b2RsSllhMmczUkdaQk5VZEVVRVJZUVRsQ09YaG1WbTFIYTFWQ1RUQkRZV05UZEhGYWNYWllkVzFWYVZSTFNuQmxUbTFzZW0xTUszTlNjVVJxZUZwcFRISldUVGRxTlc1V1UwdGpSMFIzV2swMmExZFhSalJaVHpkalNrZFRNbmMxYzJwWVEySnVXRTlFZFZwUVIyeEtiVlZYZDNOTkwyb3pRemRDTDBwWlVURXJObmh1VVd0WGIyNVJhbmR3TlVWTWR6UjRkM05zVkd4dFJIZFlOMDRyVW1Nd1lqaE1lamhIYWxKelVUQTRVbnAzUWtKaU5sbFhiR0pyWjB4dFp6SlBhSGcwWmpCbFJUUkxOMXA0TkZaclIwVTBWRWg0TlRoblVqZzlMRlYyV1doaWVraHlXRFJrV1c1cVNqazRhSGtyUlVRMU1sVXlaak4wY25CUVlrcEtWbmhxTVdkTWFrazRjamROWVhGa2MwOTNLMVZwZG5adFJXNXdZeTlXWVRoRllsQkRObTlPTmtoSFlXRm5hVGt5YUdzM1EzSm5lbGR6UFRzPXh4Yz4=", - "PHh4YygwKUpBQUFBS3dDODU0WnRnb0Z6aG9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQrNlNkZ01lZnhKWHBBVmZnL1JqV2xyUEhWUzlrT0doelVsSkZkV3g0Y3pGUU1VNVBVM2xUZEV4SllYbENTVVJSUjB4bWQzZFpObVZ0YUdselVEZDRRbE5yV25keGFEWlRXbFE0U0d0QlpVVmpWMnR1U0RaUGNXVmFaR0pOVVVWYVpqQXhUSGw0UXpkRU1DczVaekl5YkRCQ1VtWmpaR3hMTlRkMk9WSmFWRmR4U0VvNGVqSjRVSFJJTTNKb2RtcG9RazFxUzA1RlJDdElSM1p0T0RCV1NYcDNOVTlZYWpFN3h4Yz4=", - "PHh4YygwKUpBQUFBUGdFeU1mS3Z6bCt6QXdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQrNlNkZ01lZnhKWHBBVFZpTEJjc3ZrS3NWVVU1WVcxemRuSmFRalV4ZERnd1VVWnJRMnh0WlhrMk1FZHJRVUpHTVZaMk5XTjBRVmQ2Um5keVMzbHNlREYxZG1ZemRIYzJSMFpGTURkdlJHRjZjMlpYVURWRFpWWkViakJGT1UxS2RYWm9URGxZYUVrelIxbERTMGxGZFVaSE5tSlFURXRpUldKMGFVSlpkbGhWV0U1MFlVSXlUM1ZtYUdkNkt6TnlabTFLVG5aVlpWUmtjVXRMUlRkNGJXOVhOeXhWYURCT04xRmhZMVU0Y1dkd05HTkpRMFp1VHk5TlRWVk1XalV4VVZadmJGWjVZMGRaUTBveVZqbG5UMWd3Y1RsbWFqaHJVa01yVDNBMFUxaHdVa2xUV0d4M2FsZHhibm80V1hBMlRtdFZabEJNTVNzeWIwWlhVbkUwWVVoUGFEWjBRbUZUYlZwNE1YQlZWbmxFYm1ScGRrOXFjbGhrUVV4R0wxUnhSRzlGV1VseFdXdDZRVU5HYVROVmQyWTVWbEl2VmpGSlJFaDVSV2cwVlVWSmNXeHdXRkpYZVhWclkwVTlPdz09eHhjPg==", - "PHh4YygwKUpBQUFBS3dEUzNZbldLdkN0QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQrNlNkZ01lZnhKWHBBUzNEMVRMS2FGdllWV041YlhSWGN6UXZORmhPUWtGalptdHFPVTR2ZFdaeWFqaE1kRTl0TWpNd1pGTnZkV3RYVkZCQ1psWnZNSE5wWlhCT1dtUmtaMWxQV2tsbFVWZFVTa3gwTVhKaVJrSnZkbVpETDJWbFFrZ3daMk00U1dGcU4wUXlURTR6UVVKTU9VbzJVekpYZDB0MWFGTldkbU15TjJWUWF6TlpWbmxEVm1SaFUwa3hXRkZPVEROS2NGZHNZMDUyZVZwSU9IQllhVTAxV0hVeWN5OHlUblZIZDNwNVJHVmhhRVF2YlZWUWRIbHRLMWQyTUROaE9FRjFaRlE0TVhGNU9YVjZPV3BIVlZWRVYwZHhTMXBaY20xRE1UZHNUMkYwWVRCYU93PT14eGM+", - "PHh4YygwKUpBQUFBS1FIVlN4S1dVd1RWYVlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQrNlNkZ01lZnhKWHBBVHJrVnVlazMydUFWV2xqZVhJNGIwZGtaVlV5WlVWdlREbERia3BWT0dKUFZUbDFjVGhhY1ZwSmRYUXZZbEk1VGxGcGJXczBRelpaVGxndlV6Qk5ibll5VlU5QlZFYzBPVmhrWVRKSGJEWmpNRms0TUc5Q2RXRjFOM1pyY2xod2RpODFRVFpWV25CclVHODJOMEpJYTNBNGRIRTJOMFkzWmlzd2NGVlVNSGczVlM5NE1GYzFkRmRhVm1oc1VsZ3hPVlJvTW10Qk4xRTVOakJtU1RSMWVrNUZRMlZRUWxwS1ZucHdWemxFY1U5SVUwVXpTa2N2UzJKSFRYbFVWVkEwVUhORVZUQjJNV3hDZGpNck4ybElhVkY1VUZsRWJuazBVbVlzVlZFNVNXcEpjSEJPVEVsWWVFeERVMGwyTkdaVE1sTnRaM0JJYld4WE0zUjZOVThyZVZGVlRrOU9kRkpRWmxock5HcGhSMlZZVURaRVNWZE9NVzFEWW1aUFptZDZZVlo1YVV0eFdsSnNWV2xSTEZWMlJIVTNTaTlYT0ZOWWRsZFdSV1JPZVRSWmNYUk9NVzl0TmtKT1JHRTFiMjlKVUZkd1pXZ3dlRUo2YTNKdVlXUXpZbGxvZDFkUmVVOWlNRE5wYVRaU2NXRjZhV1F2VEVGcVdFWk1lV1J1YlV4QlZtbDVhV3gxUlhGa01rWXdWR1IxUTA5dlRIaHRObVpSY0ZOVE1WTlRkUzlqY1hjd056aDFVWEJsTXpJeU9FbGFLeTlOVDNwNVdEWmFiWGxUVW5KRFFqRmtURVpsVHpkM1FVbHpTVEZvYjBwa2EwSlFVWFZ4UTNCSk93PT14eGM+", - "PHh4YygwKUpBQUFBRFFBNmpaL0toMmZwVmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQrNlNkZ01lZnhKWHBBUldmbFZyVnZLTVhWV012YzA1YVNXVTFaa2RyVFcxRVZFTkxRMjAyYlRsVUx6cz14eGM+", - "PHh4YygwKUpBQUFBSWdCdVI0djdFazd5Zk1BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQrNlNkZ01lZnhKWHBBWDcvZDRoSTVEZUtWWEZZY0hKMlMzcHFOM0ZCWWpFeGJFRkVXV1UxWjB4T1ZIZFNXRXgzVjB0dVpVNHlaVzlGU1RGdVZYZG5MMmxIUzFKdEwyTnhaMk05TEZVNE1GaHhia0U5UFRzPXh4Yz4=", - "PHh4YygwKUpBQUFBQUlBcGNGR003NU9TWThBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQrNlNkZ01lZnhKWHBBUXgzeFpkN2VPMmFPdz09eHhjPg==", - "PHh4YygwKUpBQUFBUGdDNkdaSWxBaTIzRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUQrNlNkZ01lZnhKWHBBU012OHNFWE1zTS9WUzlOV2xrNGRUSlVVU3RSSzFod1ZEaHdaVkZKVW5kU2RDdGthVWxCY2pSclJYRkZNRm8zV214V2FUaDVhREJxYTJjNFdIRnRSa1ZxZWtWSmRWUjNQVDBzVldWeWVqTkVlVXRKVFZkelQweHdRa1JVUTNRNGIzTnZUbWxwUVdwS1kyVTBSRXhaTVRaR01qbEplbVJCTVZwT05HOW9TMVpQTTJ0WWVrZzVSakYxZDBKVVVqaE1WMUV4YjNSR1JYcFFRVU5MZVN0VlUwMW1kVUZ1ZVVoTWIwRkJXbFZhU0dwSFRrUjZVMlpQUTBwU00yZFBlbGd4Wm1NNVV6cz14eGM+", - } - - // Generate test contacts - for i := 0; i < 10; i++ { - contacts = append(contacts, Contact{ - ID: id.NewIdFromUInt(prng.Uint64(), id.User, t), - DhPubKey: getGroup().NewInt(prng.Int63()), - Facts: fact.FactList{}, - }) - - for j := 0; j < prng.Intn(5); j++ { - username := make([]byte, prng.Intn(255)) - prng.Read(username) - newFact, err := fact.NewFact(fact.Username, base64.StdEncoding.EncodeToString(username)) - if err != nil { - t.Errorf("Failed to generate new fact (%d %d): %+v", i, j, err) - } - contacts[i].Facts = append(contacts[i].Facts, newFact) - } - - // fmt.Printf("\"%s\",\n", base64.StdEncoding.EncodeToString(contacts[i].Marshal())) - } - - for i, c := range contacts { - contactBase64 := base64.StdEncoding.EncodeToString(c.Marshal()) - if expectedContact[i] != contactBase64 { - t.Errorf("Contacts %d do not match.\nexpected: %s\nreceived: %s", - i, expectedContact[i], contactBase64) - } - } -} - -// Error path: length of buffer is too small. -func TestUnmarshal_LengthError(t *testing.T) { - buff := make([]byte, minLength-1) - - _, err := Unmarshal(buff) - if err == nil || !strings.Contains(err.Error(), "too short") { - t.Errorf("Unmarshal() did not produce the expected error: %+v", err) - } -} - -// Error path: the opening tag is missing. -func TestUnmarshal_OpenTagError(t *testing.T) { - buff := Contact{ - ID: id.NewIdFromUInt(rand.Uint64(), id.User, t), - DhPubKey: getCycInt(256), - Facts: fact.FactList{ - {Fact: "myUsername", T: fact.Username}, - }, - }.Marshal() - - buff = []byte(strings.Replace(string(buff), headTag, "", 1)) - - _, err := Unmarshal(buff) - if err == nil || !strings.Contains(err.Error(), "missing opening tag") { - t.Errorf("Unmarshal() did not produce the expected error: %+v", err) - } -} - -// Error path: the closing tag is missing. -func TestUnmarshal_CloseTagError(t *testing.T) { - buff := Contact{ - ID: id.NewIdFromUInt(rand.Uint64(), id.User, t), - DhPubKey: getCycInt(256), - Facts: fact.FactList{ - {Fact: "myUsername", T: fact.Username}, - }, - }.Marshal() - - buff = []byte(strings.Replace(string(buff), footTag, "", 1)) - - _, err := Unmarshal(buff) - if err == nil || !strings.Contains(err.Error(), "missing closing tag") { - t.Errorf("Unmarshal() did not produce the expected error: %+v", err) - } -} - -// Error path: the version is incorrect. -func TestUnmarshal_IncorrectVersionError(t *testing.T) { - buff := Contact{ - ID: id.NewIdFromUInt(rand.Uint64(), id.User, t), - DhPubKey: getCycInt(256), - Facts: fact.FactList{ - {Fact: "myUsername", T: fact.Username}, - }, - }.Marshal() - - buff = []byte(strings.Replace(string(buff), openVerTag+version+closeVerTag, - openVerTag+version+"0"+closeVerTag, 1)) - - _, err := Unmarshal(buff) - if err == nil || !strings.Contains(err.Error(), "requires version") { - t.Errorf("Unmarshal() did not produce the expected error: %+v", err) - } -} - -// Error path: the version is missing. -func TestUnmarshal_MissingVersionError(t *testing.T) { - buff := Contact{ - ID: id.NewIdFromUInt(rand.Uint64(), id.User, t), - DhPubKey: getCycInt(256), - Facts: fact.FactList{ - {Fact: "myUsername", T: fact.Username}, - }, - }.Marshal() - - buff = []byte(strings.Replace(string(buff), openVerTag+version+closeVerTag, "", 1)) - - _, err := Unmarshal(buff) - if err == nil || !strings.Contains(err.Error(), "requires version") { - t.Errorf("Unmarshal() did not produce the expected error: %+v", err) - } -} - -// Tests the size of marshaling and JSON marshaling of a Contact with a large -// amount of data. -func TestContact_Marshal_Size(t *testing.T) { - expectedContact := Contact{ - ID: id.NewIdFromUInt(rand.Uint64(), id.User, t), - DhPubKey: getCycInt(512), - OwnershipProof: make([]byte, 1024), - Facts: fact.FactList{ - {Fact: "myVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongUsername", T: fact.Username}, - {Fact: "myVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryVeryLongEmail@elixxir.io", T: fact.Email}, - {Fact: "6502530000US", T: fact.Phone}, - }, - } - rand.Read(expectedContact.OwnershipProof) - - buff := expectedContact.Marshal() - - marshalBuff, err := json.Marshal(expectedContact) - if err != nil { - t.Errorf("Marshal() produced an error: %+v", err) - } - - t.Logf("size of buff: %d", len(buff)) - t.Logf("size of marshalBuff: %d", len(marshalBuff)) - t.Logf("ratio: %.2f%%", float32(len(buff))/float32(len(marshalBuff))*100) - t.Logf("%s", marshalBuff) - - if len(marshalBuff) < len(buff) { - t.Errorf("JSON Contact smaller than marshaled contact."+ - "\nJSON: %d\nmarshal: %d", len(marshalBuff), len(buff)) - } -} - -// Unit test of GetFingerprint. -func TestContact_GetFingerprint(t *testing.T) { - c := Contact{ - ID: id.NewIdFromString("Samwise", id.User, t), - DhPubKey: getCycInt(512), - } - - testFP := c.GetFingerprint() - if len(testFP) != fingerprintLength { - t.Errorf("GetFingerprint() returned fingerprint with unexpected length."+ - "\nexpected length: %d\nreceived length: %d", - fingerprintLength, len(testFP)) - } - - // Generate expected fingerprint - h := crypto.SHA256.New() - h.Write(c.ID.Bytes()) - h.Write(c.DhPubKey.Bytes()) - expectedFP := base64.StdEncoding.EncodeToString(h.Sum(nil))[:fingerprintLength] - - if strings.Compare(expectedFP, testFP) != 0 { - t.Errorf("GetFingerprint() returned expected fingerprint."+ - "\nexpected: %s\nreceived: %s", expectedFP, testFP) - } - -} - -// Consistency test for changes in underlying dependencies. -func TestContact_GetFingerprint_Consistency(t *testing.T) { - expected := []string{ - "rBUw1n4jtH4uEYq", "Z/Jm1OUwDaql5cd", "+vHLzY+yH96zAiy", - "cZm5Iz78ViOIlnh", "9LqrcbFEIV4C4LX", "ll4eykGpMWYlxw+", - "6YQshWJhdPL6ajx", "Y6gTPVEzow4IHOm", "6f/rT2vWxDC9tdt", - "rwqbDT+PoeA6Iww", "YN4IFijP/GZ172O", "ScbHVQc2T9SXQ2m", - "50mfbCXQ+LIqiZn", "cyRYdMKXByiFdtC", "7g6ujy7iIbJVl4F", - } - - for i := range expected { - c := Contact{ - ID: id.NewIdFromUInt(uint64(i), id.User, t), - DhPubKey: getGroup().NewInt(25), - } - - fp := c.GetFingerprint() - if expected[i] != fp { - t.Errorf("GetFingerprint() did not output the expected fingerprint (%d)."+ - "\nexpected: %s\nreceived: %s", i, expected[i], fp) - } - } -} - -// Happy path. -func TestContact_MakeQR(t *testing.T) { - c := Contact{ - ID: id.NewIdFromUInt(rand.Uint64(), id.User, t), - DhPubKey: getCycInt(256), - Facts: fact.FactList{ - {Fact: "myUsername", T: fact.Username}, - {Fact: "devinputvalidation@elixxir.io", T: fact.Email}, - {Fact: "6502530000US", T: fact.Phone}, - {Fact: "6502530001US", T: fact.Phone}, - }, - } - qrCode, err := c.MakeQR(512, qrcode.Medium) - if err != nil { - t.Errorf("MakeQR() returned an error: %+v", err) - } - - img, _, err := image.Decode(bytes.NewReader(qrCode)) - if err != nil { - t.Fatalf("Failed to decode image: %+v", err) - } - - qrCodes, err := goqr.Recognize(img) - if err != nil { - t.Fatalf("Failed to recognize QR code: %+v", err) - } - - var qrBytes []byte - for _, qrCode := range qrCodes { - qrBytes = append(qrBytes, qrCode.Payload...) - } - - if !bytes.Equal(c.Marshal(), qrBytes) { - t.Errorf("Generated QR code data does not match expected."+ - "\nexpected: %+v\nreceived: %+v", c.Marshal(), qrBytes) - } -} - -// Consistency test. -func TestContact_String(t *testing.T) { - prng := rand.New(rand.NewSource(42)) - var contacts []Contact - expectedContact := []string{ - "ID: r79ksZZ/jFMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD DhPubKey: 6087471365... in GRP: 6SsQ/HAHUn... OwnershipProof: CcnZND6SugndnVLf15tNdkKbYXoMn58NO6VbDMDWFEyIhTWEGsvgcJsHWAg/YdN1vAK0HfT5GSnhj9qeb4LlTnSOgeeeS71v40zcuoQ+6NY+jE/+HOvqVG2PrBPdGqwEzi6ih3xVec+ix44bC6+uiBuCp1EQikLtPJA8qkNGWnhiBhaX Facts: Uiv79vgwQKIfhANrNLYhfaSy2B9oAoRwccHHnlqLcLcJaW3Sy4SlwXic/BckjJoKOKwVuOBdljhBhSYlH/fNEQQ7UwRYCP6jjV2tv7Sf/iXS6wMr9mtBWkrE2Gec4lk39x56NU0NzZhz9ZtdP7B4biUkatyNuS3UhYpDPK+tCw8onMoVg8arAZ86m6L9G1KsrRoBALF+ygg6IXTJg8d6XgoPUoJo2+WwglBdG4+1NpkaprotPp7T8OiC6+hp17TJ6hriww5rxz9KztRIZ6nlTOr9EjSxHnTJgdTOQWRTIzBzw,UtzTn7wpuAfGFTetf5CT+96whCJH1l14pKqK4qgR8Yc2zM3Pr5ywnoJjAIZfa5rcyw1HfZo+HTiyfHOCcqGAX5+IX;", - "ID: 7vJ2X2idUxcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD DhPubKey: 2332036530... in GRP: 6SsQ/HAHUn... OwnershipProof: SDA/9OY4I0J2WhPWluUt92D2w0ZeKaDcpGrDoNVwEzvCFXH19UpkMQVRP9hCmxlK4bqfKoOGrnKzZh/oLCrGTb9GFRgk4jBTEmN8mcK4fW3w3V7yg2cZBy1nL2H6oL6G9FeSHsN8DkYM8NcD0H3F9WYaRQEzQJpxK2pmq9e6ZSJMoml42aXOYv6xGoOPFmIutUzuPmdVIpwYPBkzqRZYXhg7twkZLbDmyNcJudc4O5k8aUmZRbCwz+PcLsH8lhDX7rGdCRaidCPCnkQvDjHCyVOWYA== Facts: U8F+zAEFvphaVuSAuaDY6HHh/R4TgrtnHhWQYThMfHnyBH72IW8xnNOiTPzyy8l1S+fjHVHrX4dYnjJ98hy+ED50=,UlCvsxqp2w7D5SK++YSelz9VrwRs8Lqg3ocZpqCL3aGTsKuDNa/3fIbEURHS/03zSBrUazgUKthmex7OW1hj94OGimZpvPZ+LergUn3Leulxs1P1NOSyStLIayBIDQGLfwwY6emhisP7xBSkZwqh6SZT8HkAeEcWknH6OqeZdbMQEZf01LyxC7D0+9g22l0BR,UfcdlK64b44QTIyjRA/hxr5vNFSM8OTl49cFw,UiejzJnpD0QYzA209RrgZFq5G/xPWprL62QedbfNEBZApZnsutBpAARdVb+XLQFsxcKyspcdbr397cOhhRNO6A2s7H1j+QnlQ59BPTCbr4S/V4SNxmAiiBLhRumzyymxG7YgWL11FzbWgdjrn4YM/t635iTb1Hk3aiihO8ZqFu4dDe0EDMFo7OGx9NtktIlSZYKcU8qgp4cICFnO/MMULZ51QVolVycGYCJ2V9gOX0q9fj8kRC+Op4SXpRISXlwjWqnz8Yp6NkUfPL1+2oFWRq4aHOh6tBaSmZx0=;", - "ID: NUaggzr9xQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD DhPubKey: 2333463841... in GRP: 6SsQ/HAHUn... OwnershipProof: aVFcg1IDHyEh4UEIqlpXRWyukcFzKa1azmHq6bZS3zMAtMKrWCd22FtoyjLVw3PCZHhYO8SPo2vkjWWcP+FzQQHH5I/Tf7n64/C7Tptt9HUqLpFkzwX1aNLInqTWXXYGDmSHkFkyS7da2xQaL3wv3ngR9IHPCGo+w9izdwAS/SektlsCroUlb3Nu3j5N2FcglXWkiNV0DS9yaVpXDb8mR/KV4jOV7trP9jbhsM8g3moQ/5lD7cpvlr9N2vALnU/Nasvbs/YxlFA1hqimWK5gte5TmrWtGfK6I9ymZ9+mVRNMWUosgGvfpOdW5Fi0i65JDQQuB6NV6Wz7icyr8oGdeU2eEoL9CnJU8bOU9uq8ZqZIut/bR9NQimk4C6YNX/S0Mnv2UOATG49Xda2Gl6c0Y80oBuau7vkrXpv/5A6UZpkPo67BHkp8tq67F7f+0pUT0x7U/w== Facts: U7Q960fI4uzNECePBZJVzpW9DqOHSE3JG/KbGMyTUP4PsDU0v1lBv3+7iHiQyPYDny4RfQ9IjIpqkIRRKJ9u3xEDBx5j5ok0shfEsJIi/h9LZKaCkeaVbe3Pk77JBQ0421E99eTiNoZ5c/oMhY3WYJt85+DNpXKIqplGVSJC83M9mrT1zqOGrn4OHfSY7uyf1vEl71lRHTcuGKrTdaJugTQ2uaKCD1qXodMQc5K52nd22IcFkMjm9N4oukams4nfywI1xS8nZ5iwFYsopbhKndhdE3bgjqC8Zun0KUktUkrv3KsNO/LkKXt9tvCGfvzDs8l+mZsk=;", - "ID: lGGNsAgA744AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD DhPubKey: 3355697978... in GRP: 6SsQ/HAHUn... OwnershipProof: d32mRwa3SFelnx0qfw== Facts: UNuDmAwt8AGm5fGkMmDTCKCm6m9T/qa9YGW93XjDzyTtJ7C8eijfkSIh3/2x+JCUf4VDs58xa+yztemu8rOPuoBvXWUANh7mAs1PBFcvBYqd43Z6gQjWdTCD+IYpGb9yqB/NFyUfloJaiP4lnz0/hKL3qnPzGWPLtsSSSnNzPWI9JTr4zRsGa7Xh7l8V3Df7ehFz1sEDctgiU,USGbDl7Oo40e3k0PkPl6U/KXkCEcEbfnYiAK+JBKhNGe2ZVYvModI5IPF6phRI8xCLk96jOl0B1OPYfZ+ga42GtW89w8iiDFrDi6QQ0wrfKLKDYogIyXHuAy2NehdvSM3QNWTeKISlTt5F8x/RdbsAU0fC1kNaLRRMzwAisvlEjH7gJ8hy6AAGVGR4xjQ80nzgiUd4Ds19X3PUrloJgqUXJGcj7k=;", - "ID: Tpniy8GkRuMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD DhPubKey: 5811638083... in GRP: 6SsQ/HAHUn... OwnershipProof: +436hH1mygRoZHScSATHnMmtZLZ2Bw9hP9+WSKJW3DwiOkvOiRWUK9lrAHMdrZWDfD+v/xpMwQIeW0K7dXiccKP3faU8JeBIuQuqHrARGizMUEcrKECJa840U6mtBJct5H/GZEahdvtaE8Jdy7pWu/Y1Xhsq+GZUMfdHKpZhgWafEB9aVyy0GiAUFyBexvVbintbSsYQjuBFVTHkOGRH9fTJGdxLvuMp8Ei+/A7kCstKbG4QctBDAFCN1fNbLPwGgdnQAZaEWYyCdG1Zk/AB99k9z/INedKtTv1e5OyrKPK5thkEWP42xLd1rK9gwVQjlbaM71aNOWA4Tr2KTqoq6+xmTlY4cNuAPSgOPmJwo7D+A4vILZyDD+hE0lawteli8zEznxPYUpc7KcqgPpAUqIfiAe4BFutxC8au4sJO Facts: ;", - "ID: 1oKcn8YUNmwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD DhPubKey: 3236160443... in GRP: 6SsQ/HAHUn... OwnershipProof: XQ== Facts: ;", - "ID: axTLAX4/+QYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD DhPubKey: 1614413914... in GRP: 6SsQ/HAHUn... OwnershipProof: kET7EBq5eBYhI2vBK/rFKCQZxqb4PUfN5vH1mzwAd3fIAAtw4cDIkCK52xNm0x0FAN2fAkPW6rUP0gFhx0hJw94sUaubeM+WWRCILcf1O8cyCxz0hHL2SzZB39Npj3NM2Q5cA3hMWMAcrvqWoVNZPxQqYFWLMoCUCnrl2NArseYXnTlaw8HM3BUfxAXR9ykcOirumjokeGAv1lx7Zq3/Nor7+NgAzkvg7A== Facts: UvJeHltfAZz4b4IuT+oQigYxDRcFmXIeSJhLevueTpWt1dJvStEJQ8fxvrIP9a5Akudp/q8qRN3ROkECcY8qhZZKBX83ad5hGDxWmCMhmu52G4ZphEv7n3VQk8nl1kw5GEQctlA/8ddAcFCGjwC1Oix/aSZ1w5G/Mv150q6KPqRwakPPsQUNT88axEeSzG7Q3;", - "ID: 8Yxj1sakWu8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD DhPubKey: 2695834924... in GRP: 6SsQ/HAHUn... OwnershipProof: Bueor1WImHOvaWnYzREROrO+15NoXHHkJqxZCTRVQFHmr49s2K1+1o7QoynfRvFoNfdi7Gblzd7rv5fIMh2GwIbkoLsFSzm0XzjvEssVbacG55mYkHQDXf8fw3602l3g8VoU1TsV5r0CW99pCsBtT1gRrBaUdSVHJPjLwXONzIjQZ4Hb8XXRrP9rumYtjB57FlrXFrVdeB5xXutFT0vVGBr/l1P4/CXNcUZEpPBbRmoJaX5SWlfqGwlMwz25Iso0/4OcsBSEGlDOTTE8MH8BYiDseHK+POQUolVYYQ/bJqXlsK1TPBnPDwAmUb3oBYSSNA/s1mNoxAozwKm71rcB/6QIUFrdiSxbhPWEtcvhSbu665AYmk3Qh8dbOqR+lAVnJ0rFlfiEcy1HMYvBiehrQXsL77Gipdj5QEAhFD+Na90HwAFsKBX2N2oPZfNAvBe/wL77U2aUcA6rUPqzatLnvpfTkZgoNRucWlpBUIRuAWdMsZggTFqg4Dy08scD0td+SsKx7bBgs42ROekFcJKcM7bt7YBzWtDdfeQBUfO6AjOE/pmH/9rtGaMPQPCLrMJX0IRFAY7pB3av3sKkXxw411/Sn1JdfBAwzprPX0ZCYRAt62a1 Facts: UqvuMBBw9/qOBX+rjhWrgFRjjutdNVdi4bW4/33JPJ3qimfZueTPThEradJSQt+A58swj0bEQmT/NYorArSzhdwgxbbxXbjZQZymy9IeZMyKOUJu/Z44h0hwzuEhAE8URf/HBT/Ddh1otZUTFHcUISyMCBvjsDPt271DoznXbWrzRYLbpUSl4j/p1+6Er+7E3r9YD1rg1UqSUYB6UuZh1FUKRbffLpeCmEz/SRdf0xLtCYkRK0b8OXQKaa3Snl3euAFxCSQA71dlvckUYW0EcQzi20c2q7pHDI43wmp8QDzMHRdq1DfCKL2WbkMKlv7fmojrx5wxZB/LI+T1X;", - "ID: sij0FdgAF1gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD DhPubKey: 7970589899... in GRP: 6SsQ/HAHUn... OwnershipProof: FjUO2mXwsCqY6ZgTgKuJ21XgF9J4y0t3ReeI6n3PCDjFLFDZfFinZpfsfzaUFiyJghZ4xPJBP3AfeYY/K6YZyMlfObuNWqZuYBWR8kwWAqaDvxBfHWv91y22LfCbudWqQq4rCl7FmmdH4DD8/VClzFjPOMEYY+09uu1aK0G7bkwY5RC8UcZZz/iose+IdDSUDNw18vsSxh78UwDrSGjtgjl7En7PBZAsmBI95xJx6EcHnQtqaiyDKCDqIxz+zlXoxLMPr4MN Facts: ;", - "ID: Qk08ktHpcTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD DhPubKey: 8634899332... in GRP: 6SsQ/HAHUn... OwnershipProof: C2FxLpJ09wxAzji8zUYo4m9mFEz7A4nSdU9b7RS8tHCjLgjIFbDKheupcpUknOdI0KrwXnoueFNfleBMD9Y1n4WMq8EQR+pd9pAQO7qnK/UJ6Uy+oXMYoDZxyAgw5+5t9axCL+qCA1JXg5ydcWcOuFVreKPSB3ph6BOw/BNTRQJz9lELiUf50YXg2X2J67COYcIwATtZdKohq3QWLP7z7h3UuEdLij8pBdolkZ6ep7EQiuDzA6FlybeM2Ol0JLxzAQnNll+i9YyLkMjai7Uh7ehI/Pjwu9SMF2Acx92JKK6TlZD+B9MUUob7K6YslJw88Xo6OwltKwaSMYl2BmBzQNGVVUxGIxoBskxw8ZYDnpnCfbUGRr/7KLeCpztJCRkbIDeIjz573wi2Y/BfsKqS8ghtePl8pAQF9D4y7YWiIVh765ikj9tGf/uQrx54ZgVXLwA4Xf7jBIj6bjbBvtfTydpCPqhdM10v5l8sC9nJaEizIav6X3DsLuuk+mSgbgkXs4Wn/6MdAQ== Facts: UrwVSFzs67yCX7w==,UbjwYBN8R5AFUi/hsSHZEa0+E+Bh1xreC7ne1gd5EKq7TVzpT2jFNI4kQNvARtTB+77qyhhm0wcoYRouuoLfaAYcZXKV7J0P81dcBdEpukTouvkq4Q06/,UB4svYp78zmWbHTU5+ClA/W9R/yCwY+xMQDY5JZUK0s8q/MNPwQmmfrt46F9h1mf3Fu1xegZVg8tItYCbeS3Y0I0ewNQXEv/5d5B11w50EAeCWg+CqVSnkZw8Y5Dl0IS/M9tNAfqGeR0hfk8u4q9DittnhjrJ83moTlT6pYalSgms8FksF+vnoPkFwggVcobndU3WOklKgitR29gd4HgveN2F8jNC3K77YoRlenfgkYCRuQRrFARnUY4z+0UPOxaOjz63jGbGEUoldx2u6IhN1DwcpNlgCLUsV4f/re8XrtozQCDeMA==;", - } - - // Generate test contacts - for i := 0; i < 10; i++ { - contacts = append(contacts, Contact{ - ID: id.NewIdFromUInt(prng.Uint64(), id.User, t), - DhPubKey: getGroup().NewInt(prng.Int63()), - OwnershipProof: make([]byte, prng.Intn(512)), - Facts: fact.FactList{}, - }) - - prng.Read(contacts[i].OwnershipProof) - - for j := 0; j < prng.Intn(5); j++ { - username := make([]byte, prng.Intn(255)) - prng.Read(username) - newFact, err := fact.NewFact(fact.Username, base64.StdEncoding.EncodeToString(username)) - if err != nil { - t.Errorf("Failed to generate new fact (%d %d): %+v", i, j, err) - } - contacts[i].Facts = append(contacts[i].Facts, newFact) - } - - fmt.Printf("\"%s\",\n", contacts[i].String()) - } - - for i, c := range contacts { - if expectedContact[i] != c.String() { - t.Errorf("Contacts %d do not match.\nexpected: %s\nreceived: %s", - i, expectedContact[i], c) - } - } -} - -// Happy path. -func TestEqual(t *testing.T) { - a := Contact{ - ID: id.NewIdFromUInt(rand.Uint64(), id.User, t), - DhPubKey: getCycInt(512), - OwnershipProof: make([]byte, 1024), - Facts: fact.FactList{ - {Fact: "myUsername", T: fact.Username}, - {Fact: "devinputvalidation@elixxir.io", T: fact.Email}, - }, - } - rand.Read(a.OwnershipProof) - b := Contact{ - ID: a.ID, - DhPubKey: a.DhPubKey, - OwnershipProof: a.OwnershipProof, - Facts: a.Facts, - } - c := Contact{ - ID: id.NewIdFromUInt(rand.Uint64(), id.User, t), - DhPubKey: getCycInt(512), - OwnershipProof: make([]byte, 1024), - } - - if !Equal(a, b) { - t.Errorf("Equal reported two equal contacts as different."+ - "\na: %s\nb: %s", a, b) - } - - if Equal(a, c) { - t.Errorf("Equal reported two unequal contacts as the same."+ - "\na: %s\nc: %s", a, c) - } -} - -// Happy path. -func Test_getTagContents(t *testing.T) { - testData := map[string]string{ - "test1": "adawdawd" + headTag + "test1" + footTag + "awdwdawd", - "test2": "adawdawd" + headTag + "test2" + footTag + "awdwdawd" + headTag + "test2" + footTag + "awdwdawd", - } - - for expected, str := range testData { - received, err := getTagContents([]byte(str), headTag, footTag) - if err != nil { - t.Errorf("Failed to get tag contents from string %s", str) - } - - if expected != string(received) { - t.Errorf("Failed to get the expected contents."+ - "\nexpected: %s\nreceived: %s", expected, received) - } - } -} - -// Error path. -func Test_getTagContents_MissingTagsError(t *testing.T) { - testData := []string{ - "adawdawd" + headTag + "test1" + "awdwdawd", - "adawdawd" + footTag + "test2" + headTag + "awdwdawd", - "adawdawd" + headTag + "test3" + "awdwdawd" + headTag + "test3" + "awdwdawd", - } - - for _, str := range testData { - _, err := getTagContents([]byte(str), headTag, footTag) - if err == nil { - t.Errorf("Retrieved tag contents when tags are missing: %s", str) - } - } -} - -func getCycInt(size int) *cyclic.Int { - buff, err := csprng.GenerateInGroup(getGroup().GetPBytes(), size, csprng.NewSystemRNG()) - if err != nil { - panic(err) - } - - cycInt := cyclic.NewGroup(large.NewIntFromBigInt(getGroup().GetP().BigInt()), - large.NewInt(2)).NewIntFromBytes(buff) - - return cycInt -} - -func getGroup() *cyclic.Group { - return cyclic.NewGroup( - large.NewIntFromString("E2EE983D031DC1DB6F1A7A67DF0E9A8E5561DB8E8D4941"+ - "3394C049B7A8ACCEDC298708F121951D9CF920EC5D146727AA4AE535B0922C688"+ - "B55B3DD2AEDF6C01C94764DAB937935AA83BE36E67760713AB44A6337C20E7861"+ - "575E745D31F8B9E9AD8412118C62A3E2E29DF46B0864D0C951C394A5CBBDC6ADC"+ - "718DD2A3E041023DBB5AB23EBB4742DE9C1687B5B34FA48C3521632C4A530E8FF"+ - "B1BC51DADDF453B0B2717C2BC6669ED76B4BDD5C9FF558E88F26E5785302BEDBC"+ - "A23EAC5ACE92096EE8A60642FB61E8F3D24990B8CB12EE448EEF78E184C7242DD"+ - "161C7738F32BF29A841698978825B4111B4BC3E1E198455095958333D776D8B2B"+ - "EEED3A1A1A221A6E37E664A64B83981C46FFDDC1A45E3D5211AAF8BFBC072768C"+ - "4F50D7D7803D2D4F278DE8014A47323631D7E064DE81C0C6BFA43EF0E6998860F"+ - "1390B5D3FEACAF1696015CB79C3F9C2D93D961120CD0E5F12CBB687EAB045241F"+ - "96789C38E89D796138E6319BE62E35D87B1048CA28BE389B575E994DCA7554715"+ - "84A09EC723742DC35873847AEF49F66E43873", 16), - large.NewIntFromString("2", 16)) -} - -// func Test_GenerateContact(t *testing.T) { -// intString := "408f6ed2c7fddc4224df972a305dc7ce974ebf821266cee696cb206d21a3" + -// "1d7c30fbc2d724fb7b16030adb486ac9d89b8b230a3f479f636a0f24fd0465d224608" + -// "cb0a67e5e6682ab14c006330556d10e54447b81acfbd7012a762a95a1c04dd4beb76d" + -// "9f94e712f309ca49b9c566a7545e2c8dea85abd40626a176d371950ccab5442bf5954" + -// "f0f9136d788b1c938e4f4f29927a931e0dc97033ae5d6a8fc9adfbd774aea6230e1d6" + -// "c064c1a995f033d026b050fd955fb1e791d15dd98ee6ff244a5f25c81f753bb82d18c" + -// "e071ce5d79646f306d013d2a86555a0847134173fbf3a9b1eec15934d0af3d0405cac" + -// "fb6425e7d83b20551230f535f87a4ac92c79e615c29571deeeff0d7b7298e1c03b02e" + -// "1bc6e2c56ebea2ec1bffd200358ee52bd330853194632fd5229f08dbcc409b76edb0c" + -// "9c6ed70914aea1be2f0baefff4b4b5578fb1f03b8c49f91498cc4dedf7d51c5c89f9e" + -// "c31d50924ffa972c4e78d3df7649963adfb96cf267f28af15b42a6697635f9c9dc49c" + -// "0ad4b4d45265e8c672643f01b5617a5c35fe24ca1fc92954" -// example := Contact{ -// ID: id.NewIdFromString("MyContactID", id.User, t), -// DhPubKey: getGroup().NewIntFromString(intString, 16), -// Facts: fact.FactList{ -// {Fact: "myUsername", T: fact.Username}, -// {Fact: "devinputvalidation@elixxir.io", T: fact.Email}, -// {Fact: "6502530000US", T: fact.Phone}, -// }, -// } -// -// exampleBase64 := base64.StdEncoding.EncodeToString(example.Marshal()) -// fmt.Printf("%s\n", example.Marshal()) -// fmt.Printf("%s\n", exampleBase64) -// -// err := utils.WriteFile("testContact.bin", example.Marshal(), utils.FilePerms, utils.DirPerms) -// if err != nil { -// t.Errorf("Failed to save contact file: %+v", err) -// } -// -// qrCode, err := example.MakeQR(512, qrcode.Medium) -// if err != nil { -// t.Errorf("Failed to generate QR code: %+v", err) -// } -// -// err = utils.WriteFile("testContactQR.png", qrCode, utils.FilePerms, utils.DirPerms) -// if err != nil { -// t.Errorf("Failed to save contact file: %+v", err) -// } -// -// path := "newContact.bin" -// -// if !utils.FileExists(path) { -// return -// } -// -// newContactData, err := utils.ReadFile(path) -// if err != nil { -// t.Fatalf("Failed to read contact file: %+v", err) -// } -// -// if !bytes.Equal(example.Marshal(), newContactData) { -// t.Errorf("Contact base64 do not match.\nexpected: %s\nreceived: %s", -// example.Marshal(), newContactData) -// } -// -// newContact, err := Unmarshal(newContactData) -// if err != nil { -// t.Errorf("Failed to unmarshal contact: %+v", err) -// } -// -// if !Equal(example, newContact) { -// t.Errorf("Contact files do not match.\nexpected: %s\nreceived: %s", -// example, newContact) -// } -// } diff --git a/interfaces/user/user.go b/interfaces/user/user.go index 1aaea8a31d67d0dd1facb50cbb7170a0055abf92..7d480700e0e1c048b4ac9fcd98edb6fb25112b51 100644 --- a/interfaces/user/user.go +++ b/interfaces/user/user.go @@ -8,7 +8,7 @@ package user import ( - "gitlab.com/elixxir/client/interfaces/contact" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/crypto/cyclic" "gitlab.com/elixxir/primitives/fact" "gitlab.com/xx_network/crypto/signature/rsa" diff --git a/single/manager_test.go b/single/manager_test.go index a9718de7c884b0c7135d676c13672a5d97b78587..5ee50ed606ff203253729aae941e248c224df533 100644 --- a/single/manager_test.go +++ b/single/manager_test.go @@ -12,7 +12,6 @@ import ( "errors" "gitlab.com/elixxir/client/api" "gitlab.com/elixxir/client/interfaces" - contact2 "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/interfaces/message" "gitlab.com/elixxir/client/interfaces/params" "gitlab.com/elixxir/client/stoppable" @@ -21,6 +20,7 @@ import ( "gitlab.com/elixxir/client/storage/versioned" "gitlab.com/elixxir/client/switchboard" "gitlab.com/elixxir/comms/network" + contact2 "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/crypto/e2e" "gitlab.com/elixxir/crypto/e2e/singleUse" "gitlab.com/elixxir/crypto/fastRNG" diff --git a/single/reception_test.go b/single/reception_test.go index ffe1991fd9cffaceb78a1308945054b1f8cf3ab6..3266d9904b2fb51dd592c766b61a9c40409e0925 100644 --- a/single/reception_test.go +++ b/single/reception_test.go @@ -2,8 +2,8 @@ package single import ( "bytes" - contact2 "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/interfaces/message" + contact2 "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/crypto/e2e/singleUse" "gitlab.com/elixxir/primitives/format" "gitlab.com/xx_network/primitives/id" diff --git a/single/transmission.go b/single/transmission.go index 4f7a85048cd4becc8ed4dbb62e39565e505744f8..d5289f339b1120c87256228d87fd7b7514c0a9d7 100644 --- a/single/transmission.go +++ b/single/transmission.go @@ -11,11 +11,11 @@ import ( "fmt" "github.com/pkg/errors" jww "github.com/spf13/jwalterweatherman" - contact2 "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/interfaces/params" "gitlab.com/elixxir/client/interfaces/utility" "gitlab.com/elixxir/client/storage/reception" ds "gitlab.com/elixxir/comms/network/dataStructures" + contact2 "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/crypto/cyclic" "gitlab.com/elixxir/crypto/e2e/auth" "gitlab.com/elixxir/crypto/e2e/singleUse" diff --git a/single/transmission_test.go b/single/transmission_test.go index b3697d4fd3c659edb4863d0a0a6810b605091e7c..367a8b3bfa4bd07df0e266045281624934ea3ee3 100644 --- a/single/transmission_test.go +++ b/single/transmission_test.go @@ -2,9 +2,9 @@ package single import ( "bytes" - contact2 "gitlab.com/elixxir/client/interfaces/contact" pb "gitlab.com/elixxir/comms/mixmessages" ds "gitlab.com/elixxir/comms/network/dataStructures" + contact2 "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/crypto/cyclic" "gitlab.com/elixxir/crypto/e2e/auth" "gitlab.com/elixxir/crypto/e2e/singleUse" diff --git a/storage/auth/request.go b/storage/auth/request.go index c33d9b02cbe2477725438903052102fdf18d11ff..b6088352d29a3d0dc584f635ac7d0d26db021bad 100644 --- a/storage/auth/request.go +++ b/storage/auth/request.go @@ -8,7 +8,7 @@ package auth import ( - "gitlab.com/elixxir/client/interfaces/contact" + "gitlab.com/elixxir/crypto/contact" "sync" ) diff --git a/storage/auth/store.go b/storage/auth/store.go index e87a3fe1081a623cb70b014fea70e1b2830b8535..a03dee9eaced47223f597f14d78c6c093ede6cfd 100644 --- a/storage/auth/store.go +++ b/storage/auth/store.go @@ -11,9 +11,9 @@ import ( "encoding/json" "github.com/pkg/errors" jww "github.com/spf13/jwalterweatherman" - "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/storage/utility" "gitlab.com/elixxir/client/storage/versioned" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/crypto/cyclic" "gitlab.com/elixxir/crypto/e2e/auth" "gitlab.com/elixxir/primitives/format" diff --git a/storage/auth/store_test.go b/storage/auth/store_test.go index 591cc31b483e05fcee8bb8084416d3dc71b61c0d..94d0318f3d702cd7f9fb58860ada31a1b6f54b17 100644 --- a/storage/auth/store_test.go +++ b/storage/auth/store_test.go @@ -8,8 +8,8 @@ package auth import ( - "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/storage/versioned" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/crypto/cyclic" "gitlab.com/elixxir/crypto/e2e/auth" "gitlab.com/elixxir/ekv" diff --git a/storage/utility/contact.go b/storage/utility/contact.go index 89b9b31548ce467231e556fb607af106a25dedce..cccfef3483c47fc83579563e29b18e0578a17610 100644 --- a/storage/utility/contact.go +++ b/storage/utility/contact.go @@ -9,8 +9,8 @@ package utility import ( "fmt" - "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/storage/versioned" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/xx_network/primitives/id" "gitlab.com/xx_network/primitives/netTime" ) diff --git a/ud/lookup.go b/ud/lookup.go index d7ce0fa69f2addc3bb09419f98ec60b3a6cc2985..e7bdb0da0c0ed10bc8ccaa15c79bc6b9c30b8a9e 100644 --- a/ud/lookup.go +++ b/ud/lookup.go @@ -5,7 +5,7 @@ import ( "github.com/golang/protobuf/proto" "github.com/pkg/errors" jww "github.com/spf13/jwalterweatherman" - "gitlab.com/elixxir/client/interfaces/contact" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/xx_network/primitives/id" "time" ) diff --git a/ud/lookup_test.go b/ud/lookup_test.go index 413b85f9d0443411977557937dfd74cee8833d63..8bdb21a1ae0d347b8561da54a52d4c9dcf7bb33e 100644 --- a/ud/lookup_test.go +++ b/ud/lookup_test.go @@ -3,9 +3,9 @@ package ud import ( "github.com/golang/protobuf/proto" "github.com/pkg/errors" - "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/single" "gitlab.com/elixxir/client/stoppable" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/crypto/cyclic" "gitlab.com/xx_network/crypto/large" "gitlab.com/xx_network/primitives/id" diff --git a/ud/manager.go b/ud/manager.go index d38c5aa5b7f2490e75fc502dd89c131c2faad94a..842d8d353a6d05ab523db2f887c2036d169f976c 100644 --- a/ud/manager.go +++ b/ud/manager.go @@ -5,11 +5,11 @@ import ( jww "github.com/spf13/jwalterweatherman" "gitlab.com/elixxir/client/api" "gitlab.com/elixxir/client/interfaces" - "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/single" "gitlab.com/elixxir/client/stoppable" "gitlab.com/elixxir/client/storage" "gitlab.com/elixxir/comms/client" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/crypto/cyclic" "gitlab.com/elixxir/crypto/fastRNG" "gitlab.com/xx_network/comms/connect" diff --git a/ud/search.go b/ud/search.go index 5367fe10c5d65b22814a799f6071584ffeca8e24..8624c778d1be0d6f8443b6fe0ca13153ac82c429 100644 --- a/ud/search.go +++ b/ud/search.go @@ -4,7 +4,7 @@ import ( "github.com/golang/protobuf/proto" "github.com/pkg/errors" jww "github.com/spf13/jwalterweatherman" - "gitlab.com/elixxir/client/interfaces/contact" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/crypto/factID" "gitlab.com/elixxir/primitives/fact" "gitlab.com/xx_network/primitives/id" diff --git a/ud/search_test.go b/ud/search_test.go index bbbb65c0d517f8abaa09df06628a5acecd663e27..ac14e1a63243fc4d0296768c23420cf1adc03f16 100644 --- a/ud/search_test.go +++ b/ud/search_test.go @@ -4,9 +4,9 @@ import ( "fmt" "github.com/golang/protobuf/proto" errors "github.com/pkg/errors" - "gitlab.com/elixxir/client/interfaces/contact" "gitlab.com/elixxir/client/single" "gitlab.com/elixxir/client/stoppable" + "gitlab.com/elixxir/crypto/contact" "gitlab.com/elixxir/crypto/cyclic" "gitlab.com/elixxir/crypto/factID" "gitlab.com/elixxir/primitives/fact"