func cloneContext(prev *libkb.TestContext) *libkb.TestContext { ret := prev.Clone() ret.SetRuntimeDir(filepath.Join(ret.Tp.Home, "run")) if err := ret.G.ConfigureSocketInfo(); err != nil { ret.T.Fatal(err) } return &ret }
// multiple pgp keys func createFakeUserWithPGPMult(t *testing.T, tc libkb.TestContext) *FakeUser { fu := NewFakeUserOrBust(t, "login") if err := tc.GenerateGPGKeyring(fu.Email, "*****@*****.**"); err != nil { t.Fatal(err) } secui := &libkb.TestSecretUI{Passphrase: fu.Passphrase} s := NewSignupEngine(nil, tc.G) ctx := &Context{ GPGUI: &gpgtestui{}, SecretUI: secui, LogUI: tc.G.UI.GetLogUI(), LoginUI: &libkb.TestLoginUI{Username: fu.Username}, } f := func(a libkb.LoginContext) error { if err := s.genPassphraseStream(a, fu.Passphrase); err != nil { return err } if err := s.join(a, fu.Username, fu.Email, testInviteCode, true); err != nil { t.Fatal(err) } fu.User = s.GetMe() // fake the lks: if err := s.fakeLKS(); err != nil { return err } if err := s.addGPG(a, ctx, false); err != nil { return err } // hack the gpg ui to select a different key: ctx.GPGUI = &gpgtestui{index: 1} if err := s.addGPG(a, ctx, true); err != nil { return err } return nil } if err := s.G().LoginState().ExternalFunc(f, "createFakeUserWithPGPPubMult"); err != nil { t.Fatal(err) } // now it should have two pgp keys... return fu }
// multiple pgp keys, but only the one with fu.Email associated w/ // keybase account func createFakeUserWithPGPMultSubset(t *testing.T, tc libkb.TestContext, alternateEmail string) *FakeUser { fu := NewFakeUserOrBust(t, "login") if err := tc.GenerateGPGKeyring(fu.Email, alternateEmail); err != nil { t.Fatal(err) } secui := &libkb.TestSecretUI{Passphrase: fu.Passphrase} s := NewSignupEngine(nil, tc.G) ctx := &Context{ GPGUI: newGPGSelectEmailUI(fu.Email), SecretUI: secui, LogUI: tc.G.UI.GetLogUI(), LoginUI: &libkb.TestLoginUI{Username: fu.Username}, } f := func(a libkb.LoginContext) error { if err := s.genPassphraseStream(a, fu.Passphrase); err != nil { return err } if err := s.join(a, fu.Username, fu.Email, libkb.TestInvitationCode, true); err != nil { t.Fatal(err) } fu.User = s.GetMe() // fake the lks: if err := s.fakeLKS(); err != nil { return err } // this will add the GPG key for fu.Email to their account if err := s.addGPG(a, ctx, false); err != nil { return err } return nil } if err := s.G().LoginState().ExternalFunc(f, "createFakeUserWithPGPMultSubset"); err != nil { t.Fatal(err) } // now it should have two pgp keys... return fu }
func armorKey(t *testing.T, tc libkb.TestContext, email string) (libkb.PGPFingerprint, keybase1.KID, string) { bundle, err := tc.MakePGPKey(email) if err != nil { t.Fatal(err) } var buf bytes.Buffer writer, err := armor.Encode(&buf, "PGP PRIVATE KEY BLOCK", nil) if err != nil { t.Fatal(err) } if err := bundle.Entity.SerializePrivate(writer, nil); err != nil { t.Fatal(err) } if err := writer.Close(); err != nil { t.Fatal(err) } fp := *bundle.GetFingerprintP() kid := bundle.GetKID() return fp, kid, string(buf.Bytes()) }
func CreateAndSignupFakeUserGPG(tc libkb.TestContext, prefix string) *FakeUser { fu := NewFakeUserOrBust(tc.T, prefix) if err := tc.GenerateGPGKeyring(fu.Email); err != nil { tc.T.Fatal(err) } arg := MakeTestSignupEngineRunArg(fu) arg.SkipGPG = false ctx := &Context{ LogUI: tc.G.UI.GetLogUI(), GPGUI: &gpgtestui{}, SecretUI: fu.NewSecretUI(), LoginUI: libkb.TestLoginUI{Username: fu.Username}, } s := NewSignupEngine(&arg, tc.G) err := RunEngine(s, ctx) if err != nil { tc.T.Fatal(err) } return fu }
// private gpg key not pushed to server func createFakeUserWithPGPPubOnly(t *testing.T, tc libkb.TestContext) *FakeUser { fu := NewFakeUserOrBust(t, "login") if err := tc.GenerateGPGKeyring(fu.Email); err != nil { t.Fatal(err) } secui := &libkb.TestSecretUI{Passphrase: fu.Passphrase} s := NewSignupEngine(nil, tc.G) ctx := &Context{ GPGUI: &gpgPubOnlyTestUI{}, SecretUI: secui, LogUI: tc.G.UI.GetLogUI(), LoginUI: &libkb.TestLoginUI{Username: fu.Username}, } f := func(a libkb.LoginContext) error { if err := s.genPassphraseStream(a, fu.Passphrase); err != nil { return err } if err := s.join(a, fu.Username, fu.Email, testInviteCode, true); err != nil { return err } if err := s.fakeLKS(); err != nil { return err } if err := s.addGPG(a, ctx, false); err != nil { return err } return nil } if err := s.G().LoginState().ExternalFunc(f, "createFakeUserWithPGPPubOnly"); err != nil { t.Fatal(err) } return fu }