func (mp *mockProvisionee) HandleHello(arg keybase1.HelloArg) (res keybase1.HelloRes, err error) { if (mp.behavior & BadProvisioneeSlowHello) != 0 { time.Sleep(testTimeout * 3) } if (mp.behavior & BadProvisioneeFailHello) != 0 { err = ErrHandleHello return } res = keybase1.HelloRes(arg.SigBody) return }
// HandleHello implements HandleHello in kex2.Provisionee. func (e *Kex2Provisionee) HandleHello(harg keybase1.HelloArg) (res keybase1.HelloRes, err error) { e.G().Log.Debug("+ HandleHello()") defer func() { e.G().Log.Debug("- HandleHello() -> %s", libkb.ErrToOk(err)) }() // save parts of the hello arg for later: e.uid = harg.Uid e.sessionToken = harg.Token e.csrfToken = harg.Csrf e.pps = harg.Pps jw, err := jsonw.Unmarshal([]byte(harg.SigBody)) if err != nil { return res, err } // need the username later: e.username, err = jw.AtPath("body.key.username").GetString() if err != nil { return res, err } e.eddsa, err = libkb.GenerateNaclSigningKeyPair() if err != nil { return res, err } if err = e.addDeviceSibkey(jw); err != nil { return res, err } if err = e.reverseSig(jw); err != nil { return res, err } out, err := jw.Marshal() if err != nil { return res, err } return keybase1.HelloRes(out), err }