本文整理汇总了Golang中github.com/keybase/client/go/libkb.LoadMe函数的典型用法代码示例。如果您正苦于以下问题:Golang LoadMe函数的具体用法?Golang LoadMe怎么用?Golang LoadMe使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了LoadMe函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestPGPImportGPGExport
// Issue CORE-2063: check that generated secret key is exported
// to user's GPG keyring.
func TestPGPImportGPGExport(t *testing.T) {
tc := SetupEngineTest(t, "pgpexp")
defer tc.Cleanup()
u := CreateAndSignupFakeUser(tc, "pgp")
ctx := &Context{LogUI: tc.G.UI.GetLogUI(), SecretUI: u.NewSecretUI()}
// before running, they should have no pgp keys in key family or in gpg
me, err := libkb.LoadMe(libkb.NewLoadUserArg(tc.G))
if err != nil {
t.Fatal(err)
}
if len(me.GetActivePGPKeys(false)) != 0 {
t.Fatalf("active pgp keys: %d, expected 0", len(me.GetActivePGPKeys(false)))
}
gpgPrivate, err := numPrivateGPGKeys(tc.G)
if err != nil {
t.Fatal(err)
}
if gpgPrivate != 0 {
t.Fatalf("private gpg keys: %d, expected 0", gpgPrivate)
}
// this is similar to how cmd_pgp_gen works:
genArg := &libkb.PGPGenArg{
PrimaryBits: 1024,
SubkeyBits: 1024,
}
if err := genArg.MakeAllIds(); err != nil {
t.Fatal(err)
}
arg := PGPKeyImportEngineArg{
Gen: genArg,
PushSecret: true,
AllowMulti: true,
DoExport: true,
Ctx: tc.G,
}
eng := NewPGPKeyImportEngine(arg)
if err := RunEngine(eng, ctx); err != nil {
t.Fatal(err)
}
// after running, they should have one pgp keys in key family and in gpg
me, err = libkb.LoadMe(libkb.NewLoadUserArg(tc.G))
if err != nil {
t.Fatal(err)
}
if len(me.GetActivePGPKeys(false)) != 1 {
t.Errorf("active pgp keys: %d, expected 1", len(me.GetActivePGPKeys(false)))
}
gpgPrivate, err = numPrivateGPGKeys(tc.G)
if err != nil {
t.Fatal(err)
}
if gpgPrivate != 1 {
t.Errorf("private gpg keys: %d, expected 1", gpgPrivate)
}
}
示例2: Run
func (e *ListTrackingEngine) Run(ctx *Context) (err error) {
var user *libkb.User
if len(e.arg.ForAssertion) > 0 {
user, err = libkb.LoadUser(libkb.NewLoadUserByNameArg(e.G(), e.arg.ForAssertion))
} else {
user, err = libkb.LoadMe(libkb.NewLoadUserArg(e.G()))
}
if err != nil {
return
}
var trackList TrackList
trackList = user.IDTable().GetTrackList()
trackList, err = filterRxx(trackList, e.arg.Filter)
if err != nil {
return
}
sort.Sort(trackList)
if e.arg.JSON {
err = e.runJSON(trackList, e.arg.Verbose)
} else {
err = e.runTable(trackList)
}
return
}
示例3: Run
func (e *BTCEngine) Run(ctx *Context) (err error) {
e.G().Log.Debug("+ BTCEngine Run")
defer func() {
e.G().Log.Debug("- BTCEngine Run")
}()
_, _, err = libkb.BtcAddrCheck(e.address, nil)
if err != nil {
return err
}
me, err := libkb.LoadMe(libkb.NewLoadUserArg(e.G()))
if err != nil {
return err
}
cryptocurrencyLink := me.IDTable().ActiveCryptocurrency()
if cryptocurrencyLink != nil && !e.force {
return fmt.Errorf("User already has a cryptocurrency address. To overwrite, use --force.")
}
var sigIDToRevoke keybase1.SigID
if cryptocurrencyLink != nil {
sigIDToRevoke = cryptocurrencyLink.GetSigID()
}
ska := libkb.SecretKeyArg{
Me: me,
KeyType: libkb.DeviceSigningKeyType,
}
sigKey, err := e.G().Keyrings.GetSecretKeyWithPrompt(ctx.SecretKeyPromptArg(ska, "to register a cryptocurrency address"))
if err != nil {
return err
}
if err = sigKey.CheckSecretKey(); err != nil {
return err
}
claim, err := me.CryptocurrencySig(sigKey, e.address, sigIDToRevoke)
if err != nil {
return err
}
sig, _, _, err := libkb.SignJSON(claim, sigKey)
if err != nil {
return err
}
kid := sigKey.GetKID()
_, err = e.G().API.Post(libkb.APIArg{
Endpoint: "sig/post",
NeedSession: true,
Args: libkb.HTTPArgs{
"sig": libkb.S{Val: sig},
"signing_kid": libkb.S{Val: kid.String()},
"is_remote_proof": libkb.B{Val: false},
"type": libkb.S{Val: "cryptocurrency"},
},
})
if err != nil {
return err
}
return nil
}
示例4: TestTrackLocal
func TestTrackLocal(t *testing.T) {
tc := SetupEngineTest(t, "track")
defer tc.Cleanup()
fu := CreateAndSignupFakeUser(tc, "track")
_, them, err := runTrackWithOptions(tc, fu, "t_alice", keybase1.TrackOptions{LocalOnly: true, BypassConfirm: true}, fu.NewSecretUI(), false)
if err != nil {
t.Fatal(err)
}
me, err := libkb.LoadMe(libkb.NewLoadUserArg(tc.G))
if err != nil {
t.Fatal(err)
}
s, err := me.TrackChainLinkFor(them.GetName(), them.GetUID())
if err != nil {
t.Fatal(err)
}
if s == nil {
t.Fatal("no tracking statement")
}
if s.IsRemote() {
t.Errorf("tracking statement is remote, expected local")
}
}
示例5: Run
// Run starts the engine.
func (e *PaperKeySubmit) Run(ctx *Context) error {
me, err := libkb.LoadMe(libkb.NewLoadUserArg(e.G()))
if err != nil {
return err
}
e.pair, err = matchPaperKey(ctx, e.G(), me, e.paperPhrase)
if err != nil {
return err
}
aerr := e.G().LoginState().Account(func(a *libkb.Account) {
err = a.SetUnlockedPaperKey(e.pair.sigKey, e.pair.encKey)
}, "PaperKeySubmit - cache paper key")
if aerr != nil {
return aerr
}
if err != nil {
return err
}
// send a notification that a paper key has been cached
// for rekey purposes
e.G().NotifyRouter.HandlePaperKeyCached(me.GetUID(), e.pair.encKey.GetKID(), e.pair.sigKey.GetKID())
// XXX - this is temporary until KBFS handles the above notification
e.G().NotifyRouter.HandleUserChanged(me.GetUID())
return nil
}
示例6: loadMe
func (e *PGPKeyImportEngine) loadMe() (err error) {
if e.me = e.arg.Me; e.me != nil {
return
}
e.me, err = libkb.LoadMe(libkb.NewLoadUserPubOptionalArg(e.G()))
return err
}
示例7: currentDeviceSolvesProblemSet
// currentDeviceSolvesProblemSet returns true if the current device can fix all
// of the folders in the ProblemSet.
func currentDeviceSolvesProblemSet(g *libkb.GlobalContext, ps keybase1.ProblemSet) (ret bool) {
g.Log.Debug("+ currentDeviceSolvesProblemSet")
defer func() {
g.Log.Debug("- currentDeviceSolvesProblemSet -> %v\n", ret)
}()
me, err := libkb.LoadMe(libkb.NewLoadUserArg(g))
if err != nil {
g.Log.Info("| Problem loading me: %s\n", err)
return ret
}
key, err := me.GetDeviceSubkey()
if err != nil {
g.Log.Info("| Problem getting device subkey: %s\n", err)
return ret
}
for _, tlf := range ps.Tlfs {
if !keySolvesProblemTLF(key, tlf) {
g.Log.Debug("| Doesn't solve problem TLF: %s (%s)\n", tlf.Tlf.Name, tlf.Tlf.Id)
return ret
}
}
ret = true
return ret
}
示例8: getMySecretKey
func getMySecretKey(
g *libkb.GlobalContext, secretUI libkb.SecretUI,
secretKeyType libkb.SecretKeyType, reason string) (
libkb.GenericKey, error) {
var key libkb.GenericKey
var err error
aerr := g.LoginState().Account(func(a *libkb.Account) {
key, err = a.CachedSecretKey(libkb.SecretKeyArg{KeyType: secretKeyType})
}, "Keyrings - cachedSecretKey")
if key != nil && err == nil {
return key, nil
}
if aerr != nil {
g.Log.Debug("error getting account: %s", aerr)
}
me, err := libkb.LoadMe(libkb.NewLoadUserArg(g))
if err != nil {
return nil, err
}
arg := libkb.SecretKeyPromptArg{
Ska: libkb.SecretKeyArg{
Me: me,
KeyType: secretKeyType,
},
SecretUI: secretUI,
Reason: reason,
UseCancelCache: true,
}
return g.Keyrings.GetSecretKeyWithPrompt(arg)
}
示例9: Run
// Run starts the engine.
func (e *ProveCheck) Run(ctx *Context) error {
found, status, err := libkb.CheckPostedViaSigID(e.sigID)
if err != nil {
return err
}
e.found = found
e.status = keybase1.ProofStatus(status)
e.G().Log.Debug("looking for ChainLink for %s", e.sigID)
me, err := libkb.LoadMe(libkb.NewLoadUserPubOptionalArg(e.G()))
if err != nil {
return err
}
link := me.LinkFromSigID(e.sigID)
if link == nil {
return fmt.Errorf("no chain link found for %s", e.sigID)
}
e.G().Log.Debug("chain link found: (%T)", link.Typed())
if rlink, ok := link.Typed().(libkb.RemoteProofChainLink); ok {
e.proofText = rlink.ProofText()
e.G().Log.Debug("chain link proof text: %q", e.proofText)
} else {
e.G().Log.Warning("chain link had invalid type: %T", link.Typed())
}
return nil
}
示例10: assertLoadPGPKeys
func assertLoadPGPKeys(tc libkb.TestContext, u *FakeUser) {
me, err := libkb.LoadMe(libkb.NewLoadUserArg(tc.G))
if err != nil {
tc.T.Fatal(err)
}
ska := libkb.SecretKeyArg{
Me: me,
KeyType: libkb.PGPKeyType,
}
parg := libkb.SecretKeyPromptArg{
Ska: ska,
SecretUI: u.NewSecretUI(),
Reason: "pgp test",
}
key, err := tc.G.Keyrings.GetSecretKeyWithPrompt(parg)
if err != nil {
tc.T.Fatal(err)
}
var ok bool
_, ok = key.(*libkb.PGPKeyBundle)
if !ok {
tc.T.Errorf("key type: %T, expected libkb.PGPKeyBundle", key)
}
}
示例11: assertUntracked
func assertUntracked(tc libkb.TestContext, username string) {
me, err := libkb.LoadMe(libkb.NewLoadUserArg(tc.G))
if err != nil {
tc.T.Fatal(err)
}
them, err := libkb.LoadUser(libkb.NewLoadUserByNameArg(tc.G, username))
if err != nil {
tc.T.Fatal(err)
}
s, err := me.TrackChainLinkFor(them.GetName(), them.GetUID())
if err != nil {
tc.T.Fatal(err)
}
if s != nil {
tc.T.Fatal("expected not to get a tracking statement; but got one")
}
s, err = libkb.LocalTrackChainLinkFor(me.GetUID(), them.GetUID(), tc.G)
if err != nil {
tc.T.Fatal(err)
}
if s != nil {
tc.T.Fatal("expected not to get a local tracking statement; but got one")
}
}
示例12: unlockDeviceKeys
func (e *loginProvisionedDevice) unlockDeviceKeys(ctx *Context, me *libkb.User) error {
if me == nil {
var err error
me, err = libkb.LoadMe(libkb.NewLoadUserArg(e.G()))
if err != nil {
return err
}
}
ska := libkb.SecretKeyArg{
Me: me,
KeyType: libkb.DeviceSigningKeyType,
}
_, err := e.G().Keyrings.GetSecretKeyWithPrompt(ctx.SecretKeyPromptArg(ska, "unlock device keys"))
if err != nil {
return err
}
ska.KeyType = libkb.DeviceEncryptionKeyType
_, err = e.G().Keyrings.GetSecretKeyWithPrompt(ctx.SecretKeyPromptArg(ska, "unlock device keys"))
if err != nil {
return err
}
return nil
}
示例13: TestPaperKeyPrimary
func TestPaperKeyPrimary(t *testing.T) {
tc := SetupEngineTest(t, "paper")
defer tc.Cleanup()
f := func(arg *SignupEngineRunArg) {
arg.SkipPaper = true
}
fu, signingKey := CreateAndSignupFakeUserCustomArg(tc, "paper", f)
me, err := libkb.LoadMe(libkb.NewLoadUserArg(tc.G))
if err != nil {
t.Fatal(err)
}
ctx := &Context{
LoginUI: libkb.TestLoginUI{},
}
args := &PaperKeyPrimaryArgs{
Me: me,
SigningKey: signingKey,
}
eng := NewPaperKeyPrimary(tc.G, args)
if err := RunEngine(eng, ctx); err != nil {
t.Fatal(err)
}
hasOnePaperDev(tc, fu)
}
示例14: assertLoadSecretKeys
func assertLoadSecretKeys(tc libkb.TestContext, u *FakeUser, msg string) {
me, err := libkb.LoadMe(libkb.NewLoadUserArg(tc.G))
if err != nil {
tc.T.Fatalf("%s: %s", msg, err)
}
if me == nil {
tc.T.Fatalf("%s: nil LoadMe result", msg)
}
skarg := libkb.SecretKeyArg{
Me: me,
KeyType: libkb.DeviceSigningKeyType,
}
sigKey, err := tc.G.Keyrings.GetSecretKeyWithPrompt(nil, skarg, u.NewSecretUI(), "testing sig")
if err != nil {
tc.T.Fatalf("%s: %s", msg, err)
}
if sigKey == nil {
tc.T.Fatalf("%s: got nil signing key", msg)
}
skarg.KeyType = libkb.DeviceEncryptionKeyType
encKey, err := tc.G.Keyrings.GetSecretKeyWithPrompt(nil, skarg, u.NewSecretUI(), "testing enc")
if err != nil {
tc.T.Fatalf("%s: %s", msg, err)
}
if encKey == nil {
tc.T.Fatalf("%s: got nil encryption key", msg)
}
}
示例15: Run
func (e *ListTrackingEngine) Run(ctx *Context) (err error) {
user, err := libkb.LoadMe(libkb.NewLoadUserArg(e.G()))
if err != nil {
return
}
var trackList TrackList
trackList = user.IDTable().GetTrackList()
trackList, err = filterRxx(trackList, e.arg.Filter)
if err != nil {
return
}
sort.Sort(trackList)
if e.arg.JSON {
err = e.runJSON(trackList, e.arg.Verbose)
} else {
err = e.runTable(trackList)
}
return
}