diff --git a/api/messenger/messenger.go b/api/messenger/messenger.go
index b6296b797f50d3186847f63ad22f0b17c24e6d96..901d458c602a25722257497865f4b6ecc0d29f1f 100644
--- a/api/messenger/messenger.go
+++ b/api/messenger/messenger.go
@@ -29,7 +29,7 @@ func Login(client *api.Client, callbacks auth.Callbacks) (m *Client, err error)
 		backup: &Container{},
 	}
 
-	m.e2e, err = loadOrInitE2e(client)
+	m.e2e, err = LoadOrInitE2e(client)
 	if err != nil {
 		return nil, err
 	}
@@ -44,10 +44,10 @@ func Login(client *api.Client, callbacks auth.Callbacks) (m *Client, err error)
 	return m, err
 }
 
-// loadOrInitE2e loads the e2e handler or makes a new one, generating a new
+// LoadOrInitE2e loads the e2e handler or makes a new one, generating a new
 // e2e private key. It attempts to load via a legacy construction, then tries
 // to load the modern one, creating a new modern ID if neither can be found
-func loadOrInitE2e(client *api.Client) (e2e.Handler, error) {
+func LoadOrInitE2e(client *api.Client) (e2e.Handler, error) {
 	usr := client.GetUser()
 	e2eGrp := client.GetStorage().GetE2EGroup()
 	kv := client.GetStorage().GetKV()
diff --git a/cmd/init.go b/cmd/init.go
index 9a10595e53848a70a14836d83cb345a87165b96a..ad48ca4850e5046c89b6e7b73ea212cad77856d9 100644
--- a/cmd/init.go
+++ b/cmd/init.go
@@ -10,9 +10,11 @@ package cmd
 
 import (
 	"fmt"
+
 	"github.com/spf13/cobra"
 	jww "github.com/spf13/jwalterweatherman"
 	"github.com/spf13/viper"
+	"gitlab.com/elixxir/client/api/messenger"
 )
 
 // initCmd creates a new user object with the given NDF
@@ -22,7 +24,13 @@ var initCmd = &cobra.Command{
 	Args:  cobra.NoArgs,
 	Run: func(cmd *cobra.Command, args []string) {
 		client := createClient()
+		e2e, err := messenger.LoadOrInitE2e(client)
+		if err != nil {
+			jww.FATAL.Panicf("%+v", err)
+		}
 		user := client.GetUser()
+		user.E2eDhPublicKey = e2e.GetHistoricalDHPubkey()
+
 		jww.INFO.Printf("User: %s", user.ReceptionID)
 		writeContact(user.GetContact())
 		fmt.Printf("%s\n", user.ReceptionID)