From 617d6485b0e367a29ae4db0bcdfb22560d30b994 Mon Sep 17 00:00:00 2001
From: jbhusson <jonah@elixxir.io>
Date: Wed, 20 Apr 2022 12:49:08 -0400
Subject: [PATCH] Fixes to user discovery package

---
 e2e/ratchet/partner/session/testUtils.go |  2 +-
 go.mod                                   |  4 +-
 storage/clientVersion/store_test.go      | 18 ++++-----
 storage/session.go                       |  2 +-
 storage/user/cryptographic_test.go       | 18 ++++-----
 storage/user/registation_test.go         | 10 ++---
 storage/user/user_test.go                | 22 +---------
 storage/user/username_test.go            |  6 +--
 storage/utility/blockStore_test.go       | 20 +++++-----
 storage/utility/bucketParams_test.go     |  4 +-
 storage/utility/dh_test.go               |  6 +--
 storage/utility/group_test.go            |  4 +-
 storage/utility/messageBuffer_test.go    | 18 ++++-----
 storage/utility/multiStateVector_test.go | 44 ++++++++++----------
 storage/utility/sidh_test.go             |  4 +-
 storage/utility/stateVector_test.go      | 14 +++----
 storage/versioned/kv.go                  |  2 +-
 storage/versioned/kv_test.go             | 51 ++++++++++++++----------
 ud/addFact_test.go                       |  2 +-
 ud/confirmFact_test.go                   |  2 +-
 ud/manager_test.go                       |  2 +-
 ud/register_test.go                      |  2 +-
 ud/search_test.go                        | 31 ++++++++++++--
 ud/store/facts_test.go                   | 20 +++++-----
 ud/store/store_test.go                   |  8 ++--
 ud/utils_test.go                         | 10 ++---
 26 files changed, 172 insertions(+), 154 deletions(-)

diff --git a/e2e/ratchet/partner/session/testUtils.go b/e2e/ratchet/partner/session/testUtils.go
index 52c9e8cb8..10ee5bdf7 100644
--- a/e2e/ratchet/partner/session/testUtils.go
+++ b/e2e/ratchet/partner/session/testUtils.go
@@ -79,7 +79,7 @@ func makeTestSession() (*Session, *versioned.KV) {
 
 	baseKey := GenerateE2ESessionBaseKey(myPrivKey, partnerPubKey, grp,
 		mySIDHPrivKey, partnerSIDHPubKey)
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	sid := GetSessionIDFromBaseKey(baseKey)
 
 	s := &Session{
diff --git a/go.mod b/go.mod
index a05008896..6a99bc114 100644
--- a/go.mod
+++ b/go.mod
@@ -13,9 +13,9 @@ 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.20220323190139-9ed75f3a8b2c
-	gitlab.com/elixxir/crypto v0.0.7-0.20220414225314-6f3eb9c073a5
+	gitlab.com/elixxir/crypto v0.0.7-0.20220415180223-ec8d560270a1
 	gitlab.com/elixxir/ekv v0.1.7
-	gitlab.com/elixxir/primitives v0.0.3-0.20220323183834-b98f255361b8
+	gitlab.com/elixxir/primitives v0.0.3-0.20220330212736-cce83b5f948f
 	gitlab.com/xx_network/comms v0.0.4-0.20220315161313-76acb14429ac
 	gitlab.com/xx_network/crypto v0.0.5-0.20220317171841-084640957d71
 	gitlab.com/xx_network/primitives v0.0.4-0.20220324193139-b292d1ae6e7e
diff --git a/storage/clientVersion/store_test.go b/storage/clientVersion/store_test.go
index c9f5ab78a..0e8cae86f 100644
--- a/storage/clientVersion/store_test.go
+++ b/storage/clientVersion/store_test.go
@@ -19,7 +19,7 @@ import (
 
 // Happy path.
 func TestNewStore(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	expected := &Store{
 		version: version.New(42, 43, "44"),
 		kv:      kv.Prefix(prefix),
@@ -38,7 +38,7 @@ func TestNewStore(t *testing.T) {
 
 // Happy path.
 func TestLoadStore(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	ver := version.New(1, 2, "3A")
 
 	expected := &Store{
@@ -64,7 +64,7 @@ func TestLoadStore(t *testing.T) {
 // Error path: an error is returned when the loaded Store has an invalid version
 // that fails to be parsed.
 func TestLoadStore_ParseVersionError(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	obj := versioned.Object{
 		Version:   storeVersion,
 		Timestamp: netTime.Now(),
@@ -85,7 +85,7 @@ func TestLoadStore_ParseVersionError(t *testing.T) {
 
 // Happy path.
 func TestStore_Get(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	expected := version.New(1, 2, "3A")
 
 	s := &Store{
@@ -102,7 +102,7 @@ func TestStore_Get(t *testing.T) {
 
 // Happy path.
 func TestStore_CheckUpdateRequired(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	storedVersion := version.New(1, 2, "3")
 	newVersion := version.New(2, 3, "4")
 	s, err := NewStore(storedVersion, kv)
@@ -129,7 +129,7 @@ func TestStore_CheckUpdateRequired(t *testing.T) {
 
 // Happy path: the new version is equal to the stored version.
 func TestStore_CheckUpdateRequired_EqualVersions(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	storedVersion := version.New(2, 3, "3")
 	newVersion := version.New(2, 3, "4")
 	s, err := NewStore(storedVersion, kv)
@@ -156,7 +156,7 @@ func TestStore_CheckUpdateRequired_EqualVersions(t *testing.T) {
 
 // Error path: new version is older than stored version.
 func TestStore_CheckUpdateRequired_NewVersionTooOldError(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	storedVersion := version.New(2, 3, "4")
 	newVersion := version.New(1, 2, "3")
 	s, err := NewStore(storedVersion, kv)
@@ -184,7 +184,7 @@ func TestStore_CheckUpdateRequired_NewVersionTooOldError(t *testing.T) {
 
 // Happy path.
 func TestStore_update(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	ver1 := version.New(1, 2, "3A")
 	ver2 := version.New(1, 5, "patch5")
 
@@ -206,7 +206,7 @@ func TestStore_update(t *testing.T) {
 
 // Happy path.
 func TestStore_save(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	ver := version.New(1, 2, "3A")
 
 	s := &Store{
diff --git a/storage/session.go b/storage/session.go
index e9bee8ae3..71a86defe 100644
--- a/storage/session.go
+++ b/storage/session.go
@@ -226,7 +226,7 @@ func InitTestingSession(i interface{}) Session {
 	}
 
 	privKey, _ := rsa.LoadPrivateKeyFromPem([]byte("-----BEGIN PRIVATE KEY-----\nMIIJQQIBADANBgkqhkiG9w0BAQEFAASCCSswggknAgEAAoICAQC7Dkb6VXFn4cdp\nU0xh6ji0nTDQUyT9DSNW9I3jVwBrWfqMc4ymJuonMZbuqK+cY2l+suS2eugevWZr\ntzujFPBRFp9O14Jl3fFLfvtjZvkrKbUMHDHFehascwzrp3tXNryiRMmCNQV55TfI\nTVCv8CLE0t1ibiyOGM9ZWYB2OjXt59j76lPARYww5qwC46vS6+3Cn2Yt9zkcrGes\nkWEFa2VttHqF910TP+DZk2R5C7koAh6wZYK6NQ4S83YQurdHAT51LKGrbGehFKXq\n6/OAXCU1JLi3kW2PovTb6MZuvxEiRmVAONsOcXKu7zWCmFjuZZwfRt2RhnpcSgzf\nrarmsGM0LZh6JY3MGJ9YdPcVGSz+Vs2E4zWbNW+ZQoqlcGeMKgsIiQ670g0xSjYI\nCqldpt79gaET9PZsoXKEmKUaj6pq1d4qXDk7s63HRQazwVLGBdJQK8qX41eCdR8V\nMKbrCaOkzD5zgnEu0jBBAwdMtcigkMIk1GRv91j7HmqwryOBHryLi6NWBY3tjb4S\no9AppDQB41SH3SwNenAbNO1CXeUqN0hHX6I1bE7OlbjqI7tXdrTllHAJTyVVjenP\nel2ApMXp+LVRdDbKtwBiuM6+n+z0I7YYerxN1gfvpYgcXm4uye8dfwotZj6H2J/u\nSALsU2v9UHBzprdrLSZk2YpozJb+CQIDAQABAoICAARjDFUYpeU6zVNyCauOM7BA\ns4FfQdHReg+zApTfWHosDQ04NIc9CGbM6e5E9IFlb3byORzyevkllf5WuMZVWmF8\nd1YBBeTftKYBn2Gwa42Ql9dl3eD0wQ1gUWBBeEoOVZQ0qskr9ynpr0o6TfciWZ5m\nF50UWmUmvc4ppDKhoNwogNU/pKEwwF3xOv2CW2hB8jyLQnk3gBZlELViX3UiFKni\n/rCfoYYvDFXt+ABCvx/qFNAsQUmerurQ3Ob9igjXRaC34D7F9xQ3CMEesYJEJvc9\nGjvr5DbnKnjx152HS56TKhK8gp6vGHJz17xtWECXD3dIUS/1iG8bqXuhdg2c+2aW\nm3MFpa5jgpAawUWc7c32UnqbKKf+HI7/x8J1yqJyNeU5SySyYSB5qtwTShYzlBW/\nyCYD41edeJcmIp693nUcXzU+UAdtpt0hkXS59WSWlTrB/huWXy6kYXLNocNk9L7g\niyx0cOmkuxREMHAvK0fovXdVyflQtJYC7OjJxkzj2rWO+QtHaOySXUyinkuTb5ev\nxNhs+ROWI/HAIE9buMqXQIpHx6MSgdKOL6P6AEbBan4RAktkYA6y5EtH/7x+9V5E\nQTIz4LrtI6abaKb4GUlZkEsc8pxrkNwCqOAE/aqEMNh91Na1TOj3f0/a6ckGYxYH\npyrvwfP2Ouu6e5FhDcCBAoIBAQDcN8mK99jtrH3q3Q8vZAWFXHsOrVvnJXyHLz9V\n1Rx/7TnMUxvDX1PIVxhuJ/tmHtxrNIXOlps80FCZXGgxfET/YFrbf4H/BaMNJZNP\nag1wBV5VQSnTPdTR+Ijice+/ak37S2NKHt8+ut6yoZjD7sf28qiO8bzNua/OYHkk\nV+RkRkk68Uk2tFMluQOSyEjdsrDNGbESvT+R1Eotupr0Vy/9JRY/TFMc4MwJwOoy\ns7wYr9SUCq/cYn7FIOBTI+PRaTx1WtpfkaErDc5O+nLLEp1yOrfktl4LhU/r61i7\nfdtafUACTKrXG2qxTd3w++mHwTwVl2MwhiMZfxvKDkx0L2gxAoIBAQDZcxKwyZOy\ns6Aw7igw1ftLny/dpjPaG0p6myaNpeJISjTOU7HKwLXmlTGLKAbeRFJpOHTTs63y\ngcmcuE+vGCpdBHQkaCev8cve1urpJRcxurura6+bYaENO6ua5VzF9BQlDYve0YwY\nlbJiRKmEWEAyULjbIebZW41Z4UqVG3MQI750PRWPW4WJ2kDhksFXN1gwSnaM46KR\nPmVA0SL+RCPcAp/VkImCv0eqv9exsglY0K/QiJfLy3zZ8QvAn0wYgZ3AvH3lr9rJ\nT7pg9WDb+OkfeEQ7INubqSthhaqCLd4zwbMRlpyvg1cMSq0zRvrFpwVlSY85lW4F\ng/tgjJ99W9VZAoIBAH3OYRVDAmrFYCoMn+AzA/RsIOEBqL8kaz/Pfh9K4D01CQ/x\naqryiqqpFwvXS4fLmaClIMwkvgq/90ulvuCGXeSG52D+NwW58qxQCxgTPhoA9yM9\nVueXKz3I/mpfLNftox8sskxl1qO/nfnu15cXkqVBe4ouD+53ZjhAZPSeQZwHi05h\nCbJ20gl66M+yG+6LZvXE96P8+ZQV80qskFmGdaPozAzdTZ3xzp7D1wegJpTz3j20\n3ULKAiIb5guZNU0tEZz5ikeOqsQt3u6/pVTeDZR0dxnyFUf/oOjmSorSG75WT3sA\n0ZiR0SH5mhFR2Nf1TJ4JHmFaQDMQqo+EG6lEbAECggEAA7kGnuQ0lSCiI3RQV9Wy\nAa9uAFtyE8/XzJWPaWlnoFk04jtoldIKyzHOsVU0GOYOiyKeTWmMFtTGANre8l51\nizYiTuVBmK+JD/2Z8/fgl8dcoyiqzvwy56kX3QUEO5dcKO48cMohneIiNbB7PnrM\nTpA3OfkwnJQGrX0/66GWrLYP8qmBDv1AIgYMilAa40VdSyZbNTpIdDgfP6bU9Ily\nG7gnyF47HHPt5Cx4ouArbMvV1rof7ytCrfCEhP21Lc46Ryxy81W5ZyzoQfSxfdKb\nGyDR+jkryVRyG69QJf5nCXfNewWbFR4ohVtZ78DNVkjvvLYvr4qxYYLK8PI3YMwL\nsQKCAQB9lo7JadzKVio+C18EfNikOzoriQOaIYowNaaGDw3/9KwIhRsKgoTs+K5O\ngt/gUoPRGd3M2z4hn5j4wgeuFi7HC1MdMWwvgat93h7R1YxiyaOoCTxH1klbB/3K\n4fskdQRxuM8McUebebrp0qT5E0xs2l+ABmt30Dtd3iRrQ5BBjnRc4V//sQiwS1aC\nYi5eNYCQ96BSAEo1dxJh5RI/QxF2HEPUuoPM8iXrIJhyg9TEEpbrEJcxeagWk02y\nOMEoUbWbX07OzFVvu+aJaN/GlgiogMQhb6IiNTyMlryFUleF+9OBA8xGHqGWA6nR\nOaRA5ZbdE7g7vxKRV36jT3wvD7W+\n-----END PRIVATE KEY-----\n"))
-	store := make(ekv.Memstore)
+	store := ekv.MakeMemstore()
 	kv := versioned.NewKV(store)
 	s := &session{kv: kv}
 	uid := id.NewIdFromString("zezima", id.User, i)
diff --git a/storage/user/cryptographic_test.go b/storage/user/cryptographic_test.go
index 0d2fab208..1096ccf68 100644
--- a/storage/user/cryptographic_test.go
+++ b/storage/user/cryptographic_test.go
@@ -19,7 +19,7 @@ import (
 
 // Test for NewCryptographicIdentity function
 func TestNewCryptographicIdentity(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	uid := id.NewIdFromString("zezima", id.User, t)
 	salt := []byte("salt")
 	_ = newCryptographicIdentity(uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false, kv)
@@ -32,7 +32,7 @@ func TestNewCryptographicIdentity(t *testing.T) {
 
 // Test loading cryptographic identity from KV store
 func TestLoadCryptographicIdentity(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	uid := id.NewIdFromString("zezima", id.User, t)
 	salt := []byte("salt")
 	ci := newCryptographicIdentity(uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false, kv)
@@ -53,7 +53,7 @@ func TestLoadCryptographicIdentity(t *testing.T) {
 
 // Happy path for GetReceptionRSA function
 func TestCryptographicIdentity_GetReceptionRSA(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	uid := id.NewIdFromString("zezima", id.User, t)
 	pk1, err := rsa.GenerateKey(rand.Reader, 64)
 	if err != nil {
@@ -72,7 +72,7 @@ func TestCryptographicIdentity_GetReceptionRSA(t *testing.T) {
 
 // Happy path for GetTransmissionRSA function
 func TestCryptographicIdentity_GetTransmissionRSA(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	uid := id.NewIdFromString("zezima", id.User, t)
 	pk1, err := rsa.GenerateKey(rand.Reader, 64)
 	if err != nil {
@@ -91,7 +91,7 @@ func TestCryptographicIdentity_GetTransmissionRSA(t *testing.T) {
 
 // Happy path for GetSalt function
 func TestCryptographicIdentity_GetTransmissionSalt(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	uid := id.NewIdFromString("zezima", id.User, t)
 	ts := []byte("transmission salt")
 	rs := []byte("reception salt")
@@ -103,7 +103,7 @@ func TestCryptographicIdentity_GetTransmissionSalt(t *testing.T) {
 
 // Happy path for GetSalt function
 func TestCryptographicIdentity_GetReceptionSalt(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	uid := id.NewIdFromString("zezima", id.User, t)
 	ts := []byte("transmission salt")
 	rs := []byte("reception salt")
@@ -115,7 +115,7 @@ func TestCryptographicIdentity_GetReceptionSalt(t *testing.T) {
 
 // Happy path for GetUserID function
 func TestCryptographicIdentity_GetTransmissionID(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	rid := id.NewIdFromString("zezima", id.User, t)
 	tid := id.NewIdFromString("jakexx360", id.User, t)
 	salt := []byte("salt")
@@ -127,7 +127,7 @@ func TestCryptographicIdentity_GetTransmissionID(t *testing.T) {
 
 // Happy path for GetUserID function
 func TestCryptographicIdentity_GetReceptionID(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	rid := id.NewIdFromString("zezima", id.User, t)
 	tid := id.NewIdFromString("jakexx360", id.User, t)
 	salt := []byte("salt")
@@ -139,7 +139,7 @@ func TestCryptographicIdentity_GetReceptionID(t *testing.T) {
 
 // Happy path for IsPrecanned functions
 func TestCryptographicIdentity_IsPrecanned(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	uid := id.NewIdFromString("zezima", id.User, t)
 	salt := []byte("salt")
 	ci := newCryptographicIdentity(uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, true, kv)
diff --git a/storage/user/registation_test.go b/storage/user/registation_test.go
index 31c6d3d1e..cec369ea4 100644
--- a/storage/user/registation_test.go
+++ b/storage/user/registation_test.go
@@ -21,7 +21,7 @@ import (
 
 // Test User GetRegistrationValidationSignature function
 func TestUser_GetRegistrationValidationSignature(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	uid := id.NewIdFromString("test", id.User, t)
 	salt := []byte("salt")
 	u, err := NewUser(kv, uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false)
@@ -56,7 +56,7 @@ func TestUser_GetRegistrationValidationSignature(t *testing.T) {
 
 // Test SetRegistrationValidationSignature setter
 func TestUser_SetRegistrationValidationSignature(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	uid := id.NewIdFromString("test", id.User, t)
 	salt := []byte("salt")
 	u, err := NewUser(kv, uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false)
@@ -99,7 +99,7 @@ func TestUser_SetRegistrationValidationSignature(t *testing.T) {
 
 // Test loading registrationValidationSignature from the KV store
 func TestUser_loadRegistrationValidationSignature(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	uid := id.NewIdFromString("test", id.User, t)
 	salt := []byte("salt")
 	u, err := NewUser(kv, uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false)
@@ -142,7 +142,7 @@ func TestUser_loadRegistrationValidationSignature(t *testing.T) {
 
 // Test User's getter/setter functions for TimeStamp
 func TestUser_GetRegistrationTimestamp(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	uid := id.NewIdFromString("test", id.User, t)
 	salt := []byte("salt")
 	u, err := NewUser(kv, uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false)
@@ -191,7 +191,7 @@ func TestUser_GetRegistrationTimestamp(t *testing.T) {
 
 // Test loading registrationTimestamp from the KV store
 func TestUser_loadRegistrationTimestamp(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	uid := id.NewIdFromString("test", id.User, t)
 	salt := []byte("salt")
 	u, err := NewUser(kv, uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false)
diff --git a/storage/user/user_test.go b/storage/user/user_test.go
index 0fd3d8d18..01a93088c 100644
--- a/storage/user/user_test.go
+++ b/storage/user/user_test.go
@@ -8,7 +8,6 @@
 package user
 
 import (
-	"bytes"
 	"gitlab.com/elixxir/client/storage/versioned"
 	"gitlab.com/elixxir/ekv"
 	"gitlab.com/xx_network/crypto/signature/rsa"
@@ -18,7 +17,7 @@ import (
 
 // Test loading user from a KV store
 func TestLoadUser(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	_, err := LoadUser(kv)
 
 	if err == nil {
@@ -41,7 +40,7 @@ func TestLoadUser(t *testing.T) {
 
 // Test NewUser function
 func TestNewUser(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	uid := id.NewIdFromString("test", id.User, t)
 	salt := []byte("salt")
 	u, err := NewUser(kv, uid, uid, salt, salt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false)
@@ -49,20 +48,3 @@ func TestNewUser(t *testing.T) {
 		t.Errorf("Failed to create new user: %+v", err)
 	}
 }
-
-// Test GetCryptographicIdentity function from user
-func TestUser_GetCryptographicIdentity(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
-	uid := id.NewIdFromString("test", id.User, t)
-	rsalt := []byte("reception salt")
-	tsalt := []byte("transmission salt")
-	u, err := NewUser(kv, uid, uid, tsalt, rsalt, &rsa.PrivateKey{}, &rsa.PrivateKey{}, false)
-	if err != nil || u == nil {
-		t.Errorf("Failed to create new user: %+v", err)
-	}
-
-	ci := u.GetCryptographicIdentity()
-	if bytes.Compare(ci.transmissionSalt, tsalt) != 0 {
-		t.Errorf("Cryptographic Identity not retrieved properly")
-	}
-}
diff --git a/storage/user/username_test.go b/storage/user/username_test.go
index 7571d3804..f4a851145 100644
--- a/storage/user/username_test.go
+++ b/storage/user/username_test.go
@@ -18,7 +18,7 @@ import (
 
 // Test normal function and errors for User's SetUsername function
 func TestUser_SetUsername(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	tid := id.NewIdFromString("trans", id.User, t)
 	rid := id.NewIdFromString("recv", id.User, t)
 	tsalt := []byte("tsalt")
@@ -52,7 +52,7 @@ func TestUser_SetUsername(t *testing.T) {
 
 // Test functionality of User's GetUsername function
 func TestUser_GetUsername(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	tid := id.NewIdFromString("trans", id.User, t)
 	rid := id.NewIdFromString("recv", id.User, t)
 	tsalt := []byte("tsalt")
@@ -80,7 +80,7 @@ func TestUser_GetUsername(t *testing.T) {
 
 // Test the loadUsername helper function
 func TestUser_loadUsername(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	tid := id.NewIdFromString("trans", id.User, t)
 	rid := id.NewIdFromString("recv", id.User, t)
 	tsalt := []byte("tsalt")
diff --git a/storage/utility/blockStore_test.go b/storage/utility/blockStore_test.go
index c9e2fb56d..3f1341785 100644
--- a/storage/utility/blockStore_test.go
+++ b/storage/utility/blockStore_test.go
@@ -33,7 +33,7 @@ func TestNewBlockStore(t *testing.T) {
 		blockSize:  20,
 		firstSaved: 0,
 		lastSaved:  0,
-		kv:         versioned.NewKV(make(ekv.Memstore)),
+		kv:         versioned.NewKV(ekv.MakeMemstore()),
 	}
 
 	bs, err := NewBlockStore(expected.numBlocks, expected.blockSize, expected.kv)
@@ -75,7 +75,7 @@ func TestBlockStore_Store_LoadBlockStore(t *testing.T) {
 		expected := make([][]byte, len(iter[v.dataCutIndex:]))
 		copy(expected, iter[v.dataCutIndex:])
 
-		bs, err := NewBlockStore(v.numBlocks, v.blockSize, versioned.NewKV(make(ekv.Memstore)))
+		bs, err := NewBlockStore(v.numBlocks, v.blockSize, versioned.NewKV(ekv.MakeMemstore()))
 		if err != nil {
 			t.Errorf("Failed to create new BlockStore (%d): %+v", i, err)
 		}
@@ -125,7 +125,7 @@ func TestBlockStore_saveBlock_loadBlock(t *testing.T) {
 		blockSize:  20,
 		firstSaved: 0,
 		lastSaved:  0,
-		kv:         versioned.NewKV(make(ekv.Memstore)),
+		kv:         versioned.NewKV(ekv.MakeMemstore()),
 	}
 
 	for i := range bs.block {
@@ -159,7 +159,7 @@ func TestBlockStore_saveBlock_SaveError(t *testing.T) {
 		blockSize:  20,
 		firstSaved: 0,
 		lastSaved:  0,
-		kv:         versioned.NewKV(make(ekv.Memstore)),
+		kv:         versioned.NewKV(ekv.MakeMemstore()),
 	}
 
 	for i := range bs.block {
@@ -187,7 +187,7 @@ func TestBlockStore_saveBlock_SaveError(t *testing.T) {
 // Error path: loading of nonexistent key returns an error.
 func TestBlockStore_loadBlock_LoadStorageError(t *testing.T) {
 	expectedErr := strings.SplitN(bKvLoadErr, "%", 2)[0]
-	bs := &BlockStore{kv: versioned.NewKV(make(ekv.Memstore))}
+	bs := &BlockStore{kv: versioned.NewKV(ekv.MakeMemstore())}
 	_, err := bs.loadBlock(0)
 	if err == nil || !strings.Contains(err.Error(), expectedErr) {
 		t.Errorf("loadBlock() did not return the expected error."+
@@ -197,7 +197,7 @@ func TestBlockStore_loadBlock_LoadStorageError(t *testing.T) {
 
 // Error path: unmarshalling of invalid data fails.
 func TestBlockStore_loadBlock_UnmarshalError(t *testing.T) {
-	bs := &BlockStore{kv: versioned.NewKV(make(ekv.Memstore))}
+	bs := &BlockStore{kv: versioned.NewKV(ekv.MakeMemstore())}
 	expectedErr := strings.SplitN(bJsonUnmarshalErr, "%", 2)[0]
 
 	// Construct object with invalid data
@@ -228,7 +228,7 @@ func TestBlockStore_pruneBlocks(t *testing.T) {
 		blockSize:  32,
 		firstSaved: 0,
 		lastSaved:  0,
-		kv:         versioned.NewKV(make(ekv.Memstore)),
+		kv:         versioned.NewKV(ekv.MakeMemstore()),
 	}
 
 	// Save blocks to storage
@@ -293,7 +293,7 @@ func TestBlockStore_getKey_Consistency(t *testing.T) {
 func TestBlockStore_save_load(t *testing.T) {
 	bs := &BlockStore{
 		numBlocks: 5, blockSize: 6, firstSaved: 7, lastSaved: 8,
-		kv: versioned.NewKV(make(ekv.Memstore)),
+		kv: versioned.NewKV(ekv.MakeMemstore()),
 	}
 
 	err := bs.save()
@@ -317,7 +317,7 @@ func TestBlockStore_save_load(t *testing.T) {
 func TestBlockStore_load_KvGetError(t *testing.T) {
 	expectedErr := strings.SplitN(bsKvLoadErr, "%", 2)[0]
 
-	testBS := &BlockStore{kv: versioned.NewKV(make(ekv.Memstore))}
+	testBS := &BlockStore{kv: versioned.NewKV(ekv.MakeMemstore())}
 	err := testBS.load()
 	if err == nil || !strings.Contains(err.Error(), expectedErr) {
 		t.Errorf("load() did not return an error for a nonexistent item in storage."+
@@ -328,7 +328,7 @@ func TestBlockStore_load_KvGetError(t *testing.T) {
 // Error path: unmarshalling of invalid data fails.
 func TestBlockStore_load_UnmarshalError(t *testing.T) {
 	expectedErr := strings.SplitN(bsKvUnmarshalErr, "%", 2)[0]
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	// Construct invalid versioning object
 	obj := versioned.Object{
diff --git a/storage/utility/bucketParams_test.go b/storage/utility/bucketParams_test.go
index c2ce1bdbf..d908ac99a 100644
--- a/storage/utility/bucketParams_test.go
+++ b/storage/utility/bucketParams_test.go
@@ -18,7 +18,7 @@ import (
 // todo: write tests
 
 func TestNewBucketParamsStore(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	capacity, leakedTokens, leakDuration := uint32(10), uint32(11), time.Duration(12)
 	bps, err := NewBucketParamsStore(capacity, leakedTokens, leakDuration, kv)
 	if err != nil {
@@ -50,7 +50,7 @@ func TestNewBucketParamsStore(t *testing.T) {
 }
 
 func TestLoadBucketParamsStore(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	capacity, leakedTokens, leakDuration := uint32(10), uint32(11), time.Duration(12)
 	bps, err := NewBucketParamsStore(capacity, leakedTokens, leakDuration, kv)
 	if err != nil {
diff --git a/storage/utility/dh_test.go b/storage/utility/dh_test.go
index 36fb3c573..bea2f2448 100644
--- a/storage/utility/dh_test.go
+++ b/storage/utility/dh_test.go
@@ -15,7 +15,7 @@ import (
 
 // Unit test for StoreCyclicKey
 func TestStoreCyclicKey(t *testing.T) {
-	kv := make(ekv.Memstore)
+	kv := ekv.MakeMemstore()
 	vkv := versioned.NewKV(kv)
 	grp := getTestGroup()
 	x := grp.NewInt(77)
@@ -28,7 +28,7 @@ func TestStoreCyclicKey(t *testing.T) {
 
 // Unit test for LoadCyclicKey
 func TestLoadCyclicKey(t *testing.T) {
-	kv := make(ekv.Memstore)
+	kv := ekv.MakeMemstore()
 	vkv := versioned.NewKV(kv)
 	grp := getTestGroup()
 	x := grp.NewInt(77)
@@ -50,7 +50,7 @@ func TestLoadCyclicKey(t *testing.T) {
 
 // Unit test for DeleteCyclicKey
 func TestDeleteCyclicKey(t *testing.T) {
-	kv := make(ekv.Memstore)
+	kv := ekv.MakeMemstore()
 	vkv := versioned.NewKV(kv)
 	grp := getTestGroup()
 	x := grp.NewInt(77)
diff --git a/storage/utility/group_test.go b/storage/utility/group_test.go
index ef8ed3ea2..02e6504be 100644
--- a/storage/utility/group_test.go
+++ b/storage/utility/group_test.go
@@ -17,7 +17,7 @@ import (
 
 // Unit test for StoreGroup
 func TestStoreGroup(t *testing.T) {
-	kv := make(ekv.Memstore)
+	kv := ekv.MakeMemstore()
 	vkv := versioned.NewKV(kv)
 	grp := getTestGroup()
 	err := StoreGroup(vkv, grp, "testKey")
@@ -28,7 +28,7 @@ func TestStoreGroup(t *testing.T) {
 
 // Unit test for LoadGroup
 func TestLoadGroup(t *testing.T) {
-	kv := make(ekv.Memstore)
+	kv := ekv.MakeMemstore()
 	vkv := versioned.NewKV(kv)
 	grp := getTestGroup()
 
diff --git a/storage/utility/messageBuffer_test.go b/storage/utility/messageBuffer_test.go
index e9d1a841b..fc7f39a7c 100644
--- a/storage/utility/messageBuffer_test.go
+++ b/storage/utility/messageBuffer_test.go
@@ -70,7 +70,7 @@ func TestNewMessageBuffer(t *testing.T) {
 		messages:           make(map[MessageHash]struct{}),
 		processingMessages: make(map[MessageHash]struct{}),
 		handler:            th,
-		kv:                 versioned.NewKV(make(ekv.Memstore)),
+		kv:                 versioned.NewKV(ekv.MakeMemstore()),
 		key:                "testKey",
 	}
 
@@ -94,7 +94,7 @@ func TestLoadMessageBuffer(t *testing.T) {
 		messages:           make(map[MessageHash]struct{}),
 		processingMessages: make(map[MessageHash]struct{}),
 		handler:            th,
-		kv:                 versioned.NewKV(make(ekv.Memstore)),
+		kv:                 versioned.NewKV(ekv.MakeMemstore()),
 		key:                "testKey",
 	}
 	_ = addTestMessages(expectedMB, 20)
@@ -124,7 +124,7 @@ func TestLoadMessageBuffer(t *testing.T) {
 
 // Tests happy path of save() with a new empty MessageBuffer.
 func TestMessageBuffer_save_NewMB(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	key := "testKey"
 
 	mb, err := NewMessageBuffer(kv, newTestHandler(), key)
@@ -154,7 +154,7 @@ func TestMessageBuffer_save_NewMB(t *testing.T) {
 
 // Tests happy path of save().
 func TestMessageBuffer_save(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	key := "testKey"
 	mb, err := NewMessageBuffer(kv, newTestHandler(), key)
 	if err != nil {
@@ -186,7 +186,7 @@ func TestMessageBuffer_save(t *testing.T) {
 // Tests happy path of MessageBuffer.Add().
 func TestMessageBuffer_Add(t *testing.T) {
 	// Create new MessageBuffer and fill with messages
-	testMB, err := NewMessageBuffer(versioned.NewKV(make(ekv.Memstore)), newTestHandler(), "testKey")
+	testMB, err := NewMessageBuffer(versioned.NewKV(ekv.MakeMemstore()), newTestHandler(), "testKey")
 	if err != nil {
 		t.Fatalf("Failed to create new MessageBuffer: %v", err)
 	}
@@ -216,7 +216,7 @@ func TestMessageBuffer_Add(t *testing.T) {
 // Tests happy path of MessageBuffer.Next().
 func TestMessageBuffer_Next(t *testing.T) {
 	// Create new MessageBuffer and fill with messages
-	testMB, err := NewMessageBuffer(versioned.NewKV(make(ekv.Memstore)), newTestHandler(), "testKey")
+	testMB, err := NewMessageBuffer(versioned.NewKV(ekv.MakeMemstore()), newTestHandler(), "testKey")
 	if err != nil {
 		t.Fatalf("Failed to create new MessageBuffer: %v", err)
 	}
@@ -246,7 +246,7 @@ func TestMessageBuffer_Next(t *testing.T) {
 
 func TestMessageBuffer_InvalidNext(t *testing.T) {
 	// Create new MessageBuffer and fill with messages
-	testMB, err := NewMessageBuffer(versioned.NewKV(make(ekv.Memstore)), newTestHandler(), "testKey")
+	testMB, err := NewMessageBuffer(versioned.NewKV(ekv.MakeMemstore()), newTestHandler(), "testKey")
 	if err != nil {
 		t.Fatalf("Failed to create new MessageBuffer: %v", err)
 	}
@@ -267,7 +267,7 @@ func TestMessageBuffer_InvalidNext(t *testing.T) {
 func TestMessageBuffer_Succeeded(t *testing.T) {
 	th := newTestHandler()
 	// Create new MessageBuffer and fill with message
-	testMB, err := NewMessageBuffer(versioned.NewKV(make(ekv.Memstore)), th, "testKey")
+	testMB, err := NewMessageBuffer(versioned.NewKV(ekv.MakeMemstore()), th, "testKey")
 	if err != nil {
 		t.Fatalf("Failed to create new MessageBuffer: %v", err)
 	}
@@ -293,7 +293,7 @@ func TestMessageBuffer_Succeeded(t *testing.T) {
 func TestMessageBuffer_Failed(t *testing.T) {
 	th := newTestHandler()
 	// Create new MessageBuffer and fill with message
-	testMB, err := NewMessageBuffer(versioned.NewKV(make(ekv.Memstore)), th, "testKey")
+	testMB, err := NewMessageBuffer(versioned.NewKV(ekv.MakeMemstore()), th, "testKey")
 	if err != nil {
 		t.Fatalf("Failed to create new MessageBuffer: %v", err)
 	}
diff --git a/storage/utility/multiStateVector_test.go b/storage/utility/multiStateVector_test.go
index 83527da50..38085804b 100644
--- a/storage/utility/multiStateVector_test.go
+++ b/storage/utility/multiStateVector_test.go
@@ -25,7 +25,7 @@ import (
 // Tests that NewMultiStateVector returns a new MultiStateVector with the
 // expected values.
 func TestNewMultiStateVector(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	key := "testKey"
 	expected := &MultiStateVector{
 		numKeys:         189,
@@ -98,7 +98,7 @@ func TestNewMultiStateVector_StateMapError(t *testing.T) {
 // random states are generated and manually inserted into the vector and then
 // each key is checked for the expected vector
 func TestMultiStateVector_Get(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	msv, err := NewMultiStateVector(155, 5, nil, "", kv)
 	if err != nil {
 		t.Errorf("Failed to create new MultiStateVector: %+v", err)
@@ -164,7 +164,7 @@ func TestMultiStateVector_Get(t *testing.T) {
 // Error path: tests that MultiStateVector.get returns the expected error when
 // the key number is greater than the max key number.
 func TestMultiStateVector_get_KeyNumMaxError(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	msv, err := NewMultiStateVector(155, 5, nil, "", kv)
 	if err != nil {
 		t.Errorf("Failed to create new MultiStateVector: %+v", err)
@@ -190,7 +190,7 @@ func TestMultiStateVector_Set(t *testing.T) {
 		{false, false, true, false, true},
 		{false, false, false, false, false},
 	}
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	msv, err := NewMultiStateVector(155, 5, stateMap, "", kv)
 	if err != nil {
 		t.Errorf("Failed to create new MultiStateVector: %+v", err)
@@ -243,7 +243,7 @@ func TestMultiStateVector_Set(t *testing.T) {
 // Error path: tests that MultiStateVector.Set returns the expected error when
 // the key number is greater than the last key number.
 func TestMultiStateVector_Set_KeyNumMaxError(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	msv, err := NewMultiStateVector(155, 5, nil, "", kv)
 	if err != nil {
 		t.Errorf("Failed to create new MultiStateVector: %+v", err)
@@ -262,7 +262,7 @@ func TestMultiStateVector_Set_KeyNumMaxError(t *testing.T) {
 
 // Tests that MultiStateVector.SetMany
 func TestMultiStateVector_SetMany(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	msv, err := NewMultiStateVector(155, 5, nil, "", kv)
 	if err != nil {
 		t.Errorf("Failed to create new MultiStateVector: %+v", err)
@@ -301,7 +301,7 @@ func TestMultiStateVector_SetMany(t *testing.T) {
 // Error path: tests that MultiStateVector.SetMany returns the expected error
 // when one of the keys is greater than the last key number.
 func TestMultiStateVector_SetMany_KeyNumMaxError(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	msv, err := NewMultiStateVector(155, 5, nil, "", kv)
 	if err != nil {
 		t.Errorf("Failed to create new MultiStateVector: %+v", err)
@@ -321,7 +321,7 @@ func TestMultiStateVector_SetMany_KeyNumMaxError(t *testing.T) {
 // Error path: tests that MultiStateVector.set returns the expected error when
 // the key number is greater than the last key number.
 func TestMultiStateVector_set_KeyNumMaxError(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	msv, err := NewMultiStateVector(155, 5, nil, "", kv)
 	if err != nil {
 		t.Errorf("Failed to create new MultiStateVector: %+v", err)
@@ -340,7 +340,7 @@ func TestMultiStateVector_set_KeyNumMaxError(t *testing.T) {
 // Error path: tests that MultiStateVector.set returns the expected error when
 // the given state is greater than the last state.
 func TestMultiStateVector_set_NewStateMaxError(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	msv, err := NewMultiStateVector(155, 5, nil, "", kv)
 	if err != nil {
 		t.Errorf("Failed to create new MultiStateVector: %+v", err)
@@ -359,7 +359,7 @@ func TestMultiStateVector_set_NewStateMaxError(t *testing.T) {
 // Error path: tests that MultiStateVector.set returns the expected error when
 // the state read from the vector is greater than the last state.
 func TestMultiStateVector_set_OldStateMaxError(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	msv, err := NewMultiStateVector(155, 5, nil, "", kv)
 	if err != nil {
 		t.Errorf("Failed to create new MultiStateVector: %+v", err)
@@ -381,7 +381,7 @@ func TestMultiStateVector_set_OldStateMaxError(t *testing.T) {
 // the state change is not allowed by the state map.
 func TestMultiStateVector_set_StateChangeError(t *testing.T) {
 	stateMap := [][]bool{{true, false}, {true, true}}
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	msv, err := NewMultiStateVector(155, 2, stateMap, "", kv)
 	if err != nil {
 		t.Errorf("Failed to create new MultiStateVector: %+v", err)
@@ -401,7 +401,7 @@ func TestMultiStateVector_set_StateChangeError(t *testing.T) {
 // Tests that MultiStateVector.GetNumKeys returns the expected number of keys.
 func TestMultiStateVector_GetNumKeys(t *testing.T) {
 	numKeys := uint16(155)
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	msv, err := NewMultiStateVector(numKeys, 5, nil, "", kv)
 	if err != nil {
 		t.Errorf("Failed to create new MultiStateVector: %+v", err)
@@ -416,7 +416,7 @@ func TestMultiStateVector_GetNumKeys(t *testing.T) {
 // Tests that MultiStateVector.GetCount returns the correct count for each state
 // after each key has been set to a random state.
 func TestMultiStateVector_GetCount(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	msv, err := NewMultiStateVector(
 		156, 5, nil, "TestMultiStateVector_GetCount", kv)
 	if err != nil {
@@ -452,7 +452,7 @@ func TestMultiStateVector_GetCount(t *testing.T) {
 // Error path: tests that MultiStateVector.GetCount returns the expected error
 // when the given state is greater than the last state.
 func TestMultiStateVector_GetCount_NewStateMaxError(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	msv, err := NewMultiStateVector(155, 5, nil, "", kv)
 	if err != nil {
 		t.Errorf("Failed to create new MultiStateVector: %+v", err)
@@ -471,7 +471,7 @@ func TestMultiStateVector_GetCount_NewStateMaxError(t *testing.T) {
 // Tests that MultiStateVector.GetKeys returns the correct list of keys for each
 // state after each key has been set to a random state.
 func TestMultiStateVector_GetKeys(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	msv, err := NewMultiStateVector(
 		156, 5, nil, "TestMultiStateVector_GetKeys", kv)
 	if err != nil {
@@ -507,7 +507,7 @@ func TestMultiStateVector_GetKeys(t *testing.T) {
 // Error path: tests that MultiStateVector.GetKeys returns the expected error
 // when the given state is greater than the last state.
 func TestMultiStateVector_GetKeys_NewStateMaxError(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	msv, err := NewMultiStateVector(155, 5, nil, "", kv)
 	if err != nil {
 		t.Errorf("Failed to create new MultiStateVector: %+v", err)
@@ -533,7 +533,7 @@ func TestMultiStateVector_DeepCopy(t *testing.T) {
 		{false, false, true, false, true},
 		{false, false, false, false, false},
 	}
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	msv, err := NewMultiStateVector(155, 5, stateMap, "", kv)
 	if err != nil {
 		t.Errorf("Failed to create new MultiStateVector: %+v", err)
@@ -597,7 +597,7 @@ func TestMultiStateVector_DeepCopy(t *testing.T) {
 // Tests that MultiStateVector.DeepCopy is able to make the expected copy when
 // the state map is nil.
 func TestMultiStateVector_DeepCopy_NilStateMap(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	msv, err := NewMultiStateVector(155, 5, nil, "", kv)
 	if err != nil {
 		t.Errorf("Failed to create new MultiStateVector: %+v", err)
@@ -871,7 +871,7 @@ func TestLoadMultiStateVector(t *testing.T) {
 // no object is saved in storage.
 func TestLoadMultiStateVector_GetFromStorageError(t *testing.T) {
 	key := "TestLoadMultiStateVector_GetFromStorageError"
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	expectedErr := strings.Split(loadGetMsvErr, "%")[0]
 
 	_, err := LoadMultiStateVector(nil, key, kv)
@@ -885,7 +885,7 @@ func TestLoadMultiStateVector_GetFromStorageError(t *testing.T) {
 // Error path: tests that LoadMultiStateVector returns the expected error when
 // the data in storage cannot be unmarshalled.
 func TestLoadMultiStateVector_UnmarshalError(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	key := "TestLoadMultiStateVector_MarshalError"
 	expectedErr := strings.Split(loadUnmarshalMsvErr, "%")[0]
 
@@ -920,7 +920,7 @@ func TestMultiStateVector_save(t *testing.T) {
 		vect:            []uint64{0, 1, 2},
 		stateUseCount:   []uint16{5, 12, 104, 0, 4000},
 		key:             makeStateVectorKey("TestMultiStateVector_save"),
-		kv:              versioned.NewKV(make(ekv.Memstore)),
+		kv:              versioned.NewKV(ekv.MakeMemstore()),
 	}
 
 	expectedData, err := msv.marshal()
@@ -1026,7 +1026,7 @@ func Test_makeMultiStateVectorKey(t *testing.T) {
 // random state.
 func newTestFilledMSV(numKeys uint16, numStates uint8, stateMap [][]bool,
 	key string, t *testing.T) (*MultiStateVector, *versioned.KV) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	msv, err := NewMultiStateVector(numKeys, numStates, stateMap, key, kv)
 	if err != nil {
diff --git a/storage/utility/sidh_test.go b/storage/utility/sidh_test.go
index 34ab3c43c..d547011d3 100644
--- a/storage/utility/sidh_test.go
+++ b/storage/utility/sidh_test.go
@@ -19,7 +19,7 @@ import (
 // TestStoreLoadDeleteSIDHPublicKey tests the load/store/delete functions
 // for SIDH Public Keys
 func TestStoreLoadDeleteSIDHPublicKey(t *testing.T) {
-	kv := make(ekv.Memstore)
+	kv := ekv.MakeMemstore()
 	vkv := versioned.NewKV(kv)
 	rng := fastRNG.NewStreamGenerator(1, 3, csprng.NewSystemRNG)
 	myRng := rng.GetStream()
@@ -85,7 +85,7 @@ func TestStoreLoadDeleteSIDHPublicKey(t *testing.T) {
 // TestStoreLoadDeleteSIDHPublicKey tests the load/store/delete functions
 // for SIDH Private Keys
 func TestStoreLoadDeleteSIDHPrivateKey(t *testing.T) {
-	kv := make(ekv.Memstore)
+	kv := ekv.MakeMemstore()
 	vkv := versioned.NewKV(kv)
 	rng := fastRNG.NewStreamGenerator(1, 3, csprng.NewSystemRNG)
 	myRng := rng.GetStream()
diff --git a/storage/utility/stateVector_test.go b/storage/utility/stateVector_test.go
index 2d537ef61..4b2188b25 100644
--- a/storage/utility/stateVector_test.go
+++ b/storage/utility/stateVector_test.go
@@ -23,7 +23,7 @@ import (
 // Tests that NewStateVector creates the expected new StateVector and that it is
 // saved to storage.
 func TestNewStateVector(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	key := "myTestKey"
 	numKeys := uint32(275)
 	expected := &StateVector{
@@ -559,7 +559,7 @@ func TestLoadStateVector(t *testing.T) {
 // original.
 func TestLoadStateVector_GetError(t *testing.T) {
 	key := "StateVectorLoadStateVector"
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	expectedErr := "object not found"
 
 	_, err := LoadStateVector(kv, key)
@@ -574,7 +574,7 @@ func TestLoadStateVector_GetError(t *testing.T) {
 // original.
 func TestLoadStateVector_UnmarshalError(t *testing.T) {
 	key := "StateVectorLoadStateVector"
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	// Save invalid StateVector to storage
 	obj := versioned.Object{
@@ -606,7 +606,7 @@ func TestStateVector_save(t *testing.T) {
 		numKeys:        1000,
 		numAvailable:   1000,
 		key:            makeStateVectorKey(key),
-		kv:             versioned.NewKV(make(ekv.Memstore)),
+		kv:             versioned.NewKV(ekv.MakeMemstore()),
 	}
 	expectedData, err := sv.marshal()
 	if err != nil {
@@ -717,7 +717,7 @@ func TestStateVector_SaveTEST(t *testing.T) {
 		numKeys:        1000,
 		numAvailable:   1000,
 		key:            makeStateVectorKey(key),
-		kv:             versioned.NewKV(make(ekv.Memstore)),
+		kv:             versioned.NewKV(ekv.MakeMemstore()),
 	}
 	expectedData, err := sv.marshal()
 	if err != nil {
@@ -853,7 +853,7 @@ func TestStateVector_SetNumAvailableTEST_InvalidInterfaceError(t *testing.T) {
 func TestStateVector_SetKvTEST(t *testing.T) {
 	sv := newTestStateVector("SetKvTEST", 1000, t)
 
-	kv := versioned.NewKV(make(ekv.Memstore)).Prefix("NewKV")
+	kv := versioned.NewKV(ekv.MakeMemstore()).Prefix("NewKV")
 	sv.SetKvTEST(kv, t)
 
 	if sv.kv != kv {
@@ -881,7 +881,7 @@ func TestStateVector_SetKvTEST_InvalidInterfaceError(t *testing.T) {
 // newTestStateVector produces a new StateVector using the specified number of
 // keys and key string for testing.
 func newTestStateVector(key string, numKeys uint32, t *testing.T) *StateVector {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	sv, err := NewStateVector(kv, key, numKeys)
 	if err != nil {
diff --git a/storage/versioned/kv.go b/storage/versioned/kv.go
index fe7e8cd6a..2b8b7ae21 100644
--- a/storage/versioned/kv.go
+++ b/storage/versioned/kv.go
@@ -152,7 +152,7 @@ func (v *KV) Prefix(prefix string) *KV {
 }
 
 func (v *KV) IsMemStore() bool {
-	_, success := v.r.data.(ekv.Memstore)
+	_, success := v.r.data.(*ekv.Memstore)
 	return success
 }
 
diff --git a/storage/versioned/kv_test.go b/storage/versioned/kv_test.go
index 88cc0fcb8..99bf17a96 100644
--- a/storage/versioned/kv_test.go
+++ b/storage/versioned/kv_test.go
@@ -17,7 +17,7 @@ import (
 
 // KV get should call the Upgrade function when it's available
 func TestVersionedKV_Get_Err(t *testing.T) {
-	kv := make(ekv.Memstore)
+	kv := ekv.MakeMemstore()
 	vkv := NewKV(kv)
 	key := vkv.GetFullKey("test", 0)
 	result, err := vkv.Get(key, 0)
@@ -34,7 +34,7 @@ func TestVersionedKV_Get_Err(t *testing.T) {
 // Test versioned KV happy path
 func TestVersionedKV_GetUpgrade(t *testing.T) {
 	// Set up a dummy KV with the required data
-	kv := make(ekv.Memstore)
+	kv := ekv.MakeMemstore()
 	vkv := NewKV(kv)
 	key := vkv.GetFullKey("test", 0)
 	original := Object{
@@ -42,8 +42,10 @@ func TestVersionedKV_GetUpgrade(t *testing.T) {
 		Timestamp: netTime.Now(),
 		Data:      []byte("not upgraded"),
 	}
-	originalSerialized := original.Marshal()
-	kv[key] = originalSerialized
+	err := kv.Set(key, &original)
+	if err != nil {
+		t.Errorf("Failed to set original: %+v", err)
+	}
 
 	upgrade := []Upgrade{func(oldObject *Object) (*Object, error) {
 		return &Object{
@@ -69,7 +71,7 @@ func TestVersionedKV_GetUpgrade(t *testing.T) {
 // Test versioned KV key not found path
 func TestVersionedKV_GetUpgrade_KeyNotFound(t *testing.T) {
 	// Set up a dummy KV with the required data
-	kv := make(ekv.Memstore)
+	kv := ekv.MakeMemstore()
 	vkv := NewKV(kv)
 	key := "test"
 
@@ -91,7 +93,7 @@ func TestVersionedKV_GetUpgrade_KeyNotFound(t *testing.T) {
 // Test versioned KV upgrade func returns error path
 func TestVersionedKV_GetUpgrade_UpgradeReturnsError(t *testing.T) {
 	// Set up a dummy KV with the required data
-	kv := make(ekv.Memstore)
+	kv := ekv.MakeMemstore()
 	vkv := NewKV(kv)
 	key := vkv.GetFullKey("test", 0)
 	original := Object{
@@ -99,8 +101,10 @@ func TestVersionedKV_GetUpgrade_UpgradeReturnsError(t *testing.T) {
 		Timestamp: netTime.Now(),
 		Data:      []byte("not upgraded"),
 	}
-	originalSerialized := original.Marshal()
-	kv[key] = originalSerialized
+	err := kv.Set(key, &original)
+	if err != nil {
+		t.Errorf("Failed to set original: %+v", err)
+	}
 
 	upgrade := []Upgrade{func(oldObject *Object) (*Object, error) {
 		return &Object{}, errors.New("test error")
@@ -119,7 +123,7 @@ func TestVersionedKV_GetUpgrade_UpgradeReturnsError(t *testing.T) {
 // Test delete key happy path
 func TestVersionedKV_Delete(t *testing.T) {
 	// Set up a dummy KV with the required data
-	kv := make(ekv.Memstore)
+	kv := ekv.MakeMemstore()
 	vkv := NewKV(kv)
 	key := vkv.GetFullKey("test", 0)
 	original := Object{
@@ -127,16 +131,20 @@ func TestVersionedKV_Delete(t *testing.T) {
 		Timestamp: netTime.Now(),
 		Data:      []byte("not upgraded"),
 	}
-	originalSerialized := original.Marshal()
-	kv[key] = originalSerialized
+	err := kv.Set(key, &original)
+	if err != nil {
+		t.Errorf("Failed to set original: %+v", err)
+	}
 
-	err := vkv.Delete("test", 0)
+	err = vkv.Delete("test", 0)
 	if err != nil {
 		t.Fatalf("Error getting something that should have been in: %v",
 			err)
 	}
 
-	if _, ok := kv[key]; ok {
+	o := &Object{}
+	err = kv.Get(key, o)
+	if err == nil {
 		t.Fatal("Key still exists in kv map")
 	}
 }
@@ -144,7 +152,7 @@ func TestVersionedKV_Delete(t *testing.T) {
 // Test get without Upgrade path
 func TestVersionedKV_Get(t *testing.T) {
 	// Set up a dummy KV with the required data
-	kv := make(ekv.Memstore)
+	kv := ekv.MakeMemstore()
 	vkv := NewKV(kv)
 	originalVersion := uint64(0)
 	key := vkv.GetFullKey("test", originalVersion)
@@ -153,8 +161,10 @@ func TestVersionedKV_Get(t *testing.T) {
 		Timestamp: netTime.Now(),
 		Data:      []byte("not upgraded"),
 	}
-	originalSerialized := original.Marshal()
-	kv[key] = originalSerialized
+	err := kv.Set(key, &original)
+	if err != nil {
+		t.Errorf("Failed to set original in kv: %+v", err)
+	}
 
 	result, err := vkv.Get("test", originalVersion)
 	if err != nil {
@@ -169,7 +179,7 @@ func TestVersionedKV_Get(t *testing.T) {
 
 // Test that Set puts data in the store
 func TestVersionedKV_Set(t *testing.T) {
-	kv := make(ekv.Memstore)
+	kv := ekv.MakeMemstore()
 	vkv := NewKV(kv)
 	originalVersion := uint64(1)
 	key := vkv.GetFullKey("test", originalVersion)
@@ -184,8 +194,9 @@ func TestVersionedKV_Set(t *testing.T) {
 	}
 
 	// Store should now have data in it at that key
-	_, ok := kv[key]
-	if !ok {
-		t.Error("data store didn't have anything in the key")
+	o := &Object{}
+	err = kv.Get(key, o)
+	if err != nil {
+		t.Error("data store didn't have anything in the key: %+v", err)
 	}
 }
diff --git a/ud/addFact_test.go b/ud/addFact_test.go
index 3ed67bc62..1a1a38cdc 100644
--- a/ud/addFact_test.go
+++ b/ud/addFact_test.go
@@ -28,7 +28,7 @@ func (rFC *testAFC) SendRegisterFact(*connect.Host, *pb.FactRegisterRequest) (
 // Test that the addFact function completes successfully
 func TestAddFact(t *testing.T) {
 
-	m := newTestManager(t)
+	m, _ := newTestManager(t)
 
 	// Create our test fact
 	USCountryCode := "US"
diff --git a/ud/confirmFact_test.go b/ud/confirmFact_test.go
index 65573efd5..b59a3c385 100644
--- a/ud/confirmFact_test.go
+++ b/ud/confirmFact_test.go
@@ -22,7 +22,7 @@ func (t *testComm) SendConfirmFact(_ *connect.Host, message *pb.FactConfirmReque
 func TestManager_confirmFact(t *testing.T) {
 
 	// Create our Manager object
-	m := newTestManager(t)
+	m, _ := newTestManager(t)
 
 	c := &testComm{}
 
diff --git a/ud/manager_test.go b/ud/manager_test.go
index bb84a3cbc..1bf18a58b 100644
--- a/ud/manager_test.go
+++ b/ud/manager_test.go
@@ -50,7 +50,7 @@ EnretBzQkeKeBwoB2u6NTiOmUjk=
 var testContact = `<xxc(2)LF2ccT+sdqh0AIKlFFeDOJdnxzbQQYhGStgxhOXmijIDkAZiB9kZo+Dl3bRSbBi5pXZ82rOu2IQXz9+5sspChvoccZqgC/dXGhlesmiNy/EbKxWtptTF4tcNyQxtnmCXg1p/HwKey4G2XDekTw86lq6Lpmj72jozvRWlQisqvWz/5deiPaeFGKDKC0OrrDFnIib7WnKqdYt4XyTKdmObnmbvdCbliZq0zBl7J40qKy5FypYXGlZjStIm0R1qtD4XHMZMsrMJEGxdM55zJdSzknXbR8MNahUrGMyUOTivXLHzojYLht0gFQifKMVWhrDjUoVQV43KOLPmdBwY/2Kc5KvVloDeuDXYY0i7tD63gNIp9JA3gJQUJymDdwqbS13riT1DMHHkdTzKEyGdHS+v2l7AVSlJBiTKuyM00FBNuXhhIcFR7ONFCf8cRPOPPBx3Q6iHNsvsca3KPNhwOJBgaQvHSkjIMsudiR954QbwG9rbi2vxVobIgWYMl5j6vlBS/9rfbE/uLdTEQZfNsLKDCIVCCI4I1bYZxZrDLPrfXTrN6W0sCLE7a/kRBQAAAgA7+LwJqiv9O1ogLnS4TYkSEg==xxc>`
 
 func TestManager_SetAlternativeUserDiscovery(t *testing.T) {
-	m := newTestManager(t)
+	m, _ := newTestManager(t)
 
 	altAddr := "0.0.0.0:11420"
 	err := m.SetAlternativeUserDiscovery([]byte(testCert), []byte(altAddr), []byte(testContact))
diff --git a/ud/register_test.go b/ud/register_test.go
index f4194f05d..3aae46e19 100644
--- a/ud/register_test.go
+++ b/ud/register_test.go
@@ -24,7 +24,7 @@ func (t *testRegisterComm) SendRegisterUser(_ *connect.Host, msg *pb.UDBUserRegi
 
 // Happy path.
 func TestManager_register(t *testing.T) {
-	m := newTestManager(t)
+	m, _ := newTestManager(t)
 
 	udHost, err := m.getOrAddUdHost()
 	if err != nil {
diff --git a/ud/search_test.go b/ud/search_test.go
index 42bedb170..658469245 100644
--- a/ud/search_test.go
+++ b/ud/search_test.go
@@ -1,9 +1,13 @@
 package ud
 
 import (
+	"encoding/base64"
 	"fmt"
 	"gitlab.com/elixxir/crypto/contact"
+	dh "gitlab.com/elixxir/crypto/diffieHellman"
+	"gitlab.com/elixxir/crypto/e2e/singleUse"
 	"gitlab.com/elixxir/primitives/fact"
+	"gitlab.com/xx_network/crypto/csprng"
 	"gitlab.com/xx_network/primitives/id"
 	"math/rand"
 	"testing"
@@ -13,7 +17,7 @@ import (
 // Happy path.
 func TestManager_Search(t *testing.T) {
 
-	m := newTestManager(t)
+	m, tnm := newTestManager(t)
 	// Generate callback function
 	callbackChan := make(chan struct {
 		c   []contact.Contact
@@ -36,11 +40,32 @@ func TestManager_Search(t *testing.T) {
 	}
 	factHashes, _ := hashFactList(factList)
 
+	grp := getGroup()
+
+	dhKeyBytes, err := base64.StdEncoding.DecodeString(dhKeyEnc)
+	if err != nil {
+		panic("Failed to decode dh key")
+	}
+	dhKey := grp.NewIntFromBytes(dhKeyBytes)
+
+	dhPubKey := dh.GeneratePublicKey(dhKey, grp)
+
+	rng := NewPrng(42)
+	privKeyBytes, err := csprng.GenerateInGroup(
+		grp.GetP().Bytes(), grp.GetP().ByteLen(), rng)
+	if err != nil {
+		t.Fatalf("Failed to gen pk bytes: %+v", err)
+	}
+	privKey := grp.NewIntFromBytes(privKeyBytes)
+	dhKeyGenerated := grp.Exp(dhPubKey, privKey, grp.NewInt(1))
+
+	tnm.msg.SetMac(singleUse.MakeMAC(singleUse.NewResponseKey(dhKeyGenerated, 0), tnm.msg.GetContents()))
+
 	var contacts []*Contact
-	for i, hash := range factHashes {
+	for _, hash := range factHashes {
 		contacts = append(contacts, &Contact{
 			UserID:    id.NewIdFromString("user", id.User, t).Marshal(),
-			PubKey:    []byte{byte(i + 1)},
+			PubKey:    dhPubKey.Bytes(),
 			TrigFacts: []*HashFact{hash},
 		})
 	}
diff --git a/ud/store/facts_test.go b/ud/store/facts_test.go
index c4bb5ea77..332b5289d 100644
--- a/ud/store/facts_test.go
+++ b/ud/store/facts_test.go
@@ -18,7 +18,7 @@ import (
 
 func TestNewStore(t *testing.T) {
 
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	_, err := NewStore(kv)
 	if err != nil {
@@ -30,7 +30,7 @@ func TestNewStore(t *testing.T) {
 // Unit test
 func TestStore_RestoreFromBackUp(t *testing.T) {
 
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	s, err := NewStore(kv)
 	if err != nil {
@@ -59,7 +59,7 @@ func TestStore_RestoreFromBackUp(t *testing.T) {
 // Error case.
 func TestStore_RestoreFromBackUp_StatefulStore(t *testing.T) {
 
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	s, err := NewStore(kv)
 	if err != nil {
@@ -88,7 +88,7 @@ func TestStore_RestoreFromBackUp_StatefulStore(t *testing.T) {
 }
 
 func TestStore_ConfirmFact(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	expectedStore, err := NewStore(kv)
 	if err != nil {
@@ -126,7 +126,7 @@ func TestStore_ConfirmFact(t *testing.T) {
 }
 
 func TestStore_StoreUnconfirmedFact(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	expectedStore, err := NewStore(kv)
 	if err != nil {
@@ -154,7 +154,7 @@ func TestStore_StoreUnconfirmedFact(t *testing.T) {
 }
 
 func TestStore_DeleteFact(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	expectedStore, err := NewStore(kv)
 	if err != nil {
@@ -186,7 +186,7 @@ func TestStore_DeleteFact(t *testing.T) {
 }
 
 func TestStore_BackUpMissingFacts(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	expectedStore, err := NewStore(kv)
 	if err != nil {
@@ -221,7 +221,7 @@ func TestStore_BackUpMissingFacts(t *testing.T) {
 }
 
 func TestStore_BackUpMissingFacts_DuplicateFactType(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	expectedStore, err := NewStore(kv)
 	if err != nil {
@@ -258,7 +258,7 @@ func TestStore_BackUpMissingFacts_DuplicateFactType(t *testing.T) {
 }
 
 func TestStore_GetFacts(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	testStore, err := NewStore(kv)
 	if err != nil {
@@ -307,7 +307,7 @@ func TestStore_GetFacts(t *testing.T) {
 }
 
 func TestStore_GetFactStrings(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	testStore, err := NewStore(kv)
 	if err != nil {
diff --git a/ud/store/store_test.go b/ud/store/store_test.go
index ffe058f51..ed56cb67c 100644
--- a/ud/store/store_test.go
+++ b/ud/store/store_test.go
@@ -11,7 +11,7 @@ import (
 
 // Test it loads a Store from storage if it exists.
 func TestNewOrLoadStore_LoadStore(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	expectedStore, err := NewStore(kv)
 	if err != nil {
@@ -34,7 +34,7 @@ func TestNewOrLoadStore_LoadStore(t *testing.T) {
 
 // Test that it creates a new store if an old one is not in storage.
 func TestNewOrLoadStore_NewStore(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	receivedStore, err := NewOrLoadStore(kv)
 	if err != nil {
@@ -57,7 +57,7 @@ func TestNewOrLoadStore_NewStore(t *testing.T) {
 }
 
 func TestStore_MarshalUnmarshal_ConfirmedFacts(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	expectedStore, err := NewStore(kv)
 	if err != nil {
@@ -93,7 +93,7 @@ func TestStore_MarshalUnmarshal_ConfirmedFacts(t *testing.T) {
 }
 
 func TestStore_MarshalUnmarshal_UnconfirmedFacts(t *testing.T) {
-	kv := versioned.NewKV(make(ekv.Memstore))
+	kv := versioned.NewKV(ekv.MakeMemstore())
 
 	expectedStore, err := NewStore(kv)
 	if err != nil {
diff --git a/ud/utils_test.go b/ud/utils_test.go
index 3e6fec489..c8eaf322b 100644
--- a/ud/utils_test.go
+++ b/ud/utils_test.go
@@ -62,7 +62,7 @@ const dhKeyEnc = `hQj4FKeaQDt34eO/BQe5OSk571WMQBu4YNqMQ0TFeuzjzCM9lLMuOsQhcyjZcI
 const lookupRequestEnc = `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`
 const requestPayloadEnc = `Sry8sWk5e7cBFAF2CiQKICC9B+rB81+KaZUf1XD5x/RC8Bl7ZqAoEGCtB0ypo/xtEAEKJAogbsIlu6TrpyGid5++VmWKd9C2Y9rzvr1Y2rDidtf0ICAQAwokCiB6CDF+i190lrha+7y+GeMLB0YKvhEnrGE+EO0GlACQHBADCiQKIKlG3oPmfOITbJnlVJjm2WIUnZoWSHmoTfmPCk1H0vuMEAMKJAogyCwoeonTQJuo2W15zn1BrDOrpf+QczJT+x1Ak3RXt8IQAQokCiCCTpbfpLGONZZmFija6iha27ha53ldjcuUY0+0lSBDHhACCiQKIAtD0y0KxTuAu3X5zw4/8Piq5DozpCj2D8+21drCNIE/EAEKIgogUwdmrhlCQHZDCNiRNTgqmp2f45kfrgAgjZBphAZV1wAKIgogfdxWG8zn9BJqV+xYSVMRhUtbF8jBOOpSbg+NbREc7sMKIgogaemYLCW8fFcO7gD8u7lapaqJbspJND4oQ5eZ/6NdvkwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA`
 
-func newTestManager(t *testing.T) *Manager {
+func newTestManager(t *testing.T) (*Manager, *testNetworkManager) {
 
 	keyData, err := utils.ReadFile(testkeys.GetNodeKeyPath())
 	if err != nil {
@@ -74,7 +74,7 @@ func newTestManager(t *testing.T) *Manager {
 		t.Fatalf("Could not load public key")
 	}
 
-	kv := versioned.NewKV(ekv.Memstore{})
+	kv := versioned.NewKV(ekv.MakeMemstore())
 	udStore, err := store.NewOrLoadStore(kv)
 	if err != nil {
 		t.Fatalf("Failed to initialize store %v", err)
@@ -121,7 +121,7 @@ func newTestManager(t *testing.T) *Manager {
 
 	tnm.EncryptMockMessage(t)
 
-	return m
+	return m, tnm
 }
 
 // Prng is a PRNG that satisfies the csprng.Source interface.
@@ -137,7 +137,7 @@ func newTestNetworkManager(t *testing.T) *testNetworkManager {
 	// todo: make a non-random rng and pass it in
 
 	thisInstance, err := network.NewInstanceTesting(instanceComms, getNDF(),
-		getNDF(), nil, nil, t)
+		getNDF(), getGroup(), getGroup(), t)
 	if err != nil {
 		t.Fatalf("Failed to create new test instance: %v", err)
 	}
@@ -392,7 +392,7 @@ func getNDF() *ndf.NetworkDefinition {
 	return &ndf.NetworkDefinition{
 		UDB: ndf.UDB{
 			ID:       id.DummyUser.Bytes(),
-			Cert:     "",
+			Cert:     testCert,
 			Address:  "address",
 			DhPubKey: []byte{123, 34, 86, 97, 108, 117, 101, 34, 58, 50, 48, 54, 50, 57, 49, 51, 55, 48, 49, 55, 55, 48, 48, 57, 48, 52, 56, 51, 54, 55, 57, 55, 51, 52, 57, 54, 56, 52, 53, 52, 57, 49, 52, 54, 55, 53, 53, 49, 53, 51, 50, 51, 52, 57, 51, 48, 50, 51, 55, 48, 54, 55, 49, 53, 50, 50, 54, 56, 51, 48, 52, 48, 57, 49, 48, 48, 52, 54, 48, 54, 55, 51, 52, 57, 48, 56, 53, 57, 49, 57, 52, 54, 48, 56, 49, 55, 53, 55, 54, 51, 49, 48, 56, 57, 55, 48, 50, 56, 53, 56, 54, 54, 53, 51, 50, 49, 48, 55, 53, 57, 56, 53, 49, 56, 54, 49, 49, 49, 52, 52, 57, 51, 57, 50, 51, 51, 49, 50, 51, 52, 53, 51, 57, 50, 52, 50, 50, 48, 57, 48, 55, 48, 51, 49, 51, 50, 49, 56, 48, 56, 54, 50, 53, 56, 51, 49, 57, 56, 54, 53, 57, 50, 53, 48, 56, 50, 48, 51, 48, 57, 53, 51, 53, 57, 54, 50, 52, 53, 54, 51, 48, 54, 50, 55, 48, 48, 55, 49, 49, 52, 49, 48, 55, 54, 51, 50, 49, 56, 48, 56, 52, 54, 54, 52, 50, 57, 55, 56, 49, 52, 53, 54, 53, 55, 52, 57, 55, 54, 55, 56, 50, 52, 49, 57, 56, 49, 52, 50, 53, 48, 52, 52, 54, 50, 57, 54, 57, 54, 55, 48, 51, 52, 53, 51, 56, 48, 52, 50, 53, 49, 53, 50, 51, 54, 55, 55, 57, 55, 50, 55, 53, 53, 51, 56, 53, 55, 48, 55, 51, 57, 57, 55, 57, 53, 54, 48, 49, 48, 51, 55, 52, 53, 49, 54, 51, 57, 56, 56, 49, 51, 57, 52, 48, 53, 54, 49, 50, 49, 57, 49, 54, 48, 54, 55, 48, 53, 57, 57, 55, 56, 57, 53, 52, 50, 51, 52, 56, 49, 51, 49, 57, 57, 52, 50, 53, 50, 55, 49, 48, 56, 54, 50, 53, 57, 53, 53, 55, 52, 53, 54, 54, 54, 51, 53, 51, 52, 51, 54, 49, 52, 52, 55, 51, 56, 52, 48, 54, 52, 51, 49, 56, 55, 52, 53, 56, 53, 49, 49, 53, 55, 48, 50, 52, 49, 56, 52, 56, 50, 49, 56, 49, 51, 49, 49, 51, 52, 57, 50, 57, 57, 56, 49, 51, 54, 52, 56, 54, 54, 55, 48, 50, 52, 48, 51, 48, 51, 51, 54, 55, 53, 54, 56, 56, 48, 55, 54, 54, 54, 55, 56, 50, 51, 48, 53, 57, 54, 49, 51, 53, 54, 50, 51, 51, 51, 55, 56, 53, 48, 49, 50, 48, 48, 49, 49, 50, 54, 48, 53, 54, 52, 49, 52, 50, 50, 55, 51, 56, 51, 56, 52, 51, 54, 48, 49, 55, 50, 53, 51, 49, 49, 49, 49, 57, 50, 51, 55, 54, 48, 51, 49, 51, 54, 48, 48, 50, 57, 56, 51, 52, 50, 50, 56, 54, 55, 56, 51, 55, 55, 52, 56, 48, 53, 57, 56, 51, 50, 48, 51, 48, 49, 48, 54, 50, 57, 56, 51, 55, 54, 54, 53, 56, 57, 49, 50, 52, 55, 54, 54, 49, 56, 49, 49, 52, 57, 54, 57, 51, 50, 50, 48, 55, 54, 53, 54, 51, 53, 52, 56, 49, 52, 57, 53, 52, 56, 55, 56, 48, 56, 49, 56, 52, 56, 50, 50, 54, 55, 54, 53, 56, 48, 57, 55, 56, 50, 54, 50, 50, 57, 56, 57, 48, 50, 53, 56, 50, 56, 53, 55, 57, 55, 57, 48, 50, 53, 52, 54, 48, 56, 50, 57, 49, 56, 51, 57, 52, 53, 51, 54, 53, 56, 56, 55, 55, 54, 52, 51, 51, 57, 53, 51, 56, 55, 54, 56, 48, 48, 57, 57, 53, 51, 52, 51, 49, 54, 49, 48, 52, 56, 55, 49, 57, 54, 49, 54, 49, 48, 49, 53, 49, 50, 49, 48, 57, 56, 54, 54, 56, 48, 57, 49, 52, 56, 55, 51, 48, 54, 52, 50, 51, 54, 57, 49, 53, 54, 48, 51, 48, 49, 53, 55, 56, 48, 50, 54, 51, 49, 57, 51, 49, 52, 53, 52, 51, 52, 57, 50, 53, 52, 56, 49, 55, 52, 50, 53, 56, 49, 54, 56, 49, 51, 55, 55, 56, 56, 56, 48, 56, 50, 54, 48, 53, 55, 53, 55, 54, 54, 49, 52, 54, 51, 54, 55, 57, 57, 50, 52, 51, 52, 54, 52, 57, 48, 54, 56, 48, 49, 57, 48, 48, 50, 56, 53, 52, 52, 51, 54, 56, 48, 52, 48, 51, 52, 57, 50, 51, 48, 49, 51, 55, 50, 57, 55, 57, 56, 53, 50, 53, 54, 51, 48, 52, 50, 50, 49, 51, 51, 51, 56, 50, 52, 49, 48, 55, 57, 53, 51, 52, 54, 51, 57, 55, 51, 54, 53, 54, 55, 53, 53, 55, 51, 50, 52, 53, 51, 48, 55, 51, 54, 55, 52, 52, 51, 52, 56, 48, 51, 57, 53, 49, 52, 53, 56, 51, 53, 57, 57, 51, 52, 55, 54, 55, 57, 49, 55, 55, 54, 48, 50, 52, 50, 51, 51, 52, 49, 55, 54, 50, 49, 49, 50, 49, 54, 48, 56, 48, 52, 53, 55, 52, 55, 56, 53, 52, 54, 52, 51, 54, 50, 48, 53, 54, 56, 55, 56, 51, 57, 54, 49, 50, 54, 52, 52, 52, 55, 53, 57, 57, 57, 57, 51, 55, 50, 57, 52, 54, 49, 54, 51, 56, 57, 54, 56, 54, 57, 50, 57, 56, 54, 48, 53, 53, 53, 51, 49, 53, 53, 55, 53, 57, 50, 57, 53, 55, 49, 54, 55, 49, 55, 48, 57, 55, 56, 53, 57, 51, 57, 51, 48, 56, 51, 56, 56, 57, 49, 49, 49, 52, 55, 54, 54, 44, 34, 70, 105, 110, 103, 101, 114, 112, 114, 105, 110, 116, 34, 58, 49, 54, 56, 48, 49, 53, 52, 49, 53, 49, 49, 50, 51, 51, 48, 57, 56, 51, 54, 51, 125},
 		},
-- 
GitLab