func (s *IdentifyState) computeKeyDiffs(dhook func(keybase1.IdentifyKey)) { mapify := func(v []keybase1.KID) map[keybase1.KID]bool { ret := make(map[keybase1.KID]bool) for _, k := range v { ret[k] = true } return ret } display := func(kid keybase1.KID, diff TrackDiff) { k := keybase1.IdentifyKey{ TrackDiff: ExportTrackDiff(diff), } k.KID = kid fp := s.u.GetKeyFamily().kid2pgp[kid] k.PGPFingerprint = fp[:] dhook(k) } // first check the eldest key observedEldest := s.u.GetEldestKID() if s.track != nil { trackedEldest := s.track.GetEldestKID() if observedEldest.NotEqual(trackedEldest) { diff := TrackDiffNewEldest{tracked: trackedEldest, observed: observedEldest} s.res.KeyDiffs = append(s.res.KeyDiffs, diff) display(observedEldest, diff) } } found := s.u.GetActivePGPKIDs(true) foundMap := mapify(found) var tracked []keybase1.KID if s.track != nil { for _, trackedKey := range s.track.GetTrackedKeys() { tracked = append(tracked, trackedKey.KID) } } trackedMap := mapify(tracked) for _, kid := range found { var diff TrackDiff if s.track != nil && !trackedMap[kid] { diff = TrackDiffNew{} s.res.KeyDiffs = append(s.res.KeyDiffs, diff) } else if s.track != nil { diff = TrackDiffNone{} } display(kid, diff) } for _, kid := range tracked { if !foundMap[kid] { fp := s.u.GetKeyFamily().kid2pgp[kid] diff := TrackDiffRevoked{fp} s.res.KeyDiffs = append(s.res.KeyDiffs, diff) display(kid, diff) } } }
func (s *IdentifyState) computeKeyDiffs(dhook func(keybase1.IdentifyKey) error) { mapify := func(v []keybase1.KID) map[keybase1.KID]bool { ret := make(map[keybase1.KID]bool) for _, k := range v { ret[k] = true } return ret } display := func(kid keybase1.KID, diff TrackDiff) { k := keybase1.IdentifyKey{ TrackDiff: ExportTrackDiff(diff), } k.KID = kid if fp, ok := s.u.GetKeyFamily().kid2pgp[kid]; ok { k.PGPFingerprint = fp[:] } // Anything other than a no difference here should be displayed to // the user. if diff != nil { k.BreaksTracking = diff.BreaksTracking() } dhook(k) } // first check the eldest key observedEldest := s.u.GetEldestKID() if s.track != nil { trackedEldest := s.track.GetEldestKID() if observedEldest.NotEqual(trackedEldest) { diff := TrackDiffNewEldest{tracked: trackedEldest, observed: observedEldest} s.res.KeyDiffs = append(s.res.KeyDiffs, diff) display(observedEldest, diff) } } found := s.u.GetActivePGPKIDs(true) foundMap := mapify(found) var tracked []keybase1.KID if s.track != nil { for _, trackedKey := range s.track.GetTrackedKeys() { tracked = append(tracked, trackedKey.KID) } } trackedMap := mapify(tracked) for _, kid := range found { var diff TrackDiff if s.track != nil && !trackedMap[kid] { diff = TrackDiffNew{} s.res.KeyDiffs = append(s.res.KeyDiffs, diff) } else if s.track != nil { diff = TrackDiffNone{} } display(kid, diff) } for _, kid := range tracked { if !foundMap[kid] { fp := s.u.GetKeyFamily().kid2pgp[kid] diff := TrackDiffRevoked{fp} s.res.KeyDiffs = append(s.res.KeyDiffs, diff) // the identify outcome should know that this // key was revoked, as well as there being // a KeyDiff: s.res.Revoked = append(s.res.Revoked, diff) display(kid, diff) } } }