func LoadUserPlusKeys(g *GlobalContext, uid keybase1.UID, cacheOK bool) (keybase1.UserPlusKeys, error) { var up keybase1.UserPlusKeys if uid.IsNil() { return up, fmt.Errorf("Nil UID") } arg := NewLoadUserArg(g) arg.UID = uid arg.PublicKeyOptional = true u, err := LoadUser(arg) if err != nil { return up, err } if u == nil { return up, fmt.Errorf("Nil user, nil error from LoadUser") } // export user to UserPlusKeys up.Uid = u.GetUID() up.Username = u.GetNormalizedName().String() if u.GetComputedKeyFamily() != nil { up.DeviceKeys = u.GetComputedKeyFamily().ExportDeviceKeys() } return up, nil }
func (u *User) ExportToUserPlusKeys(idTime keybase1.Time) keybase1.UserPlusKeys { ret := keybase1.UserPlusKeys{ Uid: u.GetUID(), Username: u.GetName(), } ckf := u.GetComputedKeyFamily() if ckf != nil { // DeviceKeys is poorly named, so let's deprecate it. ret.DeviceKeys = ckf.Export() ret.Keys = ret.DeviceKeys } ret.Uvv = u.ExportToVersionVector(idTime) return ret }
func LoadUserPlusKeys(g *GlobalContext, uid keybase1.UID, cacheOK bool) (keybase1.UserPlusKeys, error) { var up keybase1.UserPlusKeys if uid.IsNil() { return up, fmt.Errorf("Nil UID") } if cacheOK { up, err := g.UserCache.Get(uid) if err == nil { return *up, nil } if err != nil { // not going to bail on cache error, just log it: if _, ok := err.(NotFoundError); !ok { g.Log.Debug("UserCache Get error: %s", err) } } } arg := NewLoadUserArg(g) arg.UID = uid arg.PublicKeyOptional = true u, err := LoadUser(arg) if err != nil { return up, err } if u == nil { return up, fmt.Errorf("Nil user, nil error from LoadUser") } // export user to UserPlusKeys up.Uid = u.GetUID() up.Username = u.GetNormalizedName().String() if u.GetComputedKeyFamily() != nil { up.DeviceKeys = u.GetComputedKeyFamily().ExportDeviceKeys() } err = g.UserCache.Insert(&up) if err != nil { g.Log.Debug("UserCache Set error: %s", err) } return up, nil }
func (e *DeviceKeyfinder) filterKeys(upk *keybase1.UserPlusKeys) error { var keys []keybase1.PublicKey for _, key := range upk.DeviceKeys { if len(key.PGPFingerprint) != 0 { // this shouldn't happen continue } if e.arg.NeedVerifyKeys && !libkb.KIDIsDeviceVerify(key.KID) { continue } if e.arg.NeedEncryptKeys && !libkb.KIDIsDeviceEncrypt(key.KID) { continue } keys = append(keys, key) } if len(keys) == 0 { return libkb.NoNaClEncryptionKeyError{User: upk.Username, HasPGPKey: upk.PGPKeyCount > 0} } upk.DeviceKeys = keys return nil }