func (cki *ComputedKeyInfos) PaperDevices() []*Device {
	var d []*Device
	for _, v := range cki.Devices {
		if v.Status == nil {
			continue
		}
		if *v.Status != DeviceStatusActive {
			continue
		}
		if v.Type != DeviceTypePaper {
			continue
		}
		d = append(d, v)
	}
	return d
}
PaperDevices returns a list of all the paperkey devices.
package libkb
import (
	"fmt"
	"time"
	keybase1 "github.com/keybase/client/go/protocol"
	jsonw "github.com/keybase/go-jsonw"
)
type KeybaseTime struct {
	Unix  int64  
	Chain int    
}
type ComputedKeyInfo struct {
	Contextified
	Status KeyStatus
	Eldest bool
	Sibkey bool
	CTime int64  
	ETime int64  
	Parent keybase1.KID
	Subkey keybase1.KID
	Delegations map[keybase1.SigID]keybase1.KID
	DelegatedAt *KeybaseTime
	RevokedAt *KeybaseTime
	RevokedBy keybase1.KID
	ActivePGPHash string
}
func (cki ComputedKeyInfo) GetCTime() time.Time {
	return time.Unix(cki.CTime, 0)
}
func (cki ComputedKeyInfo) GetETime() time.Time {
	return UnixToTimeMappingZero(cki.ETime)
}
type ComputedKeyInfos struct {
	Contextified
	dirty bool  
	Infos map[keybase1.KID]*ComputedKeyInfo
	Sigs map[keybase1.SigID]*ComputedKeyInfo
	Devices map[keybase1.DeviceID]*Device
	KIDToDeviceID map[keybase1.KID]keybase1.DeviceID
}
type RawKeyFamily struct {
	AllBundles []string `json:"all_bundles"`
}
type PGPKeySet struct {
	Contextified
	PermissivelyMergedKey *PGPKeyBundle
	KeysByHash            map[string]*PGPKeyBundle
}
func (s *PGPKeySet) addKey(key *PGPKeyBundle) error {
	fullHash, err := key.FullHash()
	if err != nil {
		return err
	}
	s.G().Log.Debug("adding PGP kid %s with full hash %s", key.GetKID().String(), fullHash)
	s.KeysByHash[fullHash] = key
	strippedKey := key.StripRevocations()
	if s.PermissivelyMergedKey == nil {
		s.PermissivelyMergedKey = strippedKey
	} else {
		s.PermissivelyMergedKey.MergeKey(strippedKey)
	}
	return nil
}
type KeyFamily struct {
	pgp2kid map[PGPFingerprint]keybase1.KID
	kid2pgp map[keybase1.KID]PGPFingerprint
	AllKIDs map[keybase1.KID]bool
	PGPKeySets map[keybase1.KID]*PGPKeySet
	SingleKeys map[keybase1.KID]GenericKey  
	BundlesForTesting []string
	Contextified
}
type ComputedKeyFamily struct {
	Contextified
	kf  *KeyFamily
	cki *ComputedKeyInfos
}
func (cki *ComputedKeyInfos) Insert(k keybase1.KID, i *ComputedKeyInfo) {
	cki.Infos[k] = i
	cki.dirty = true
}