func (s *CmdPGPList) Run() error { configCli, err := GetConfigClient(s.G()) if err != nil { return err } currentStatus, err := configCli.GetCurrentStatus(context.TODO(), 0) if err != nil { return err } if !currentStatus.LoggedIn { return libkb.LoginRequiredError{} } userCli, err := GetUserClient(s.G()) if err != nil { return err } publicKeys, err := userCli.LoadPublicKeys(context.TODO(), keybase1.LoadPublicKeysArg{Uid: currentStatus.User.Uid}) if err != nil { return err } dui := s.G().UI.GetDumbOutputUI() for _, key := range publicKeys { if len(key.PGPFingerprint) == 0 { continue } dui.Printf("Keybase Key ID: %s\n", key.KID) dui.Printf("PGP Fingerprint: %s\n", libkb.PGPFingerprintFromHexNoError(key.PGPFingerprint).ToQuads()) if len(key.PGPIdentities) > 0 { dui.Printf("PGP Identities:\n") for _, id := range key.PGPIdentities { var comment string if len(id.Comment) > 0 { comment = fmt.Sprintf(" (%s)", id.Comment) } var email string if len(id.Email) > 0 { email = fmt.Sprintf(" <%s>", id.Email) } dui.Printf(" %s%s%s\n", id.Username, comment, email) } } dui.Printf("\n") } return nil }
func (v *CmdDumpKeyfamily) printKey(key keybase1.PublicKey, subkeys []keybase1.PublicKey, indent int) error { if key.KID == "" { return fmt.Errorf("Found a key with an empty KID.") } eldestStr := "" if key.IsEldest { eldestStr = " (eldest)" } dui := v.G().UI.GetDumbOutputUI() dui.Printf("%s%s%s\n", indentSpace(indent), key.KID, eldestStr) if key.PGPFingerprint != "" { dui.Printf("%sPGP Fingerprint: %s\n", indentSpace(indent+1), libkb.PGPFingerprintFromHexNoError(key.PGPFingerprint).ToQuads()) dui.Printf("%sPGP Identities:\n", indentSpace(indent+1)) for _, identity := range key.PGPIdentities { commentStr := "" if identity.Comment != "" { commentStr = fmt.Sprintf(" (%s)", identity.Comment) } emailStr := "" if identity.Email != "" { emailStr = fmt.Sprintf(" <%s>", identity.Email) } dui.Printf("%s%s%s%s\n", indentSpace(indent+2), identity.Username, commentStr, emailStr) } } if key.DeviceID != "" || key.DeviceType != "" || key.DeviceDescription != "" { dui.Printf("%sDevice:\n", indentSpace(indent+1)) if key.DeviceID != "" { dui.Printf("%sID: %s\n", indentSpace(indent+2), key.DeviceID) } if key.DeviceType != "" { dui.Printf("%sType: %s\n", indentSpace(indent+2), key.DeviceType) } if key.DeviceDescription != "" { dui.Printf("%sDescription: %s\n", indentSpace(indent+2), key.DeviceDescription) } } dui.Printf("%sCreated: %s\n", indentSpace(indent+1), keybase1.FromTime(key.CTime)) dui.Printf("%sExpires: %s\n", indentSpace(indent+1), keybase1.FromTime(key.ETime)) if len(subkeys) > 0 { dui.Printf("%sSubkeys:\n", indentSpace(indent+1)) for _, subkey := range subkeys { v.printKey(subkey, nil, indent+2) } } return nil }
func (p CommandLine) GetPGPFingerprint() *libkb.PGPFingerprint { return libkb.PGPFingerprintFromHexNoError(p.GetGString("fingerprint")) }