diff --git a/cmd/root.go b/cmd/root.go index 696fd672adc7332e602d0aa60f99876f59674ba6..2b5fbe29df75f8bbec1875bbeeaa230b462d0745 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -674,7 +674,7 @@ func initClient(cmixParams xxdk.CMIXParams, e2eParams xxdk.E2EParams) *xxdk.E2e authCbs = makeAuthCallbacks( viper.GetBool("unsafe-channel-creation"), e2eParams) - client, err := xxdk.LoginLegacy(baseclient, authCbs) + client, err := xxdk.LoginLegacy(baseclient, e2eParams, authCbs) if err != nil { jww.FATAL.Panicf("%+v", err) } diff --git a/restlike/connect/server.go b/restlike/connect/server.go index d2a22dad5d3a46dbd63af11dbf5f2eb937a080da..9ba7544d07ef219442f67e373e3efcdfac95a1da 100644 --- a/restlike/connect/server.go +++ b/restlike/connect/server.go @@ -23,7 +23,7 @@ type Server struct { // NewServer builds a RestServer with connect.Connection and // the provided arguments, then registers necessary external services func NewServer(identity xxdk.ReceptionIdentity, net *xxdk.Cmix, - p connect.Params) (*Server, error) { + p xxdk.E2EParams) (*Server, error) { newServer := &Server{ receptionId: identity.ID, endpoints: restlike.NewEndpoints(), diff --git a/xxdk/e2e.go b/xxdk/e2e.go index 98cee5deb65cf7d38f12118990c30dd736c65e0a..cb21a4fdded8f573f73649b792ddbdc68252304f 100644 --- a/xxdk/e2e.go +++ b/xxdk/e2e.go @@ -51,21 +51,24 @@ type AuthCallbacks interface { // It bundles a Cmix object with a ReceptionIdentity object // and initializes the auth.State and e2e.Handler objects func Login(client *Cmix, callbacks AuthCallbacks, - identity ReceptionIdentity) (m *E2e, err error) { - return login(client, callbacks, identity, client.GetStorage().GetKV()) + identity ReceptionIdentity, params E2EParams) (m *E2e, err error) { + return login(client, callbacks, identity, client.GetStorage().GetKV(), + params) } // LoginEphemeral creates a new E2e backed by a totally ephemeral versioned.KV func LoginEphemeral(client *Cmix, callbacks AuthCallbacks, - identity ReceptionIdentity) (m *E2e, err error) { - return login(client, callbacks, identity, versioned.NewKV(ekv.MakeMemstore())) + identity ReceptionIdentity, params E2EParams) (m *E2e, err error) { + return login(client, callbacks, identity, + versioned.NewKV(ekv.MakeMemstore()), params) } // LoginLegacy creates a new E2e backed by the xxdk.Cmix persistent versioned.KV // Uses the pre-generated transmission ID used by xxdk.Cmix. // This function is designed to maintain backwards compatibility with previous // xx messenger designs and should not be used for other purposes. -func LoginLegacy(client *Cmix, callbacks AuthCallbacks) (m *E2e, err error) { +func LoginLegacy(client *Cmix, params E2EParams, callbacks AuthCallbacks) ( + m *E2e, err error) { m = &E2e{ Cmix: client, backup: &Container{}, @@ -87,8 +90,8 @@ func LoginLegacy(client *Cmix, callbacks AuthCallbacks) (m *E2e, err error) { m.auth, err = auth.NewStateLegacy(client.GetStorage().GetKV(), client.GetCmix(), m.e2e, client.GetRng(), - client.GetEventReporter(), auth.GetDefaultParams(), acw, - m.backup.TriggerBackup) + client.GetEventReporter(), params.Auth, params.Session, + acw, m.backup.TriggerBackup) if err != nil { return nil, err } @@ -108,7 +111,8 @@ func LoginLegacy(client *Cmix, callbacks AuthCallbacks) (m *E2e, err error) { // while replacing the base NDF. This is designed for some specific deployment // procedures and is generally unsafe. func LoginWithNewBaseNDF_UNSAFE(storageDir string, password []byte, - newBaseNdf string, params CMIXParams) (*E2e, error) { + newBaseNdf string, e2eParams E2EParams, cmixParams CMIXParams) (*E2e, + error) { jww.INFO.Printf("LoginWithNewBaseNDF_UNSAFE()") def, err := ParseNDF(newBaseNdf) @@ -116,7 +120,7 @@ func LoginWithNewBaseNDF_UNSAFE(storageDir string, password []byte, return nil, err } - c, err := LoadCmix(storageDir, password, params) + c, err := LoadCmix(storageDir, password, cmixParams) if err != nil { return nil, err } @@ -140,7 +144,7 @@ func LoginWithNewBaseNDF_UNSAFE(storageDir string, password []byte, return nil, err } - return LoginLegacy(c, nil) + return LoginLegacy(c, e2eParams, nil) } // LoginWithProtoClient creates a client object with a protoclient @@ -148,7 +152,7 @@ func LoginWithNewBaseNDF_UNSAFE(storageDir string, password []byte, // some specific deployment procedures and is generally unsafe. func LoginWithProtoClient(storageDir string, password []byte, protoClientJSON []byte, newBaseNdf string, callbacks AuthCallbacks, - params CMIXParams) (*E2e, error) { + cmixParams CMIXParams, e2eParams E2EParams) (*E2e, error) { jww.INFO.Printf("LoginWithProtoClient()") def, err := ParseNDF(newBaseNdf) @@ -168,7 +172,7 @@ func LoginWithProtoClient(storageDir string, password []byte, return nil, err } - c, err := LoadCmix(storageDir, password, params) + c, err := LoadCmix(storageDir, password, cmixParams) if err != nil { return nil, err } @@ -192,12 +196,12 @@ func LoginWithProtoClient(storageDir string, password []byte, RSAPrivatePem: protoUser.ReceptionRSA, Salt: protoUser.ReceptionSalt, DHKeyPrivate: protoUser.E2eDhPrivateKey, - }) + }, e2eParams) } // login creates a new xxdk.E2e backed by the given versioned.KV -func login(client *Cmix, callbacks AuthCallbacks, - identity ReceptionIdentity, kv *versioned.KV) (m *E2e, err error) { +func login(client *Cmix, callbacks AuthCallbacks, identity ReceptionIdentity, + kv *versioned.KV, params E2EParams) (m *E2e, err error) { // Verify the passed-in ReceptionIdentity matches its properties generatedId, err := xx.NewID(identity.RSAPrivatePem.GetPublic(), identity.Salt, id.User) @@ -255,7 +259,7 @@ func login(client *Cmix, callbacks AuthCallbacks, m.auth, err = auth.NewState(kv, client.GetCmix(), m.e2e, client.GetRng(), client.GetEventReporter(), - auth.GetDefaultTemporaryParams(), acw, m.backup.TriggerBackup) + params.Auth, params.Session, acw, m.backup.TriggerBackup) if err != nil { return nil, err } diff --git a/xxdk/params.go b/xxdk/params.go index c8d5c3466867ee7f2d4058b8dc1aa7d655e7754a..f2e85770bf072b3c731e70816d6b8d736d09d164 100644 --- a/xxdk/params.go +++ b/xxdk/params.go @@ -13,6 +13,7 @@ package xxdk import ( "encoding/json" + "gitlab.com/elixxir/client/auth" "gitlab.com/elixxir/client/cmix" "gitlab.com/elixxir/client/e2e" "gitlab.com/elixxir/client/e2e/ratchet/partner/session" @@ -39,6 +40,7 @@ type E2EParams struct { Base e2e.Params Rekey rekey.Params EphemeralRekey rekey.Params + Auth auth.Params } //////////////////////////////////////// @@ -75,6 +77,7 @@ func GetDefaultE2EParams() E2EParams { Base: e2e.GetDefaultParams(), Rekey: rekey.GetDefaultParams(), EphemeralRekey: rekey.GetDefaultEphemeralParams(), + Auth: auth.GetDefaultParams(), } }