libkb

package
v1.0.19 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 9, 2017 License: BSD-3-Clause, BSD-3-Clause Imports: 81 Imported by: 0

Documentation

Overview

Code used in populating JSON objects to generating Keybase-style signatures.

A KeyFamily is a group of sibling keys that have equal power for a user. A family can consist of 1 PGP keys, and arbitrarily many NaCl Sibkeys. There also can be some subkeys dangling off for ECDH.

npipe_windows.go

A module for syncing secrets with the server, such as SKB PGP keys, and server-halves of our various secret keys.

A module for syncing trackers from the server

Index

Constants

View Source
const (
	NONE = iota
	OR
	AND
	LPAREN
	RPAREN
	URL
	EOF
	ERROR
)
View Source
const (
	DevelServerURI      = "http://localhost:3000"
	StagingServerURI    = "https://stage0.keybase.io"
	ProductionServerURI = "https://api.keybase.io"
	TorServerURI        = "http://fncuwbiisyh6ak3i.onion"
)
View Source
const (
	DevelRunMode      RunMode = "devel"
	StagingRunMode            = "staging"
	ProductionRunMode         = "prod"
	RunModeError              = "error"
	NoRunMode                 = ""
)
View Source
const (
	DevelGregorServerURI      = "fmprpc://localhost:9911"
	StagingGregorServerURI    = "fmprpc+tls://gregord.dev.keybase.io:443"
	ProductionGregorServerURI = "fmprpc+tls://gregord.kbfs.keybase.io:443"
)
View Source
const (
	ConfigFile        = "config.json"
	SessionFile       = "session.json"
	UpdaterConfigFile = "updater.json"
	DBFile            = "keybase.leveldb"
	ChatDBFile        = "keybase.chat.leveldb"
	SocketFile        = "keybased.sock"
	PIDFile           = "keybased.pid"

	SecretKeyringTemplate = "secretkeys.%u.mpack"

	APIVersion           = "1.0"
	APIURIPathPrefix     = "/_/api/" + APIVersion
	DaemonPort           = 40933
	GoClientID           = "keybase.io go client"
	KeybaseSaltpackBrand = "KEYBASE"
)
View Source
const (
	PermFile          os.FileMode = 0600
	PermDir           os.FileMode = 0700
	UmaskablePermFile os.FileMode = 0666
)
View Source
const (
	UserCacheMaxAge      = 5 * time.Minute
	PGPFingerprintHexLen = 40

	ProofCacheSize              = 0x1000
	ProofCacheLongDur           = 48 * time.Hour
	ProofCacheMediumDur         = 6 * time.Hour
	ProofCacheShortDur          = 30 * time.Minute
	Identify2CacheLongTimeout   = 6 * time.Hour
	Identify2CacheBrokenTimeout = 1 * time.Hour
	Identify2CacheShortTimeout  = 1 * time.Minute
	CachedUserTimeout           = 10 * time.Minute // How long we'll go without rerequesting hints/merkle seqno
	LinkCacheSize               = 0x10000
	LinkCacheCleanDur           = 1 * time.Minute

	SigShortIDBytes  = 27
	LocalTrackMaxAge = 48 * time.Hour

	CriticalClockSkewLimit = time.Hour
)
View Source
const (
	KeybaseKIDV1       = 1 // Uses SHA-256
	KeybaseSignatureV1 = 1
	OneYearInSeconds   = 24 * 60 * 60 * 365

	SigExpireIn       = OneYearInSeconds * 16 // 16 years
	NaclEdDSAExpireIn = OneYearInSeconds * 16 // 16 years
	NaclDHExpireIn    = OneYearInSeconds * 16 // 16 years
	KeyExpireIn       = OneYearInSeconds * 16 // 16 years
	SubkeyExpireIn    = OneYearInSeconds * 16 // 16 years
	AuthExpireIn      = OneYearInSeconds      // 1 year

	PaperKeyMemoryTimeout = time.Hour
)
View Source
const (
	SCOk                     = int(keybase1.StatusCode_SCOk)
	SCInputError             = int(keybase1.StatusCode_SCInputError)
	SCLoginRequired          = int(keybase1.StatusCode_SCLoginRequired)
	SCBadSession             = int(keybase1.StatusCode_SCBadSession)
	SCBadLoginUserNotFound   = int(keybase1.StatusCode_SCBadLoginUserNotFound)
	SCBadLoginPassword       = int(keybase1.StatusCode_SCBadLoginPassword)
	SCNotFound               = int(keybase1.StatusCode_SCNotFound)
	SCDeleted                = int(keybase1.StatusCode_SCDeleted)
	SCThrottleControl        = int(keybase1.StatusCode_SCThrottleControl)
	SCGeneric                = int(keybase1.StatusCode_SCGeneric)
	SCAlreadyLoggedIn        = int(keybase1.StatusCode_SCAlreadyLoggedIn)
	SCCanceled               = int(keybase1.StatusCode_SCCanceled)
	SCInputCanceled          = int(keybase1.StatusCode_SCInputCanceled)
	SCExists                 = int(keybase1.StatusCode_SCExists)
	SCInvalidAddress         = int(keybase1.StatusCode_SCInvalidAddress)
	SCReloginRequired        = int(keybase1.StatusCode_SCReloginRequired)
	SCResolutionFailed       = int(keybase1.StatusCode_SCResolutionFailed)
	SCProfileNotPublic       = int(keybase1.StatusCode_SCProfileNotPublic)
	SCBadSignupUsernameTaken = int(keybase1.StatusCode_SCBadSignupUsernameTaken)
	SCBadInvitationCode      = int(keybase1.StatusCode_SCBadInvitationCode)
	SCMissingResult          = int(keybase1.StatusCode_SCMissingResult)
	SCKeyNotFound            = int(keybase1.StatusCode_SCKeyNotFound)
	SCKeyInUse               = int(keybase1.StatusCode_SCKeyInUse)
	SCKeyBadGen              = int(keybase1.StatusCode_SCKeyBadGen)
	SCKeyNoSecret            = int(keybase1.StatusCode_SCKeyNoSecret)
	SCKeyBadUIDs             = int(keybase1.StatusCode_SCKeyBadUIDs)
	SCKeyNoActive            = int(keybase1.StatusCode_SCKeyNoActive)
	SCKeyNoSig               = int(keybase1.StatusCode_SCKeyNoSig)
	SCKeyBadSig              = int(keybase1.StatusCode_SCKeyBadSig)
	SCKeyBadEldest           = int(keybase1.StatusCode_SCKeyBadEldest)
	SCKeyNoEldest            = int(keybase1.StatusCode_SCKeyNoEldest)
	SCKeyDuplicateUpdate     = int(keybase1.StatusCode_SCKeyDuplicateUpdate)
	SCKeySyncedPGPNotFound   = int(keybase1.StatusCode_SCKeySyncedPGPNotFound)
	SCKeyNoMatchingGPG       = int(keybase1.StatusCode_SCKeyNoMatchingGPG)
	SCKeyRevoked             = int(keybase1.StatusCode_SCKeyRevoked)
	SCSibkeyAlreadyExists    = int(keybase1.StatusCode_SCSibkeyAlreadyExists)
	SCDecryptionKeyNotFound  = int(keybase1.StatusCode_SCDecryptionKeyNotFound)
	SCBadTrackSession        = int(keybase1.StatusCode_SCBadTrackSession)
	SCDeviceBadName          = int(keybase1.StatusCode_SCDeviceBadName)
	SCDeviceNameInUse        = int(keybase1.StatusCode_SCDeviceNameInUse)
	SCDeviceNotFound         = int(keybase1.StatusCode_SCDeviceNotFound)
	SCDeviceMismatch         = int(keybase1.StatusCode_SCDeviceMismatch)
	SCDeviceRequired         = int(keybase1.StatusCode_SCDeviceRequired)
	SCDevicePrevProvisioned  = int(keybase1.StatusCode_SCDevicePrevProvisioned)
	SCDeviceNoProvision      = int(keybase1.StatusCode_SCDeviceNoProvision)
	SCStreamExists           = int(keybase1.StatusCode_SCStreamExists)
	SCStreamNotFound         = int(keybase1.StatusCode_SCStreamNotFound)
	SCStreamWrongKind        = int(keybase1.StatusCode_SCStreamWrongKind)
	SCStreamEOF              = int(keybase1.StatusCode_SCStreamEOF)
	SCGenericAPIError        = int(keybase1.StatusCode_SCGenericAPIError)
	SCAPINetworkError        = int(keybase1.StatusCode_SCAPINetworkError)
	SCTimeout                = int(keybase1.StatusCode_SCTimeout)
	SCProofError             = int(keybase1.StatusCode_SCProofError)
	SCIdentificationExpired  = int(keybase1.StatusCode_SCIdentificationExpired)
	SCSelfNotFound           = int(keybase1.StatusCode_SCSelfNotFound)
	SCBadKexPhrase           = int(keybase1.StatusCode_SCBadKexPhrase)
	SCNoUI                   = int(keybase1.StatusCode_SCNoUI)
	SCNoUIDelegation         = int(keybase1.StatusCode_SCNoUIDelegation)
	SCIdentifyFailed         = int(keybase1.StatusCode_SCIdentifyFailed)
	SCTrackingBroke          = int(keybase1.StatusCode_SCTrackingBroke)
	SCKeyNoPGPEncryption     = int(keybase1.StatusCode_SCKeyNoPGPEncryption)
	SCKeyNoNaClEncryption    = int(keybase1.StatusCode_SCKeyNoNaClEncryption)
	SCWrongCryptoFormat      = int(keybase1.StatusCode_SCWrongCryptoFormat)
	SCGPGUnavailable         = int(keybase1.StatusCode_SCGPGUnavailable)
	SCDecryptionError        = int(keybase1.StatusCode_SCDecryptionError)
	SCChatInternal           = int(keybase1.StatusCode_SCChatInternal)
	SCChatRateLimit          = int(keybase1.StatusCode_SCChatRateLimit)
	SCChatConvExists         = int(keybase1.StatusCode_SCChatConvExists)
	SCChatUnknownTLFID       = int(keybase1.StatusCode_SCChatUnknownTLFID)
	SCChatNotInConv          = int(keybase1.StatusCode_SCChatNotInConv)
	SCChatBadMsg             = int(keybase1.StatusCode_SCChatBadMsg)
	SCChatBroadcast          = int(keybase1.StatusCode_SCChatBroadcast)
	SCChatAlreadySuperseded  = int(keybase1.StatusCode_SCChatAlreadySuperseded)
	SCChatAlreadyDeleted     = int(keybase1.StatusCode_SCChatAlreadyDeleted)
	SCChatTLFFinalized       = int(keybase1.StatusCode_SCChatTLFFinalized)
	SCChatCollision          = int(keybase1.StatusCode_SCChatCollision)
	SCBadEmail               = int(keybase1.StatusCode_SCBadEmail)
	SCIdentifySummaryError   = int(keybase1.StatusCode_SCIdentifySummaryError)
	SCNeedSelfRekey          = int(keybase1.StatusCode_SCNeedSelfRekey)
	SCNeedOtherRekey         = int(keybase1.StatusCode_SCNeedOtherRekey)
)

Status codes. This list should match keybase/lib/status_codes.iced.

View Source
const (
	MerkleTreeNode = 1
	MerkleTreeLeaf = 2
)
View Source
const (
	LinkTypeAuthentication    LinkType = "auth"
	LinkTypeCryptocurrency             = "cryptocurrency"
	LinkTypeRevoke                     = "revoke"
	LinkTypeTrack                      = "track"
	LinkTypeUntrack                    = "untrack"
	LinkTypeUpdatePassphrase           = "update_passphrase_hash"
	LinkTypeUpdateSettings             = "update_settings"
	LinkTypeWebServiceBinding          = "web_service_binding"

	DelegationTypeEldest    DelegationType = "eldest"
	DelegationTypePGPUpdate                = "pgp_update"
	DelegationTypeSibkey                   = "sibkey"
	DelegationTypeSubkey                   = "subkey"
)
View Source
const (
	SigTypeNone           = 0
	SigTypeSelfSig        = 1
	SigTypeRemoteProof    = 2
	SigTypeTrack          = 3
	SigTypeUntrack        = 4
	SigTypeRevoke         = 5
	SigTypeCryptocurrency = 6
	SigTypeAnnouncement   = 7
)
View Source
const (
	KeyTypeNone                  KeyType = 0
	KeyTypeOpenPGPPublic                 = 1
	KeyTypeP3skbPrivate                  = 2
	KeyTypeKbNaclEddsa                   = 3
	KeyTypeKbNaclDH                      = 4
	KeyTypeKbNaclEddsaServerHalf         = 5
	KeyTypeKbNaclDHServerHalf            = 6
)
View Source
const (
	DeviceStatusNone    = 0
	DeviceStatusActive  = 1
	DeviceStatusDefunct = 2
)
View Source
const (
	DeviceTypeDesktop = "desktop"
	DeviceTypeMobile  = "mobile"
	DeviceTypePaper   = "backup"
)

these strings need to match the keys in keybase/lib_public/public_constants.iced -> public_constants.device.type

View Source
const (
	HTTPDefaultTimeout        = 60 * time.Second
	HTTPDefaultScraperTimeout = 10 * time.Second
	HTTPPollMaximum           = 5 * time.Second
)
View Source
const (
	HTTPRetryInitialTimeout = 1 * time.Second
	HTTPRetryMutliplier     = 1.5
	HTTPRetryCount          = 6
)

The following constants apply to APIArg parameters for critical idempotent API calls

View Source
const (
	KeybasePacketV1 = 1
	TagP3skb        = 513
	TagSignature    = 514
	TagEncryption   = 515
)

Packet tags for OpenPGP and also Keybase packets

View Source
const (
	KIDPGPBase    AlgoType = 0x00
	KIDPGPRsa              = 0x1
	KIDPGPElgamal          = 0x10
	KIDPGPDsa              = 0x11
	KIDPGPEcdh             = 0x12
	KIDPGPEcdsa            = 0x13
	KIDPGPEddsa            = 0x16
	KIDNaclEddsa           = 0x20
	KIDNaclDH              = 0x21
)
View Source
const (
	HashPGPMd5       = 1
	HashPGPSha1      = 2
	HashPGPRipemd160 = 3
	HashPGPSha256    = 8
	HashPGPSha384    = 9
	HashPGPSha512    = 10
	HashPGPSha224    = 11
)

OpenPGP hash IDs, taken from http://tools.ietf.org/html/rfc4880#section-9.4

View Source
const (
	RevSimpleDelete = 0
	RevFull         = 1
	RevDated        = 2
)

key_revocation_types

View Source
const (
	KexScryptCost       = 32768
	KexScryptR          = 8
	KexScryptP          = 1
	KexScryptKeylen     = 32
	KexSessionIDEntropy = 65 // kex doc specifies 65 bits of entropy
)
View Source
const (
	Kex2PhraseEntropy = 88
	Kex2ScryptCost    = 1 << 17
	Kex2ScryptR       = 8
	Kex2ScryptP       = 1
	Kex2ScryptKeylen  = 32
)
View Source
const (
	PaperKeyScryptCost    = 32768
	PaperKeyScryptR       = 8
	PaperKeyScryptP       = 1
	PaperKeyScryptKeylen  = 128
	PaperKeySecretEntropy = 117
	PaperKeyIDBits        = 22
	PaperKeyVersionBits   = 4
	PaperKeyVersion       = 0
	PaperKeyWordCountMin  = 13 // this should never change to a value greater than 13
)

PaperKeyWordCountMin of 13 is based on the current state: entropy: 143 (PaperKeySecretEntropy [117] + PaperKeyIDBits [22] + PaperKeyVersionBits [4]) len(secwords): 2048

View Source
const (
	IdentifySourceKBFS = "kbfs"
	TestInvitationCode = "202020202020202020202020"
)
View Source
const (
	ServiceLogFileName = "keybase.service.log"
	KBFSLogFileName    = "keybase.kbfs.log"
	UpdaterLogFileName = "keybase.updater.log"
	DesktopLogFileName = "Keybase.app.log"
	// StartLogFileName is where services can log to (on startup) before they handle their own logging
	StartLogFileName = "keybase.start.log"
)
View Source
const (
	NotificationDismissPGPPrefix = "pgp_secret_store"
	NotificationDismissPGPValue  = "dismissed"
)
View Source
const (
	DBUser                    = 0x00
	DBUserPlusAllKeys         = 0x19
	DBSig                     = 0x0f
	DBLink                    = 0xe0
	DBLocalTrack              = 0xe1
	DBPGPKey                  = 0xe3
	DBSigHints                = 0xe4
	DBProofCheck              = 0xe5
	DBUserSecretKeys          = 0xe6
	DBSigChainTailPublic      = 0xe7
	DBSigChainTailSemiprivate = 0xe8
	DBSigChainTailEncrypted   = 0xe9
	DBMerkleRoot              = 0xf0
	DBTrackers                = 0xf1
	DBGregor                  = 0xf2
	DBTrackers2               = 0xf3
	DBTrackers2Reverse        = 0xf4
	DBNotificationDismiss     = 0xf5
	DBChatBlockIndex          = 0xf6
	DBChatBlocks              = 0xf7
	DBChatOutbox              = 0xf8
	DBChatInbox               = 0xf9
	DBIdentify                = 0xfa
	DBResolveUsernameToUID    = 0xfb
	DBChatBodyHashIndex       = 0xfc
)
View Source
const (
	DBLookupUsername   = 0x00
	DBLookupMerkleRoot = 0x01
)
View Source
const (
	DeviceIDLen    = 16
	DeviceIDSuffix = 0x18
)
View Source
const (
	NodeHashLenLong  = sha512.Size // = 64
	NodeHashLenShort = sha256.Size // = 32
)
View Source
const (
	ResolveCacheMaxAge        = 12 * time.Hour
	ResolveCacheMaxAgeMutable = 20 * time.Minute
)
View Source
const (
	TrackStatusNone     = 0
	TrackStatusTracking = 1
)
View Source
const CanonicalHost = "keybase.io"
View Source
const DefaultRunMode = DevelRunMode
View Source
const DownloadURL = "https://keybase.io/download"
View Source
const (
	IDSuffixKID = 0x0a
)
View Source
const IsBrewBuild = false
View Source
const LKSecLen = 32
View Source
const LKSecVersion = 100
View Source
const (
	LinkIDLen = 32
)
View Source
const LoginSessionMemoryTimeout time.Duration = time.Minute * 5
View Source
const MinPassphraseLength = 12
View Source
const NaclDHKeySecretSize = 32

TODO: Ideally, box would expose how many random bytes it needs.

View Source
const NaclDHKeysize = 32
View Source
const NaclDHNonceSize = 24

Todo: Ideally, box would specify nonce size

View Source
const NaclSigningKeySecretSize = 32

TODO: Ideally, ed25519 would expose how many random bytes it needs.

View Source
const (
	PGPAssertionKey = "pgp"
)
View Source
const (
	PGPFingerprintLen = 20
)
View Source
const RemoteIdentifyUITimeout = 5 * time.Second
View Source
const SHA256Code = 8
View Source
const (
	SecretPromptCancelDuration = 5 * time.Minute
)
View Source
const (
	ServerUpdateLag = time.Minute
)
View Source
const (
	SigKbEddsa = KIDNaclEddsa
)
View Source
const TrackingRateLimitSeconds = 50
View Source
const UserSummaryLimit = 500 // max number of user summaries in one request
View Source
const Version = "1.0.19"

Version is the current version (should be MAJOR.MINOR.PATCH)

Variables

View Source
var AllDeviceTypes = DeviceTypeSet{
	DeviceTypeDesktop: true,
	DeviceTypeMobile:  true,
	DeviceTypePaper:   true,
}
View Source
var BackoffDefault = BackoffPolicy{
	[]int{0, 10, 10, 100, 100, 500, 500, 3000, 3000, 5000},
}

BackoffDefault is a backoff policy ranging up to 5 seconds.

View Source
var BundledCAs = map[string]string{
	"api.keybase.io":          apiCA,
	"gregord.kbfs.keybase.io": kbfsCA,
	"gregord.dev.keybase.io":  kbfsDevCA,
}
View Source
var CheckDeviceName = Checker{
	F: func(s string) bool {
		return len(s) >= 3 && len(s) <= 64 && deviceRE.MatchString(s) && !badDeviceRE.MatchString(s)
	},
	Hint: "between 3 and 64 characters long; use a-Z, 0-9, space, plus, underscore, dash and apostrophe",
}
View Source
var CheckEmail = Checker{
	F: func(s string) bool {
		return len(s) > 3 && emailRE.MatchString(s)
	},
	Hint: "must be a valid email address",
}
View Source
var CheckEmailOrUsername = Checker{
	F: func(s string) bool {
		return CheckEmail.F(s) || CheckUsername.F(s)
	},
	Hint: "valid usernames are 2-12 letters long",
}
View Source
var CheckInviteCode = Checker{
	F: func(s string) bool {
		return len(s) > 4
	},
	Hint: "Invite codes are 4 or more characters",
}
View Source
var CheckKex2SecretPhrase = Checker{
	F: func(s string) bool {
		if err := validPhrase(s, Kex2PhraseEntropy); err != nil {
			G.Log.Debug("invalid kex2 phrase: %s", err)
			return false
		}
		return true
	},
	Hint: "It looks like there was a typo in the secret phrase. Please try again.",
}
View Source
var CheckNotEmpty = Checker{
	F: func(s string) bool {
		return len(s) > 0
	},
	Hint: "cannot be empty",
}
View Source
var CheckPassphraseNew = Checker{
	F: func(s string) bool {
		r := []rune(s)
		if len(r) > 0 && unicode.IsSpace(r[0]) {
			return false
		}
		return len(s) >= MinPassphraseLength
	},
	Hint:          fmt.Sprintf("passphrase must be %d or more characters", MinPassphraseLength),
	PreserveSpace: true,
}
View Source
var CheckPassphraseSimple = Checker{
	F: func(s string) bool {
		return len(s) > 0
	},
	Hint: "passphrase cannot be empty",
}
View Source
var CheckUsername = Checker{
	F: func(s string) bool {
		return len(s) >= 2 && len(s) <= 16 && usernameRE.MatchString(s)
	},
	Hint: "between 2 and 16 characters long",
}
View Source
var CheckYesNo = Checker{
	F: func(s string) bool {
		return IsYes(s) || IsNo(s)
	},
	Hint: "'yes' or 'no'",
}
View Source
var CodeSigningProdKIDs = []string{
	"01209092ae4e790763dc7343851b977930f35b16cf43ab0ad900a2af3d3ad5cea1a10a",
	"0120d3458bbecdfc0d0ae39fec05722c6e3e897c169223835977a8aa208dfcd902d30a",
	"012065ae849d1949a8b0021b165b0edaf722e2a7a9036e07817e056e2d721bddcc0e0a",
	"01203a5a45c545ef4f661b8b7573711aaecee3fd5717053484a3a3e725cd68abaa5a0a",
	"012003d86864fb20e310590042ad3d5492c3f5d06728620175b03c717c211bfaccc20a",
}
View Source
var CodeSigningStagingKIDs = []string{}
View Source
var CodeSigningTestKIDs = []string{}
View Source
var DefaultDeviceTypes = DeviceTypeSet{
	DeviceTypeDesktop: true,
	DeviceTypeMobile:  true,
}
View Source
var ErrCannotPeek = errors.New("Cannot peek after read")

ErrCannotPeek is returned if you try to Peek, then Read, then Peek from a stream, which isn't allowed. You can only Peek, peek, peek, read, read, read, &c.

View Source
var ErrLoginSessionCleared = errors.New("LoginSession already cleared")
View Source
var ErrLoginSessionNotLoaded = errors.New("LoginSession not loaded")
View Source
var ErrNilUser = errors.New("User is nil")
View Source
var ErrSecretForUserNotFound = NotFoundError{Msg: "No secret found for user"}
View Source
var ErrTrackingExpired = errors.New("Local track expired")
View Source
var ErrUnlockNotPossible = errors.New("unlock not possible")
View Source
var (
	FOLDERID_LocalAppData = GUID{0xF1B32785, 0x6FBA, 0x4FCF, [8]byte{0x9D, 0x55, 0x7B, 0x8E, 0x7F, 0x15, 0x70, 0x91}}
)

F1B32785-6FBA-4FCF-9D55-7B8E7F157091

View Source
var (
	FOLDERID_RoamingAppData = GUID{0x3EB685DB, 0x65F9, 0x4CF6, [8]byte{0xA0, 0x3A, 0xE3, 0xEF, 0x65, 0x72, 0x9F, 0x3D}}
)

3EB685DB-65F9-4CF6-A03A-E3EF65729F3D

View Source
var FirstProdMerkleSeqnoWithSkips = Seqno(835903)

FirstPRodMerkleSeqnoWithSkips is the first merkle root on production that has skip pointers indicating log(n) previous merkle roots.

View Source
var MerkleProdKIDs = []string{
	"010159baae6c7d43c66adf8fb7bb2b8b4cbe408c062cfc369e693ccb18f85631dbcd0a",
}
View Source
var MerkleStagingKIDs = []string{
	"0101bed85ce72cc315828367c28b41af585b6b7d95646a62ca829691d70f49184fa70a",
}
View Source
var MerkleTestKIDs = []string{
	"0101be58b6c82db64f6ccabb05088db443c69f87d5d48857d709ed6f73948dabe67d0a",
}
View Source
var PGPArmorHeaders = map[string]string{
	"Version": PGPVersion,
	"Comment": DownloadURL,
}
View Source
var PGPVersion = "Keybase Go " + Version + " (" + runtime.GOOS + ")"
View Source
var PrereleaseBuild string

PrereleaseBuild can be set at compile time for prerelease builds. CAUTION: Don't change the name of this variable without grepping for occurrences in shell scripts!

View Source
var ProofErrorDNSOverTor = &ProofErrorImpl{
	Status: keybase1.ProofStatus_TOR_SKIPPED,
	Desc:   "DNS proofs aren't reliable over Tor",
}
View Source
var ProofErrorHTTPOverTor = &ProofErrorImpl{
	Status: keybase1.ProofStatus_TOR_SKIPPED,
	Desc:   "HTTP proofs aren't reliable over Tor",
}
View Source
var ProofErrorUnchecked = &ProofErrorImpl{
	Status: keybase1.ProofStatus_UNCHECKED,
	Desc:   "Proof unchecked due to privacy concerns",
}
View Source
var PublicChain = &ChainType{
	DbType:          DBSigChainTailPublic,
	Private:         false,
	Encrypted:       false,
	GetMerkleTriple: func(u *MerkleUserLeaf) *MerkleTriple { return u.public },
}
View Source
var TorProxy = "localhost:9050"
View Source
var UserAgent = runtime.GOOS + ":" + "Keybase CLI (" + runtime.Version() + "):" + Version

Right now reddit is the only site that seems to have any requirements for our User-Agent string. (See https://github.com/reddit/reddit/wiki/API.)If something else comes up, we'll want to make this more configurable.

Functions

func AddToProofSetNoChecks

func AddToProofSetNoChecks(r RemoteProofChainLink, ps *ProofSet)

func AppDataDir

func AppDataDir() (string, error)

func AttachedSignWrapper

func AttachedSignWrapper(out io.WriteCloser, key PGPKeyBundle, armored bool) (
	in io.WriteCloser, err error)

func BoxPublicKeyToKeybaseKID

func BoxPublicKeyToKeybaseKID(k saltpack.BoxPublicKey) (ret keybase1.KID)

func BtcAddrCheck

func BtcAddrCheck(s string, _ *BtcOpts) (version int, pkhash []byte, err error)

func CTimeLog added in v1.0.19

func CTimeLog(ctx context.Context, name string, start time.Time, out func(context.Context, string, ...interface{}))

CTimeLog calls out with the time since start. Use like this:

defer CTimeLog(ctx, "MyFunc", time.Now(), e.G().Log.Warning)

func CTrace added in v1.0.19

func CTrace(ctx context.Context, log logger.Logger, msg string, f func() error) func()

func CTraceOK added in v1.0.19

func CTraceOK(ctx context.Context, log logger.Logger, msg string, f func() bool) func()

func CTraceTimed added in v1.0.19

func CTraceTimed(ctx context.Context, log logger.Logger, msg string, f func() error, cl clockwork.Clock) func()

func CanEncrypt

func CanEncrypt(key GenericKey) bool

func CanonicalProofName

func CanonicalProofName(t TypedChainLink) string

func ChangeMountIcon added in v1.0.19

func ChangeMountIcon(oldMount string, newMount string) error

Manipulate registry entries to reflect the mount point icon in the shell

func CheckInvitationCode

func CheckInvitationCode(code string) error

func CheckKID added in v1.0.19

func CheckKID(u *keybase1.UserPlusAllKeys, kid keybase1.KID) (found bool, revokedAt *keybase1.KeybaseTime, deleted bool)

func CheckPosted

func CheckPosted(proofID string) (found bool, status keybase1.ProofStatus, state keybase1.ProofState, err error)

func CheckPostedViaSigID

func CheckPostedViaSigID(sigID keybase1.SigID) (found bool, status keybase1.ProofStatus, state keybase1.ProofState, err error)

func CheckTracking

func CheckTracking(g *GlobalContext) error

func CheckUIDAgainstCasedUsername

func CheckUIDAgainstCasedUsername(uid keybase1.UID, username string) (err error)

CheckUIDAgainstCasedUsername takes the input string, does not convert toLower, and then hashes it to recover a UID. This is a workaround for some users whose UIDs were computed incorrectly.

func CheckUIDAgainstUsername

func CheckUIDAgainstUsername(uid keybase1.UID, username string) (err error)

func Cicmp

func Cicmp(s1, s2 string) bool

func ClearStoredSecret

func ClearStoredSecret(g *GlobalContext, username NormalizedUsername) error

func CollectAssertions

func CollectAssertions(e AssertionExpression) (remotes AssertionAnd, locals AssertionAnd)

func CombineErrors

func CombineErrors(errs ...error) error

CombineErrors returns a single error for multiple errors, or nil if none.

func ComputeSigIDFromSigBody

func ComputeSigIDFromSigBody(body []byte) keybase1.SigID

func Contains

func Contains(s string, list []string) bool

Contains returns true if string is contained in string slice

func DebugDumpKey

func DebugDumpKey(g *GlobalContext, name string, b []byte)

DebugDumpKey is used only in debugging. For now it's now in use but we might need it in the future.

func Decode58

func Decode58(inp string) (outp []byte, err error)

Decode58 base58 decodes the input or returns an error.

func DefaultPassphraseArg

func DefaultPassphraseArg(g *GlobalContext) keybase1.GUIEntryArg

func DelegatorAggregator

func DelegatorAggregator(lctx LoginContext, ds []Delegator) (err error)

Run posts an array of delegations to the server. Keeping this simple as we don't need any state (yet)

func DeletePrimary

func DeletePrimary() (err error)

func DeviceStatusToString

func DeviceStatusToString(i *int) string

func Digest

func Digest(r io.Reader) (string, error)

Digest returns a SHA256 digest

func DigestForFileAtPath

func DigestForFileAtPath(path string) (string, error)

DigestForFileAtPath returns a SHA256 digest for file at specified path

func DiscardAndCloseBody

func DiscardAndCloseBody(resp *http.Response) error

DiscardAndCloseBody reads as much as possible from the body of the given response, and then closes it.

This is because, in order to free up the current connection for re-use, a response body must be read from before being closed; see http://stackoverflow.com/a/17953506 .

Instead of doing:

res, _ := ...
defer res.Body.Close()

do

res, _ := ...
defer DiscardAndCloseBody(res)

instead.

func DisplayTrackArg

func DisplayTrackArg(sessionID int, stmt string) *keybase1.DisplayTrackStatementArg

func DrainPipe

func DrainPipe(rc io.Reader, sink func(string)) error

func Encode58

func Encode58(inp []byte) string

Encode58 base58 encodes the input.

func ErrToOk

func ErrToOk(err error) string

func ExportErrorAsStatus

func ExportErrorAsStatus(e error) (ret *keybase1.Status)

func ExportPGPIdentity

func ExportPGPIdentity(identity *openpgp.Identity) keybase1.PGPIdentity

func ExportProofError

func ExportProofError(pe ProofError) (ret keybase1.ProofResult)

func ExportTrackDiff

func ExportTrackDiff(d TrackDiff) (res *keybase1.TrackDiff)

func ExportTrackIDComponentToRevokedProof

func ExportTrackIDComponentToRevokedProof(tidc TrackIDComponent) keybase1.RevokedProof

func ExportTrackSummary

func ExportTrackSummary(l *TrackLookup, username string) *keybase1.TrackSummary

func FastByteArrayEq

func FastByteArrayEq(a, b []byte) bool

func FileExists

func FileExists(path string) (bool, error)

exists returns whether the given file or directory exists or not

func FindBase64Block

func FindBase64Block(s string, pattern []byte, url bool) bool

func FindBase64Blocks

func FindBase64Blocks(s string) []string

func FindBase64Snippets

func FindBase64Snippets(s string) []string

func FindBestIdentifyComponent

func FindBestIdentifyComponent(e AssertionExpression) string

func FindFirstBase64Block

func FindFirstBase64Block(s string) string

func FormatTime

func FormatTime(tm time.Time) string

func GenericKeyEqual

func GenericKeyEqual(k1, k2 GenericKey) bool

func GetDataDir added in v1.0.19

func GetDataDir(id GUID) (string, error)

func GetInvitationCode added in v1.0.19

func GetInvitationCode(net context.Context, g *GlobalContext) (string, error)

func GetKID

func GetKID(w *jsonw.Wrapper) (kid keybase1.KID, err error)

func GetKeybasePassphrase

func GetKeybasePassphrase(g *GlobalContext, ui SecretUI, username, retryMsg string) (keybase1.GetPassphraseRes, error)

func GetLinkIDVoid

func GetLinkIDVoid(w *jsonw.Wrapper, l *LinkID, e *error)

func GetNodeHashVoid

func GetNodeHashVoid(w *jsonw.Wrapper, nhp *NodeHash, errp *error)

func GetOneKey

func GetOneKey(jw *jsonw.Wrapper) (*PGPKeyBundle, *Warnings, error)

func GetPGPFingerprintVoid

func GetPGPFingerprintVoid(w *jsonw.Wrapper, p *PGPFingerprint, e *error)

func GetPaperKeyForCryptoPassphrase

func GetPaperKeyForCryptoPassphrase(g *GlobalContext, ui SecretUI, reason string, devices []*Device) (string, error)

func GetPaperKeyPassphrase

func GetPaperKeyPassphrase(g *GlobalContext, ui SecretUI, username string, lastErr error) (string, error)

func GetPassphraseUntilCheckWithChecker added in v1.0.16

func GetPassphraseUntilCheckWithChecker(g *GlobalContext, arg keybase1.GUIEntryArg, prompter PassphrasePrompter, checker *Checker) (keybase1.GetPassphraseRes, error)

func GetProxyCAs

func GetProxyCAs(out *x509.CertPool, r ConfigReader) (ret *x509.CertPool, err error)

func GetSecret

func GetSecret(g *GlobalContext, ui SecretUI, title, prompt, retryMsg string, allowSecretStore bool) (keybase1.GetPassphraseRes, error)

func GetSigID

func GetSigID(w *jsonw.Wrapper, suffix bool) (keybase1.SigID, error)

func GetUID

func GetUID(w *jsonw.Wrapper) (keybase1.UID, error)

func GetUIDVoid

func GetUIDVoid(w *jsonw.Wrapper, u *keybase1.UID, e *error)

func GiveMeAnS

func GiveMeAnS(i int) string

func HexDecodeQuoted

func HexDecodeQuoted(data []byte) ([]byte, error)

func ImportStatusAsError

func ImportStatusAsError(s *keybase1.Status) error

func IsArmored

func IsArmored(buf []byte) bool

func IsDirEmpty

func IsDirEmpty(dir string) (bool, error)

IsDirEmpty returns whether directory has any files.

func IsEmpty

func IsEmpty(s string) bool

func IsExecError added in v1.0.16

func IsExecError(err error) bool

func IsIn

func IsIn(needle string, haystack []string, ci bool) bool

IsIn checks for needle in haystack, ci means case-insensitive.

func IsLoggedIn added in v1.0.18

func IsLoggedIn(g *GlobalContext, lih LoggedInHelper) (ret bool, uid keybase1.UID, err error)

func IsNo

func IsNo(s string) bool

func IsPGP

func IsPGP(key GenericKey) bool

func IsPGPAlgo

func IsPGPAlgo(algo AlgoType) bool

func IsSocialAssertion

func IsSocialAssertion(ctx AssertionContext, s string) bool

IsSocialAssertion returns true for strings that are valid social assertions. They do not need to be normalized, so user@twitter and twitter:user will work, as will USER@Twitter.

func IsSocketClosedError

func IsSocketClosedError(e error) bool

func IsSystemAdminUser

func IsSystemAdminUser() (isAdminUser bool, match string, err error)

IsSystemAdminUser returns true if current user is root or admin (system user, not Keybase user). WARNING: You shouldn't rely on this for security purposes.

func IsValidHostname

func IsValidHostname(s string) bool

func IsYes

func IsYes(s string) bool

func JoinPredicate

func JoinPredicate(arr []string, delimeter string, f func(s string) bool) string

JoinPredicate joins strings with predicate

func KIDIsDeviceEncrypt

func KIDIsDeviceEncrypt(kid keybase1.KID) bool

func KIDIsDeviceVerify

func KIDIsDeviceVerify(kid keybase1.KID) bool

func KbOpenSig

func KbOpenSig(armored string) ([]byte, error)

func KeyLookupByBoxPublicKey

func KeyLookupByBoxPublicKey(g *GlobalContext, k saltpack.BoxPublicKey) (username string, uid keybase1.UID, err error)

func KeyLookupKIDIncludingRevoked added in v1.0.19

func KeyLookupKIDIncludingRevoked(g *GlobalContext, k keybase1.KID) (username string, uid keybase1.UID, err error)

func KeyMatchesQuery

func KeyMatchesQuery(key GenericKey, q string, exact bool) bool

Any valid key matches the empty string.

func KeyProof

func KeyProof(arg Delegator) (ret *jsonw.Wrapper, err error)

arg.Me user is used to get the last known seqno in ProofMetadata. If arg.Me == nil, set arg.LastSeqno.

func KeybaseEmailAddress

func KeybaseEmailAddress(s string) string

func LoadUserEmails added in v1.0.19

func LoadUserEmails(g *GlobalContext) (emails []keybase1.Email, err error)

LoadUserEmails returns emails for logged in user

func LoadUserPlusKeys

func LoadUserPlusKeys(ctx context.Context, g *GlobalContext, uid keybase1.UID, pollForKID keybase1.KID) (keybase1.UserPlusKeys, error)

LoadUserPlusKeys loads user and keys for the given UID. If `pollForKID` is provided, we'll request this user potentially twice: the first time can hit the cache for the UID, but will force a repoll unless the pollForKID is found for the user. If pollForKID is empty, then just access the cache as normal.

func LocalDataDir added in v1.0.19

func LocalDataDir() (string, error)

func LogTagsToString added in v1.0.19

func LogTagsToString(ctx context.Context) string

func MakeParentDirs

func MakeParentDirs(filename string) error

func MakeProofChecker added in v1.0.18

func MakeURI

func MakeURI(prot string, host string) string

MakeURI makes a URI string out of the given protocol and host strings, adding necessary punctuation in between.

func MsgpackDecode added in v1.0.18

func MsgpackDecode(dst interface{}, src []byte) (err error)

func MsgpackDecodeAll

func MsgpackDecodeAll(data []byte, handle *codec.MsgpackHandle, out interface{}) error

Decode data into out, but make sure that all bytes in data are used.

func MsgpackEncode added in v1.0.18

func MsgpackEncode(src interface{}) (dst []byte, err error)

func NameCmp

func NameCmp(n1, n2 string) bool

NameCmp removes whitespace and underscores, compares tolower.

func NameTrim

func NameTrim(s string) string

func NewAPIEngines

Make a new InternalApiEngine and a new ExternalApiEngine, which share the same network config (i.e., TOR and Proxy parameters)

func NewDeviceID

func NewDeviceID() (keybase1.DeviceID, error)

func NewLoopbackConnPair

func NewLoopbackConnPair() (*LoopbackConn, *LoopbackConn)

NewLoopbackConnPair makes a new loopback connection pair

func NewTransportFromSocket

func NewTransportFromSocket(g *GlobalContext, s net.Conn) rpc.Transporter
func NewTypedChainLink(cl *ChainLink) (ret TypedChainLink, w Warning)

func NormalizeSocialAssertion

func NormalizeSocialAssertion(ctx AssertionContext, s string) (keybase1.SocialAssertion, bool)

NormalizeSocialAssertion creates a SocialAssertion from its input and normalizes it. The service name will be lowercased. If the service is case-insensitive, then the username will also be lowercased. Colon assertions (twitter:user) will be transformed to the user@twitter format. Only registered services are allowed.

func OpenSig

func OpenSig(armored string) (ret []byte, id keybase1.SigID, err error)

OpenSig takes an armored PGP or Keybase signature and opens the armor. It will return the body of the signature, the sigID of the body, or an error if it didn't work out.

func OpenTempFile

func OpenTempFile(prefix string, suffix string, mode os.FileMode) (string, *os.File, error)

OpenTempFile creates an opened termporary file. Use mode=0 for default permissions.

OpenTempFile("foo", ".zip", 0755) => "foo.RCG2KUSCGYOO3PCKNWQHBOXBKACOPIKL.zip" OpenTempFile(path.Join(os.TempDir(), "foo"), "", 0) => "/tmp/foo.RCG2KUSCGYOO3PCKNWQHBOXBKACOPIKL"

func PGPEncrypt

func PGPEncrypt(source io.Reader, sink io.WriteCloser, signer *PGPKeyBundle, recipients []*PGPKeyBundle) error

func PGPEncryptString

func PGPEncryptString(input string, signer *PGPKeyBundle, recipients []*PGPKeyBundle) ([]byte, error)

func PGPKeyRawToArmored

func PGPKeyRawToArmored(raw []byte, priv bool) (ret string, err error)

func PGPLookup

func PGPLookup(g *GlobalContext, id uint64) (username string, uid keybase1.UID, err error)

func PGPLookupFingerprint

func PGPLookupFingerprint(g *GlobalContext, fp *PGPFingerprint) (username string, uid keybase1.UID, err error)

func PGPLookupHex

func PGPLookupHex(g *GlobalContext, hexID string) (username string, uid keybase1.UID, err error)

func PacketArmoredEncode

func PacketArmoredEncode(p Packetable) (ret string, err error)

func ParseCA

func ParseCA(raw string) (*x509.CertPool, error)

func ParseGenericKey

func ParseGenericKey(bundle string) (GenericKey, *Warnings, error)

func ParseGpgIndexStream

func ParseGpgIndexStream(g *GlobalContext, stream io.Reader) (ki *GpgKeyIndex, w Warnings, err error)

func PickFirstError

func PickFirstError(errors ...error) error

func PlatformSpecificUpgradeInstructions added in v1.0.17

func PlatformSpecificUpgradeInstructions(g *GlobalContext, upgradeURI string)

func PlatformSpecificUpgradeInstructionsString

func PlatformSpecificUpgradeInstructionsString() (string, error)

func Pluralize

func Pluralize(n int, singular string, plural string, nshow bool) string

Pluralize returns pluralized string with value. For example,

Pluralize(1, "zebra", "zebras", true) => "1 zebra"
Pluralize(2, "zebra", "zebras", true) => "2 zebras"
Pluralize(2, "zebra", "zebras", false) => "zebras"

func PosixLineEndings

func PosixLineEndings(arg string) string

func PostDeviceLKS

func PostDeviceLKS(g *GlobalContext, sr SessionReader, deviceID keybase1.DeviceID, deviceType string, serverHalf LKSecServerHalf,
	ppGen PassphraseGeneration,
	clientHalfRecovery string, clientHalfRecoveryKID keybase1.KID) error

func PostInviteRequest

func PostInviteRequest(arg InviteRequestArg) (err error)

func ProofErrorIsSoft

func ProofErrorIsSoft(pe ProofError) bool

func ProofErrorToState

func ProofErrorToState(pe ProofError) keybase1.ProofState

func RandBytes

func RandBytes(length int) ([]byte, error)

func RandInt

func RandInt() (int, error)

func RandInt64

func RandInt64() (int64, error)

func RandIntn

func RandIntn(n int) int

func RandString

func RandString(prefix string, numbytes int) (string, error)

RandString returns random (base32) string with prefix.

func RandStringB64 added in v1.0.19

func RandStringB64(numTriads int) string

func ReadOneKeyFromBytes

func ReadOneKeyFromBytes(b []byte) (*PGPKeyBundle, *Warnings, error)

func ReadOneKeyFromString

func ReadOneKeyFromString(originalArmor string) (*PGPKeyBundle, *Warnings, error)

note: openpgp.ReadArmoredKeyRing only returns the first block. It will never return multiple entities.

func ReadPrivateKeyFromString

func ReadPrivateKeyFromString(s string) (*PGPKeyBundle, *Warnings, error)

ReadPrivateKeyFromString finds the first private key block in s and decodes it into a PGPKeyBundle. It is useful in the case where s contains multiple key blocks and you want the private key block. For example, the result of gpg export.

func RemoteSettingsRepairman added in v1.0.19

func RemoteSettingsRepairman(g *GlobalContext) error

RemoteSettingsRepairman does a one-time move of everyting from the roaming target directory to local. We depend on the .exe files having been uninstalled from there first. Note that Chromium still insists on keeping some stuff in roaming, exceptions for which are hardcoded.

func RemoveLocalTracks

func RemoveLocalTracks(tracker keybase1.UID, trackee keybase1.UID, g *GlobalContext) error

func RemoveNilErrors

func RemoveNilErrors(errs []error) []error

RemoveNilErrors returns error slice with ni errors removed.

func RunBug3964Repairman added in v1.0.18

func RunBug3964Repairman(g *GlobalContext, lctx LoginContext, pps *PassphraseStream) error

func RunSyncer

func RunSyncer(s Syncer, uid keybase1.UID, loggedIn bool, sr SessionReader) (err error)

func SafeWriteToFile

func SafeWriteToFile(g SafeWriteLogger, t SafeWriter, mode os.FileMode) error

SafeWriteToFile retries safeWriteToFileOnce a few times on Windows, in case AV programs interfere with 2 writes in quick succession.

func SaferDLLLoading added in v1.0.17

func SaferDLLLoading() error

SaferDLLLoading sets DLL load path to be safer.

func SaltpackDecrypt

func SaltpackDecrypt(
	g *GlobalContext, source io.Reader, sink io.WriteCloser,
	deviceEncryptionKey NaclDHKeyPair,
	checkSender func(*saltpack.MessageKeyInfo) error) (*saltpack.MessageKeyInfo, error)

func SaltpackEncrypt

func SaltpackEncrypt(g *GlobalContext, arg *SaltpackEncryptArg) error

SaltpackEncrypt reads from the given source, encrypts it for the given receivers from the given sender, and writes it to sink. If Binary is false, the data written to sink will be armored.

func SaltpackSign

func SaltpackSign(g *GlobalContext, source io.ReadCloser, sink io.WriteCloser, key NaclSigningKeyPair, binary bool) error

func SaltpackSignDetached

func SaltpackSignDetached(g *GlobalContext, source io.ReadCloser, sink io.WriteCloser, key NaclSigningKeyPair, binary bool) error

func SaltpackVerify

func SaltpackVerify(g SaltpackVerifyContext, source io.Reader, sink io.WriteCloser, checkSender func(saltpack.SigningPublicKey) error) error

func SaltpackVerifyDetached

func SaltpackVerifyDetached(g SaltpackVerifyContext, message io.Reader, signature []byte, checkSender func(saltpack.SigningPublicKey) error) error

func SecWordList

func SecWordList(entropy int) ([]string, error)

SecWordList returns an array of words from secwords. It returns enough words to satisfy the desired entropy.

func SecureByteArrayEq

func SecureByteArrayEq(a, b []byte) bool

func ShortCA

func ShortCA(raw string) string

func SigAssertKbPayload

func SigAssertKbPayload(armored string, expected []byte) (sigID keybase1.SigID, err error)

func SigAssertPGPPayload

func SigAssertPGPPayload(armored string, expected []byte) (sigID keybase1.SigID, err error)

func SigAssertPayload

func SigAssertPayload(armored string, expected []byte) (sigID keybase1.SigID, err error)

func SigningPublicKeyToKeybaseKID

func SigningPublicKeyToKeybaseKID(k saltpack.SigningPublicKey) (ret keybase1.KID)

func SimpleSign

func SimpleSign(payload []byte, key PGPKeyBundle) (out string, id keybase1.SigID, err error)

SimpleSign signs the given data stream, outputs an armored string which is the attached signature of the input data

func SplitByRunes

func SplitByRunes(s string, separators []rune) []string

SplitByRunes splits string by runes

func SplitHost

func SplitHost(joined string) (host string, port int, err error)

func SplitPath

func SplitPath(s string) []string

SplitPath return string split by path separator: SplitPath("/a/b/c") => []string{"a", "b", "c"}

func StatSKBKeyringMTime added in v1.0.18

func StatSKBKeyringMTime(un NormalizedUsername, g *GlobalContext) (mtime time.Time, err error)

func StoreLocalTrack

func StoreLocalTrack(tracker keybase1.UID, trackee keybase1.UID, expiringLocal bool, statement *jsonw.Wrapper, g *GlobalContext) error

func StretchPassphrase

func StretchPassphrase(g *GlobalContext, passphrase string, salt []byte) (tsec Triplesec, pps *PassphraseStream, err error)

func Tablify

func Tablify(writer io.Writer, headings []string, rowfunc func() []string)

func TablifyWithTabWriter added in v1.0.18

func TablifyWithTabWriter(w *tabwriter.Writer, headings []string, rowfunc func() []string)

func TempFile

func TempFile(prefix string) (string, error)

TempFile returns a random path name in os.TempDir()

func TempFileName

func TempFileName(prefix string) (tmp string, err error)

TempFileName returns a temporary random filename

func TimeLog

func TimeLog(name string, start time.Time, out func(string, ...interface{}))

TimeLog calls out with the time since start. Use like this:

defer TimeLog("MyFunc", time.Now(), e.G().Log.Warning)

func TorParseProxy

func TorParseProxy(s string) (*url.URL, error)

func Trace

func Trace(log logger.Logger, msg string, f func() error) func()

func TraceOK added in v1.0.19

func TraceOK(log logger.Logger, msg string, f func() bool) func()

func TrimCicmp

func TrimCicmp(s1, s2 string) bool

func UIDFromHex

func UIDFromHex(s string) (keybase1.UID, error)

func UIDWrapper

func UIDWrapper(uid keybase1.UID) *jsonw.Wrapper

func Uniquify

func Uniquify(inp []string) []string

func UnixToTimeMappingZero

func UnixToTimeMappingZero(unixTime int64) time.Time

The standard time.Unix() converter interprets 0 as the Unix epoch (1970). But in PGP, an expiry time of zero indicates that a key never expires, and it would be nice to be able to check for that case with Time.IsZero(). This conversion special-cases 0 to be time.Time's zero-value (1 AD), so that we get that nice property.

func Unquote

func Unquote(data []byte) string

func UsernameToUID

func UsernameToUID(s string) keybase1.UID

UsernameToUID works for users created after "Fri Feb 6 19:33:08 EST 2015", with some exceptions, since we didn't ToLower() for all UIDs

func UsernameToUIDPreserveCase

func UsernameToUIDPreserveCase(s string) keybase1.UID

UsernameToUID works for users created after "Fri Feb 6 19:33:08 EST 2015". Some of them had buggy Username -> UID conversions, in which case we need to hash the original case to recover their UID.

func VersionMessage

func VersionMessage(linefn func(string))

func VersionString

func VersionString() string

VersionString returns semantic version string

func WhitespaceNormalize

func WhitespaceNormalize(s string) string

func WithLogTag added in v1.0.19

func WithLogTag(ctx context.Context, k string) context.Context

func WrapError

func WrapError(e error) interface{}

func XORBytes

func XORBytes(dst, a, b []byte) int

Types

type API

type API interface {
	Get(APIArg) (*APIRes, error)
	GetResp(APIArg) (*http.Response, error)
	GetDecode(APIArg, APIResponseWrapper) error
	Post(APIArg) (*APIRes, error)
	PostJSON(APIArg) (*APIRes, error)
	PostResp(APIArg) (*http.Response, error)
	PostDecode(APIArg, APIResponseWrapper) error
	PostRaw(APIArg, string, io.Reader) (*APIRes, error)
}

type APIArg

type APIArg struct {
	Endpoint string

	Args            HTTPArgs
	JSONPayload     JSONPayload
	NeedSession     bool
	SessionR        SessionReader
	HTTPStatus      []int
	AppStatusCodes  []int
	InitialTimeout  time.Duration // optional
	RetryMultiplier float64       // optional
	RetryCount      int           // optional
	NetContext      context.Context
	// contains filtered or unexported fields
}

func NewAPIArg added in v1.0.17

func NewAPIArg(endpoint string) APIArg

NewAPIArg creates a standard APIArg that will result in one API request with the default timeout.

func NewAPIArgWithNetContext added in v1.0.19

func NewAPIArgWithNetContext(ctx context.Context, endpoint string) APIArg

func NewRetryAPIArg added in v1.0.17

func NewRetryAPIArg(endpoint string) APIArg

NewRetryAPIArg creates an APIArg that will cause the http client to use a much smaller request timeout, but retry the request several times, backing off on the timeout each time.

type APIContext added in v1.0.18

type APIContext interface {
	GetAPI() API
	GetExternalAPI() ExternalAPI
	GetServerURI() string
}

APIContext defines methods for accessing API server

type APIError

type APIError struct {
	Msg  string
	Code int
}

func NewAPIErrorFromHTTPResponse

func NewAPIErrorFromHTTPResponse(r *http.Response) *APIError

func (*APIError) Error

func (a *APIError) Error() string

func (*APIError) ToStatus added in v1.0.17

func (a *APIError) ToStatus() (s keybase1.Status)

type APINetError

type APINetError struct {
	// contains filtered or unexported fields
}

func (APINetError) Error

func (e APINetError) Error() string

func (APINetError) ToStatus

func (e APINetError) ToStatus() (s keybase1.Status)

type APIRes

type APIRes struct {
	Status     *jsonw.Wrapper
	Body       *jsonw.Wrapper
	HTTPStatus int
	AppStatus  *AppStatus
}

type APIResponseWrapper

type APIResponseWrapper interface {
	GetAppStatus() *AppStatus
}

type APIStatus

type APIStatus struct {
	Code int    `json:"code"`
	Name string `json:"name"`
}

type Account

type Account struct {
	Contextified
	// contains filtered or unexported fields
}

func NewAccount

func NewAccount(g *GlobalContext) *Account

func (*Account) CachedSecretKey

func (a *Account) CachedSecretKey(ska SecretKeyArg) (GenericKey, error)

func (*Account) ClearCachedSecretKeys

func (a *Account) ClearCachedSecretKeys()

func (*Account) ClearKeyring

func (a *Account) ClearKeyring()

func (*Account) ClearLoginSession

func (a *Account) ClearLoginSession()

ClearLoginSession clears out any cached login sessions with the account object

func (*Account) ClearPaperKeys added in v1.0.18

func (a *Account) ClearPaperKeys()

func (*Account) ClearStreamCache

func (a *Account) ClearStreamCache()

func (*Account) CreateLoginSessionWithSalt

func (a *Account) CreateLoginSessionWithSalt(emailOrUsername string, salt []byte) error

func (*Account) CreateStreamCache

func (a *Account) CreateStreamCache(tsec Triplesec, pps *PassphraseStream)

func (*Account) CreateStreamCacheViaStretch

func (a *Account) CreateStreamCacheViaStretch(passphrase string) error

func (*Account) Dump

func (a *Account) Dump()

func (*Account) EnsureUsername

func (a *Account) EnsureUsername(username NormalizedUsername)

func (*Account) GetStreamGeneration

func (a *Account) GetStreamGeneration() (ret PassphraseGeneration)

GetStreamGeneration() gets the generation of the currently cached passphrase stream

func (*Account) GetUID

func (a *Account) GetUID() (ret keybase1.UID)

func (*Account) GetUnlockedPaperEncKey

func (a *Account) GetUnlockedPaperEncKey() GenericKey

func (*Account) GetUnlockedPaperSigKey

func (a *Account) GetUnlockedPaperSigKey() GenericKey

func (*Account) Keyring

func (a *Account) Keyring() (*SKBKeyringFile, error)

func (*Account) LKSec

func (a *Account) LKSec() *LKSec

func (*Account) LKSecUnlock

func (a *Account) LKSecUnlock(locked []byte) ([]byte, PassphraseGeneration, error)

LKSecUnlock isn't used, but it could be. It's here for a future refactoring of the key unlock mess.

func (*Account) LoadLoginSession

func (a *Account) LoadLoginSession(emailOrUsername string) error

func (*Account) LocalSession

func (a *Account) LocalSession() *Session

func (*Account) LockedLocalSecretKey

func (a *Account) LockedLocalSecretKey(ska SecretKeyArg) (*SKB, error)

LockedLocalSecretKey looks in the local keyring to find a key for the given user. Returns non-nil if one was found, and nil otherwise.

func (*Account) LoggedIn

func (a *Account) LoggedIn() bool

LoggedIn returns true if the user is logged in. It does not try to load the session.

func (*Account) LoggedInAndProvisioined

func (a *Account) LoggedInAndProvisioined() bool

func (*Account) LoggedInLoad

func (a *Account) LoggedInLoad() (bool, error)

LoggedInLoad will load and check the session with the api server if necessary.

func (*Account) LoggedInProvisionedLoad

func (a *Account) LoggedInProvisionedLoad() (bool, error)

func (*Account) LoginSession

func (a *Account) LoginSession() *LoginSession

func (*Account) Logout

func (a *Account) Logout() error

func (*Account) PassphraseStream

func (a *Account) PassphraseStream() *PassphraseStream

PassphraseStream returns a copy of the currently cached passphrase stream, or nil if none is there.

func (*Account) PassphraseStreamCache

func (a *Account) PassphraseStreamCache() *PassphraseStreamCache

func (*Account) PassphraseStreamRef

func (a *Account) PassphraseStreamRef() *PassphraseStream

PassphraseStreamRef returns a reference to the actual passphrase stream, or nil if none is there.

func (*Account) RunSecretSyncer

func (a *Account) RunSecretSyncer(uid keybase1.UID) error

func (*Account) SaveState

func (a *Account) SaveState(sessionID, csrf string, username NormalizedUsername, uid keybase1.UID, deviceID keybase1.DeviceID) error

SaveState saves the logins state to memory, and to the user config file.

func (*Account) SecretPromptCanceled

func (a *Account) SecretPromptCanceled()

func (*Account) SecretSyncer

func (a *Account) SecretSyncer() *SecretSyncer

func (*Account) SetCachedSecretKey

func (a *Account) SetCachedSecretKey(ska SecretKeyArg, key GenericKey) error

func (*Account) SetLKSec

func (a *Account) SetLKSec(lks *LKSec)

func (*Account) SetStreamGeneration

func (a *Account) SetStreamGeneration(gen PassphraseGeneration, nilPPStreamOK bool)

SetStreamGeneration sets the passphrase generation on the cached stream if it exists, and otherwise will wind up warning of a problem.

func (*Account) SetTestPostCleanHook

func (a *Account) SetTestPostCleanHook(f func())

func (*Account) SetUnlockedPaperKey

func (a *Account) SetUnlockedPaperKey(sig GenericKey, enc GenericKey) error

func (*Account) Shutdown

func (a *Account) Shutdown() error

func (*Account) SkipSecretPrompt

func (a *Account) SkipSecretPrompt() bool

func (*Account) UnloadLocalSession

func (a *Account) UnloadLocalSession()

func (*Account) UserInfo

func (a *Account) UserInfo() (uid keybase1.UID, username NormalizedUsername,
	token string, deviceSubkey, deviceSibkey GenericKey, err error)

type AlgoType

type AlgoType int

type AlreadyRegisteredError

type AlreadyRegisteredError struct {
	UID keybase1.UID
}

func (AlreadyRegisteredError) Error

func (u AlreadyRegisteredError) Error() string

type AppConfig

type AppConfig struct {
	NullConfiguration
	HomeDir                     string
	LogFile                     string
	RunMode                     RunMode
	Debug                       bool
	LocalRPCDebug               string
	ServerURI                   string
	SecurityAccessGroupOverride bool
}

func (AppConfig) GetDebug

func (c AppConfig) GetDebug() (bool, bool)

func (AppConfig) GetHome

func (c AppConfig) GetHome() string

func (AppConfig) GetLocalRPCDebug

func (c AppConfig) GetLocalRPCDebug() string

func (AppConfig) GetLogFile added in v1.0.17

func (c AppConfig) GetLogFile() string

func (AppConfig) GetRunMode

func (c AppConfig) GetRunMode() (RunMode, error)

func (AppConfig) GetSecurityAccessGroupOverride

func (c AppConfig) GetSecurityAccessGroupOverride() (bool, bool)

func (AppConfig) GetServerURI

func (c AppConfig) GetServerURI() string

type AppStatus

type AppStatus struct {
	Code   int               `json:"code"`
	Name   string            `json:"name"`
	Desc   string            `json:"desc"`
	Fields map[string]string `json:"fields"`
}

type AppStatusError

type AppStatusError struct {
	Code   int
	Name   string
	Desc   string
	Fields map[string]string
}

func NewAppStatusError

func NewAppStatusError(ast *AppStatus) AppStatusError

func (AppStatusError) Error

func (a AppStatusError) Error() string

func (AppStatusError) IsBadField

func (a AppStatusError) IsBadField(s string) bool

func (AppStatusError) ToStatus

func (a AppStatusError) ToStatus() keybase1.Status

type ApplyFn

type ApplyFn func(i ConnectionID, xp rpc.Transporter) bool

ApplyFn can be applied to every connection. It is called with the RPC transporter, and also the connectionID. It should return a bool true to keep going and false to stop.

type AssertionAnd

type AssertionAnd struct {
	// contains filtered or unexported fields
}

func NewAssertionAnd

func NewAssertionAnd(left, right AssertionExpression) AssertionAnd

func (AssertionAnd) CollectUrls

func (a AssertionAnd) CollectUrls(v []AssertionURL) []AssertionURL

func (AssertionAnd) HasFactor

func (a AssertionAnd) HasFactor(pf Proof) bool

func (AssertionAnd) HasOr

func (a AssertionAnd) HasOr() bool

func (AssertionAnd) Len

func (a AssertionAnd) Len() int

func (AssertionAnd) MatchSet

func (a AssertionAnd) MatchSet(ps ProofSet) bool

func (AssertionAnd) NeedsParens added in v1.0.17

func (a AssertionAnd) NeedsParens() bool

func (AssertionAnd) String

func (a AssertionAnd) String() string

type AssertionContext added in v1.0.18

type AssertionContext interface {
	NormalizeSocialName(service string, username string) (string, error)
}

func MakeAssertionContext added in v1.0.18

func MakeAssertionContext(s ExternalServicesCollector) AssertionContext

type AssertionDNS

type AssertionDNS struct{ AssertionURLBase }

func (AssertionDNS) CheckAndNormalize added in v1.0.17

func (a AssertionDNS) CheckAndNormalize(_ AssertionContext) (AssertionURL, error)

func (AssertionDNS) CollectUrls

func (a AssertionDNS) CollectUrls(v []AssertionURL) []AssertionURL

func (AssertionDNS) IsRemote added in v1.0.17

func (a AssertionDNS) IsRemote() bool

func (AssertionDNS) MatchSet

func (a AssertionDNS) MatchSet(ps ProofSet) bool

func (AssertionDNS) ToLookup

func (a AssertionDNS) ToLookup() (key, value string, err error)

type AssertionExpression

type AssertionExpression interface {
	String() string
	MatchSet(ps ProofSet) bool
	HasOr() bool
	NeedsParens() bool
	CollectUrls([]AssertionURL) []AssertionURL
}

func AssertionParse

func AssertionParse(ctx AssertionContext, s string) (AssertionExpression, error)

func AssertionParseAndOnly

func AssertionParseAndOnly(ctx AssertionContext, s string) (AssertionExpression, error)

type AssertionFingerprint

type AssertionFingerprint struct{ AssertionURLBase }

func (AssertionFingerprint) CheckAndNormalize added in v1.0.17

func (a AssertionFingerprint) CheckAndNormalize(_ AssertionContext) (AssertionURL, error)

func (AssertionFingerprint) CollectUrls

func (a AssertionFingerprint) CollectUrls(v []AssertionURL) []AssertionURL

func (AssertionFingerprint) IsFingerprint

func (a AssertionFingerprint) IsFingerprint() bool

func (AssertionFingerprint) MatchProof

func (a AssertionFingerprint) MatchProof(proof Proof) bool

Fingerprint matching is on the suffixes. If the assertion matches any suffix of the proof, then we're OK

func (AssertionFingerprint) MatchSet

func (a AssertionFingerprint) MatchSet(ps ProofSet) bool

func (AssertionFingerprint) ToLookup

func (a AssertionFingerprint) ToLookup() (key, value string, err error)

type AssertionHTTP

type AssertionHTTP struct{ AssertionURLBase }

func (AssertionHTTP) CheckAndNormalize added in v1.0.17

func (a AssertionHTTP) CheckAndNormalize(_ AssertionContext) (AssertionURL, error)

func (AssertionHTTP) CollectUrls

func (a AssertionHTTP) CollectUrls(v []AssertionURL) []AssertionURL

func (AssertionHTTP) IsRemote

func (a AssertionHTTP) IsRemote() bool

func (AssertionHTTP) Keys

func (a AssertionHTTP) Keys() []string

func (AssertionHTTP) MatchSet

func (a AssertionHTTP) MatchSet(ps ProofSet) bool

func (AssertionHTTP) ToLookup

func (a AssertionHTTP) ToLookup() (key, value string, err error)

type AssertionHTTPS

type AssertionHTTPS struct{ AssertionURLBase }

func (AssertionHTTPS) CheckAndNormalize added in v1.0.17

func (a AssertionHTTPS) CheckAndNormalize(_ AssertionContext) (AssertionURL, error)

func (AssertionHTTPS) CollectUrls

func (a AssertionHTTPS) CollectUrls(v []AssertionURL) []AssertionURL

func (AssertionHTTPS) IsRemote

func (a AssertionHTTPS) IsRemote() bool

func (AssertionHTTPS) MatchSet

func (a AssertionHTTPS) MatchSet(ps ProofSet) bool

func (AssertionHTTPS) ToLookup

func (a AssertionHTTPS) ToLookup() (key, value string, err error)

type AssertionKeybase

type AssertionKeybase struct{ AssertionURLBase }

func (AssertionKeybase) CheckAndNormalize added in v1.0.17

func (a AssertionKeybase) CheckAndNormalize(_ AssertionContext) (AssertionURL, error)

func (AssertionKeybase) CollectUrls

func (a AssertionKeybase) CollectUrls(v []AssertionURL) []AssertionURL

func (AssertionKeybase) IsKeybase

func (a AssertionKeybase) IsKeybase() bool

func (AssertionKeybase) MatchSet

func (a AssertionKeybase) MatchSet(ps ProofSet) bool

func (AssertionKeybase) String added in v1.0.17

func (a AssertionKeybase) String() string

func (AssertionKeybase) ToLookup

func (a AssertionKeybase) ToLookup() (key, value string, err error)

type AssertionOr

type AssertionOr struct {
	// contains filtered or unexported fields
}

func NewAssertionOr

func NewAssertionOr(left, right AssertionExpression) AssertionOr

func (AssertionOr) CollectUrls

func (a AssertionOr) CollectUrls(v []AssertionURL) []AssertionURL

func (AssertionOr) HasOr

func (a AssertionOr) HasOr() bool

func (AssertionOr) MatchSet

func (a AssertionOr) MatchSet(ps ProofSet) bool

func (AssertionOr) NeedsParens added in v1.0.17

func (a AssertionOr) NeedsParens() bool

func (AssertionOr) String

func (a AssertionOr) String() string

type AssertionParseError

type AssertionParseError struct {
	// contains filtered or unexported fields
}

func NewAssertionParseError

func NewAssertionParseError(s string, a ...interface{}) AssertionParseError

func NewNeedInputError

func NewNeedInputError(s string, a ...interface{}) AssertionParseError

func (AssertionParseError) Error

func (e AssertionParseError) Error() string

type AssertionSocial

type AssertionSocial struct{ AssertionURLBase }

func (AssertionSocial) CheckAndNormalize added in v1.0.17

func (a AssertionSocial) CheckAndNormalize(ctx AssertionContext) (AssertionURL, error)

func (AssertionSocial) CollectUrls

func (a AssertionSocial) CollectUrls(v []AssertionURL) []AssertionURL

func (AssertionSocial) GetValue added in v1.0.17

func (a AssertionSocial) GetValue() string

func (AssertionSocial) IsRemote

func (a AssertionSocial) IsRemote() bool

func (AssertionSocial) IsSocial

func (a AssertionSocial) IsSocial() bool

func (AssertionSocial) MatchSet

func (a AssertionSocial) MatchSet(ps ProofSet) bool

func (AssertionSocial) ToLookup

func (a AssertionSocial) ToLookup() (key, value string, err error)

type AssertionUID

type AssertionUID struct {
	AssertionURLBase
	// contains filtered or unexported fields
}

func (AssertionUID) CheckAndNormalize added in v1.0.17

func (a AssertionUID) CheckAndNormalize(_ AssertionContext) (AssertionURL, error)

func (AssertionUID) CollectUrls

func (a AssertionUID) CollectUrls(v []AssertionURL) []AssertionURL

func (AssertionUID) IsUID

func (a AssertionUID) IsUID() bool

func (AssertionUID) MatchSet

func (a AssertionUID) MatchSet(ps ProofSet) bool

func (AssertionUID) ToLookup

func (a AssertionUID) ToLookup() (key, value string, err error)

func (AssertionUID) ToUID

func (a AssertionUID) ToUID() keybase1.UID

type AssertionURL

type AssertionURL interface {
	AssertionExpression
	Keys() []string
	CheckAndNormalize(ctx AssertionContext) (AssertionURL, error)
	IsKeybase() bool
	IsUID() bool
	ToUID() keybase1.UID
	IsSocial() bool
	IsRemote() bool
	IsFingerprint() bool
	MatchProof(p Proof) bool
	ToKeyValuePair() (string, string)
	CacheKey() string
	GetValue() string
	GetKey() string
	ToLookup() (string, string, error)
}

func FindBestIdentifyComponentURL

func FindBestIdentifyComponentURL(e AssertionExpression) AssertionURL

func ParseAssertionURL

func ParseAssertionURL(ctx AssertionContext, s string, strict bool) (ret AssertionURL, err error)

func ParseAssertionURLKeyValue

func ParseAssertionURLKeyValue(ctx AssertionContext, key string, val string, strict bool) (ret AssertionURL, err error)

type AssertionURLBase

type AssertionURLBase struct {
	Key, Value string
}

func (AssertionURLBase) CacheKey

func (b AssertionURLBase) CacheKey() string

func (AssertionURLBase) GetKey added in v1.0.17

func (b AssertionURLBase) GetKey() string

func (AssertionURLBase) GetValue

func (b AssertionURLBase) GetValue() string

func (AssertionURLBase) HasOr

func (b AssertionURLBase) HasOr() bool

func (AssertionURLBase) IsFingerprint

func (b AssertionURLBase) IsFingerprint() bool

func (AssertionURLBase) IsKeybase

func (b AssertionURLBase) IsKeybase() bool

func (AssertionURLBase) IsRemote

func (b AssertionURLBase) IsRemote() bool

func (AssertionURLBase) IsSocial

func (b AssertionURLBase) IsSocial() bool

func (AssertionURLBase) IsUID

func (b AssertionURLBase) IsUID() bool

func (AssertionURLBase) Keys

func (b AssertionURLBase) Keys() []string

func (AssertionURLBase) MatchProof

func (b AssertionURLBase) MatchProof(proof Proof) bool

func (AssertionURLBase) NeedsParens added in v1.0.17

func (b AssertionURLBase) NeedsParens() bool

func (AssertionURLBase) String

func (b AssertionURLBase) String() string

func (AssertionURLBase) ToKeyValuePair

func (b AssertionURLBase) ToKeyValuePair() (string, string)

func (AssertionURLBase) ToUID

func (b AssertionURLBase) ToUID() (ret keybase1.UID)

type AssertionWeb

type AssertionWeb struct{ AssertionURLBase }

func (AssertionWeb) CheckAndNormalize added in v1.0.17

func (a AssertionWeb) CheckAndNormalize(_ AssertionContext) (AssertionURL, error)

func (AssertionWeb) CollectUrls

func (a AssertionWeb) CollectUrls(v []AssertionURL) []AssertionURL

func (AssertionWeb) IsRemote

func (a AssertionWeb) IsRemote() bool

func (AssertionWeb) Keys

func (a AssertionWeb) Keys() []string

func (AssertionWeb) MatchSet

func (a AssertionWeb) MatchSet(ps ProofSet) bool

func (AssertionWeb) ToLookup

func (a AssertionWeb) ToLookup() (key, value string, err error)

type B

type B struct {
	Val bool
}

func (B) String

func (b B) String() string

type BackoffPolicy added in v1.0.18

type BackoffPolicy struct {
	Millis []int
}

BackoffPolicy implements a backoff policy, randomizing its delays and saturating at the final value in Millis.

func (BackoffPolicy) Duration added in v1.0.18

func (b BackoffPolicy) Duration(n int) time.Duration

Duration returns the time duration of the n'th wait cycle in a backoff policy. This is b.Millis[n], randomized to avoid thundering herds.

type BadEmailError added in v1.0.18

type BadEmailError struct {
	Msg string
}

func (BadEmailError) Error added in v1.0.18

func (e BadEmailError) Error() string

func (BadEmailError) ToStatus added in v1.0.18

func (e BadEmailError) ToStatus() keybase1.Status

type BadFingerprintError

type BadFingerprintError struct {
	// contains filtered or unexported fields
}

func (BadFingerprintError) Error

func (b BadFingerprintError) Error() string

type BadInvitationCodeError

type BadInvitationCodeError struct{}

func (BadInvitationCodeError) Error

func (e BadInvitationCodeError) Error() string

func (BadInvitationCodeError) ToStatus

func (e BadInvitationCodeError) ToStatus(s keybase1.Status)

type BadKeyError

type BadKeyError struct {
	Msg string
}

func (BadKeyError) Error

func (p BadKeyError) Error() string

type BadNameError

type BadNameError string

func (BadNameError) Error

func (e BadNameError) Error() string

type BadRevocationError

type BadRevocationError struct {
	// contains filtered or unexported fields
}

func (BadRevocationError) Error

func (e BadRevocationError) Error() string

type BadServiceError

type BadServiceError struct {
	Service string
}

func (BadServiceError) Error

func (e BadServiceError) Error() string

type BadSigError

type BadSigError struct {
	E string
}

func (BadSigError) Error

func (e BadSigError) Error() string

type BadSignaturePrefixError added in v1.0.18

type BadSignaturePrefixError struct{}

func (BadSignaturePrefixError) Error added in v1.0.18

func (e BadSignaturePrefixError) Error() string

type BadUsernameError

type BadUsernameError struct {
	N string
}

func NewBadUsernameError added in v1.0.18

func NewBadUsernameError(n string) BadUsernameError

func (BadUsernameError) Error

func (e BadUsernameError) Error() string

type Base

type Base struct {
	// contains filtered or unexported fields
}

func (Base) Join

func (b Base) Join(elem ...string) string

func (Base) Unsplit

func (b Base) Unsplit(v []string) string

type Base64Finder

type Base64Finder struct {
	// contains filtered or unexported fields
}

func NewBase64Finder

func NewBase64Finder(i string) *Base64Finder

func (*Base64Finder) Run

func (s *Base64Finder) Run() []string

type BaseAPIEngine

type BaseAPIEngine struct {
	Contextified
	// contains filtered or unexported fields
}

Shared code across Internal and External APIs

func (*BaseAPIEngine) PrepareGet

func (api *BaseAPIEngine) PrepareGet(url1 url.URL, arg APIArg) (*http.Request, error)

func (*BaseAPIEngine) PreparePost

func (api *BaseAPIEngine) PreparePost(url1 url.URL, arg APIArg, sendJSON bool) (*http.Request, error)

type BaseServiceType

type BaseServiceType struct{}

func (BaseServiceType) BaseAllStringKeys

func (t BaseServiceType) BaseAllStringKeys(st ServiceType) []string

func (BaseServiceType) BaseCheckProofForURL

func (t BaseServiceType) BaseCheckProofForURL(text string, id keybase1.SigID) (err error)

func (BaseServiceType) BaseCheckProofTextFull

func (t BaseServiceType) BaseCheckProofTextFull(text string, id keybase1.SigID, sig string) (err error)

func (BaseServiceType) BaseCheckProofTextShort

func (t BaseServiceType) BaseCheckProofTextShort(text string, id keybase1.SigID, med bool) error

func (BaseServiceType) BaseGetProofType

func (t BaseServiceType) BaseGetProofType(st ServiceType) string

func (BaseServiceType) BaseRecheckProofPosting

func (t BaseServiceType) BaseRecheckProofPosting(tryNumber int, status keybase1.ProofStatus) (warning *Markup, err error)

func (BaseServiceType) BaseToServiceJSON

func (t BaseServiceType) BaseToServiceJSON(st ServiceType, un string) *jsonw.Wrapper

func (BaseServiceType) FormatProofText

func (t BaseServiceType) FormatProofText(ppr *PostProofRes) (string, error)

func (BaseServiceType) GetAPIArgKey

func (t BaseServiceType) GetAPIArgKey() string

func (BaseServiceType) IsDevelOnly added in v1.0.18

func (t BaseServiceType) IsDevelOnly() bool

func (BaseServiceType) LastWriterWins

func (t BaseServiceType) LastWriterWins() bool

func (BaseServiceType) PreProofCheck

func (t BaseServiceType) PreProofCheck(ProofContext, string) (*Markup, error)

func (BaseServiceType) PreProofWarning

func (t BaseServiceType) PreProofWarning(remotename string) *Markup

type BtcOpts

type BtcOpts struct{}

type BucketDict

type BucketDict struct {
	// contains filtered or unexported fields
}

func NewBuckDict

func NewBuckDict() *BucketDict

func (*BucketDict) Add

func (bd *BucketDict) Add(k string, v *GpgPrimaryKey)

func (BucketDict) Get

func (bd BucketDict) Get(k string) []*GpgPrimaryKey

func (BucketDict) Get0Or1

func (bd BucketDict) Get0Or1(k string) (ret *GpgPrimaryKey, err error)

type BufferCloser

type BufferCloser struct {
	*bytes.Buffer
}

BufferCloser is a Buffer that satisfies the io.Closer interface.

func NewBufferCloser

func NewBufferCloser() *BufferCloser

func (*BufferCloser) Close

func (b *BufferCloser) Close() error

type CachedFullSelf added in v1.0.19

type CachedFullSelf struct {
	Contextified
	sync.Mutex

	TestDeadlocker func()
	// contains filtered or unexported fields
}

CachedFullSelf caches a full-on *User for the "me" or "self" user. Because it's a full-on *User, it contains many pointers and can't reasonably be deep-copied. So we're going to insist that access to the cached user is protected inside a lock.

func NewCachedFullSelf added in v1.0.19

func NewCachedFullSelf(g *GlobalContext) *CachedFullSelf

NewCachedFullSelf makes a new full self cacher in the given GlobalContext

func (*CachedFullSelf) HandleUserChanged added in v1.0.19

func (m *CachedFullSelf) HandleUserChanged(u keybase1.UID) error

HandleUserChanged clears the cached self user if it's the UID of the self user.

func (*CachedFullSelf) OnLogin added in v1.0.19

func (m *CachedFullSelf) OnLogin() error

OnLogin clears the cached self user if it differs from what's already cached.

func (*CachedFullSelf) OnLogout added in v1.0.19

func (m *CachedFullSelf) OnLogout() error

OnLogout clears the cached self user.

func (*CachedFullSelf) Update added in v1.0.19

func (m *CachedFullSelf) Update(ctx context.Context, u *User) (err error)

Update updates the CachedFullSelf with a User loaded from someplace else -- let's say the UPAK loader. We throw away objects for other users or that aren't newer than the one we have.

func (*CachedFullSelf) WithSelf added in v1.0.19

func (m *CachedFullSelf) WithSelf(ctx context.Context, f func(u *User) error) error

WithSelf loads only the self user, and maybe hits the cache. It takes a closure, in which the user object is locked and accessible, but we should be sure the user never escapes this closure. If the user is fresh-loaded, then it is stored in memory.

func (*CachedFullSelf) WithUser added in v1.0.19

func (m *CachedFullSelf) WithUser(arg LoadUserArg, f func(u *User) error) (err error)

WithUser loads any old user. If it happens to be the self user, then it behaves as in WithSelf. Otherwise, it will just load the user, and throw it out when done. WithUser supports other so that code doesn't need to change if we're doing the operation for the user or someone else.

type CachedUPAKLoader added in v1.0.19

type CachedUPAKLoader struct {
	sync.Mutex
	Contextified

	Freshness time.Duration

	TestDeadlocker func()
	// contains filtered or unexported fields
}

CachedUPAKLoader is a UPAKLoader implementation that can cache results both in memory and on disk.

func NewCachedUPAKLoader added in v1.0.19

func NewCachedUPAKLoader(g *GlobalContext, f time.Duration) *CachedUPAKLoader

NewCachedUPAKLoader constructs a new CachedUPAKLoader

func (*CachedUPAKLoader) CheckKIDForUID added in v1.0.19

func (u *CachedUPAKLoader) CheckKIDForUID(ctx context.Context, uid keybase1.UID, kid keybase1.KID) (found bool, revokedAt *keybase1.KeybaseTime, deleted bool, err error)

func (*CachedUPAKLoader) ClearMemory added in v1.0.19

func (u *CachedUPAKLoader) ClearMemory()

func (*CachedUPAKLoader) Disable added in v1.0.19

func (u *CachedUPAKLoader) Disable()

func (*CachedUPAKLoader) Invalidate added in v1.0.19

func (u *CachedUPAKLoader) Invalidate(ctx context.Context, uid keybase1.UID)

func (*CachedUPAKLoader) ListFollowedUIDs added in v1.0.19

func (u *CachedUPAKLoader) ListFollowedUIDs(uid keybase1.UID) ([]keybase1.UID, error)

func (*CachedUPAKLoader) Load added in v1.0.19

func (u *CachedUPAKLoader) Load(arg LoadUserArg) (ret *keybase1.UserPlusAllKeys, user *User, err error)

Load a UserPlusAllKeys from the local cache, falls back to LoadUser, and cache the user. Can only perform lookups by UID. Will return a non-nil UserPlusAllKeys, or a non-nil error, but never both non-nil, nor never both nil. If we had to do a full LoadUser as part of the request, it's returned too.

func (*CachedUPAKLoader) LoadDeviceKey added in v1.0.19

func (u *CachedUPAKLoader) LoadDeviceKey(ctx context.Context, uid keybase1.UID, deviceID keybase1.DeviceID) (upak *keybase1.UserPlusAllKeys, deviceKey *keybase1.PublicKey, revoked *keybase1.RevokedKey, err error)

Load the PublicKey for a user's device from the local cache, falling back to LoadUser, and cache the user. If the user exists but the device doesn't, will force a load in case the device is very new.

func (*CachedUPAKLoader) LoadUserPlusKeys added in v1.0.19

func (u *CachedUPAKLoader) LoadUserPlusKeys(ctx context.Context, uid keybase1.UID, pollForKID keybase1.KID) (keybase1.UserPlusKeys, error)

func (*CachedUPAKLoader) LookupUsername added in v1.0.19

func (u *CachedUPAKLoader) LookupUsername(ctx context.Context, uid keybase1.UID) (NormalizedUsername, error)

func (*CachedUPAKLoader) LookupUsernameAndDevice added in v1.0.19

func (u *CachedUPAKLoader) LookupUsernameAndDevice(ctx context.Context, uid keybase1.UID, did keybase1.DeviceID) (username NormalizedUsername, deviceName string, deviceType string, err error)

func (*CachedUPAKLoader) PutUserToCache added in v1.0.19

func (u *CachedUPAKLoader) PutUserToCache(ctx context.Context, user *User) error

type CachedUserLoadInfo added in v1.0.19

type CachedUserLoadInfo struct {
	InCache      bool
	InDiskCache  bool
	TimedOut     bool
	StaleVersion bool
	LoadedLeaf   bool
	LoadedUser   bool
}

type CanceledError

type CanceledError struct {
	M string
}

func NewCanceledError

func NewCanceledError(m string) CanceledError

func (CanceledError) Error

func (c CanceledError) Error() string

func (CanceledError) ToStatus

func (c CanceledError) ToStatus() (s keybase1.Status)
type ChainLink struct {
	Contextified
	// contains filtered or unexported fields
}

func ImportLinkFromServer

func ImportLinkFromServer(g *GlobalContext, parent *SigChain, jw *jsonw.Wrapper, selfUID keybase1.UID) (ret *ChainLink, err error)

func ImportLinkFromStorage

func ImportLinkFromStorage(id LinkID, selfUID keybase1.UID, g *GlobalContext) (*ChainLink, error)
func NewChainLink(g *GlobalContext, parent *SigChain, id LinkID, jw *jsonw.Wrapper) *ChainLink

func (*ChainLink) CheckNameAndID

func (c *ChainLink) CheckNameAndID(s NormalizedUsername, i keybase1.UID) error

func (*ChainLink) Copy

func (c *ChainLink) Copy() ChainLink

func (*ChainLink) GetCTime

func (c *ChainLink) GetCTime() time.Time

func (*ChainLink) GetETime

func (c *ChainLink) GetETime() time.Time

func (*ChainLink) GetKID

func (c *ChainLink) GetKID() keybase1.KID

func (*ChainLink) GetMerkleSeqno

func (c *ChainLink) GetMerkleSeqno() int

func (*ChainLink) GetPGPFingerprint

func (c *ChainLink) GetPGPFingerprint() *PGPFingerprint

func (*ChainLink) GetPayloadJSON

func (c *ChainLink) GetPayloadJSON() *jsonw.Wrapper

func (*ChainLink) GetPrev

func (c *ChainLink) GetPrev() LinkID

func (*ChainLink) GetRevocations

func (c *ChainLink) GetRevocations() []keybase1.SigID

func (*ChainLink) GetRevokeKids

func (c *ChainLink) GetRevokeKids() []keybase1.KID

func (*ChainLink) GetSeqno

func (c *ChainLink) GetSeqno() Seqno

func (*ChainLink) GetSigCheckCache

func (c *ChainLink) GetSigCheckCache() (cki *ComputedKeyInfos)

func (*ChainLink) GetSigID

func (c *ChainLink) GetSigID() keybase1.SigID

func (*ChainLink) GetUID

func (c *ChainLink) GetUID() keybase1.UID

func (*ChainLink) IsBad

func (c *ChainLink) IsBad() (isBad bool, reason string)

Returns whether or not this chain link is bad, and if so, what the reason is.

func (*ChainLink) IsInCurrentFamily

func (c *ChainLink) IsInCurrentFamily(u *User) bool

========================================================================= IsInCurrentFamily checks to see if the given chainlink was signed by a key in the current family.

func (ChainLink) LinkID added in v1.0.19

func (c ChainLink) LinkID() LinkID

func (*ChainLink) MatchFingerprint

func (c *ChainLink) MatchFingerprint(fp PGPFingerprint) bool

func (*ChainLink) Pack

func (c *ChainLink) Pack() error

func (*ChainLink) Parent

func (c *ChainLink) Parent() *SigChain

func (*ChainLink) PutSigCheckCache

func (c *ChainLink) PutSigCheckCache(cki *ComputedKeyInfos)

func (*ChainLink) SetParent

func (c *ChainLink) SetParent(parent *SigChain)

func (*ChainLink) Store

func (c *ChainLink) Store(g *GlobalContext) (didStore bool, err error)

func (*ChainLink) ToEldestKID

func (c *ChainLink) ToEldestKID() keybase1.KID

func (ChainLink) ToMerkleTriple

func (c ChainLink) ToMerkleTriple() *MerkleTriple

ToLinkSummary converts a ChainLink into a MerkleTriple object.

func (*ChainLink) Typed

func (c *ChainLink) Typed() TypedChainLink

func (*ChainLink) Unpack

func (c *ChainLink) Unpack(trusted bool, selfUID keybase1.UID) (err error)

func (*ChainLink) UnpackComputedKeyInfos

func (c *ChainLink) UnpackComputedKeyInfos(jw *jsonw.Wrapper) (err error)

func (*ChainLink) UnpackLocal

func (c *ChainLink) UnpackLocal() (err error)

func (*ChainLink) UnpackPayloadJSON

func (c *ChainLink) UnpackPayloadJSON(tmp *ChainLinkUnpacked) (err error)

func (*ChainLink) VerifyHash

func (c *ChainLink) VerifyHash() error
func (c *ChainLink) VerifyLink() error

func (*ChainLink) VerifyPayload

func (c *ChainLink) VerifyPayload() error

func (*ChainLink) VerifySigWithKeyFamily

func (c *ChainLink) VerifySigWithKeyFamily(ckf ComputedKeyFamily) (cached bool, err error)

type ChainLinkError

type ChainLinkError struct {
	// contains filtered or unexported fields
}

func (ChainLinkError) Error

func (c ChainLinkError) Error() string

type ChainLinkFingerprintMismatchError

type ChainLinkFingerprintMismatchError struct {
	Msg string
}

func (ChainLinkFingerprintMismatchError) Error

type ChainLinkKIDMismatchError

type ChainLinkKIDMismatchError struct {
	Msg string
}

func (ChainLinkKIDMismatchError) Error

type ChainLinkPrevHashMismatchError

type ChainLinkPrevHashMismatchError struct {
	Msg string
}

func (ChainLinkPrevHashMismatchError) Error

type ChainLinkUnpacked

type ChainLinkUnpacked struct {
	// contains filtered or unexported fields
}

type ChainLinkWrongSeqnoError

type ChainLinkWrongSeqnoError struct {
	Msg string
}

func (ChainLinkWrongSeqnoError) Error

func (e ChainLinkWrongSeqnoError) Error() string

type ChainType

type ChainType struct {
	DbType          ObjType
	Private         bool
	Encrypted       bool
	GetMerkleTriple func(u *MerkleUserLeaf) *MerkleTriple
}

type ChatAlreadyDeletedError added in v1.0.18

type ChatAlreadyDeletedError struct {
	Msg string
}

func (ChatAlreadyDeletedError) Error added in v1.0.18

func (e ChatAlreadyDeletedError) Error() string

func (ChatAlreadyDeletedError) ToStatus added in v1.0.18

type ChatAlreadySupersededError added in v1.0.18

type ChatAlreadySupersededError struct {
	Msg string
}

func (ChatAlreadySupersededError) Error added in v1.0.18

func (ChatAlreadySupersededError) ToStatus added in v1.0.18

type ChatBadMsgError added in v1.0.18

type ChatBadMsgError struct {
	Msg string
}

func (ChatBadMsgError) Error added in v1.0.18

func (e ChatBadMsgError) Error() string

func (ChatBadMsgError) ToStatus added in v1.0.18

func (e ChatBadMsgError) ToStatus() keybase1.Status

type ChatBroadcastError added in v1.0.18

type ChatBroadcastError struct {
	Msg string
}

func (ChatBroadcastError) Error added in v1.0.18

func (e ChatBroadcastError) Error() string

func (ChatBroadcastError) ToStatus added in v1.0.18

func (e ChatBroadcastError) ToStatus() keybase1.Status

type ChatCollisionError added in v1.0.19

type ChatCollisionError struct {
}

func (ChatCollisionError) Error added in v1.0.19

func (e ChatCollisionError) Error() string

func (ChatCollisionError) ToStatus added in v1.0.19

func (e ChatCollisionError) ToStatus() keybase1.Status

type ChatConvExistsError added in v1.0.18

type ChatConvExistsError struct {
	ConvID chat1.ConversationID
}

func (ChatConvExistsError) Error added in v1.0.18

func (e ChatConvExistsError) Error() string

func (ChatConvExistsError) ToStatus added in v1.0.18

func (e ChatConvExistsError) ToStatus() keybase1.Status

type ChatInternalError added in v1.0.18

type ChatInternalError struct{}

func (ChatInternalError) Error added in v1.0.18

func (e ChatInternalError) Error() string

func (ChatInternalError) ToStatus added in v1.0.18

func (e ChatInternalError) ToStatus() keybase1.Status

type ChatNotInConvError added in v1.0.18

type ChatNotInConvError struct {
	UID gregor.UID
}

func (ChatNotInConvError) Error added in v1.0.18

func (e ChatNotInConvError) Error() string

func (ChatNotInConvError) ToStatus added in v1.0.18

func (e ChatNotInConvError) ToStatus() keybase1.Status

type ChatRateLimitError added in v1.0.18

type ChatRateLimitError struct {
	Msg       string
	RateLimit chat1.RateLimit
}

func (ChatRateLimitError) Error added in v1.0.18

func (e ChatRateLimitError) Error() string

func (ChatRateLimitError) ToStatus added in v1.0.18

func (e ChatRateLimitError) ToStatus() keybase1.Status

type ChatTLFFinalizedError added in v1.0.18

type ChatTLFFinalizedError struct {
	TlfID chat1.TLFID
}

func (ChatTLFFinalizedError) Error added in v1.0.18

func (e ChatTLFFinalizedError) Error() string

func (ChatTLFFinalizedError) ToStatus added in v1.0.18

func (e ChatTLFFinalizedError) ToStatus() keybase1.Status

type ChatUI added in v1.0.18

type ChatUI interface {
	ChatAttachmentUploadStart(context.Context, chat1.AssetMetadata, chat1.MessageID) error
	ChatAttachmentUploadProgress(context.Context, chat1.ChatAttachmentUploadProgressArg) error
	ChatAttachmentUploadDone(context.Context) error
	ChatAttachmentPreviewUploadStart(context.Context, chat1.AssetMetadata) error
	ChatAttachmentPreviewUploadDone(context.Context) error
	ChatAttachmentDownloadStart(context.Context) error
	ChatAttachmentDownloadProgress(context.Context, chat1.ChatAttachmentDownloadProgressArg) error
	ChatAttachmentDownloadDone(context.Context) error
	ChatInboxUnverified(context.Context, chat1.ChatInboxUnverifiedArg) error
	ChatInboxConversation(context.Context, chat1.ChatInboxConversationArg) error
	ChatInboxFailed(context.Context, chat1.ChatInboxFailedArg) error
}

type ChatUnknownTLFIDError added in v1.0.18

type ChatUnknownTLFIDError struct {
	TlfID chat1.TLFID
}

func (ChatUnknownTLFIDError) Error added in v1.0.18

func (e ChatUnknownTLFIDError) Error() string

func (ChatUnknownTLFIDError) ToStatus added in v1.0.18

func (e ChatUnknownTLFIDError) ToStatus() keybase1.Status

type CheckCompletedListener

type CheckCompletedListener interface {
	CCLCheckCompleted(lcr *LinkCheckResult)
}

type CheckMember

type CheckMember struct {
	Set []string
}

func (CheckMember) Checker

func (c CheckMember) Checker() Checker

type CheckResult

type CheckResult struct {
	Contextified
	Status ProofError // Or nil if it was a success
	Time   time.Time  // When the last check was
}

func NewCheckResult

func NewCheckResult(g *GlobalContext, jw *jsonw.Wrapper) (res *CheckResult, err error)

func NewNowCheckResult

func NewNowCheckResult(g *GlobalContext, pe ProofError) *CheckResult

func (CheckResult) Export

func (cr CheckResult) Export() *keybase1.CheckResult

func (CheckResult) Freshness

func (cr CheckResult) Freshness() keybase1.CheckResultFreshness

func (CheckResult) Pack

func (cr CheckResult) Pack() *jsonw.Wrapper

type Checker

type Checker struct {
	F             func(string) bool
	Hint          string
	PreserveSpace bool
}

type CheckerWrapper added in v1.0.16

type CheckerWrapper struct {
	// contains filtered or unexported fields
}

CheckerWrapper wraps a Checker type to make it conform to the PassphraseChecker interface.

func (*CheckerWrapper) Check added in v1.0.16

func (w *CheckerWrapper) Check(_ *GlobalContext, s string) error

Check s using checker, respond with checker.Hint if check fails.

type Client

type Client struct {
	// contains filtered or unexported fields
}

func NewClient

func NewClient(e *Env, config *ClientConfig, needCookie bool) *Client

type ClientConfig

type ClientConfig struct {
	Host       string
	Port       int
	UseTLS     bool // XXX unused?
	URL        *url.URL
	RootCAs    *x509.CertPool
	Prefix     string
	UseCookies bool
	Timeout    time.Duration
}

type Clock

type Clock interface {
	Now() time.Time
}

type Command

type Command interface {
	GetUsage() Usage
}

type CommandLine

type CommandLine interface {
	GetAPIDump() (bool, bool)
	GetPGPFingerprint() *PGPFingerprint
	GetNoAutoFork() (bool, bool)

	// Lower-level functions
	GetGString(string) string
	GetString(string) string
	GetBool(string, bool) (bool, bool)
	// contains filtered or unexported methods
}

type ComputedKeyFamily

type ComputedKeyFamily struct {
	Contextified
	// contains filtered or unexported fields
}

ComputedKeyFamily is a joining of two sets of data; the KeyFamily is what the server returned and is not to be trusted; the ComputedKeyInfos is what we compute as a result of playing the user's sigchain forward.

func (*ComputedKeyFamily) Delegate

func (ckf *ComputedKeyFamily) Delegate(tcl TypedChainLink) (err error)

Delegate performs a delegation to the key described in the given TypedChainLink. This maybe be a sub- or sibkey delegation.

func (ComputedKeyFamily) Export

func (ckf ComputedKeyFamily) Export() []keybase1.PublicKey

Export is used by IDRes. It includes PGP keys.

func (ComputedKeyFamily) ExportAllPGPKeys added in v1.0.19

func (ckf ComputedKeyFamily) ExportAllPGPKeys() (keys []keybase1.PublicKey)

ExportAllPGPKeys exports all pgp keys.

func (ComputedKeyFamily) ExportDeletedDeviceKeys added in v1.0.19

func (ckf ComputedKeyFamily) ExportDeletedDeviceKeys() []keybase1.PublicKey

ExportDeletedDeviceKeys is used by ExportToUserPlusKeys. The key list only contains deleted device keys.

func (ComputedKeyFamily) ExportDeviceKeys

func (ckf ComputedKeyFamily) ExportDeviceKeys() (exportedKeys []keybase1.PublicKey, pgpKeyCount int)

ExportDeviceKeys is used by ExportToUserPlusKeys. The key list only contains device keys. It also returns the number of PGP keys in the key family.

func (ComputedKeyFamily) ExportRevokedDeviceKeys

func (ckf ComputedKeyFamily) ExportRevokedDeviceKeys() []keybase1.RevokedKey

func (ComputedKeyFamily) FindActiveEncryptionSubkey

func (ckf ComputedKeyFamily) FindActiveEncryptionSubkey(kid keybase1.KID) (GenericKey, error)

FindActiveEncryptionSubkey takes a given KID and finds the corresponding active encryption subkey in the current key family. If for any reason it cannot find the key, it will return an error saying why. Otherwise, it will return the key. In this case either key is non-nil, or err is non-nil.

func (ComputedKeyFamily) FindActiveSibkey

func (ckf ComputedKeyFamily) FindActiveSibkey(kid keybase1.KID) (key GenericKey, cki ComputedKeyInfo, err error)

FindActiveSibkey takes a given KID and finds the corresponding active sibkey in the current key family. If it cannot find the key, or if the key is no longer active (either by revocation, or by expiring), it will return an error saying why. Otherwise, it will return the key. In this case either key is non-nil, or err is non-nil.

func (ComputedKeyFamily) FindActiveSibkeyAtTime

func (ckf ComputedKeyFamily) FindActiveSibkeyAtTime(kid keybase1.KID, t time.Time) (key GenericKey, cki ComputedKeyInfo, err error)

As FindActiveSibkey, but for a specific time. Note that going back in time only affects expiration, not revocation. Thus this function is mainly useful for validating the sigchain, when each delegation and revocation is getting replayed in order.

func (ComputedKeyFamily) FindKIDFromFingerprint

func (ckf ComputedKeyFamily) FindKIDFromFingerprint(fp PGPFingerprint) (kid keybase1.KID, err error)

func (ComputedKeyFamily) FindKeyWithKIDUnsafe

func (ckf ComputedKeyFamily) FindKeyWithKIDUnsafe(kid keybase1.KID) (GenericKey, error)

FindKeyWithKIDUnsafe returns a key given a KID. It doesn't check if the key is expired or revoked, so most callers should use the FindActive* methods.

func (ComputedKeyFamily) FindKeybaseName

func (ckf ComputedKeyFamily) FindKeybaseName(s string) bool

FindKeybaseName looks at all PGP keys in this key family that are active sibkeys to find a key with a signed identity of <name@keybase.io>. IF found return true, and otherwise false.

func (ComputedKeyFamily) GetActivePGPKeys

func (ckf ComputedKeyFamily) GetActivePGPKeys(sibkey bool) (ret []*PGPKeyBundle)

GetActivePGPKeys gets the active PGP keys from the ComputedKeyFamily. If sibkey is False it will return all active PGP keys. Otherwise, it will return only the Sibkeys. Note the keys need to be non-canceled, and non-expired.

func (*ComputedKeyFamily) GetAllActiveDevices

func (ckf *ComputedKeyFamily) GetAllActiveDevices() []*Device

func (ComputedKeyFamily) GetAllActiveKeysForDevice

func (ckf ComputedKeyFamily) GetAllActiveKeysForDevice(deviceID keybase1.DeviceID) ([]keybase1.KID, error)

func (ComputedKeyFamily) GetAllActiveKeysWithRoleAtTime

func (ckf ComputedKeyFamily) GetAllActiveKeysWithRoleAtTime(role KeyRole, t time.Time) (ret []GenericKey)

GetAllActiveSibkeys gets all active Sibkeys from given ComputedKeyFamily.

func (ComputedKeyFamily) GetAllActiveSibkeys

func (ckf ComputedKeyFamily) GetAllActiveSibkeys() []GenericKey

GetAllActiveSibkeys gets all active Sibkeys from given ComputedKeyFamily.

func (ComputedKeyFamily) GetAllActiveSibkeysAtTime

func (ckf ComputedKeyFamily) GetAllActiveSibkeysAtTime(t time.Time) []GenericKey

GetAllActiveSibkeys gets all active Sibkeys from given ComputedKeyFamily.

func (ComputedKeyFamily) GetAllActiveSubkeys

func (ckf ComputedKeyFamily) GetAllActiveSubkeys() []GenericKey

func (ComputedKeyFamily) GetAllActiveSubkeysAtTime

func (ckf ComputedKeyFamily) GetAllActiveSubkeysAtTime(t time.Time) (ret []GenericKey)

func (*ComputedKeyFamily) GetAllDevices

func (ckf *ComputedKeyFamily) GetAllDevices() []*Device

func (*ComputedKeyFamily) GetCurrentDevice

func (ckf *ComputedKeyFamily) GetCurrentDevice(g *GlobalContext) (*Device, error)

GetCurrentDevice returns the current device.

func (ComputedKeyFamily) GetDeletedKeys added in v1.0.19

func (ckf ComputedKeyFamily) GetDeletedKeys() []GenericKey

func (*ComputedKeyFamily) GetDeviceForKID

func (ckf *ComputedKeyFamily) GetDeviceForKID(kid keybase1.KID) (*Device, error)

func (*ComputedKeyFamily) GetDeviceForKey

func (ckf *ComputedKeyFamily) GetDeviceForKey(key GenericKey) (*Device, error)

GetDeviceForKey gets the device that this key is bound to, if any.

func (*ComputedKeyFamily) GetEncryptionSubkeyForDevice

func (ckf *ComputedKeyFamily) GetEncryptionSubkeyForDevice(did keybase1.DeviceID) (key GenericKey, err error)

GetEncryptionSubkeyForDevice gets the current encryption subkey for the given device. Note that many devices might share an encryption public key but might have different secret keys.

func (ComputedKeyFamily) GetKeyRole

func (ckf ComputedKeyFamily) GetKeyRole(kid keybase1.KID) (ret KeyRole)

GetKeyRole returns the KeyRole (sibkey/subkey/none), taking into account whether the key has been cancelled.

func (ComputedKeyFamily) GetKeyRoleAtTime

func (ckf ComputedKeyFamily) GetKeyRoleAtTime(kid keybase1.KID, t time.Time) (ret KeyRole)

GetKeyRoleAtTime returns the KeyRole (sibkey/subkey/none), taking into account whether the key has been cancelled at time t.

func (ComputedKeyFamily) GetRevokedKeys

func (ckf ComputedKeyFamily) GetRevokedKeys() []RevokedKey

func (ComputedKeyFamily) GetSaltpackSenderTypeIfInactive added in v1.0.19

func (ckf ComputedKeyFamily) GetSaltpackSenderTypeIfInactive(kid keybase1.KID) (*keybase1.SaltpackSenderType, error)

Returns (&senderType, err). A non-nil error indicates some unexpected condition (like the key doesn't exist at all), which should be propagated. If the sender type is nil, the key is active, and the caller should proceed with an identify. Otherwise the key is no longer active, and the sender type indicates why.

func (*ComputedKeyFamily) GetSibkeyForDevice

func (ckf *ComputedKeyFamily) GetSibkeyForDevice(did keybase1.DeviceID) (key GenericKey, err error)

GetSibkeyForDevice gets the current per-device key for the given Device. Will return nil if one isn't found, and set err for a real error. The sibkey should be a signing key, not an encryption key of course.

func (*ComputedKeyFamily) HasActiveDevice

func (ckf *ComputedKeyFamily) HasActiveDevice() bool

func (*ComputedKeyFamily) HasActiveEncryptionSubkey

func (ckf *ComputedKeyFamily) HasActiveEncryptionSubkey() bool

func (ComputedKeyFamily) HasActiveKey

func (ckf ComputedKeyFamily) HasActiveKey() bool

HasActiveKey returns if the given ComputeKeyFamily has any active keys. The key has to be in the server-given KeyFamily and also in our ComputedKeyFamily. The former check is so that we can handle the case nuked sigchains.

func (ckf ComputedKeyFamily) InsertEldestLink(tcl TypedChainLink, username NormalizedUsername) (err error)

func (*ComputedKeyFamily) Revoke

func (ckf *ComputedKeyFamily) Revoke(tcl TypedChainLink) (err error)

Revoke examines a TypeChainLink and applies any revocations in the link to the current ComputedKeyInfos.

func (*ComputedKeyFamily) RevokeKid

func (ckf *ComputedKeyFamily) RevokeKid(kid keybase1.KID, tcl TypedChainLink) (err error)

func (*ComputedKeyFamily) RevokeSig

func (ckf *ComputedKeyFamily) RevokeSig(sig keybase1.SigID, tcl TypedChainLink) (err error)

func (*ComputedKeyFamily) SetActivePGPHash

func (ckf *ComputedKeyFamily) SetActivePGPHash(kid keybase1.KID, hash string)

SetPGPHash sets the authoritative version (by hash) of a PGP key

func (ComputedKeyFamily) ShallowCopy added in v1.0.19

func (ckf ComputedKeyFamily) ShallowCopy() *ComputedKeyFamily

func (*ComputedKeyFamily) UpdateDevices

func (ckf *ComputedKeyFamily) UpdateDevices(tcl TypedChainLink) (err error)

UpdateDevices takes the Device object from the given ChainLink and updates keys to reflects any device changes encoded therein.

type ComputedKeyInfo

type ComputedKeyInfo struct {
	Contextified

	Status KeyStatus
	Eldest bool
	Sibkey bool

	// These have to be ints so they can be written to disk and read
	// back in.
	CTime int64 // In Seconds since the Epoch
	ETime int64 // In Seconds since the Epoch or 0 if none

	// For subkeys, the KID of our parent (if valid)
	Parent keybase1.KID

	// For sibkeys, the KID of last-added subkey (if valid)
	Subkey keybase1.KID

	// Map of SigID -> KID
	Delegations map[keybase1.SigID]keybase1.KID
	DelegatedAt *KeybaseTime

	RevokedAt *KeybaseTime
	RevokedBy keybase1.KID

	// For PGP keys, the active version of the key. If unspecified, use the
	// legacy behavior of combining every instance of this key that we got from
	// the server minus revocations.
	ActivePGPHash string
}

ComputedKeyInfo is a set of annotations that we apply to a ServerKeyRecord. Everything here has been checked by the client. Each ComputedKeyInfo refers to exactly one ServerKeyInfo.

func NewComputedKeyInfo

func NewComputedKeyInfo(eldest, sibkey bool, status KeyStatus, ctime, etime int64, activePGPHash string) ComputedKeyInfo

func (ComputedKeyInfo) GetCTime

func (cki ComputedKeyInfo) GetCTime() time.Time

func (ComputedKeyInfo) GetETime

func (cki ComputedKeyInfo) GetETime() time.Time

type ComputedKeyInfos

type ComputedKeyInfos struct {
	Contextified

	// Map of KID to a computed info
	Infos map[keybase1.KID]*ComputedKeyInfo

	// Map of a SigID (in binary) to the ComputedKeyInfo describing when the key was
	// delegated.
	Sigs map[keybase1.SigID]*ComputedKeyInfo

	// Map of DeviceID to the most current device object
	Devices map[keybase1.DeviceID]*Device

	// Map of KID -> DeviceID
	KIDToDeviceID map[keybase1.KID]keybase1.DeviceID
	// contains filtered or unexported fields
}

When we play a sigchain forward, it yields ComputedKeyInfos (CKIs). We're going to store CKIs separately from the keys, since the server can clobber the former. We should rewrite CKIs every time we (re)check a user's SigChain

func NewComputedKeyInfos

func NewComputedKeyInfos(g *GlobalContext) *ComputedKeyInfos

func (*ComputedKeyInfos) Delegate

func (cki *ComputedKeyInfos) Delegate(kid keybase1.KID, tm *KeybaseTime, sigid keybase1.SigID, signingKid, parentKID keybase1.KID, pgpHash string, isSibkey bool, ctime, etime time.Time) (err error)

Delegate marks the given ComputedKeyInfos object that the given kid is now delegated, as of time tm, in sigid, as signed by signingKid, etc.

func (*ComputedKeyInfos) Insert

func (cki *ComputedKeyInfos) Insert(k keybase1.KID, i *ComputedKeyInfo)

Insert inserts the given ComputedKeyInfo object 1 or 2 times, depending on if a KID or PGPFingerprint or both are available.

func (ComputedKeyInfos) InsertLocalEldestKey

func (cki ComputedKeyInfos) InsertLocalEldestKey(kid keybase1.KID)

func (ComputedKeyInfos) InsertServerEldestKey

func (cki ComputedKeyInfos) InsertServerEldestKey(eldestKey GenericKey, un NormalizedUsername) error

For use when there are no chain links at all, so all we can do is trust the eldest key that the server reported.

func (*ComputedKeyInfos) PaperDevices

func (cki *ComputedKeyInfos) PaperDevices() []*Device

PaperDevices returns a list of all the paperkey devices.

func (ComputedKeyInfos) ShallowCopy

func (cki ComputedKeyInfos) ShallowCopy() *ComputedKeyInfos

TODO: Figure out whether this needs to be a deep copy. See https://github.com/keybase/client/issues/414 .

type ConfigError

type ConfigError struct {
	// contains filtered or unexported fields
}

func (ConfigError) Error

func (c ConfigError) Error() string

type ConfigGetter

type ConfigGetter func() string

type ConfigReader

type ConfigReader interface {
	GetUserConfig() (*UserConfig, error)
	GetUserConfigForUsername(s NormalizedUsername) (*UserConfig, error)
	GetBundledCA(host string) string
	GetStringAtPath(string) (string, bool)
	GetInterfaceAtPath(string) (interface{}, error)
	GetBoolAtPath(string) (bool, bool)
	GetIntAtPath(string) (int, bool)
	GetNullAtPath(string) bool
	GetProofCacheLongDur() (time.Duration, bool)
	GetProofCacheMediumDur() (time.Duration, bool)
	GetProofCacheShortDur() (time.Duration, bool)
	GetLinkCacheCleanDur() (time.Duration, bool)
	GetNoPinentry() (bool, bool)
	GetSalt() []byte
	GetDeviceID() keybase1.DeviceID
	GetDeviceIDForUsername(nu NormalizedUsername) keybase1.DeviceID
	GetDeviceIDForUID(u keybase1.UID) keybase1.DeviceID
	GetUsername() NormalizedUsername
	GetAllUsernames() (current NormalizedUsername, others []NormalizedUsername, err error)
	GetUID() keybase1.UID
	GetProxyCACerts() ([]string, error)
	GetSecurityAccessGroupOverride() (bool, bool)
	GetBug3964RepairTime(NormalizedUsername) (time.Time, error)

	GetUpdatePreferenceAuto() (bool, bool)
	GetUpdatePreferenceSkip() string
	GetUpdatePreferenceSnoozeUntil() keybase1.Time
	GetUpdateLastChecked() keybase1.Time
	GetUpdateURL() string
	GetUpdateDisabled() (bool, bool)
	IsAdmin() (bool, bool)
	// contains filtered or unexported methods
}

type ConfigWriter

type ConfigWriter interface {
	SetUserConfig(cfg *UserConfig, overwrite bool) error
	SwitchUser(un NormalizedUsername) error
	NukeUser(un NormalizedUsername) error
	SetDeviceID(keybase1.DeviceID) error
	SetStringAtPath(string, string) error
	SetBoolAtPath(string, bool) error
	SetIntAtPath(string, int) error
	SetWrapperAtPath(string, *jsonw.Wrapper) error
	SetNullAtPath(string) error
	DeleteAtPath(string)
	SetUpdatePreferenceAuto(bool) error
	SetUpdatePreferenceSkip(string) error
	SetUpdatePreferenceSnoozeUntil(keybase1.Time) error
	SetUpdateLastChecked(keybase1.Time) error
	SetBug3964RepairTime(NormalizedUsername, time.Time) error
	Reset()
	BeginTransaction() (ConfigWriterTransacter, error)
}

type ConfigWriterTransacter

type ConfigWriterTransacter interface {
	Commit() error
	Abort() error
}

type ConnectionID

type ConnectionID int

ConnectionID is a sequential integer assigned to each RPC connection that this process serves. No IDs are reused.

type ConnectionManager

type ConnectionManager struct {
	// contains filtered or unexported fields
}

ConnectionManager manages all connections active for a given service. It can be called from multiple goroutines.

func NewConnectionManager

func NewConnectionManager() *ConnectionManager

NewConnectionManager makes a new ConnectionManager and starts its internal routing loop running.

func (*ConnectionManager) AddConnection

func (c *ConnectionManager) AddConnection(xp rpc.Transporter, closeListener chan error) ConnectionID

AddConnection adds a new connection to the table of Connection object, with a related closeListener. We'll listen for a close on that channel, and when one occurs, we'll remove the connection from the pool.

func (*ConnectionManager) ApplyAll

func (c *ConnectionManager) ApplyAll(f ApplyFn)

ApplyAll applies the given function f to all connections in the table. If you're going to do something blocking, please do it in a GoRoutine, since we're holding the lock for all connections as we do this.

func (*ConnectionManager) Label

func (*ConnectionManager) ListAllLabeledConnections

func (c *ConnectionManager) ListAllLabeledConnections() []keybase1.ClientDetails

func (*ConnectionManager) LookupByClientType added in v1.0.17

func (c *ConnectionManager) LookupByClientType(clientType keybase1.ClientType) rpc.Transporter

func (*ConnectionManager) LookupConnection

func (c *ConnectionManager) LookupConnection(i ConnectionID) rpc.Transporter

LookupConnection looks up a connection given a connectionID, or returns nil if no such connection was found.

func (*ConnectionManager) Shutdown

func (c *ConnectionManager) Shutdown()

func (*ConnectionManager) WaitForClientType added in v1.0.19

func (c *ConnectionManager) WaitForClientType(clientType keybase1.ClientType, timeout time.Duration) bool

WaitForClientType returns true if client type is connected, or waits until timeout for the connection

type Contextified

type Contextified struct {
	// contains filtered or unexported fields
}

Contextified objects have explicit references to the GlobalContext, so that G can be swapped out for something else. We're going to incrementally start moving objects over to this system.

func NewContextified

func NewContextified(gc *GlobalContext) Contextified

func (Contextified) G

func (c Contextified) G() *GlobalContext

func (Contextified) GStrict

func (c Contextified) GStrict() *GlobalContext

func (*Contextified) SetGlobalContext

func (c *Contextified) SetGlobalContext(g *GlobalContext)

type Contextifier added in v1.0.18

type Contextifier interface {
	G() *GlobalContext
}

type CryptoMessageFormat

type CryptoMessageFormat string

CryptoMessageFormat is one of the known crypto message formats that we admit

const (
	// CryptoMessageFormatPGP is for PGP
	CryptoMessageFormatPGP CryptoMessageFormat = "pgp"
	// CryptoMessageFormatKeybaseV0 is for the zeroth version of Keybase signatures, which
	// will eventually be deprecated.
	CryptoMessageFormatKeybaseV0 CryptoMessageFormat = "kbv0"
	// CryptoMessageFormatSaltpack is the Saltpack messaging format for encrypted and signed
	// messages
	CryptoMessageFormatSaltpack CryptoMessageFormat = "saltpack"
)

type CryptoMessageType

type CryptoMessageType int

CryptoMessageType says what type of crypto message it is, regardless of Format

const (
	// CryptoMessageTypeEncryption is for an encrypted message
	CryptoMessageTypeEncryption CryptoMessageType = 0
	// CryptoMessageTypeAttachedSignature is for an attached signature
	CryptoMessageTypeAttachedSignature CryptoMessageType = 1
	// CryptoMessageTypeDetachedSignature is for a detached signature
	CryptoMessageTypeDetachedSignature CryptoMessageType = 2
	// CryptoMessageTypeClearSignature is for PGP clearsigning
	CryptoMessageTypeClearSignature CryptoMessageType = 3
	// CryptoMessageTypeAmbiguous is for an ambiguous message based on the stream prefix
	CryptoMessageTypeAmbiguous CryptoMessageType = 4
	// CryptoMessageTypeSignature is for a sig that can be either attached or detached
	CryptoMessageTypeSignature CryptoMessageType = 5
)
type CryptocurrencyChainLink struct {
	GenericChainLink
	// contains filtered or unexported fields
}
func ParseCryptocurrencyChainLink(b GenericChainLink) (
	cl *CryptocurrencyChainLink, err error)

func (CryptocurrencyChainLink) Display

func (CryptocurrencyChainLink) Export

func (CryptocurrencyChainLink) GetAddress

func (c CryptocurrencyChainLink) GetAddress() string

func (*CryptocurrencyChainLink) ToDisplayString

func (c *CryptocurrencyChainLink) ToDisplayString() string

func (*CryptocurrencyChainLink) Type

func (c *CryptocurrencyChainLink) Type() string

type CryptocurrencyFamily added in v1.0.19

type CryptocurrencyFamily string
const (
	CryptocurrencyFamilyNone    CryptocurrencyFamily = ""
	CryptocurrencyFamilyBitcoin CryptocurrencyFamily = "bitcoin"
	CryptocurrencyFamilyZCash   CryptocurrencyFamily = "zcash"
)

type CryptocurrencyPrefix added in v1.0.19

type CryptocurrencyPrefix struct {
	Type   CryptocurrencyType
	Prefix []byte
	Len    int
}

type CryptocurrencyType

type CryptocurrencyType int
const (
	CryptocurrencyTypeNone                  CryptocurrencyType = -1
	CryptocurrencyTypeBTC                   CryptocurrencyType = 0    // 0x0
	CryptocurrencyTypeBTCMultiSig           CryptocurrencyType = 5    // 0x5
	CryptocurrencyTypeZCashShielded         CryptocurrencyType = 5786 // 0x169a
	CryptocurrencyTypeZCashTransparentP2PKH CryptocurrencyType = 7352 // 0x1cb8
	CryptocurrencyTypeZCashTransparentP2SH  CryptocurrencyType = 7357 // 0x1cbd
)

func CryptocurrencyParseAndCheck added in v1.0.19

func CryptocurrencyParseAndCheck(s string) (CryptocurrencyType, []byte, error)

func (CryptocurrencyType) String added in v1.0.19

func (p CryptocurrencyType) String() string

func (CryptocurrencyType) ToCryptocurrencyFamily added in v1.0.19

func (p CryptocurrencyType) ToCryptocurrencyFamily() CryptocurrencyFamily

type CtimeMismatchError

type CtimeMismatchError struct {
	Msg string
}

func (CtimeMismatchError) Error

func (e CtimeMismatchError) Error() string

type CurrentStatus

type CurrentStatus struct {
	Configured     bool
	Registered     bool
	LoggedIn       bool
	SessionIsValid bool
	User           *User
}

func GetCurrentStatus

func GetCurrentStatus(g *GlobalContext) (res CurrentStatus, err error)

func (CurrentStatus) Export

func (c CurrentStatus) Export() (ret keybase1.GetCurrentStatusRes)

type DBError added in v1.0.19

type DBError struct {
	Msg string
}

func NewDBError added in v1.0.19

func NewDBError(s string) DBError

func (DBError) Error added in v1.0.19

func (e DBError) Error() string

type Darwin

type Darwin struct {
	Base
}

func (Darwin) CacheDir

func (d Darwin) CacheDir() string

func (Darwin) ConfigDir

func (d Darwin) ConfigDir() string

func (Darwin) DataDir

func (d Darwin) DataDir() string

func (Darwin) Home

func (d Darwin) Home(emptyOk bool) string

func (Darwin) LogDir

func (d Darwin) LogDir() string

func (Darwin) Normalize

func (d Darwin) Normalize(s string) string

func (Darwin) RuntimeDir

func (d Darwin) RuntimeDir() string

func (Darwin) SandboxCacheDir added in v1.0.18

func (d Darwin) SandboxCacheDir() string

func (Darwin) ServiceSpawnDir

func (d Darwin) ServiceSpawnDir() (string, error)

type DbKey

type DbKey struct {
	Typ ObjType
	Key string
}

func DbKeyNotificationDismiss added in v1.0.18

func DbKeyNotificationDismiss(prefix string, username NormalizedUsername) DbKey

func DbKeyParse

func DbKeyParse(s string) (string, *DbKey, error)

func DbKeyUID

func DbKeyUID(t ObjType, uid keybase1.UID) DbKey

func ImportDbKey added in v1.0.19

func ImportDbKey(k keybase1.DbKey) DbKey

func LocalTrackDBKey

func LocalTrackDBKey(tracker, trackee keybase1.UID, expireLocal bool) DbKey

func (DbKey) ToBytes

func (k DbKey) ToBytes(table string) []byte

func (DbKey) ToString

func (k DbKey) ToString(table string) string

type DecryptBadNonceError

type DecryptBadNonceError struct{}

func (DecryptBadNonceError) Error

func (d DecryptBadNonceError) Error() string

type DecryptBadPacketTypeError

type DecryptBadPacketTypeError struct{}

func (DecryptBadPacketTypeError) Error

type DecryptBadSenderError

type DecryptBadSenderError struct{}

func (DecryptBadSenderError) Error

func (d DecryptBadSenderError) Error() string

type DecryptOpenError

type DecryptOpenError struct{}

func (DecryptOpenError) Error

func (d DecryptOpenError) Error() string

type DecryptWrongReceiverError

type DecryptWrongReceiverError struct{}

func (DecryptWrongReceiverError) Error

type DecryptionError

type DecryptionError struct{}

func (DecryptionError) Error

func (e DecryptionError) Error() string

func (DecryptionError) ToStatus added in v1.0.17

func (e DecryptionError) ToStatus() keybase1.Status

type DelegationType

type DelegationType LinkType

type Delegator

type Delegator struct {
	Contextified

	// Set these fields
	NewKey            GenericKey
	ExistingKey       GenericKey
	EldestKID         keybase1.KID
	Me                *User
	Expire            int
	Device            *Device
	RevSig            string
	ServerHalf        []byte
	EncodedPrivateKey string
	Ctime             int64
	DelegationType    DelegationType
	Aggregated        bool // During aggregation we skip some steps (posting, updating some state)

	// Optional precalculated values used by KeyProof
	LastSeqno   Seqno     // kex2 HandleDidCounterSign needs to sign subkey without a user but we know what the last seqno was
	PrevLinkID  LinkID    // kex2 HandleDidCounterSign calculates previous link id without a user
	SigningUser UserBasic // kex2 doesn't have a full user, but does have basic user info
	// contains filtered or unexported fields
}

func (*Delegator) CheckArgs

func (d *Delegator) CheckArgs() (err error)

func (Delegator) GetMerkleTriple

func (d Delegator) GetMerkleTriple() MerkleTriple

GetMerkleTriple gets the new MerkleTriple that came about as a result of performing the key delegation.

func (Delegator) GetSigningKey

func (d Delegator) GetSigningKey() GenericKey

func (Delegator) IsEldest

func (d Delegator) IsEldest() bool

func (Delegator) IsSibkeyOrEldest

func (d Delegator) IsSibkeyOrEldest() bool

func (*Delegator) LoadSigningKey

func (d *Delegator) LoadSigningKey(lctx LoginContext, ui SecretUI) (err error)

LoadSigningKey can be called before Run() to load the signing key into the delegator. This will check the given key first, then a device Key if we have one, and otherwise will leave the signing key unset so that we will set it as the eldest key on upload. lctx can be nil.

func (*Delegator) Run

func (d *Delegator) Run(lctx LoginContext) (err error)

Run the Delegator, performing all necessary internal operations. Return err on failure and nil on success.

func (*Delegator) SignAndPost

func (d *Delegator) SignAndPost(lctx LoginContext, jw *jsonw.Wrapper) (err error)

type DeletedError added in v1.0.18

type DeletedError struct {
	Msg string
}

func (DeletedError) Error added in v1.0.18

func (e DeletedError) Error() string

func (DeletedError) ToStatus added in v1.0.18

func (e DeletedError) ToStatus() keybase1.Status

type Device

type Device struct {
	ID          keybase1.DeviceID `json:"id"`
	Kid         keybase1.KID      `json:"kid,omitempty"`
	Description *string           `json:"name,omitempty"`
	Status      *int              `json:"status,omitempty"`
	Type        string            `json:"type"`
	CTime       keybase1.Time     `json:"ctime"`
	MTime       keybase1.Time     `json:"mtime"`
}

func NewPaperDevice

func NewPaperDevice(passphrasePrefix string) (*Device, error)

NewPaperDevice creates a new paper backup key device

func ParseDevice

func ParseDevice(jw *jsonw.Wrapper, t time.Time) (ret *Device, err error)

func (*Device) Export

func (d *Device) Export(lt LinkType) (*jsonw.Wrapper, error)

func (*Device) IsActive

func (d *Device) IsActive() bool

func (*Device) Merge

func (d *Device) Merge(d2 *Device)

func (*Device) ProtExport

func (d *Device) ProtExport() *keybase1.Device

func (*Device) StatusString

func (d *Device) StatusString() string

type DeviceAlreadyProvisionedError

type DeviceAlreadyProvisionedError struct{}

func (DeviceAlreadyProvisionedError) Error

func (DeviceAlreadyProvisionedError) ToStatus

type DeviceBadNameError added in v1.0.18

type DeviceBadNameError struct{}

func (DeviceBadNameError) Error added in v1.0.18

func (e DeviceBadNameError) Error() string
type DeviceChainLink struct {
	GenericChainLink
	// contains filtered or unexported fields
}
func ParseDeviceChainLink(b GenericChainLink) (ret *DeviceChainLink, err error)

func (*DeviceChainLink) GetDevice

func (s *DeviceChainLink) GetDevice() *Device

type DeviceKey

type DeviceKey struct {
	Type          string               `json:"type"`
	CTime         int64                `json:"ctime"`
	MTime         int64                `json:"mtime"`
	Description   string               `json:"name"`
	Status        int                  `json:"status"`
	LksServerHalf string               `json:"lks_server_half"`
	PPGen         PassphraseGeneration `json:"passphrase_generation"`
	LastUsedTime  int64                `json:"last_used_time"`
}

func (DeviceKey) Display

func (d DeviceKey) Display() string

func (DeviceKey) ToLKSec added in v1.0.18

func (d DeviceKey) ToLKSec() (LKSecServerHalf, error)

type DeviceKeyMap

type DeviceKeyMap map[keybase1.DeviceID]DeviceKey

type DeviceNameInUseError added in v1.0.18

type DeviceNameInUseError struct{}

func (DeviceNameInUseError) Error added in v1.0.18

func (e DeviceNameInUseError) Error() string

func (DeviceNameInUseError) ToStatus added in v1.0.18

func (e DeviceNameInUseError) ToStatus() (s keybase1.Status)

type DeviceNotFoundError added in v1.0.19

type DeviceNotFoundError struct {
	Where  string
	ID     keybase1.DeviceID
	Loaded bool
}

func (DeviceNotFoundError) Error added in v1.0.19

func (e DeviceNotFoundError) Error() string

type DeviceRequiredError

type DeviceRequiredError struct{}

func (DeviceRequiredError) Error

func (e DeviceRequiredError) Error() string

func (DeviceRequiredError) ToStatus

func (e DeviceRequiredError) ToStatus() keybase1.Status

type DeviceStatus

type DeviceStatus struct {
	Provisioned  bool
	Keyed        bool
	KeyAvailable bool
}

type DeviceTypeSet

type DeviceTypeSet map[string]bool

type DirExecError added in v1.0.16

type DirExecError struct {
	Path string
}

func (DirExecError) Error added in v1.0.16

func (e DirExecError) Error() string

type DumbOutputUI

type DumbOutputUI interface {
	Printf(fmt string, args ...interface{}) (int, error)
	PrintfStderr(fmt string, args ...interface{}) (int, error)
}

type EmptyKeyRing

type EmptyKeyRing struct{}

func (EmptyKeyRing) DecryptionKeys

func (k EmptyKeyRing) DecryptionKeys() []openpgp.Key

func (EmptyKeyRing) KeysById

func (k EmptyKeyRing) KeysById(id uint64, fp []byte) []openpgp.Key

func (EmptyKeyRing) KeysByIdUsage

func (k EmptyKeyRing) KeysByIdUsage(id uint64, fp []byte, usage byte) []openpgp.Key

type EncryptionReason added in v1.0.18

type EncryptionReason string
const (
	EncryptionReasonChatLocalStorage EncryptionReason = "Keybase-Chat-Local-Storage-1"
)

func (EncryptionReason) Bytes added in v1.0.18

func (r EncryptionReason) Bytes() []byte

type Env

type Env struct {
	sync.RWMutex

	Test TestParameters
	// contains filtered or unexported fields
}

func NewEnv

func NewEnv(cmd CommandLine, config ConfigReader) *Env

func (*Env) GenClientConfigForInternalAPI

func (e *Env) GenClientConfigForInternalAPI() (*ClientConfig, error)

GenClientConfigForInternalAPI pulls the information out of the environment configuration, and build a Client config that will be used in all API server requests

func (*Env) GenClientConfigForScrapers

func (e *Env) GenClientConfigForScrapers() (*ClientConfig, error)

func (*Env) GetAPIDump

func (e *Env) GetAPIDump() bool

func (*Env) GetAPITimeout

func (e *Env) GetAPITimeout() time.Duration

func (*Env) GetAutoFork

func (e *Env) GetAutoFork() bool

func (*Env) GetBGIdentifierDisabled added in v1.0.19

func (e *Env) GetBGIdentifierDisabled() bool

func (*Env) GetBool

func (e *Env) GetBool(def bool, flist ...func() (bool, bool)) bool

func (*Env) GetBundledCA

func (e *Env) GetBundledCA(host string) string

func (*Env) GetCacheDir

func (e *Env) GetCacheDir() string

func (*Env) GetChatDbFilename added in v1.0.18

func (e *Env) GetChatDbFilename() string

func (*Env) GetChatDelivererInterval added in v1.0.19

func (e *Env) GetChatDelivererInterval() time.Duration

func (*Env) GetCodeSigningKIDs

func (e *Env) GetCodeSigningKIDs() []keybase1.KID

func (*Env) GetCommandLine

func (e *Env) GetCommandLine() CommandLine

func (*Env) GetConfig

func (e *Env) GetConfig() ConfigReader

func (*Env) GetConfigDir

func (e *Env) GetConfigDir() string

func (*Env) GetConfigFilename

func (e *Env) GetConfigFilename() string

func (*Env) GetConfigWriter

func (e *Env) GetConfigWriter() ConfigWriter

func (*Env) GetConvSourceType added in v1.0.18

func (e *Env) GetConvSourceType() string

func (*Env) GetDataDir

func (e *Env) GetDataDir() string

func (*Env) GetDbFilename

func (e *Env) GetDbFilename() string

func (*Env) GetDebug

func (e *Env) GetDebug() bool

func (*Env) GetDefaultLogFile

func (e *Env) GetDefaultLogFile() string

func (*Env) GetDeviceID

func (e *Env) GetDeviceID() keybase1.DeviceID

func (*Env) GetDeviceIDForUID added in v1.0.19

func (e *Env) GetDeviceIDForUID(u keybase1.UID) keybase1.DeviceID

func (*Env) GetDeviceIDForUsername added in v1.0.19

func (e *Env) GetDeviceIDForUsername(u NormalizedUsername) keybase1.DeviceID

func (*Env) GetDoLogForward

func (e *Env) GetDoLogForward() bool

func (*Env) GetDuration

func (e *Env) GetDuration(def time.Duration, flist ...func() (time.Duration, bool)) time.Duration

func (*Env) GetEmail

func (e *Env) GetEmail() string

func (*Env) GetEmailOrUsername

func (e *Env) GetEmailOrUsername() string

func (*Env) GetFeatureFlags added in v1.0.19

func (e *Env) GetFeatureFlags() FeatureFlags

func (*Env) GetGpg

func (e *Env) GetGpg() string

func (*Env) GetGpgHome

func (e *Env) GetGpgHome() string

func (*Env) GetGpgOptions

func (e *Env) GetGpgOptions() []string

func (*Env) GetGregorDisabled added in v1.0.17

func (e *Env) GetGregorDisabled() bool

func (*Env) GetGregorPingInterval added in v1.0.17

func (e *Env) GetGregorPingInterval() time.Duration

func (*Env) GetGregorPingTimeout added in v1.0.19

func (e *Env) GetGregorPingTimeout() time.Duration

func (*Env) GetGregorSaveInterval added in v1.0.16

func (e *Env) GetGregorSaveInterval() time.Duration

func (*Env) GetGregorURI added in v1.0.16

func (e *Env) GetGregorURI() string

func (*Env) GetHome

func (e *Env) GetHome() string

func (*Env) GetInboxSourceType added in v1.0.19

func (e *Env) GetInboxSourceType() string

func (*Env) GetInstallID added in v1.0.16

func (e *Env) GetInstallID() (ret InstallID)

func (*Env) GetInt

func (e *Env) GetInt(def int, flist ...func() (int, bool)) int

func (*Env) GetKBFSInfoPath added in v1.0.17

func (e *Env) GetKBFSInfoPath() string

GetKBFSInfoPath returns path to info file written by the KBFS service after startup

func (*Env) GetLabel

func (e *Env) GetLabel() string

func (*Env) GetLinkCacheCleanDur

func (e *Env) GetLinkCacheCleanDur() time.Duration

func (*Env) GetLinkCacheSize

func (e *Env) GetLinkCacheSize() int

func (*Env) GetLocalRPCDebug

func (e *Env) GetLocalRPCDebug() string

func (*Env) GetLocalTrackMaxAge

func (e *Env) GetLocalTrackMaxAge() time.Duration

func (*Env) GetLogDir

func (e *Env) GetLogDir() string

func (*Env) GetLogFile

func (e *Env) GetLogFile() string

func (*Env) GetLogFormat

func (e *Env) GetLogFormat() string

func (*Env) GetMerkleKIDs

func (e *Env) GetMerkleKIDs() []keybase1.KID

func (*Env) GetMountDir

func (e *Env) GetMountDir() (string, error)

func (*Env) GetNegBool

func (e *Env) GetNegBool(def bool, flist []NegBoolFunc) bool

GetNegBool gets a negatable bool. You can give it a list of functions, and also possible negations for those functions.

func (*Env) GetNoPinentry

func (e *Env) GetNoPinentry() bool

func (*Env) GetPidFile

func (e *Env) GetPidFile() (ret string, err error)

func (*Env) GetPinentry

func (e *Env) GetPinentry() string

func (*Env) GetProofCacheLongDur

func (e *Env) GetProofCacheLongDur() time.Duration

func (*Env) GetProofCacheMediumDur

func (e *Env) GetProofCacheMediumDur() time.Duration

func (*Env) GetProofCacheShortDur

func (e *Env) GetProofCacheShortDur() time.Duration

func (*Env) GetProofCacheSize

func (e *Env) GetProofCacheSize() int

func (*Env) GetProxy

func (e *Env) GetProxy() string

func (*Env) GetRunMode

func (e *Env) GetRunMode() RunMode

func (*Env) GetRunModeAsString

func (e *Env) GetRunModeAsString() string

func (*Env) GetRuntimeDir

func (e *Env) GetRuntimeDir() string

func (*Env) GetSalt

func (e *Env) GetSalt() []byte

func (*Env) GetSandboxCacheDir added in v1.0.18

func (e *Env) GetSandboxCacheDir() string

func (*Env) GetScraperTimeout

func (e *Env) GetScraperTimeout() time.Duration

func (*Env) GetSecretKeyringTemplate

func (e *Env) GetSecretKeyringTemplate() string

func (*Env) GetServerURI

func (e *Env) GetServerURI() string

func (*Env) GetServiceInfoPath

func (e *Env) GetServiceInfoPath() string

GetServiceInfoPath returns path to info file written by the Keybase service after startup

func (*Env) GetServiceSpawnDir

func (e *Env) GetServiceSpawnDir() (string, error)

func (*Env) GetServiceType

func (e *Env) GetServiceType() string

func (*Env) GetSessionFilename

func (e *Env) GetSessionFilename() string

func (*Env) GetSocketBindFile added in v1.0.18

func (e *Env) GetSocketBindFile() (string, error)

func (*Env) GetSocketDialFiles added in v1.0.18

func (e *Env) GetSocketDialFiles() ([]string, error)

func (*Env) GetStandalone

func (e *Env) GetStandalone() bool

func (*Env) GetStoredSecretAccessGroup

func (e *Env) GetStoredSecretAccessGroup() string

func (*Env) GetStoredSecretServiceName

func (e *Env) GetStoredSecretServiceName() string

func (*Env) GetString

func (e *Env) GetString(flist ...(func() string)) string

func (*Env) GetStringList

func (e *Env) GetStringList(list ...(func() []string)) []string

func (*Env) GetTimers

func (e *Env) GetTimers() string

func (*Env) GetTorHiddenAddress

func (e *Env) GetTorHiddenAddress() string

func (*Env) GetTorMode

func (e *Env) GetTorMode() TorMode

func (*Env) GetTorProxy

func (e *Env) GetTorProxy() string

func (*Env) GetUID

func (e *Env) GetUID() keybase1.UID

func (*Env) GetUpdateDefaultInstructions

func (e *Env) GetUpdateDefaultInstructions() (string, error)

func (*Env) GetUpdateDisabled added in v1.0.16

func (e *Env) GetUpdateDisabled() (bool, bool)

func (*Env) GetUpdateLastChecked

func (e *Env) GetUpdateLastChecked() keybase1.Time

func (*Env) GetUpdatePreferenceAuto

func (e *Env) GetUpdatePreferenceAuto() (bool, bool)

func (*Env) GetUpdatePreferenceSkip

func (e *Env) GetUpdatePreferenceSkip() string

func (*Env) GetUpdatePreferenceSnoozeUntil

func (e *Env) GetUpdatePreferenceSnoozeUntil() keybase1.Time

func (*Env) GetUpdateURL

func (e *Env) GetUpdateURL() string

func (*Env) GetUpdaterConfig added in v1.0.16

func (e *Env) GetUpdaterConfig() UpdaterConfigReader

func (*Env) GetUpdaterConfigFilename added in v1.0.16

func (e *Env) GetUpdaterConfigFilename() string

func (*Env) GetUserCacheMaxAge

func (e *Env) GetUserCacheMaxAge() time.Duration

func (*Env) GetUsername

func (e *Env) GetUsername() NormalizedUsername

func (*Env) GetVDebugSetting

func (e *Env) GetVDebugSetting() string

func (*Env) IsAdmin

func (e *Env) IsAdmin() bool

func (*Env) SetCommandLine

func (e *Env) SetCommandLine(cmd CommandLine)

func (*Env) SetConfig

func (e *Env) SetConfig(r ConfigReader, w ConfigWriter)

func (*Env) SetUpdateLastChecked

func (e *Env) SetUpdateLastChecked(t keybase1.Time) error

func (*Env) SetUpdatePreferenceAuto

func (e *Env) SetUpdatePreferenceAuto(b bool) error

func (*Env) SetUpdatePreferenceSkip

func (e *Env) SetUpdatePreferenceSkip(v string) error

func (*Env) SetUpdatePreferenceSnoozeUntil

func (e *Env) SetUpdatePreferenceSnoozeUntil(t keybase1.Time) error

func (*Env) SetUpdaterConfig added in v1.0.16

func (e *Env) SetUpdaterConfig(r UpdaterConfigReader)

type ErrorUnwrapper

type ErrorUnwrapper struct{}

func (ErrorUnwrapper) MakeArg

func (eu ErrorUnwrapper) MakeArg() interface{}

func (ErrorUnwrapper) UnwrapError

func (eu ErrorUnwrapper) UnwrapError(arg interface{}) (appError error, dispatchError error)

type ExistsError added in v1.0.19

type ExistsError struct {
	Msg string
}

func (ExistsError) Error added in v1.0.19

func (e ExistsError) Error() string

func (ExistsError) ToStatus added in v1.0.19

func (e ExistsError) ToStatus() keybase1.Status

type ExportableError

type ExportableError interface {
	error
	ToStatus() keybase1.Status
}

type ExportedStream

type ExportedStream struct {
	// contains filtered or unexported fields
}

func (*ExportedStream) Export

func (s *ExportedStream) Export() keybase1.Stream

type ExportedStreams

type ExportedStreams struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewExportedStreams

func NewExportedStreams() *ExportedStreams

func (*ExportedStreams) Close

func (s *ExportedStreams) Close(_ context.Context, a keybase1.CloseArg) (err error)

func (*ExportedStreams) ExportReader

func (s *ExportedStreams) ExportReader(r ReadCloseSeeker) keybase1.Stream

func (*ExportedStreams) ExportWriter

func (s *ExportedStreams) ExportWriter(w io.WriteCloser) keybase1.Stream

func (*ExportedStreams) GetReader

func (s *ExportedStreams) GetReader(st keybase1.Stream) (ret io.ReadCloser, err error)

func (*ExportedStreams) GetWriter

func (s *ExportedStreams) GetWriter(st keybase1.Stream) (ret io.WriteCloser, err error)

func (*ExportedStreams) Read

func (s *ExportedStreams) Read(_ context.Context, a keybase1.ReadArg) (buf []byte, err error)

func (*ExportedStreams) Reset added in v1.0.19

func (*ExportedStreams) Write

func (s *ExportedStreams) Write(_ context.Context, a keybase1.WriteArg) (n int, err error)

type ExternalAPI

type ExternalAPI interface {
	Get(APIArg) (*ExternalAPIRes, error)
	Post(APIArg) (*ExternalAPIRes, error)
	GetHTML(APIArg) (*ExternalHTMLRes, error)
	GetText(APIArg) (*ExternalTextRes, error)
	PostHTML(APIArg) (*ExternalHTMLRes, error)
}

type ExternalAPIEngine

type ExternalAPIEngine struct {
	BaseAPIEngine
}

func (*ExternalAPIEngine) DoRequest

func (api *ExternalAPIEngine) DoRequest(
	arg APIArg, req *http.Request, restype XAPIResType) (
	ar *ExternalAPIRes, hr *ExternalHTMLRes, tr *ExternalTextRes, err error)

func (*ExternalAPIEngine) Get

func (api *ExternalAPIEngine) Get(arg APIArg) (res *ExternalAPIRes, err error)

func (*ExternalAPIEngine) GetHTML

func (api *ExternalAPIEngine) GetHTML(arg APIArg) (res *ExternalHTMLRes, err error)

func (*ExternalAPIEngine) GetText

func (api *ExternalAPIEngine) GetText(arg APIArg) (res *ExternalTextRes, err error)

func (*ExternalAPIEngine) Post

func (api *ExternalAPIEngine) Post(arg APIArg) (res *ExternalAPIRes, err error)

func (*ExternalAPIEngine) PostHTML

func (api *ExternalAPIEngine) PostHTML(arg APIArg) (res *ExternalHTMLRes, err error)

type ExternalAPIRes

type ExternalAPIRes struct {
	HTTPStatus int
	Body       *jsonw.Wrapper
}

type ExternalHTMLRes

type ExternalHTMLRes struct {
	HTTPStatus int
	GoQuery    *goquery.Document
}

type ExternalServicesCollector added in v1.0.18

type ExternalServicesCollector interface {
	GetServiceType(n string) ServiceType
	ListProofCheckers(mode RunMode) []string
}

type ExternalTextRes

type ExternalTextRes struct {
	HTTPStatus int
	Body       string
}

type FailedAssertionError

type FailedAssertionError struct {
	// contains filtered or unexported fields
}

func (FailedAssertionError) Error

func (u FailedAssertionError) Error() string

type FakeGregorDismisser added in v1.0.16

type FakeGregorDismisser struct {
	// contains filtered or unexported fields
}

func (*FakeGregorDismisser) DismissItem added in v1.0.16

func (f *FakeGregorDismisser) DismissItem(id gregor.MsgID) error

type Feature added in v1.0.19

type Feature string

type FeatureFlags added in v1.0.19

type FeatureFlags []Feature

func StringToFeatureFlags added in v1.0.19

func StringToFeatureFlags(s string) (ret FeatureFlags)

StringToFeatureFlags returns a set of feature flags

func (FeatureFlags) Admin added in v1.0.19

func (set FeatureFlags) Admin() bool

Admin returns true if the admin feature set is on

func (FeatureFlags) Empty added in v1.0.19

func (set FeatureFlags) Empty() bool

type File

type File struct {
	// contains filtered or unexported fields
}

File defines a default SafeWriter implementation

func NewFile

func NewFile(filename string, data []byte, perm os.FileMode) File

NewFile returns a File

func (File) GetFilename

func (f File) GetFilename() string

GetFilename is for SafeWriter

func (File) Save

func (f File) Save(g SafeWriteLogger) error

Save file

func (File) WriteTo

func (f File) WriteTo(w io.Writer) (int64, error)

WriteTo is for SafeWriter

type FileExecError added in v1.0.16

type FileExecError struct {
	Path string
}

func (FileExecError) Error added in v1.0.16

func (e FileExecError) Error() string

type FirstErrorPicker

type FirstErrorPicker struct {
	// contains filtered or unexported fields
}

func (*FirstErrorPicker) Error

func (p *FirstErrorPicker) Error() error

func (*FirstErrorPicker) Push

func (p *FirstErrorPicker) Push(e error)

type FishyMsgpackError

type FishyMsgpackError struct {
	// contains filtered or unexported fields
}

func (FishyMsgpackError) Error

func (e FishyMsgpackError) Error() string

type FullSelfer added in v1.0.19

type FullSelfer interface {
	WithSelf(ctx context.Context, f func(u *User) error) error
	WithUser(arg LoadUserArg, f func(u *User) error) (err error)
	HandleUserChanged(u keybase1.UID) error
	Update(ctx context.Context, u *User) error
	OnLogout() error
	OnLogin() error
}

type GPGKey

type GPGKey struct {
	Contextified
	// contains filtered or unexported fields
}

GPGKey is a shell around gpg cli commands that implements the GenericKey interface.

func NewGPGKey

func NewGPGKey(g *GlobalContext, fp *PGPFingerprint, kid keybase1.KID, ui GPGUI, ct keybase1.ClientType) *GPGKey

func (*GPGKey) CanDecrypt

func (g *GPGKey) CanDecrypt() bool

func (*GPGKey) CanEncrypt

func (g *GPGKey) CanEncrypt() bool

func (*GPGKey) CanSign

func (g *GPGKey) CanSign() bool

func (*GPGKey) CheckSecretKey

func (g *GPGKey) CheckSecretKey() error

func (*GPGKey) DecryptFromString

func (g *GPGKey) DecryptFromString(ciphertext string) (msg []byte, sender keybase1.KID, err error)

func (*GPGKey) Encode

func (g *GPGKey) Encode() (string, error)

func (*GPGKey) EncryptToString

func (g *GPGKey) EncryptToString(plaintext []byte, sender GenericKey) (ciphertext string, err error)

func (*GPGKey) ExportPublicAndPrivate added in v1.0.18

func (g *GPGKey) ExportPublicAndPrivate() (RawPublicKey, RawPrivateKey, error)

func (*GPGKey) GetAlgoType

func (g *GPGKey) GetAlgoType() AlgoType

func (*GPGKey) GetBinaryKID added in v1.0.18

func (g *GPGKey) GetBinaryKID() keybase1.BinaryKID

func (*GPGKey) GetFingerprintP

func (g *GPGKey) GetFingerprintP() *PGPFingerprint

func (*GPGKey) GetKID

func (g *GPGKey) GetKID() keybase1.KID

func (*GPGKey) HasSecretKey

func (g *GPGKey) HasSecretKey() bool

func (*GPGKey) SecretSymmetricKey added in v1.0.18

func (g *GPGKey) SecretSymmetricKey(reason EncryptionReason) ([]byte, error)

func (*GPGKey) SignToString

func (g *GPGKey) SignToString(msg []byte) (sig string, id keybase1.SigID, err error)

func (*GPGKey) VerboseDescription

func (g *GPGKey) VerboseDescription() string

func (*GPGKey) VerifyString

func (g *GPGKey) VerifyString(ctx VerifyContext, sig string, msg []byte) (id keybase1.SigID, err error)

func (*GPGKey) VerifyStringAndExtract

func (g *GPGKey) VerifyStringAndExtract(ctx VerifyContext, sig string) (msg []byte, id keybase1.SigID, err error)

type GPGUI

type GPGUI interface {
	keybase1.GpgUiInterface
}

type GPGUnavailableError added in v1.0.16

type GPGUnavailableError struct{}

func (GPGUnavailableError) Error added in v1.0.16

func (g GPGUnavailableError) Error() string

func (GPGUnavailableError) ToStatus added in v1.0.16

func (e GPGUnavailableError) ToStatus() keybase1.Status

type GUID

type GUID struct {
	Data1 uint32
	Data2 uint16
	Data3 uint16
	Data4 [8]byte
}
type GenericChainLink struct {
	*ChainLink
}

func (*GenericChainLink) BaseToTrackingStatement

func (g *GenericChainLink) BaseToTrackingStatement(state keybase1.ProofState) *jsonw.Wrapper

func (*GenericChainLink) DoOwnNewLinkFromServerNotifications

func (g *GenericChainLink) DoOwnNewLinkFromServerNotifications(glob *GlobalContext)

func (*GenericChainLink) GetArmoredSig

func (g *GenericChainLink) GetArmoredSig() string

func (*GenericChainLink) GetDelegatedKid

func (g *GenericChainLink) GetDelegatedKid() (kid keybase1.KID)

func (*GenericChainLink) GetDevice

func (g *GenericChainLink) GetDevice() *Device

func (*GenericChainLink) GetPGPFingerprint

func (g *GenericChainLink) GetPGPFingerprint() *PGPFingerprint

func (*GenericChainLink) GetPGPFullHash

func (g *GenericChainLink) GetPGPFullHash() string

func (*GenericChainLink) GetParentKid

func (g *GenericChainLink) GetParentKid() (kid keybase1.KID)

func (*GenericChainLink) GetRole

func (g *GenericChainLink) GetRole() KeyRole

func (*GenericChainLink) GetSeqno

func (g *GenericChainLink) GetSeqno() Seqno

func (*GenericChainLink) GetSigID

func (g *GenericChainLink) GetSigID() keybase1.SigID

func (*GenericChainLink) GetUID

func (g *GenericChainLink) GetUID() keybase1.UID

func (*GenericChainLink) GetUsername

func (g *GenericChainLink) GetUsername() string

func (*GenericChainLink) IsRevocationIsh

func (g *GenericChainLink) IsRevocationIsh() bool

func (*GenericChainLink) IsRevoked

func (g *GenericChainLink) IsRevoked() bool

func (*GenericChainLink) ToDebugString

func (g *GenericChainLink) ToDebugString() string

func (*GenericChainLink) ToDisplayString

func (g *GenericChainLink) ToDisplayString() string

func (*GenericChainLink) Type

func (g *GenericChainLink) Type() string

func (*GenericChainLink) VerifyReverseSig

func (g *GenericChainLink) VerifyReverseSig(ckf ComputedKeyFamily) error

type GenericKey

type GenericKey interface {
	GetKID() keybase1.KID
	GetBinaryKID() keybase1.BinaryKID
	GetAlgoType() AlgoType

	// Sign to an ASCII signature (which includes the message
	// itself) and return it, along with a derived ID.
	SignToString(msg []byte) (sig string, id keybase1.SigID, err error)

	// Verify that the given signature is valid and extracts the
	// embedded message from it. Also returns the signature ID.
	VerifyStringAndExtract(ctx VerifyContext, sig string) (msg []byte, id keybase1.SigID, err error)

	// Verify that the given signature is valid and that its
	// embedded message matches the given one. Also returns the
	// signature ID.
	VerifyString(ctx VerifyContext, sig string, msg []byte) (id keybase1.SigID, err error)

	// Encrypt to an ASCII armored encryption; optionally include a sender's
	// (private) key so that we can provably see who sent the message.
	EncryptToString(plaintext []byte, sender GenericKey) (ciphertext string, err error)

	// Decrypt the output of Encrypt above; provide the plaintext and also
	// the KID of the key that sent the message (if applicable).
	DecryptFromString(ciphertext string) (msg []byte, sender keybase1.KID, err error)

	// Derive a secret key from a DH secret key
	SecretSymmetricKey(reason EncryptionReason) ([]byte, error)

	VerboseDescription() string
	CheckSecretKey() error
	CanSign() bool
	CanEncrypt() bool
	CanDecrypt() bool
	HasSecretKey() bool
	Encode() (string, error) // encode public key to string

	// ExportPublicAndPrivate to special-purpose types so there is no way we can
	// accidentally reverse them.
	ExportPublicAndPrivate() (public RawPublicKey, private RawPrivateKey, err error)
}

func ImportKeypairFromKID

func ImportKeypairFromKID(k keybase1.KID) (key GenericKey, err error)

func NaclVerifyAndExtract

func NaclVerifyAndExtract(s string) (key GenericKey, payload []byte, fullBody []byte, err error)

NaclVerifyAndExtract interprets the given string as a NaCl-signed messaged, in the keybase NaclSigInfo (v1) format. It will check that the signature verified, and if so, will return the key that was used for the verification, the payload of the signature, the full body of the decoded SignInfo, and an error

type GetCacheDurationFunc added in v1.0.19

type GetCacheDurationFunc func(keybase1.Identify2Res) time.Duration

type GetCheckTimeFunc

type GetCheckTimeFunc func(keybase1.Identify2Res) keybase1.Time

type GlobalContext

type GlobalContext struct {
	Log          logger.Logger // Handles all logging
	VDL          *VDebugLog    // verbose debug log
	Env          *Env          // Env variables, cmdline args & config
	SKBKeyringMu *sync.Mutex   // Protects all attempts to mutate the SKBKeyringFile
	Keyrings     *Keyrings     // Gpg Keychains holding keys
	API          API           // How to make a REST call to the server
	Resolver     *Resolver     // cache of resolve results
	LocalDb      *JSONLocalDb  // Local DB for cache
	LocalChatDb  *JSONLocalDb  // Local DB for cache
	MerkleClient *MerkleClient // client for querying server's merkle sig tree
	XAPI         ExternalAPI   // for contacting Twitter, Github, etc.
	Output       io.Writer     // where 'Stdout'-style output goes

	ProofCache     *ProofCache     // where to cache proof results
	TrackCache     *TrackCache     // cache of IdentifyOutcomes for tracking purposes
	Identify2Cache Identify2Cacher // cache of Identify2 results for fast-pathing identify2 RPCS
	LinkCache      *LinkCache      // cache of ChainLinks

	CardCache *UserCardCache // cache of keybase1.UserCard objects

	GpgClient     *GpgCLI        // A standard GPG-client (optional)
	ShutdownHooks []ShutdownHook // on shutdown, fire these...
	SocketInfo    Socket         // which socket to bind/connect to

	SocketWrapper    *SocketWrapper    // only need one connection per
	LoopbackListener *LoopbackListener // If we're in loopback mode, we'll connect through here
	XStreams         *ExportedStreams  // a table of streams we've exported to the daemon (or vice-versa)
	Timers           *TimerSet         // Which timers are currently configured on
	UI               UI                // Interact with the UI
	Service          bool              // whether we're in server mode

	ConnectionManager *ConnectionManager // keep tabs on all active client connections
	NotifyRouter      *NotifyRouter      // How to route notifications
	// How to route UIs. Nil if we're in standalone mode or in
	// tests, and non-nil in service mode.
	UIRouter   UIRouter                  // How to route UIs
	Services   ExternalServicesCollector // All known external services
	ExitCode   keybase1.ExitCode         // Value to return to OS on Exit()
	RateLimits *RateLimits               // tracks the last time certain actions were taken

	SecretStoreAll *SecretStoreLocked // nil except for tests and supported platforms

	GregorDismisser GregorDismisser // for dismissing gregor items that we've handled
	GregorListener  GregorListener  // for alerting about clients connecting and registering UI protocols

	UserChangedHandlers []UserChangedHandler // a list of handlers that deal generically with userchanged events

	InboxSource      chatinterfaces.InboxSource        // source of remote inbox entries for chat
	ConvSource       chatinterfaces.ConversationSource // source of remote message bodies for chat
	MessageDeliverer chatinterfaces.MessageDeliverer   // background message delivery service

	// Can be overloaded by tests to get an improvement in performance
	NewTriplesec func(pw []byte, salt []byte) (Triplesec, error)

	// Options specified for testing only
	TestOptions GlobalTestOptions

	NetContext context.Context
	// contains filtered or unexported fields
}
var G *GlobalContext

func NewGlobalContext

func NewGlobalContext() *GlobalContext

func NewGlobalContextInit

func NewGlobalContextInit() *GlobalContext

func (*GlobalContext) AddLoginHook added in v1.0.16

func (g *GlobalContext) AddLoginHook(hook LoginHook)

func (*GlobalContext) AddLogoutHook added in v1.0.16

func (g *GlobalContext) AddLogoutHook(hook LogoutHook)

func (*GlobalContext) AddUserChangedHandler added in v1.0.19

func (g *GlobalContext) AddUserChangedHandler(h UserChangedHandler)

func (*GlobalContext) BindToSocket

func (g *GlobalContext) BindToSocket() (net.Listener, error)

func (*GlobalContext) BustLocalUserCache added in v1.0.19

func (g *GlobalContext) BustLocalUserCache(u keybase1.UID)

func (*GlobalContext) CTrace added in v1.0.19

func (g *GlobalContext) CTrace(ctx context.Context, msg string, f func() error) func()

func (*GlobalContext) CTraceOK added in v1.0.19

func (g *GlobalContext) CTraceOK(ctx context.Context, msg string, f func() bool) func()

func (*GlobalContext) CTraceTimed added in v1.0.19

func (g *GlobalContext) CTraceTimed(ctx context.Context, msg string, f func() error) func()

func (*GlobalContext) CVTrace added in v1.0.19

func (g *GlobalContext) CVTrace(ctx context.Context, lev VDebugLevel, msg string, f func() error) func()

func (*GlobalContext) CVTraceOK added in v1.0.19

func (g *GlobalContext) CVTraceOK(ctx context.Context, lev VDebugLevel, msg string, f func() bool) func()

func (*GlobalContext) CallLoginHooks added in v1.0.16

func (g *GlobalContext) CallLoginHooks()

func (*GlobalContext) CallLogoutHooks added in v1.0.16

func (g *GlobalContext) CallLogoutHooks()

func (*GlobalContext) Clock

func (g *GlobalContext) Clock() clockwork.Clock

func (*GlobalContext) CloneWithNetContext added in v1.0.19

func (g *GlobalContext) CloneWithNetContext(netCtx context.Context) *GlobalContext

func (*GlobalContext) CloneWithNetContextAndNewLogger added in v1.0.19

func (g *GlobalContext) CloneWithNetContextAndNewLogger(netCtx context.Context) *GlobalContext

func (*GlobalContext) ConfigReload

func (g *GlobalContext) ConfigReload() error

func (*GlobalContext) Configure

func (g *GlobalContext) Configure(line CommandLine, usage Usage) error

func (*GlobalContext) ConfigureAPI

func (g *GlobalContext) ConfigureAPI() error

func (*GlobalContext) ConfigureCaches

func (g *GlobalContext) ConfigureCaches() error

func (*GlobalContext) ConfigureCommand

func (g *GlobalContext) ConfigureCommand(line CommandLine, cmd Command) error

func (*GlobalContext) ConfigureConfig

func (g *GlobalContext) ConfigureConfig() error

func (*GlobalContext) ConfigureExportedStreams

func (g *GlobalContext) ConfigureExportedStreams() error

func (*GlobalContext) ConfigureKeyring

func (g *GlobalContext) ConfigureKeyring() error

func (*GlobalContext) ConfigureLogging

func (g *GlobalContext) ConfigureLogging() error

func (*GlobalContext) ConfigureMemCaches added in v1.0.19

func (g *GlobalContext) ConfigureMemCaches()

func (*GlobalContext) ConfigureMerkleClient

func (g *GlobalContext) ConfigureMerkleClient() error

func (*GlobalContext) ConfigureSocketInfo

func (g *GlobalContext) ConfigureSocketInfo() (err error)

func (*GlobalContext) ConfigureTimers

func (g *GlobalContext) ConfigureTimers() error

func (*GlobalContext) ConfigureUpdaterConfig added in v1.0.16

func (g *GlobalContext) ConfigureUpdaterConfig() error

func (*GlobalContext) ConfigureUsage

func (g *GlobalContext) ConfigureUsage(usage Usage) error

func (*GlobalContext) ExitTrace added in v1.0.19

func (g *GlobalContext) ExitTrace(msg string, f func() error) func()

func (*GlobalContext) ExitTraceOK added in v1.0.19

func (g *GlobalContext) ExitTraceOK(msg string, f func() bool) func()

func (*GlobalContext) GetAPI added in v1.0.18

func (g *GlobalContext) GetAPI() API

func (*GlobalContext) GetAllUserNames

func (g *GlobalContext) GetAllUserNames() (NormalizedUsername, []NormalizedUsername, error)

func (*GlobalContext) GetCacheDir

func (g *GlobalContext) GetCacheDir() string

func (*GlobalContext) GetConfigDir added in v1.0.17

func (g *GlobalContext) GetConfigDir() string

func (*GlobalContext) GetConfiguredAccounts

func (g *GlobalContext) GetConfiguredAccounts() ([]keybase1.ConfiguredAccount, error)

func (*GlobalContext) GetDataDir added in v1.0.18

func (g *GlobalContext) GetDataDir() string

func (*GlobalContext) GetExternalAPI added in v1.0.18

func (g *GlobalContext) GetExternalAPI() ExternalAPI

func (*GlobalContext) GetFullSelfer added in v1.0.19

func (g *GlobalContext) GetFullSelfer() FullSelfer

func (*GlobalContext) GetGpgClient

func (g *GlobalContext) GetGpgClient() *GpgCLI

func (*GlobalContext) GetKBFSInfoPath added in v1.0.17

func (g *GlobalContext) GetKBFSInfoPath() string

GetKBFSInfoPath returns path to info file written by the KBFS service after startup

func (*GlobalContext) GetLog added in v1.0.16

func (g *GlobalContext) GetLog() logger.Logger

func (*GlobalContext) GetLogDir added in v1.0.17

func (g *GlobalContext) GetLogDir() string

func (*GlobalContext) GetLogf added in v1.0.17

func (g *GlobalContext) GetLogf() logger.Loggerf

GetLogf returns a logger with a minimal formatter style interface

func (*GlobalContext) GetMerkleClient added in v1.0.19

func (g *GlobalContext) GetMerkleClient() *MerkleClient

func (*GlobalContext) GetMountDir added in v1.0.17

func (g *GlobalContext) GetMountDir() (string, error)

func (*GlobalContext) GetMyClientDetails

func (g *GlobalContext) GetMyClientDetails() keybase1.ClientDetails

func (*GlobalContext) GetMyUID

func (g *GlobalContext) GetMyUID() keybase1.UID

func (*GlobalContext) GetNetContext added in v1.0.19

func (g *GlobalContext) GetNetContext() context.Context

func (*GlobalContext) GetOutOfDateInfo added in v1.0.19

func (g *GlobalContext) GetOutOfDateInfo() keybase1.OutOfDateInfo

func (*GlobalContext) GetRunMode

func (g *GlobalContext) GetRunMode() RunMode

func (*GlobalContext) GetRuntimeDir

func (g *GlobalContext) GetRuntimeDir() string

func (*GlobalContext) GetServerURI added in v1.0.18

func (g *GlobalContext) GetServerURI() string

func (*GlobalContext) GetServiceInfoPath added in v1.0.17

func (g *GlobalContext) GetServiceInfoPath() string

GetServiceInfoPath returns path to info file written by the Keybase service after startup

func (*GlobalContext) GetSocket

func (g *GlobalContext) GetSocket(clearError bool) (conn net.Conn, xp rpc.Transporter, isNew bool, err error)

func (*GlobalContext) GetStoredSecretAccessGroup

func (g *GlobalContext) GetStoredSecretAccessGroup() string

func (*GlobalContext) GetStoredSecretServiceName

func (g *GlobalContext) GetStoredSecretServiceName() string

func (*GlobalContext) GetUPAKLoader added in v1.0.19

func (g *GlobalContext) GetUPAKLoader() UPAKLoader

func (*GlobalContext) GetUnforwardedLogger

func (g *GlobalContext) GetUnforwardedLogger() (log UnforwardedLoggerWithLegacyInterface)

func (*GlobalContext) GetUsersWithStoredSecrets

func (g *GlobalContext) GetUsersWithStoredSecrets() ([]string, error)

func (*GlobalContext) GetVDebugLog added in v1.0.19

func (g *GlobalContext) GetVDebugLog() *VDebugLog

func (*GlobalContext) Init

func (g *GlobalContext) Init() *GlobalContext

func (*GlobalContext) KeyfamilyChanged added in v1.0.19

func (g *GlobalContext) KeyfamilyChanged(u keybase1.UID)

func (*GlobalContext) LoadUserByUID added in v1.0.18

func (g *GlobalContext) LoadUserByUID(uid keybase1.UID) (*User, error)

func (*GlobalContext) LoginState

func (g *GlobalContext) LoginState() *LoginState

func (*GlobalContext) Logout

func (g *GlobalContext) Logout() error

func (*GlobalContext) LogoutIfRevoked added in v1.0.17

func (g *GlobalContext) LogoutIfRevoked() error

LogoutIfRevoked loads the user and checks if the current device keys have been revoked. If so, it calls Logout.

func (*GlobalContext) MakeAssertionContext added in v1.0.18

func (g *GlobalContext) MakeAssertionContext() AssertionContext

func (*GlobalContext) MakeLoopbackServer

func (g *GlobalContext) MakeLoopbackServer() (l net.Listener, err error)

func (*GlobalContext) NewRPCLogFactory added in v1.0.17

func (g *GlobalContext) NewRPCLogFactory() *RPCLogFactory

func (*GlobalContext) OutputBytes

func (g *GlobalContext) OutputBytes(b []byte)

func (*GlobalContext) OutputString

func (g *GlobalContext) OutputString(s string)

func (*GlobalContext) OverrideUPAKLoader added in v1.0.19

func (g *GlobalContext) OverrideUPAKLoader(upak UPAKLoader)

func (*GlobalContext) PushShutdownHook

func (g *GlobalContext) PushShutdownHook(sh ShutdownHook)

func (*GlobalContext) ResetLoginState

func (g *GlobalContext) ResetLoginState()

ResetLoginState is mainly used for testing...

func (*GlobalContext) ResetSocket added in v1.0.17

func (g *GlobalContext) ResetSocket(clearError bool) (net.Conn, rpc.Transporter, bool, error)

ResetSocket clears and returns a new socket

func (*GlobalContext) SKBFilenameForUser

func (g *GlobalContext) SKBFilenameForUser(un NormalizedUsername) string

func (*GlobalContext) SetClock added in v1.0.17

func (g *GlobalContext) SetClock(c clockwork.Clock)

func (*GlobalContext) SetCommandLine

func (g *GlobalContext) SetCommandLine(cmd CommandLine)

func (*GlobalContext) SetService

func (g *GlobalContext) SetService()

func (*GlobalContext) SetServices added in v1.0.18

func (g *GlobalContext) SetServices(s ExternalServicesCollector)

func (*GlobalContext) SetUI

func (g *GlobalContext) SetUI(u UI)

func (*GlobalContext) SetUIRouter

func (g *GlobalContext) SetUIRouter(u UIRouter)

func (*GlobalContext) Shutdown

func (g *GlobalContext) Shutdown() error

Shutdown is called exactly once per-process and does whatever cleanup is necessary to shut down the server.

func (*GlobalContext) StartupMessage

func (g *GlobalContext) StartupMessage()

func (*GlobalContext) Trace

func (g *GlobalContext) Trace(msg string, f func() error) func()

func (*GlobalContext) TraceOK added in v1.0.19

func (g *GlobalContext) TraceOK(msg string, f func() bool) func()

func (*GlobalContext) UIDToUsername added in v1.0.19

func (g *GlobalContext) UIDToUsername(uid keybase1.UID) (NormalizedUsername, error)

func (*GlobalContext) UserChanged added in v1.0.19

func (g *GlobalContext) UserChanged(u keybase1.UID)

type GlobalTestOptions added in v1.0.18

type GlobalTestOptions struct {
	NoBug3964Repair bool
}

type GpgBaseKey

type GpgBaseKey struct {
	Type    string
	Trust   string
	Bits    int
	Algo    int
	ID64    string
	Created int64
	Expires int64
	// contains filtered or unexported fields
}

func (GpgBaseKey) AlgoString

func (k GpgBaseKey) AlgoString() string

func (GpgBaseKey) CreatedString

func (k GpgBaseKey) CreatedString() string

func (GpgBaseKey) ExpirationString

func (k GpgBaseKey) ExpirationString() string

func (*GpgBaseKey) ParseBase

func (k *GpgBaseKey) ParseBase(line *GpgIndexLine) (err error)

func (*GpgBaseKey) SetFingerprint

func (k *GpgBaseKey) SetFingerprint(pgp *PGPFingerprint)

type GpgCLI

type GpgCLI struct {
	Contextified
	// contains filtered or unexported fields
}

func NewGpgCLI

func NewGpgCLI(g *GlobalContext, logUI LogUI) *GpgCLI

func (*GpgCLI) CanExec

func (g *GpgCLI) CanExec() (bool, error)

CanExec returns true if a gpg executable exists.

func (*GpgCLI) Configure

func (g *GpgCLI) Configure() (err error)

func (*GpgCLI) ExportKey

func (g *GpgCLI) ExportKey(k PGPKeyBundle, private bool) (err error)

func (*GpgCLI) ImportKey

func (g *GpgCLI) ImportKey(secret bool, fp PGPFingerprint, tty string) (*PGPKeyBundle, error)

func (*GpgCLI) Index

func (g *GpgCLI) Index(secret bool, query string) (ki *GpgKeyIndex, w Warnings, err error)

func (*GpgCLI) MakeCmd

func (g *GpgCLI) MakeCmd(args []string, tty string) *exec.Cmd

func (*GpgCLI) Path

func (g *GpgCLI) Path() string

Path returns the path of the gpg executable. Path is only available if CanExec() is true.

func (*GpgCLI) Run2

func (g *GpgCLI) Run2(arg RunGpg2Arg) (res RunGpg2Res)

func (*GpgCLI) SemanticVersion added in v1.0.17

func (g *GpgCLI) SemanticVersion() (*semver.Version, error)

func (*GpgCLI) SetTTY

func (g *GpgCLI) SetTTY(t string)

func (*GpgCLI) Sign

func (g *GpgCLI) Sign(fp PGPFingerprint, payload []byte) (string, error)

func (*GpgCLI) Version

func (g *GpgCLI) Version() (string, error)

func (*GpgCLI) VersionAtLeast added in v1.0.17

func (g *GpgCLI) VersionAtLeast(s string) (bool, error)

type GpgError

type GpgError struct {
	M string
}

func ErrorToGpgError

func ErrorToGpgError(e error) GpgError

func (GpgError) Error

func (e GpgError) Error() string

type GpgFingerprinter

type GpgFingerprinter interface {
	SetFingerprint(pgp *PGPFingerprint)
}

type GpgIndexElement

type GpgIndexElement interface {
	ToKey() *GpgPrimaryKey
}

type GpgIndexError

type GpgIndexError struct {
	// contains filtered or unexported fields
}

func ErrorToGpgIndexError

func ErrorToGpgIndexError(l int, e error) GpgIndexError

func (GpgIndexError) Error

func (e GpgIndexError) Error() string

type GpgIndexLine

type GpgIndexLine struct {
	// contains filtered or unexported fields
}

func ParseLine

func ParseLine(s string, i int) (ret *GpgIndexLine, err error)

func (GpgIndexLine) At

func (g GpgIndexLine) At(i int) string

func (GpgIndexLine) IsNewKey

func (g GpgIndexLine) IsNewKey() bool

func (GpgIndexLine) Len

func (g GpgIndexLine) Len() int

type GpgIndexParser

type GpgIndexParser struct {
	Contextified
	// contains filtered or unexported fields
}

func NewGpgIndexParser

func NewGpgIndexParser(g *GlobalContext) *GpgIndexParser

func (*GpgIndexParser) GetLine

func (p *GpgIndexParser) GetLine() (ret *GpgIndexLine, err error)

func (*GpgIndexParser) Parse

func (p *GpgIndexParser) Parse(stream io.Reader) (ki *GpgKeyIndex, err error)

func (*GpgIndexParser) ParseElement

func (p *GpgIndexParser) ParseElement() (ret GpgIndexElement, err error)

func (*GpgIndexParser) ParseKey

func (p *GpgIndexParser) ParseKey(l *GpgIndexLine) (ret *GpgPrimaryKey, err error)

func (*GpgIndexParser) PutbackLine

func (p *GpgIndexParser) PutbackLine(line *GpgIndexLine)

func (*GpgIndexParser) Warn

func (p *GpgIndexParser) Warn(w Warning)

type GpgKeyIndex

type GpgKeyIndex struct {
	Keys                        []*GpgPrimaryKey
	Emails, Fingerprints, ID64s *BucketDict
}

func NewGpgKeyIndex

func NewGpgKeyIndex() *GpgKeyIndex

func (*GpgKeyIndex) AllFingerprints

func (ki *GpgKeyIndex) AllFingerprints() []PGPFingerprint

func (*GpgKeyIndex) GetRowFunc

func (ki *GpgKeyIndex) GetRowFunc() func() []string

func (*GpgKeyIndex) IndexKey

func (ki *GpgKeyIndex) IndexKey(k *GpgPrimaryKey)

func (*GpgKeyIndex) Len

func (ki *GpgKeyIndex) Len() int

func (*GpgKeyIndex) Less

func (ki *GpgKeyIndex) Less(i, j int) bool

func (*GpgKeyIndex) PushElement

func (ki *GpgKeyIndex) PushElement(e GpgIndexElement)

func (*GpgKeyIndex) Sort

func (ki *GpgKeyIndex) Sort()

func (*GpgKeyIndex) Swap

func (ki *GpgKeyIndex) Swap(i, j int)

type GpgPrimaryKey

type GpgPrimaryKey struct {
	Contextified
	GpgBaseKey
	// contains filtered or unexported fields
}

func NewGpgPrimaryKey

func NewGpgPrimaryKey(g *GlobalContext) *GpgPrimaryKey

func ParseGpgPrimaryKey

func ParseGpgPrimaryKey(g *GlobalContext, l *GpgIndexLine) (key *GpgPrimaryKey, err error)

func (*GpgPrimaryKey) AddFingerprint

func (k *GpgPrimaryKey) AddFingerprint(l *GpgIndexLine) (err error)

func (*GpgPrimaryKey) AddLine

func (k *GpgPrimaryKey) AddLine(l *GpgIndexLine) (err error)

func (*GpgPrimaryKey) AddSubkey

func (k *GpgPrimaryKey) AddSubkey(l *GpgIndexLine) (err error)

func (*GpgPrimaryKey) AddUID

func (k *GpgPrimaryKey) AddUID(l *GpgIndexLine) (err error)

func (*GpgPrimaryKey) GetAllID64s

func (k *GpgPrimaryKey) GetAllID64s() []string

func (*GpgPrimaryKey) GetEmails

func (k *GpgPrimaryKey) GetEmails() []string

func (*GpgPrimaryKey) GetFingerprint

func (k *GpgPrimaryKey) GetFingerprint() *PGPFingerprint

func (*GpgPrimaryKey) GetPGPIdentities

func (k *GpgPrimaryKey) GetPGPIdentities() []keybase1.PGPIdentity

func (*GpgPrimaryKey) IsValid

func (k *GpgPrimaryKey) IsValid() bool

func (*GpgPrimaryKey) Parse

func (k *GpgPrimaryKey) Parse(l *GpgIndexLine) error

func (*GpgPrimaryKey) ToKey

func (k *GpgPrimaryKey) ToKey() *GpgPrimaryKey

func (*GpgPrimaryKey) ToRow

func (k *GpgPrimaryKey) ToRow(i int) []string

type GpgSubKey

type GpgSubKey struct {
	GpgBaseKey
}

func ParseGpgSubKey

func ParseGpgSubKey(l *GpgIndexLine) (sk *GpgSubKey, err error)

type GregorDismisser added in v1.0.16

type GregorDismisser interface {
	DismissItem(id gregor.MsgID) error
}

type GregorFirehoseHandler added in v1.0.17

type GregorFirehoseHandler interface {
	IsAlive() bool
	PushState(gregor1.State, keybase1.PushReason)
	PushOutOfBandMessages([]gregor1.OutOfBandMessage)
}

type GregorInBandMessageHandler added in v1.0.17

type GregorInBandMessageHandler interface {
	IsAlive() bool
	Name() string
	Create(ctx context.Context, cli gregor1.IncomingInterface, category string, ibm gregor.Item) (bool, error)
	Dismiss(ctx context.Context, cli gregor1.IncomingInterface, category string, ibm gregor.Item) (bool, error)
}

type GregorListener added in v1.0.17

type GregorListener interface {
	PushHandler(handler GregorInBandMessageHandler)
	PushFirehoseHandler(handler GregorFirehoseHandler)
}

type HTTPArgs

type HTTPArgs map[string]HTTPValue

func HTTPArgsFromKeyValuePair

func HTTPArgsFromKeyValuePair(key string, val HTTPValue) HTTPArgs

func NewHTTPArgs

func NewHTTPArgs() HTTPArgs

func (*HTTPArgs) Add

func (a *HTTPArgs) Add(s string, v HTTPValue)

func (HTTPArgs) EncodeToString

func (a HTTPArgs) EncodeToString() string

func (HTTPArgs) ToValues

func (a HTTPArgs) ToValues() url.Values

type HTTPRequest

type HTTPRequest interface {
	SetEnvironment(env Env)
}

type HTTPValue

type HTTPValue interface {
	String() string
}

func UIDArg

func UIDArg(uid keybase1.UID) HTTPValue

type HashSummer

type HashSummer func() []byte

func ArmoredAttachedSign

func ArmoredAttachedSign(out io.WriteCloser, signed openpgp.Entity, hints *openpgp.FileHints, config *packet.Config) (in io.WriteCloser, h HashSummer, err error)

type HashingWriteCloser

type HashingWriteCloser struct {
	// contains filtered or unexported fields
}

func (HashingWriteCloser) Close

func (h HashingWriteCloser) Close() error

func (HashingWriteCloser) Write

func (h HashingWriteCloser) Write(buf []byte) (int, error)

type HomeFinder

type HomeFinder interface {
	CacheDir() string
	ConfigDir() string
	Home(emptyOk bool) string
	DataDir() string
	RuntimeDir() string
	Normalize(s string) string
	LogDir() string
	ServiceSpawnDir() (string, error)
	SandboxCacheDir() string // For macOS
}

func NewHomeFinder

func NewHomeFinder(appName string, getHome ConfigGetter, osname string, getRunMode RunModeGetter) HomeFinder

type I

type I struct {
	Val int
}

func (I) String

func (i I) String() string

type Identify2Cache

type Identify2Cache struct {
	// contains filtered or unexported fields
}

Identify2Cache stores User objects in memory for a fixed amount of time.

func NewIdentify2Cache

func NewIdentify2Cache(maxAge time.Duration) *Identify2Cache

NewIdentify2Cache creates a Identify2Cache and sets the object max age to maxAge. Once a user is inserted, after maxAge duration passes, the user will be removed from the cache.

func (*Identify2Cache) Delete added in v1.0.19

func (c *Identify2Cache) Delete(uid keybase1.UID) error

func (*Identify2Cache) DidFullUserLoad added in v1.0.19

func (c *Identify2Cache) DidFullUserLoad(_ keybase1.UID)

DidFullUserLoad is a noop unless we're testing...

func (*Identify2Cache) Get

Get returns a user object. If none exists for uid, it will return nil.

func (*Identify2Cache) Insert

func (c *Identify2Cache) Insert(up *keybase1.Identify2Res) error

Insert adds a user to the cache, keyed on UID.

func (*Identify2Cache) Shutdown

func (c *Identify2Cache) Shutdown()

Shutdown stops any goroutines in the cache.

func (*Identify2Cache) UseDiskCache added in v1.0.19

func (c *Identify2Cache) UseDiskCache() bool

type Identify2Cacher

type Identify2Cacher interface {
	Get(keybase1.UID, GetCheckTimeFunc, GetCacheDurationFunc, bool) (*keybase1.Identify2Res, error)
	Insert(up *keybase1.Identify2Res) error
	DidFullUserLoad(keybase1.UID)
	Shutdown()
	Delete(uid keybase1.UID) error
	UseDiskCache() bool
}

type IdentifyDidNotCompleteError

type IdentifyDidNotCompleteError struct{}

func (IdentifyDidNotCompleteError) Error

func (IdentifyDidNotCompleteError) ToStatus

type IdentifyFailedError

type IdentifyFailedError struct {
	Assertion string
	Reason    string
}

func (IdentifyFailedError) Error

func (e IdentifyFailedError) Error() string

func (IdentifyFailedError) ToStatus

func (e IdentifyFailedError) ToStatus() keybase1.Status

type IdentifyOutcome

type IdentifyOutcome struct {
	Username              NormalizedUsername
	Error                 error
	KeyDiffs              []TrackDiff
	Revoked               []TrackDiff
	RevokedDetails        []keybase1.RevokedProof
	ProofChecks           []*LinkCheckResult
	Warnings              []Warning
	TrackUsed             *TrackLookup
	TrackEqual            bool // Whether the track statement was equal to what we saw
	TrackOptions          keybase1.TrackOptions
	Reason                keybase1.IdentifyReason
	ResponsibleGregorItem gregor.Item
}

func NewIdentifyOutcome

func NewIdentifyOutcome() *IdentifyOutcome

func NewIdentifyOutcomeWithUsername

func NewIdentifyOutcomeWithUsername(u NormalizedUsername) *IdentifyOutcome

func (*IdentifyOutcome) ActiveProofs

func (i *IdentifyOutcome) ActiveProofs() []RemoteProofChainLink

func (*IdentifyOutcome) AddProofsToSet

func (i *IdentifyOutcome) AddProofsToSet(existing *ProofSet, okStates []keybase1.ProofState)

func (*IdentifyOutcome) Export

func (IdentifyOutcome) ExportToUncheckedIdentity

func (ir IdentifyOutcome) ExportToUncheckedIdentity() *keybase1.Identity

func (IdentifyOutcome) GetError

func (i IdentifyOutcome) GetError() error

func (IdentifyOutcome) GetErrorAndWarnings

func (i IdentifyOutcome) GetErrorAndWarnings(strict bool) (warnings Warnings, err error)

func (IdentifyOutcome) GetErrorLax

func (i IdentifyOutcome) GetErrorLax() (Warnings, error)

func (IdentifyOutcome) IsOK

func (i IdentifyOutcome) IsOK() bool

func (IdentifyOutcome) NumProofFailures

func (i IdentifyOutcome) NumProofFailures() int

The number of proofs that failed.

func (IdentifyOutcome) NumProofSuccesses

func (i IdentifyOutcome) NumProofSuccesses() int

The number of proofs that actually worked

func (IdentifyOutcome) NumRevoked

func (i IdentifyOutcome) NumRevoked() int

Revoked proofs are those we used to look for but are gone!

func (IdentifyOutcome) NumTrackChanges

func (i IdentifyOutcome) NumTrackChanges() int

A "Track Change" isn't necessary a failure, maybe they upgraded a proof from HTTP to HTTPS. But we still should retrack if we can.

func (IdentifyOutcome) NumTrackFailures

func (i IdentifyOutcome) NumTrackFailures() int

A "Track Failure" is when we previously tracked this user, and some aspect of their proof changed. Like their key changed, or they changed Twitter names

func (*IdentifyOutcome) ProofChecksSorted

func (i *IdentifyOutcome) ProofChecksSorted() []*LinkCheckResult

func (*IdentifyOutcome) TrackSet

func (i *IdentifyOutcome) TrackSet() *TrackSet

func (IdentifyOutcome) TrackStatus

func (i IdentifyOutcome) TrackStatus() keybase1.TrackStatus

func (IdentifyOutcome) TrackingStatement

func (i IdentifyOutcome) TrackingStatement() *jsonw.Wrapper

type IdentifyState

type IdentifyState struct {
	// contains filtered or unexported fields
}

func NewIdentifyState

func NewIdentifyState(res *IdentifyOutcome, u *User) IdentifyState

func NewIdentifyStateWithGregorItem added in v1.0.16

func NewIdentifyStateWithGregorItem(item gregor.Item, u *User) IdentifyState

func (IdentifyState) ExportToUncheckedIdentity

func (is IdentifyState) ExportToUncheckedIdentity() *keybase1.Identity

func (*IdentifyState) HasPreviousTrack

func (s *IdentifyState) HasPreviousTrack() bool

func (*IdentifyState) Precompute

func (s *IdentifyState) Precompute(dhook func(keybase1.IdentifyKey) error)

func (*IdentifyState) Result

func (s *IdentifyState) Result() *IdentifyOutcome

func (*IdentifyState) SetTmpTrackLookup

func (s *IdentifyState) SetTmpTrackLookup(t *TrackChainLink)

func (*IdentifyState) SetTrackLookup

func (s *IdentifyState) SetTrackLookup(t *TrackChainLink)

func (*IdentifyState) TmpTrackLookup added in v1.0.19

func (s *IdentifyState) TmpTrackLookup() *TrackLookup

func (*IdentifyState) TrackLookup

func (s *IdentifyState) TrackLookup() *TrackLookup

type IdentifySummaryError added in v1.0.18

type IdentifySummaryError struct {
	// contains filtered or unexported fields
}

func (IdentifySummaryError) Error added in v1.0.18

func (e IdentifySummaryError) Error() string

func (IdentifySummaryError) IsImmediateFail added in v1.0.19

func (e IdentifySummaryError) IsImmediateFail() (chat1.OutboxErrorType, bool)

func (IdentifySummaryError) ToStatus added in v1.0.19

func (e IdentifySummaryError) ToStatus() keybase1.Status

type IdentifyTableMode added in v1.0.19

type IdentifyTableMode int
const (
	IdentifyTableModePassive IdentifyTableMode = iota
	IdentifyTableModeActive  IdentifyTableMode = iota
)

type IdentifyTimeoutError

type IdentifyTimeoutError struct{}

func (IdentifyTimeoutError) Error

func (e IdentifyTimeoutError) Error() string

func (IdentifyTimeoutError) ToStatus

func (e IdentifyTimeoutError) ToStatus() keybase1.Status

type IdentifyUI

type IdentifyUI interface {
	Start(string, keybase1.IdentifyReason, bool) error
	FinishWebProofCheck(keybase1.RemoteProof, keybase1.LinkCheckResult) error
	FinishSocialProofCheck(keybase1.RemoteProof, keybase1.LinkCheckResult) error
	Confirm(*keybase1.IdentifyOutcome) (keybase1.ConfirmResult, error)
	DisplayCryptocurrency(keybase1.Cryptocurrency) error
	DisplayKey(keybase1.IdentifyKey) error
	ReportLastTrack(*keybase1.TrackSummary) error
	LaunchNetworkChecks(*keybase1.Identity, *keybase1.User) error
	DisplayTrackStatement(string) error
	DisplayUserCard(keybase1.UserCard) error
	ReportTrackToken(keybase1.TrackToken) error
	Cancel() error
	Finish() error
	DisplayTLFCreateWithInvite(keybase1.DisplayTLFCreateWithInviteArg) error
	Dismiss(string, keybase1.DismissReason) error
}

type Identities

type Identities []Identity

func ImportPGPIdentities

func ImportPGPIdentities(ids []keybase1.PGPIdentity) (ret Identities)

func (Identities) Export

func (ids Identities) Export() (res []keybase1.PGPIdentity)

type Identity

type Identity struct {
	Username string
	Comment  string
	Email    string
}

func ImportPGPIdentity

func ImportPGPIdentity(arg keybase1.PGPIdentity) (ret Identity)

func KeybaseIdentity

func KeybaseIdentity(un NormalizedUsername) Identity

func ParseIdentity

func ParseIdentity(s string) (*Identity, error)

func (Identity) Export

func (id Identity) Export() (ret keybase1.PGPIdentity)

func (Identity) Format

func (i Identity) Format() string

func (Identity) String

func (i Identity) String() string

func (Identity) ToPGPUserID

func (i Identity) ToPGPUserID() *packet.UserId

type IdentityTable

type IdentityTable struct {
	Contextified

	Order []TypedChainLink
	// contains filtered or unexported fields
}

func NewIdentityTable

func NewIdentityTable(g *GlobalContext, eldest keybase1.KID, sc *SigChain, h *SigHints) (*IdentityTable, error)

func (*IdentityTable) ActiveCryptocurrency

func (idt *IdentityTable) ActiveCryptocurrency(family CryptocurrencyFamily) *CryptocurrencyChainLink

func (*IdentityTable) AllActiveCryptocurrency added in v1.0.19

func (idt *IdentityTable) AllActiveCryptocurrency() []CryptocurrencyChainLink

func (*IdentityTable) ComputeRemoteDiff

func (idt *IdentityTable) ComputeRemoteDiff(tracked, trackedTmp, observed keybase1.ProofState) (ret TrackDiff)

ComputeRemoteDiff takes as input three tracking results: the permanent track, the local temporary track, and the one it observed remotely. It favors the permanent track but will roll back to the temporary track if needs be.

func (*IdentityTable) GetActiveProofsFor

func (idt *IdentityTable) GetActiveProofsFor(st ServiceType) (ret []RemoteProofChainLink)

func (*IdentityTable) GetRevokedCryptocurrencyForTesting

func (idt *IdentityTable) GetRevokedCryptocurrencyForTesting() []CryptocurrencyChainLink

func (*IdentityTable) GetTrackList

func (idt *IdentityTable) GetTrackList() (ret []*TrackChainLink)

func (*IdentityTable) GetTrackMap

func (idt *IdentityTable) GetTrackMap() map[NormalizedUsername][]*TrackChainLink

func (*IdentityTable) Identify

func (idt *IdentityTable) Identify(ctx context.Context, is IdentifyState, forceRemoteCheck bool, ui IdentifyUI, ccl CheckCompletedListener, itm IdentifyTableMode) error

func (*IdentityTable) Len

func (idt *IdentityTable) Len() int

func (*IdentityTable) MarkCheckResult

func (idt *IdentityTable) MarkCheckResult(err ProofError)

func (*IdentityTable) TrackChainLinkFor

func (idt *IdentityTable) TrackChainLinkFor(username NormalizedUsername, uid keybase1.UID) (*TrackChainLink, error)

func (*IdentityTable) VerifySelfSig

func (idt *IdentityTable) VerifySelfSig(nun NormalizedUsername, uid keybase1.UID) bool

type InactiveKeyError

type InactiveKeyError struct {
	// contains filtered or unexported fields
}

func (InactiveKeyError) Error

func (i InactiveKeyError) Error() string

type InconsistentCacheStateError added in v1.0.19

type InconsistentCacheStateError struct{}

func (InconsistentCacheStateError) Error added in v1.0.19

type InputCanceledError

type InputCanceledError struct{}

func (InputCanceledError) Error

func (e InputCanceledError) Error() string

func (InputCanceledError) ToStatus

func (e InputCanceledError) ToStatus() (s keybase1.Status)

type InstallID added in v1.0.16

type InstallID string

func (InstallID) Exists added in v1.0.16

func (i InstallID) Exists() bool

func (InstallID) String added in v1.0.16

func (i InstallID) String() string

type InsufficientKarmaError

type InsufficientKarmaError struct {
	// contains filtered or unexported fields
}

func NewInsufficientKarmaError added in v1.0.18

func NewInsufficientKarmaError(un string) InsufficientKarmaError

func (InsufficientKarmaError) Error

func (e InsufficientKarmaError) Error() string

type InternalAPIEngine

type InternalAPIEngine struct {
	BaseAPIEngine
}

func NewInternalAPIEngine

func NewInternalAPIEngine(g *GlobalContext) (*InternalAPIEngine, error)

NewInternalAPIEngine makes an API engine for internally querying the keybase API server

func (*InternalAPIEngine) DoRequest

func (a *InternalAPIEngine) DoRequest(arg APIArg, req *http.Request) (*APIRes, error)

func (*InternalAPIEngine) Get

func (a *InternalAPIEngine) Get(arg APIArg) (*APIRes, error)

func (*InternalAPIEngine) GetDecode

func (a *InternalAPIEngine) GetDecode(arg APIArg, v APIResponseWrapper) error

GetDecode performs a GET request and decodes the response via JSON into the value pointed to by v.

func (*InternalAPIEngine) GetResp

func (a *InternalAPIEngine) GetResp(arg APIArg) (*http.Response, error)

GetResp performs a GET request and returns the http response. The returned response, if non-nil, should have DiscardAndCloseBody() called on it.

func (*InternalAPIEngine) Post

func (a *InternalAPIEngine) Post(arg APIArg) (*APIRes, error)

func (*InternalAPIEngine) PostDecode

func (a *InternalAPIEngine) PostDecode(arg APIArg, v APIResponseWrapper) error

func (*InternalAPIEngine) PostJSON

func (a *InternalAPIEngine) PostJSON(arg APIArg) (*APIRes, error)

func (*InternalAPIEngine) PostRaw

func (a *InternalAPIEngine) PostRaw(arg APIArg, ctype string, r io.Reader) (*APIRes, error)

func (*InternalAPIEngine) PostResp

func (a *InternalAPIEngine) PostResp(arg APIArg) (*http.Response, error)

PostResp performs a POST request and returns the http response. The returned response, if non-nil, should have DiscardAndCloseBody() called on it.

type InternalError

type InternalError struct {
	Msg string
}

func (InternalError) Error

func (e InternalError) Error() string

type InvalidAddressError added in v1.0.19

type InvalidAddressError struct {
	Msg string
}

func (InvalidAddressError) Error added in v1.0.19

func (e InvalidAddressError) Error() string

func (InvalidAddressError) ToStatus added in v1.0.19

func (e InvalidAddressError) ToStatus() keybase1.Status

type InvalidArgumentError

type InvalidArgumentError struct {
	Msg string
}

func (InvalidArgumentError) Error

func (e InvalidArgumentError) Error() string

type InvalidHostnameError

type InvalidHostnameError struct {
	// contains filtered or unexported fields
}

func NewInvalidHostnameError added in v1.0.18

func NewInvalidHostnameError(h string) InvalidHostnameError

func (InvalidHostnameError) Error

func (e InvalidHostnameError) Error() string

type InvalidKexPhraseError

type InvalidKexPhraseError struct{}

func (InvalidKexPhraseError) Error

func (e InvalidKexPhraseError) Error() string

func (InvalidKexPhraseError) ToStatus

func (e InvalidKexPhraseError) ToStatus() keybase1.Status

type Invitation added in v1.0.16

type Invitation struct {
	ID        string
	ShortCode string
	Throttled bool
}

func GenerateInvitationCode added in v1.0.16

func GenerateInvitationCode(g *GlobalContext, arg InviteArg) (*Invitation, error)

func GenerateInvitationCodeForAssertion added in v1.0.16

func GenerateInvitationCodeForAssertion(g *GlobalContext, assertion keybase1.SocialAssertion, arg InviteArg) (*Invitation, error)

func SendInvitation added in v1.0.16

func SendInvitation(g *GlobalContext, email string, arg InviteArg) (*Invitation, error)
func (i Invitation) Link() string

type InviteArg added in v1.0.16

type InviteArg struct {
	Message    string
	NoteToSelf string
}

InviteArg contains optional invitation arguments.

func (InviteArg) ToHTTPArgs added in v1.0.16

func (i InviteArg) ToHTTPArgs() HTTPArgs

type InviteRequestArg

type InviteRequestArg struct {
	Email    string
	Fullname string
	Notes    string
}

type JSONConfigFile

type JSONConfigFile struct {
	*JSONFile
	// contains filtered or unexported fields
}

func NewJSONConfigFile

func NewJSONConfigFile(g *GlobalContext, s string) *JSONConfigFile

func (JSONConfigFile) Check

func (f JSONConfigFile) Check() error

Check looks inside the JSON file to see if any fields are poorly specified

func (*JSONConfigFile) DeleteAtPath

func (f *JSONConfigFile) DeleteAtPath(p string)

func (JSONConfigFile) GetAPITimeout

func (f JSONConfigFile) GetAPITimeout() (time.Duration, bool)

func (JSONConfigFile) GetAllUsernames

func (f JSONConfigFile) GetAllUsernames() (current NormalizedUsername, others []NormalizedUsername, err error)

func (JSONConfigFile) GetAutoFork

func (f JSONConfigFile) GetAutoFork() (bool, bool)

func (JSONConfigFile) GetBGIdentifierDisabled added in v1.0.19

func (f JSONConfigFile) GetBGIdentifierDisabled() (bool, bool)

func (JSONConfigFile) GetBoolAtPath

func (f JSONConfigFile) GetBoolAtPath(p string) (ret bool, isSet bool)

func (JSONConfigFile) GetBug3964RepairTime added in v1.0.18

func (f JSONConfigFile) GetBug3964RepairTime(un NormalizedUsername) (time.Time, error)

func (JSONConfigFile) GetBundledCA

func (f JSONConfigFile) GetBundledCA(host string) (ret string)

func (JSONConfigFile) GetChatDbFilename added in v1.0.18

func (f JSONConfigFile) GetChatDbFilename() string

func (JSONConfigFile) GetChatDelivererInterval added in v1.0.19

func (f JSONConfigFile) GetChatDelivererInterval() (time.Duration, bool)

func (JSONConfigFile) GetCodeSigningKIDs

func (f JSONConfigFile) GetCodeSigningKIDs() []string

func (JSONConfigFile) GetConfigFilename

func (f JSONConfigFile) GetConfigFilename() string

func (JSONConfigFile) GetDbFilename

func (f JSONConfigFile) GetDbFilename() string

func (JSONConfigFile) GetDebug

func (f JSONConfigFile) GetDebug() (bool, bool)

func (JSONConfigFile) GetDeviceID

func (f JSONConfigFile) GetDeviceID() (ret keybase1.DeviceID)

func (JSONConfigFile) GetDeviceIDForUID added in v1.0.19

func (f JSONConfigFile) GetDeviceIDForUID(u keybase1.UID) keybase1.DeviceID

func (JSONConfigFile) GetDeviceIDForUsername added in v1.0.19

func (f JSONConfigFile) GetDeviceIDForUsername(nu NormalizedUsername) keybase1.DeviceID

func (JSONConfigFile) GetDurationAtPath

func (f JSONConfigFile) GetDurationAtPath(p string) (time.Duration, bool)

func (JSONConfigFile) GetFeatureFlags added in v1.0.19

func (f JSONConfigFile) GetFeatureFlags() (ret FeatureFlags, err error)

func (JSONConfigFile) GetFilename

func (f JSONConfigFile) GetFilename() string

func (JSONConfigFile) GetGpg

func (f JSONConfigFile) GetGpg() string

func (JSONConfigFile) GetGpgHome

func (f JSONConfigFile) GetGpgHome() (ret string)

func (JSONConfigFile) GetGpgOptions

func (f JSONConfigFile) GetGpgOptions() []string

func (JSONConfigFile) GetGregorDisabled added in v1.0.17

func (f JSONConfigFile) GetGregorDisabled() (bool, bool)

func (JSONConfigFile) GetGregorPingInterval added in v1.0.17

func (f JSONConfigFile) GetGregorPingInterval() (time.Duration, bool)

func (JSONConfigFile) GetGregorPingTimeout added in v1.0.19

func (f JSONConfigFile) GetGregorPingTimeout() (time.Duration, bool)

func (JSONConfigFile) GetGregorSaveInterval added in v1.0.16

func (f JSONConfigFile) GetGregorSaveInterval() (time.Duration, bool)

func (JSONConfigFile) GetGregorURI added in v1.0.16

func (f JSONConfigFile) GetGregorURI() string

func (JSONConfigFile) GetHome

func (f JSONConfigFile) GetHome() string

func (JSONConfigFile) GetIntAtPath

func (f JSONConfigFile) GetIntAtPath(p string) (ret int, isSet bool)

func (JSONConfigFile) GetInterfaceAtPath

func (f JSONConfigFile) GetInterfaceAtPath(p string) (i interface{}, err error)

func (JSONConfigFile) GetLinkCacheCleanDur

func (f JSONConfigFile) GetLinkCacheCleanDur() (time.Duration, bool)

func (JSONConfigFile) GetLinkCacheSize

func (f JSONConfigFile) GetLinkCacheSize() (int, bool)

func (JSONConfigFile) GetLocalRPCDebug

func (f JSONConfigFile) GetLocalRPCDebug() string

func (JSONConfigFile) GetLocalTrackMaxAge

func (f JSONConfigFile) GetLocalTrackMaxAge() (time.Duration, bool)

func (JSONConfigFile) GetLogFile

func (f JSONConfigFile) GetLogFile() string

func (JSONConfigFile) GetLogFormat

func (f JSONConfigFile) GetLogFormat() string

func (JSONConfigFile) GetMerkleKIDs

func (f JSONConfigFile) GetMerkleKIDs() []string

func (JSONConfigFile) GetMountDir added in v1.0.17

func (f JSONConfigFile) GetMountDir() string

func (JSONConfigFile) GetNoPinentry

func (f JSONConfigFile) GetNoPinentry() (bool, bool)

func (JSONConfigFile) GetNullAtPath

func (f JSONConfigFile) GetNullAtPath(p string) (isSet bool)

func (JSONConfigFile) GetPidFile

func (f JSONConfigFile) GetPidFile() string

func (JSONConfigFile) GetPinentry

func (f JSONConfigFile) GetPinentry() string

func (JSONConfigFile) GetProofCacheLongDur

func (f JSONConfigFile) GetProofCacheLongDur() (time.Duration, bool)

func (JSONConfigFile) GetProofCacheMediumDur

func (f JSONConfigFile) GetProofCacheMediumDur() (time.Duration, bool)

func (JSONConfigFile) GetProofCacheShortDur

func (f JSONConfigFile) GetProofCacheShortDur() (time.Duration, bool)

func (JSONConfigFile) GetProofCacheSize

func (f JSONConfigFile) GetProofCacheSize() (int, bool)

func (JSONConfigFile) GetProxy

func (f JSONConfigFile) GetProxy() string

func (JSONConfigFile) GetProxyCACerts

func (f JSONConfigFile) GetProxyCACerts() (ret []string, err error)

func (JSONConfigFile) GetRunMode

func (f JSONConfigFile) GetRunMode() (RunMode, error)

func (JSONConfigFile) GetSalt

func (f JSONConfigFile) GetSalt() (ret []byte)

func (JSONConfigFile) GetScraperTimeout

func (f JSONConfigFile) GetScraperTimeout() (time.Duration, bool)

func (JSONConfigFile) GetSecretKeyringTemplate

func (f JSONConfigFile) GetSecretKeyringTemplate() string

func (JSONConfigFile) GetSecurityAccessGroupOverride

func (f JSONConfigFile) GetSecurityAccessGroupOverride() (bool, bool)

func (JSONConfigFile) GetServerURI

func (f JSONConfigFile) GetServerURI() string

func (JSONConfigFile) GetSessionFilename

func (f JSONConfigFile) GetSessionFilename() string

func (JSONConfigFile) GetSocketFile

func (f JSONConfigFile) GetSocketFile() string

func (JSONConfigFile) GetStandalone

func (f JSONConfigFile) GetStandalone() (bool, bool)

func (JSONConfigFile) GetStringAtPath

func (f JSONConfigFile) GetStringAtPath(p string) (ret string, isSet bool)

func (JSONConfigFile) GetTimeAtPath

func (f JSONConfigFile) GetTimeAtPath(path string) keybase1.Time

func (JSONConfigFile) GetTimers

func (f JSONConfigFile) GetTimers() string

func (JSONConfigFile) GetTopLevelBool

func (f JSONConfigFile) GetTopLevelBool(s string) (res, isSet bool)

func (JSONConfigFile) GetTopLevelString

func (f JSONConfigFile) GetTopLevelString(s string) (ret string)

func (JSONConfigFile) GetTorHiddenAddress

func (f JSONConfigFile) GetTorHiddenAddress() string

func (JSONConfigFile) GetTorMode

func (f JSONConfigFile) GetTorMode() (ret TorMode, err error)

func (JSONConfigFile) GetTorProxy

func (f JSONConfigFile) GetTorProxy() string

func (JSONConfigFile) GetUID

func (f JSONConfigFile) GetUID() (ret keybase1.UID)

func (JSONConfigFile) GetUpdateDisabled added in v1.0.16

func (f JSONConfigFile) GetUpdateDisabled() (bool, bool)

func (JSONConfigFile) GetUpdateLastChecked

func (f JSONConfigFile) GetUpdateLastChecked() keybase1.Time

func (JSONConfigFile) GetUpdatePreferenceAuto

func (f JSONConfigFile) GetUpdatePreferenceAuto() (bool, bool)

func (JSONConfigFile) GetUpdatePreferenceSkip

func (f JSONConfigFile) GetUpdatePreferenceSkip() string

func (JSONConfigFile) GetUpdatePreferenceSnoozeUntil

func (f JSONConfigFile) GetUpdatePreferenceSnoozeUntil() keybase1.Time

func (JSONConfigFile) GetUpdateURL

func (f JSONConfigFile) GetUpdateURL() string

func (JSONConfigFile) GetUpdaterConfigFilename added in v1.0.16

func (f JSONConfigFile) GetUpdaterConfigFilename() string

func (JSONConfigFile) GetUserCacheMaxAge

func (f JSONConfigFile) GetUserCacheMaxAge() (time.Duration, bool)

func (JSONConfigFile) GetUserConfig

func (f JSONConfigFile) GetUserConfig() (*UserConfig, error)

func (JSONConfigFile) GetUserConfigForUID added in v1.0.19

func (f JSONConfigFile) GetUserConfigForUID(u keybase1.UID) (*UserConfig, error)

GetUserConfigForUID sees if there's a UserConfig object for the given UIDs previously stored.

func (JSONConfigFile) GetUserConfigForUsername

func (f JSONConfigFile) GetUserConfigForUsername(nu NormalizedUsername) (*UserConfig, error)

GetUserConfigForUsername sees if there's a UserConfig object for the given username previously stored.

func (JSONConfigFile) GetUsername

func (f JSONConfigFile) GetUsername() (ret NormalizedUsername)

func (JSONConfigFile) GetVDebugSetting

func (f JSONConfigFile) GetVDebugSetting() string

func (JSONConfigFile) IsAdmin

func (f JSONConfigFile) IsAdmin() (bool, bool)

func (*JSONConfigFile) NukeUser

func (f *JSONConfigFile) NukeUser(nu NormalizedUsername) error

NukeUser deletes the given user from the config file, or if the given user is empty, deletes the current user from the config file.

func (*JSONConfigFile) Reset

func (f *JSONConfigFile) Reset()

func (*JSONConfigFile) SetBoolAtPath

func (f *JSONConfigFile) SetBoolAtPath(p string, v bool) error

func (JSONConfigFile) SetBug3964RepairTime added in v1.0.18

func (f JSONConfigFile) SetBug3964RepairTime(un NormalizedUsername, t time.Time) (err error)

func (*JSONConfigFile) SetDeviceID

func (f *JSONConfigFile) SetDeviceID(did keybase1.DeviceID) (err error)

SetDeviceID sets the device field of the UserConfig object

func (*JSONConfigFile) SetInt64AtPath

func (f *JSONConfigFile) SetInt64AtPath(p string, v int64) error

func (*JSONConfigFile) SetIntAtPath

func (f *JSONConfigFile) SetIntAtPath(p string, v int) error

func (*JSONConfigFile) SetNullAtPath

func (f *JSONConfigFile) SetNullAtPath(p string) (err error)

func (*JSONConfigFile) SetStringAtPath

func (f *JSONConfigFile) SetStringAtPath(p string, v string) error

func (*JSONConfigFile) SetTimeAtPath

func (f *JSONConfigFile) SetTimeAtPath(path string, t keybase1.Time) error

func (*JSONConfigFile) SetUpdateLastChecked

func (f *JSONConfigFile) SetUpdateLastChecked(t keybase1.Time) error

func (*JSONConfigFile) SetUpdatePreferenceAuto

func (f *JSONConfigFile) SetUpdatePreferenceAuto(b bool) error

func (*JSONConfigFile) SetUpdatePreferenceSkip

func (f *JSONConfigFile) SetUpdatePreferenceSkip(v string) error

func (*JSONConfigFile) SetUpdatePreferenceSnoozeUntil

func (f *JSONConfigFile) SetUpdatePreferenceSnoozeUntil(t keybase1.Time) error

func (*JSONConfigFile) SetUserConfig

func (f *JSONConfigFile) SetUserConfig(u *UserConfig, overwrite bool) error

SetUserConfig writes this UserConfig to the config file and updates the currently active UserConfig in memory. If the given UserConfig is nil, then just empty everything out and clear the `current_user` field. Note that we never actually overwrite users.<username>, we just write it if it doesn't already exist, and we update the `current_user` pointer.

func (*JSONConfigFile) SetWrapperAtPath

func (f *JSONConfigFile) SetWrapperAtPath(p string, w *jsonw.Wrapper) error

func (*JSONConfigFile) SwitchUser

func (f *JSONConfigFile) SwitchUser(nu NormalizedUsername) error

type JSONFile

type JSONFile struct {
	Contextified
	// contains filtered or unexported fields
}

func NewJSONFile

func NewJSONFile(g *GlobalContext, filename, which string) *JSONFile

func (*JSONFile) BeginTransaction

func (f *JSONFile) BeginTransaction() (ConfigWriterTransacter, error)

func (*JSONFile) Exists

func (f *JSONFile) Exists() bool

func (*JSONFile) GetWrapper

func (f *JSONFile) GetWrapper() *jsonw.Wrapper

func (*JSONFile) Load

func (f *JSONFile) Load(warnOnNotFound bool) error

func (*JSONFile) Nuke

func (f *JSONFile) Nuke() error

func (*JSONFile) Save

func (f *JSONFile) Save() error

type JSONLocalDb

type JSONLocalDb struct {
	// contains filtered or unexported fields
}

func NewJSONLocalDb

func NewJSONLocalDb(e LocalDb) *JSONLocalDb

func (*JSONLocalDb) Close

func (j *JSONLocalDb) Close() error

func (*JSONLocalDb) Delete

func (j *JSONLocalDb) Delete(id DbKey) error

func (*JSONLocalDb) ForceOpen

func (j *JSONLocalDb) ForceOpen() error

func (*JSONLocalDb) Get

func (j *JSONLocalDb) Get(id DbKey) (*jsonw.Wrapper, error)

func (*JSONLocalDb) GetInto

func (j *JSONLocalDb) GetInto(obj interface{}, id DbKey) (found bool, err error)

func (*JSONLocalDb) GetRaw added in v1.0.16

func (j *JSONLocalDb) GetRaw(id DbKey) ([]byte, bool, error)

func (*JSONLocalDb) Lookup

func (j *JSONLocalDb) Lookup(id DbKey) (*jsonw.Wrapper, error)

func (*JSONLocalDb) Nuke

func (j *JSONLocalDb) Nuke() (string, error)

func (*JSONLocalDb) Open

func (j *JSONLocalDb) Open() error

func (*JSONLocalDb) OpenTransaction added in v1.0.18

func (j *JSONLocalDb) OpenTransaction() (JSONLocalDbTransaction, error)

func (*JSONLocalDb) Put

func (j *JSONLocalDb) Put(id DbKey, aliases []DbKey, val *jsonw.Wrapper) error

func (*JSONLocalDb) PutObj

func (j *JSONLocalDb) PutObj(id DbKey, aliases []DbKey, obj interface{}) (err error)

func (*JSONLocalDb) PutRaw added in v1.0.16

func (j *JSONLocalDb) PutRaw(id DbKey, b []byte) error

type JSONLocalDbTransaction added in v1.0.18

type JSONLocalDbTransaction struct {
	// contains filtered or unexported fields
}

func (JSONLocalDbTransaction) Commit added in v1.0.18

func (j JSONLocalDbTransaction) Commit() error

func (JSONLocalDbTransaction) Delete added in v1.0.18

func (j JSONLocalDbTransaction) Delete(id DbKey) error

func (JSONLocalDbTransaction) Discard added in v1.0.18

func (j JSONLocalDbTransaction) Discard()

func (JSONLocalDbTransaction) Get added in v1.0.18

func (JSONLocalDbTransaction) GetInto added in v1.0.18

func (j JSONLocalDbTransaction) GetInto(obj interface{}, id DbKey) (found bool, err error)

func (JSONLocalDbTransaction) GetRaw added in v1.0.18

func (j JSONLocalDbTransaction) GetRaw(id DbKey) ([]byte, bool, error)

func (JSONLocalDbTransaction) Lookup added in v1.0.18

func (j JSONLocalDbTransaction) Lookup(id DbKey) (*jsonw.Wrapper, error)

func (JSONLocalDbTransaction) Put added in v1.0.18

func (j JSONLocalDbTransaction) Put(id DbKey, aliases []DbKey, val *jsonw.Wrapper) error

func (JSONLocalDbTransaction) PutObj added in v1.0.18

func (j JSONLocalDbTransaction) PutObj(id DbKey, aliases []DbKey, obj interface{}) (err error)

func (JSONLocalDbTransaction) PutRaw added in v1.0.18

func (j JSONLocalDbTransaction) PutRaw(id DbKey, b []byte) error

type JSONPayload

type JSONPayload map[string]interface{}

type JSONUpdaterConfigFile added in v1.0.16

type JSONUpdaterConfigFile struct {
	*JSONFile
}

func NewJSONUpdaterConfigFile added in v1.0.16

func NewJSONUpdaterConfigFile(g *GlobalContext) *JSONUpdaterConfigFile

func (JSONUpdaterConfigFile) GetInstallID added in v1.0.16

func (j JSONUpdaterConfigFile) GetInstallID() (ret InstallID)

type Kex2Secret

type Kex2Secret struct {
	// contains filtered or unexported fields
}

func NewKex2Secret

func NewKex2Secret() (*Kex2Secret, error)

func NewKex2SecretFromPhrase

func NewKex2SecretFromPhrase(phrase string) (*Kex2Secret, error)

func (*Kex2Secret) Phrase

func (s *Kex2Secret) Phrase() string

func (*Kex2Secret) Secret

func (s *Kex2Secret) Secret() kex2.Secret

type KexRole

type KexRole int
const (
	KexRoleProvisioner KexRole = iota
	KexRoleProvisionee
)

type KexRouter

type KexRouter struct {
	Contextified
}

KexRouter implements the kex2.MessageRouter interface.

func NewKexRouter

func NewKexRouter(g *GlobalContext) *KexRouter

NewKexRouter creates a contextified KexRouter.

func (*KexRouter) Get

func (k *KexRouter) Get(sessID kex2.SessionID, receiver kex2.DeviceID, low kex2.Seqno, poll time.Duration) (msgs [][]byte, err error)

Get implements Get in the kex2.MessageRouter interface.

func (*KexRouter) Post

func (k *KexRouter) Post(sessID kex2.SessionID, sender kex2.DeviceID, seqno kex2.Seqno, msg []byte) (err error)

Post implements Post in the kex2.MessageRouter interface.

type KeyCannotDecryptError

type KeyCannotDecryptError struct{}

func (KeyCannotDecryptError) Error

func (k KeyCannotDecryptError) Error() string

type KeyCannotEncryptError

type KeyCannotEncryptError struct{}

func (KeyCannotEncryptError) Error

func (k KeyCannotEncryptError) Error() string

type KeyCannotSignError

type KeyCannotSignError struct{}

func (KeyCannotSignError) Error

func (s KeyCannotSignError) Error() string

type KeyCannotVerifyError

type KeyCannotVerifyError struct{}

func (KeyCannotVerifyError) Error

func (k KeyCannotVerifyError) Error() string

type KeyExistsError

type KeyExistsError struct {
	Key *PGPFingerprint
}

func (KeyExistsError) Error

func (k KeyExistsError) Error() string

func (KeyExistsError) ToStatus

func (c KeyExistsError) ToStatus() (s keybase1.Status)

type KeyExpiredError

type KeyExpiredError struct {
	// contains filtered or unexported fields
}

func (KeyExpiredError) Error

func (r KeyExpiredError) Error() string

type KeyFamily

type KeyFamily struct {
	AllKIDs map[keybase1.KID]bool

	// PGP keys have a permissively merged version and individual versions by
	// hash. See the comment in PGPKeySet.addKey, above, for details.
	PGPKeySets map[keybase1.KID]*PGPKeySet
	SingleKeys map[keybase1.KID]GenericKey // Currently just NaCl keys

	BundlesForTesting []string

	Contextified
	// contains filtered or unexported fields
}

Once the client downloads a RawKeyFamily, it converts it into a KeyFamily, which has some additional information about Fingerprints and PGP keys

func ParseKeyFamily

func ParseKeyFamily(g *GlobalContext, jw *jsonw.Wrapper) (ret *KeyFamily, err error)

ParseKeyFamily takes as input a dictionary from a JSON file and returns a parsed version for manipulation in the program.

func (KeyFamily) Export added in v1.0.17

func (kf KeyFamily) Export() []keybase1.PublicKey

func (*KeyFamily) LocalDelegate

func (kf *KeyFamily) LocalDelegate(key GenericKey) (err error)

LocalDelegate performs a local key delegation, without the server's permissions. We'll need to do this when a key is locally generated.

func (KeyFamily) ShallowCopy added in v1.0.19

func (kf KeyFamily) ShallowCopy() *KeyFamily

type KeyFamilyError

type KeyFamilyError struct {
	Msg string
}

func (KeyFamilyError) Error

func (e KeyFamilyError) Error() string

type KeyGenError

type KeyGenError struct {
	Msg string
}

func (KeyGenError) Error

func (e KeyGenError) Error() string

func (KeyGenError) ToStatus

func (e KeyGenError) ToStatus() (s keybase1.Status)

type KeyRevokedError

type KeyRevokedError struct {
	// contains filtered or unexported fields
}

func (KeyRevokedError) Error

func (r KeyRevokedError) Error() string

func (KeyRevokedError) ToStatus added in v1.0.17

func (e KeyRevokedError) ToStatus() keybase1.Status

type KeyRole

type KeyRole int
const (
	DLGNone KeyRole = iota
	DLGSibkey
	DLGSubkey
)

type KeySection

type KeySection struct {
	Key            GenericKey
	EldestKID      keybase1.KID
	ParentKID      keybase1.KID
	HasRevSig      bool
	RevSig         string
	SigningUser    UserBasic
	IncludePGPHash bool
}

func (KeySection) ToJSON

func (arg KeySection) ToJSON() (*jsonw.Wrapper, error)

type KeyStatus

type KeyStatus int
const (
	KeyUncancelled KeyStatus = iota
	KeyRevoked
	KeyDeleted
	KeySuperseded
)

type KeyType

type KeyType int

type KeyUnimplementedError

type KeyUnimplementedError struct{}

func (KeyUnimplementedError) Error

func (k KeyUnimplementedError) Error() string

type KeyUnlocker

type KeyUnlocker struct {
	Contextified
	// contains filtered or unexported fields
}

func NewKeyUnlocker added in v1.0.19

func NewKeyUnlocker(g *GlobalContext, tries int, reason string, keyDesc string, which PassphraseType, useSecretStore bool, ui SecretUI, unlocker UnlockerFunc) KeyUnlocker

func (KeyUnlocker) Run

func (arg KeyUnlocker) Run() (ret GenericKey, err error)

type KeyVersionError

type KeyVersionError struct{}

func (KeyVersionError) Error

func (k KeyVersionError) Error() string

type KeybasePacket

type KeybasePacket struct {
	Body    interface{}        `codec:"body"`
	Hash    *KeybasePacketHash `codec:"hash,omitempty"`
	Tag     int                `codec:"tag"`
	Version int                `codec:"version"`
}

func DecodeArmoredPacket

func DecodeArmoredPacket(s string) (*KeybasePacket, error)

func DecodePacket

func DecodePacket(data []byte) (ret *KeybasePacket, err error)

func NewKeybasePacket added in v1.0.17

func NewKeybasePacket(body interface{}, tag int, version int) (*KeybasePacket, error)

func (*KeybasePacket) ArmoredEncode

func (p *KeybasePacket) ArmoredEncode() (ret string, err error)

func (*KeybasePacket) Encode

func (p *KeybasePacket) Encode() ([]byte, error)

func (*KeybasePacket) EncodeTo

func (p *KeybasePacket) EncodeTo(w io.Writer) error

func (KeybasePacket) ToNaclSigInfo

func (p KeybasePacket) ToNaclSigInfo() (*NaclSigInfo, error)

func (KeybasePacket) ToSKB

func (p KeybasePacket) ToSKB() (*SKB, error)

type KeybasePacketHash

type KeybasePacketHash struct {
	Type  int    `codec:"type"`
	Value []byte `codec:"value"`
}

type KeybasePackets

type KeybasePackets []*KeybasePacket

func DecodePacketsUnchecked

func DecodePacketsUnchecked(reader io.Reader) (ret KeybasePackets, err error)

DecodePacketsUnchecked decodes an array of packets from `reader`. It does *not* check that the stream was canonical msgpack.

func (KeybasePackets) Encode

func (p KeybasePackets) Encode() ([]byte, error)

func (KeybasePackets) EncodeTo

func (p KeybasePackets) EncodeTo(w io.Writer) error

func (KeybasePackets) ToListOfSKBs

func (p KeybasePackets) ToListOfSKBs() ([]*SKB, error)

type KeybaseSaltpackError

type KeybaseSaltpackError struct{}

func (KeybaseSaltpackError) Error

func (e KeybaseSaltpackError) Error() string

type KeybaseTime

type KeybaseTime struct {
	Unix  int64 // UTC wallclock time
	Chain int   // Merkle root chain time
}

We have two notions of time we can use -- standard UTC which might be screwy (skewy) based upon local clock problems; or MerkleRoot seqno, which is totally ordered and all clients and server ought to agree on it. The issue is that we're not uniformly signing Merkle roots into signatures, especially those generated on the Web site.

func NowAsKeybaseTime

func NowAsKeybaseTime(seqno int) *KeybaseTime

NowAsKeybaseTime makes a representation of now. IF we don't know the MerkleTree chain seqno, just use 0

func TclToKeybaseTime

func TclToKeybaseTime(tcl TypedChainLink) *KeybaseTime

TclToKeybaseTime turns a TypedChainLink into a KeybaseTime tuple, looking inside the chainlink for the Unix wallclock and the global MerkleChain seqno.

type KeyringFile

type KeyringFile struct {
	Entities openpgp.EntityList

	Contextified
	// contains filtered or unexported fields
}

func (KeyringFile) GetFilename

func (k KeyringFile) GetFilename() string

func (*KeyringFile) Index

func (k *KeyringFile) Index() error

func (*KeyringFile) Load

func (k *KeyringFile) Load() error

func (*KeyringFile) LoadAndIndex

func (k *KeyringFile) LoadAndIndex() error

func (KeyringFile) Save

func (k KeyringFile) Save(g *GlobalContext) error

func (KeyringFile) WriteTo

func (k KeyringFile) WriteTo(w io.Writer) (int64, error)

type Keyrings

type Keyrings struct {
	Contextified
}

func NewKeyrings

func NewKeyrings(g *GlobalContext) *Keyrings

func (*Keyrings) GetSecretKeyAndSKBWithPrompt

func (k *Keyrings) GetSecretKeyAndSKBWithPrompt(arg SecretKeyPromptArg) (key GenericKey, skb *SKB, err error)

func (*Keyrings) GetSecretKeyLocked

func (k *Keyrings) GetSecretKeyLocked(lctx LoginContext, ska SecretKeyArg) (ret *SKB, err error)

GetSecretKeyLocked gets a secret key for the current user by first looking for keys synced from the server, and if that fails, tries those in the local Keyring that are also active for the user. In any case, the key will be locked.

func (*Keyrings) GetSecretKeyWithPassphrase

func (k *Keyrings) GetSecretKeyWithPassphrase(lctx LoginContext, me *User, passphrase string, secretStorer SecretStorer) (key GenericKey, err error)

func (*Keyrings) GetSecretKeyWithPrompt

func (k *Keyrings) GetSecretKeyWithPrompt(arg SecretKeyPromptArg) (key GenericKey, err error)

TODO: Figure out whether and how to dep-inject the SecretStore.

func (*Keyrings) GetSecretKeyWithStoredSecret

func (k *Keyrings) GetSecretKeyWithStoredSecret(lctx LoginContext, ska SecretKeyArg, me *User, secretRetriever SecretRetriever) (key GenericKey, err error)

func (*Keyrings) GetSecretKeyWithoutPrompt

func (k *Keyrings) GetSecretKeyWithoutPrompt(lctx LoginContext, ska SecretKeyArg) (key GenericKey, err error)

func (*Keyrings) MakeKeyrings

func (k *Keyrings) MakeKeyrings(filenames []string, isPublic bool) []*KeyringFile

type LKSec

type LKSec struct {
	Contextified
	// contains filtered or unexported fields
}

func NewLKSec

func NewLKSec(pps *PassphraseStream, uid keybase1.UID, gc *GlobalContext) *LKSec

func NewLKSecForEncrypt

func NewLKSecForEncrypt(ui SecretUI, uid keybase1.UID, gc *GlobalContext) (ret *LKSec, err error)

NewLKSForEncrypt gets a verified passphrase stream, and returns an LKS that works for encryption.

func NewLKSecWithClientHalf

func NewLKSecWithClientHalf(clientHalf LKSecClientHalf, ppgen PassphraseGeneration, uid keybase1.UID, gc *GlobalContext) *LKSec

func NewLKSecWithFullSecret

func NewLKSecWithFullSecret(secret LKSecFullSecret, uid keybase1.UID, gc *GlobalContext) *LKSec

func (LKSec) ClientHalf added in v1.0.18

func (s LKSec) ClientHalf() LKSecClientHalf

func (*LKSec) ComputeClientHalf added in v1.0.18

func (s *LKSec) ComputeClientHalf() (ret LKSecClientHalf, err error)

func (*LKSec) CorruptedFullSecretForBug3964Testing added in v1.0.18

func (s *LKSec) CorruptedFullSecretForBug3964Testing(srv LKSecServerHalf) LKSecFullSecret

func (*LKSec) Decrypt

func (s *LKSec) Decrypt(lctx LoginContext, src []byte) (res []byte, gen PassphraseGeneration, erroneousMask LKSecServerHalf, err error)

func (*LKSec) Encrypt

func (s *LKSec) Encrypt(src []byte) (res []byte, err error)

func (*LKSec) EncryptClientHalfRecovery

func (s *LKSec) EncryptClientHalfRecovery(key GenericKey) (string, error)

EncryptClientHalfRecovery takes the client half of the LKS secret and encrypts it for the given key. This is for recovery of passphrases on device recovery operations.

func (*LKSec) FullSecret added in v1.0.18

func (s *LKSec) FullSecret() LKSecFullSecret

func (*LKSec) GenerateServerHalf

func (s *LKSec) GenerateServerHalf() error

func (LKSec) Generation

func (s LKSec) Generation() PassphraseGeneration

Generation returns the passphrase generation that this local key security object is derived from.

func (*LKSec) GetSecret

func (s *LKSec) GetSecret(lctx LoginContext) (secret LKSecFullSecret, err error)

func (*LKSec) GetServerHalf

func (s *LKSec) GetServerHalf() LKSecServerHalf

func (*LKSec) Load

func (s *LKSec) Load(lctx LoginContext) (err error)

func (*LKSec) LoadServerDetails added in v1.0.18

func (s *LKSec) LoadServerDetails(lctx LoginContext) (ret DeviceKeyMap, err error)

func (*LKSec) LoadServerHalf added in v1.0.17

func (s *LKSec) LoadServerHalf(lctx LoginContext) (err error)

func (LKSec) ServerHalf added in v1.0.18

func (s LKSec) ServerHalf() LKSecServerHalf

func (*LKSec) SetClientHalf

func (s *LKSec) SetClientHalf(b LKSecClientHalf)

func (*LKSec) SetFullSecret added in v1.0.18

func (s *LKSec) SetFullSecret()

func (*LKSec) SetServerHalf

func (s *LKSec) SetServerHalf(b LKSecServerHalf)

func (*LKSec) SetUID

func (s *LKSec) SetUID(u keybase1.UID)

func (*LKSec) ToSKB added in v1.0.18

func (s *LKSec) ToSKB(key GenericKey) (ret *SKB, err error)

ToSKB exports a generic key with the given LKSec to a SecretKeyBundle, performing all necessary encryption.

type LKSecClientHalf added in v1.0.18

type LKSecClientHalf struct {
	// contains filtered or unexported fields
}

func NewLKSecClientHalfFromBytes added in v1.0.18

func NewLKSecClientHalfFromBytes(b []byte) (ret LKSecClientHalf, err error)

func (LKSecClientHalf) Bytes added in v1.0.18

func (c LKSecClientHalf) Bytes() []byte

func (LKSecClientHalf) ComputeMask added in v1.0.18

func (c LKSecClientHalf) ComputeMask(c2 LKSecClientHalf) LKSecMask

func (LKSecClientHalf) Equal added in v1.0.18

func (c LKSecClientHalf) Equal(c2 LKSecClientHalf) bool

func (LKSecClientHalf) IsNil added in v1.0.18

func (c LKSecClientHalf) IsNil() bool

type LKSecFullSecret added in v1.0.18

type LKSecFullSecret struct {
	// contains filtered or unexported fields
}

func (LKSecFullSecret) Bytes added in v1.0.18

func (f LKSecFullSecret) Bytes() []byte

func (LKSecFullSecret) Equal added in v1.0.18

func (f LKSecFullSecret) Equal(f2 LKSecFullSecret) bool

func (LKSecFullSecret) IsNil added in v1.0.18

func (f LKSecFullSecret) IsNil() bool

type LKSecMask added in v1.0.18

type LKSecMask struct {
	// contains filtered or unexported fields
}

func (LKSecMask) EncodeToHex added in v1.0.18

func (m LKSecMask) EncodeToHex() string

func (LKSecMask) IsNil added in v1.0.18

func (m LKSecMask) IsNil() bool

type LKSecServerHalf added in v1.0.18

type LKSecServerHalf struct {
	// contains filtered or unexported fields
}

func NewLKSecServerHalfFromHex added in v1.0.18

func NewLKSecServerHalfFromHex(s string) (ret LKSecServerHalf, err error)

func NewLKSecServerHalfZeros added in v1.0.18

func NewLKSecServerHalfZeros() LKSecServerHalf

func (LKSecServerHalf) Bytes added in v1.0.18

func (s LKSecServerHalf) Bytes() []byte

func (LKSecServerHalf) ComputeClientHalf added in v1.0.18

func (s LKSecServerHalf) ComputeClientHalf(f LKSecFullSecret) LKSecClientHalf

func (LKSecServerHalf) ComputeFullSecret added in v1.0.18

func (s LKSecServerHalf) ComputeFullSecret(c LKSecClientHalf) LKSecFullSecret

func (LKSecServerHalf) EncodeToHex added in v1.0.18

func (s LKSecServerHalf) EncodeToHex() string

func (LKSecServerHalf) IsNil added in v1.0.18

func (s LKSecServerHalf) IsNil() bool

type LKSecServerHalfSet added in v1.0.18

type LKSecServerHalfSet struct {
	// contains filtered or unexported fields
}

func NewLKSecServerHalfSet added in v1.0.18

func NewLKSecServerHalfSet() *LKSecServerHalfSet

func (*LKSecServerHalfSet) Add added in v1.0.18

func (*LKSecServerHalfSet) EncodeToHexList added in v1.0.18

func (l *LKSecServerHalfSet) EncodeToHexList() string

type LevelDBOpenClosedError added in v1.0.19

type LevelDBOpenClosedError struct{}

func (LevelDBOpenClosedError) Error added in v1.0.19

func (e LevelDBOpenClosedError) Error() string

type LevelDb

type LevelDb struct {
	// We use a RWMutex here to ensure close doesn't happen in the middle of
	// other DB operations, and DB operations doesn't happen after close. The
	// lock should be considered for the db pointer and dbOpenerOnce pointer,
	// rather than the DB itself.  More specifically, close does Lock(), while
	// other DB operations does RLock().
	sync.RWMutex

	Contextified
	// contains filtered or unexported fields
}

func NewLevelDb

func NewLevelDb(g *GlobalContext, filename func() string) *LevelDb

func (*LevelDb) Close

func (l *LevelDb) Close() error

func (*LevelDb) Delete

func (l *LevelDb) Delete(id DbKey) error

func (*LevelDb) ForceOpen

func (l *LevelDb) ForceOpen() error

ForceOpen opens the leveldb file. This is used in situations where we want to get around the lazy open and make sure we can use it later.

func (*LevelDb) Get

func (l *LevelDb) Get(id DbKey) (val []byte, found bool, err error)

func (*LevelDb) GetFilename

func (l *LevelDb) GetFilename() string

func (*LevelDb) Lookup

func (l *LevelDb) Lookup(id DbKey) (val []byte, found bool, err error)

func (*LevelDb) Nuke

func (l *LevelDb) Nuke() (string, error)

func (*LevelDb) Open

func (l *LevelDb) Open() error

Explicit open does nothing we'll wait for a lazy open

func (*LevelDb) OpenTransaction added in v1.0.18

func (l *LevelDb) OpenTransaction() (LocalDbTransaction, error)

func (*LevelDb) Put

func (l *LevelDb) Put(id DbKey, aliases []DbKey, value []byte) error

type LevelDbTransaction added in v1.0.18

type LevelDbTransaction struct {
	// contains filtered or unexported fields
}

func (LevelDbTransaction) Commit added in v1.0.18

func (l LevelDbTransaction) Commit() error

func (LevelDbTransaction) Delete added in v1.0.18

func (l LevelDbTransaction) Delete(id DbKey) error

func (LevelDbTransaction) Discard added in v1.0.18

func (l LevelDbTransaction) Discard()

func (LevelDbTransaction) Get added in v1.0.18

func (l LevelDbTransaction) Get(id DbKey) (val []byte, found bool, err error)

func (LevelDbTransaction) Lookup added in v1.0.18

func (l LevelDbTransaction) Lookup(id DbKey) (val []byte, found bool, err error)

func (LevelDbTransaction) Put added in v1.0.18

func (l LevelDbTransaction) Put(id DbKey, aliases []DbKey, value []byte) error

type Lexer

type Lexer struct {
	// contains filtered or unexported fields
}

func NewLexer

func NewLexer(s string) *Lexer

func (*Lexer) Get

func (lx *Lexer) Get() *Token

func (*Lexer) Putback

func (lx *Lexer) Putback()

type LinkCache

type LinkCache struct {
	// contains filtered or unexported fields
}

LinkCache is a cache of ChainLinks. It is safe to use concurrently.

func NewLinkCache

func NewLinkCache(maxSize int, cleanDur time.Duration) *LinkCache

NewLinkCache creates a LinkCache. When finished using this LinkCache, call Shutdown on it to clean up.

func (*LinkCache) Get

func (c *LinkCache) Get(id LinkID) (link ChainLink, ok bool)

Get retrieves a ChainLink from the cache. If nothing exists for this LinkID, it will return false for ok.

func (*LinkCache) Len

func (c *LinkCache) Len() int

Len returns the number of ChainLinks cached.

func (*LinkCache) Mutate

func (c *LinkCache) Mutate(id LinkID, f func(c *ChainLink))

func (*LinkCache) Put

func (c *LinkCache) Put(id LinkID, link ChainLink)

Put inserts a ChainLink into the cache.

func (*LinkCache) Remove

func (c *LinkCache) Remove(id LinkID)

Remove deletes a ChainLink from the cache.

func (*LinkCache) Shutdown

func (c *LinkCache) Shutdown()

Shutdown terminates the use of this cache.

type LinkCheckResult

type LinkCheckResult struct {
	// contains filtered or unexported fields
}

func (LinkCheckResult) Export

func (LinkCheckResult) ExportToIdentifyRow

func (l LinkCheckResult) ExportToIdentifyRow(i int) keybase1.IdentifyRow

func (LinkCheckResult) GetCached

func (l LinkCheckResult) GetCached() *CheckResult

func (LinkCheckResult) GetDiff

func (l LinkCheckResult) GetDiff() TrackDiff

func (LinkCheckResult) GetError

func (l LinkCheckResult) GetError() error

func (LinkCheckResult) GetHint

func (l LinkCheckResult) GetHint() *SigHint

func (LinkCheckResult) GetPosition

func (l LinkCheckResult) GetPosition() int

func (LinkCheckResult) GetTorWarning

func (l LinkCheckResult) GetTorWarning() bool

type LinkID

type LinkID []byte

func ComputeLinkID

func ComputeLinkID(d []byte) LinkID

func GetLinkID

func GetLinkID(w *jsonw.Wrapper) (LinkID, error)

func ImportLinkID added in v1.0.19

func ImportLinkID(i keybase1.LinkID) (LinkID, error)

func LinkIDFromHex

func LinkIDFromHex(s string) (LinkID, error)

func SignJSON

func SignJSON(jw *jsonw.Wrapper, key GenericKey) (out string, id keybase1.SigID, lid LinkID, err error)

SimpleSignJson marshals the given Json structure and then signs it.

func (LinkID) Eq

func (l LinkID) Eq(i2 LinkID) bool

func (LinkID) Export added in v1.0.19

func (i LinkID) Export() keybase1.LinkID

func (*LinkID) MarshalJSON

func (l *LinkID) MarshalJSON() ([]byte, error)

func (LinkID) String

func (l LinkID) String() string

func (*LinkID) UnmarshalJSON

func (l *LinkID) UnmarshalJSON(b []byte) error

type LinkType

type LinkType string

type LoadUserArg

type LoadUserArg struct {
	Contextified
	UID                      keybase1.UID
	Name                     string // Can also be an assertion like foo@twitter
	PublicKeyOptional        bool
	NoCacheResult            bool // currently ignore
	Self                     bool
	ForceReload              bool
	ForcePoll                bool // for cached user load, force a repoll
	StaleOK                  bool // if stale cached versions are OK (for immutable fields)
	AllKeys                  bool
	LoginContext             LoginContext
	AbortIfSigchainUnchanged bool
	ResolveBody              *jsonw.Wrapper // some load paths plumb this through

	// We might have already loaded these if we're falling back from a
	// failed LoadUserPlusKeys load
	MerkleLeaf *MerkleUserLeaf
	SigHints   *SigHints

	// NetContext is the context to build on top of.  We'll make a new
	// Debug Tag for this LoadUser Operation.
	NetContext context.Context
}

func NewLoadUserArg

func NewLoadUserArg(g *GlobalContext) LoadUserArg

func NewLoadUserArgBase added in v1.0.19

func NewLoadUserArgBase(g *GlobalContext) *LoadUserArg

func NewLoadUserByNameArg

func NewLoadUserByNameArg(g *GlobalContext, name string) LoadUserArg

func NewLoadUserByUIDArg

func NewLoadUserByUIDArg(ctx context.Context, g *GlobalContext, uid keybase1.UID) LoadUserArg

func NewLoadUserByUIDForceArg added in v1.0.19

func NewLoadUserByUIDForceArg(g *GlobalContext, uid keybase1.UID) LoadUserArg

func NewLoadUserForceArg

func NewLoadUserForceArg(g *GlobalContext) LoadUserArg

func NewLoadUserPubOptionalArg

func NewLoadUserPubOptionalArg(g *GlobalContext) LoadUserArg

func NewLoadUserSelfArg added in v1.0.19

func NewLoadUserSelfArg(g *GlobalContext) LoadUserArg

func (*LoadUserArg) GetNetContext added in v1.0.19

func (arg *LoadUserArg) GetNetContext() context.Context

func (LoadUserArg) String added in v1.0.19

func (arg LoadUserArg) String() string

func (*LoadUserArg) WithLogTag added in v1.0.19

func (arg *LoadUserArg) WithLogTag() context.Context

func (*LoadUserArg) WithNetContext added in v1.0.19

func (arg *LoadUserArg) WithNetContext(ctx context.Context) *LoadUserArg

func (*LoadUserArg) WithPublicKeyOptional added in v1.0.19

func (arg *LoadUserArg) WithPublicKeyOptional() *LoadUserArg

func (*LoadUserArg) WithUID added in v1.0.19

func (arg *LoadUserArg) WithUID(uid keybase1.UID) *LoadUserArg

type LocalDb

type LocalDb interface {
	LocalDbOps
	Open() error
	ForceOpen() error
	Close() error
	Nuke() (string, error)
	OpenTransaction() (LocalDbTransaction, error)
}

type LocalDbOps added in v1.0.18

type LocalDbOps interface {
	Put(id DbKey, aliases []DbKey, value []byte) error
	Delete(id DbKey) error
	Get(id DbKey) ([]byte, bool, error)
	Lookup(alias DbKey) ([]byte, bool, error)
}

type LocalDbTransaction added in v1.0.18

type LocalDbTransaction interface {
	LocalDbOps
	Commit() error
	Discard()
}

type LockPIDFile

type LockPIDFile struct {
	// contains filtered or unexported fields
}

func NewLockPIDFile

func NewLockPIDFile(s string) *LockPIDFile

func (*LockPIDFile) Close

func (f *LockPIDFile) Close() (err error)

func (*LockPIDFile) Lock

func (f *LockPIDFile) Lock() (err error)

Open the file with exclusive access (locked to other processes) When the process exits, the lock will be released.

type LockTable

type LockTable struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*LockTable) AcquireOnName

func (t *LockTable) AcquireOnName(ctx context.Context, g VLogContext, s string) (ret *NamedLock)

type LogContext added in v1.0.18

type LogContext interface {
	GetLog() logger.Logger
}

type LogFunc added in v1.0.18

type LogFunc func(format string, args ...interface{})

type LogSendContext added in v1.0.17

type LogSendContext struct {
	Contextified
	Logs Logs
}

LogSendContext for LogSend

func (*LogSendContext) LogSend added in v1.0.17

func (l *LogSendContext) LogSend(statusJSON string, numLines int) (string, error)

LogSend sends the the tails of log files to kb

type LogUI

type LogUI interface {
	Debug(format string, args ...interface{})
	Info(format string, args ...interface{})
	Warning(format string, args ...interface{})
	Notice(format string, args ...interface{})
	Errorf(format string, args ...interface{})
	Critical(format string, args ...interface{})
}

type LoggedInError

type LoggedInError struct{}

func (LoggedInError) Error

func (e LoggedInError) Error() string

func (LoggedInError) ToStatus

func (e LoggedInError) ToStatus() (s keybase1.Status)

type LoggedInHelper

type LoggedInHelper interface {
	GetUID() keybase1.UID
	LoggedInLoad() (bool, error)
}

type LoggedInWrongUserError

type LoggedInWrongUserError struct {
	ExistingName  NormalizedUsername
	AttemptedName NormalizedUsername
}

func (LoggedInWrongUserError) Error

func (e LoggedInWrongUserError) Error() string

func (LoggedInWrongUserError) ToStatus

func (e LoggedInWrongUserError) ToStatus() (s keybase1.Status)

type LoginContext

type LoginContext interface {
	LoggedInLoad() (bool, error)
	LoggedInProvisionedLoad() (bool, error)
	Logout() error

	CreateStreamCache(tsec Triplesec, pps *PassphraseStream)
	CreateStreamCacheViaStretch(passphrase string) error
	PassphraseStreamCache() *PassphraseStreamCache
	ClearStreamCache()
	SetStreamGeneration(gen PassphraseGeneration, nilPPStreamOK bool)
	GetStreamGeneration() PassphraseGeneration

	CreateLoginSessionWithSalt(emailOrUsername string, salt []byte) error
	LoadLoginSession(emailOrUsername string) error
	LoginSession() *LoginSession
	ClearLoginSession()

	LocalSession() *Session
	GetUID() keybase1.UID
	EnsureUsername(username NormalizedUsername)
	SaveState(sessionID, csrf string, username NormalizedUsername, uid keybase1.UID, deviceID keybase1.DeviceID) error

	Keyring() (*SKBKeyringFile, error)
	ClearKeyring()
	LockedLocalSecretKey(ska SecretKeyArg) (*SKB, error)

	SecretSyncer() *SecretSyncer
	RunSecretSyncer(uid keybase1.UID) error

	CachedSecretKey(ska SecretKeyArg) (GenericKey, error)
	SetCachedSecretKey(ska SecretKeyArg, key GenericKey) error
	SetUnlockedPaperKey(sig GenericKey, enc GenericKey) error

	SetLKSec(lksec *LKSec)
}

LoginContext is passed to all loginHandler functions. It allows them safe access to various parts of the LoginState during the login process.

type LoginHook added in v1.0.16

type LoginHook interface {
	OnLogin() error
}

type LoginRequiredError

type LoginRequiredError struct {
	Context string
}

func (LoginRequiredError) Error

func (e LoginRequiredError) Error() string

func (LoginRequiredError) ToStatus

func (u LoginRequiredError) ToStatus() (s keybase1.Status)

type LoginSession

type LoginSession struct {
	Contextified
	// contains filtered or unexported fields
}

func NewLoginSession

func NewLoginSession(emailOrUsername string, g *GlobalContext) *LoginSession

func NewLoginSessionWithSalt

func NewLoginSessionWithSalt(emailOrUsername string, salt []byte, g *GlobalContext) *LoginSession

Upon signup, a login session is created with a generated salt.

func (*LoginSession) Clear

func (s *LoginSession) Clear() error

Clear removes the loginSession value from s. It does not clear the salt. Unclear how this is useful.

func (*LoginSession) Dump

func (s *LoginSession) Dump()

func (*LoginSession) ExistsFor

func (s *LoginSession) ExistsFor(emailOrUsername string) bool

func (*LoginSession) Load

func (s *LoginSession) Load() error

func (*LoginSession) NotExpired

func (s *LoginSession) NotExpired() bool

func (*LoginSession) Salt

func (s *LoginSession) Salt() ([]byte, error)

func (*LoginSession) Session

func (s *LoginSession) Session() ([]byte, error)

func (*LoginSession) SessionEncoded

func (s *LoginSession) SessionEncoded() (string, error)

func (*LoginSession) Status

func (s *LoginSession) Status() *keybase1.SessionStatus

type LoginSessionNotFound

type LoginSessionNotFound struct {
	SessionID int
}

func (LoginSessionNotFound) Error

func (e LoginSessionNotFound) Error() string

type LoginState

type LoginState struct {
	Contextified
	// contains filtered or unexported fields
}

LoginState controls the state of the current user's login session and associated variables. It also serializes access to the various Login functions and requests for the Account object.

func NewLoginState

func NewLoginState(g *GlobalContext) *LoginState

NewLoginState creates a LoginState and starts the request handler goroutine.

func (*LoginState) Account

func (s *LoginState) Account(h acctHandler, name string) error

Account is a convenience function to allow access to LoginState's Account object. For example:

e.G().LoginState().Account(func (a *Account) {
    skb = a.LockedLocalSecretKey(ska)
}, "LockedLocalSecretKey")

func (*LoginState) AccountDump

func (s *LoginState) AccountDump()

func (*LoginState) ExternalFunc

func (s *LoginState) ExternalFunc(f loginHandler, name string) error

ExternalFunc is for having the LoginState handler call a function outside of LoginState. The current use case is for signup, so that no logins/logouts happen while a signup is happening.

func (*LoginState) GetPassphraseStream

func (s *LoginState) GetPassphraseStream(ui SecretUI) (pps *PassphraseStream, err error)

GetPassphraseStream either returns a cached, verified passphrase stream (maybe from a previous login) or generates a new one via Login. It will return the current Passphrase stream on success or an error on failure.

func (*LoginState) GetPassphraseStreamForUser

func (s *LoginState) GetPassphraseStreamForUser(ui SecretUI, username string) (pps *PassphraseStream, err error)

GetPassphraseStreamForUser either returns a cached, verified passphrase stream (maybe from a previous login) or generates a new one via Login. It will return the current Passphrase stream on success or an error on failure.

func (*LoginState) GetPassphraseStreamStored added in v1.0.18

func (s *LoginState) GetPassphraseStreamStored(ui SecretUI) (pps *PassphraseStream, err error)

GetPassphraseStreamStored either returns a cached, verified passphrase stream from a previous login, the secret store, or generates a new one via login.

func (*LoginState) GetPassphraseStreamWithPassphrase

func (s *LoginState) GetPassphraseStreamWithPassphrase(passphrase string) (pps *PassphraseStream, err error)

GetPassphraseStreamWithPassphrase either returns a cached, verified passphrase stream (maybe from a previous login) or generates a new one via Login. It will return the current Passphrase stream on success or an error on failure.

func (*LoginState) GetUID

func (s *LoginState) GetUID() (ret keybase1.UID)

func (*LoginState) GetVerifiedTriplesec

func (s *LoginState) GetVerifiedTriplesec(ui SecretUI) (ret Triplesec, gen PassphraseGeneration, err error)

GetVerifiedTripleSec either returns a cached, verified Triplesec or generates a new one that's verified via Login.

func (*LoginState) Keyring

func (s *LoginState) Keyring(h func(*SKBKeyringFile), name string) error

func (*LoginState) LocalSession

func (s *LoginState) LocalSession(h func(*Session), name string) error

func (*LoginState) LoggedIn

func (s *LoginState) LoggedIn() bool

func (*LoginState) LoggedInLoad

func (s *LoginState) LoggedInLoad() (lin bool, err error)

func (*LoginState) LoggedInProvisionedLoad

func (s *LoginState) LoggedInProvisionedLoad() (lin bool, err error)

func (*LoginState) LoginSession

func (s *LoginState) LoginSession(h func(*LoginSession), name string) error

func (*LoginState) LoginWithKey

func (s *LoginState) LoginWithKey(lctx LoginContext, user *User, key GenericKey, after afterFn) (err error)

func (*LoginState) LoginWithPassphrase

func (s *LoginState) LoginWithPassphrase(username, passphrase string, storeSecret bool, after afterFn) (err error)

func (*LoginState) LoginWithPrompt

func (s *LoginState) LoginWithPrompt(username string, loginUI LoginUI, secretUI SecretUI, after afterFn) (err error)

func (*LoginState) LoginWithStoredSecret

func (s *LoginState) LoginWithStoredSecret(username string, after afterFn) (err error)

func (*LoginState) Logout

func (s *LoginState) Logout() error

func (*LoginState) MutateKeyring added in v1.0.18

func (s *LoginState) MutateKeyring(h func(*SKBKeyringFile) *SKBKeyringFile, name string) error

func (*LoginState) PassphraseStream

func (s *LoginState) PassphraseStream() (*PassphraseStream, error)

func (*LoginState) PassphraseStreamCache

func (s *LoginState) PassphraseStreamCache(h func(*PassphraseStreamCache), name string) error

func (*LoginState) PassphraseStreamGeneration

func (s *LoginState) PassphraseStreamGeneration() (PassphraseGeneration, error)

func (*LoginState) ResetAccount added in v1.0.19

func (s *LoginState) ResetAccount(un string) (err error)

func (*LoginState) RunSecretSyncer

func (s *LoginState) RunSecretSyncer(uid keybase1.UID) error

func (*LoginState) SecretSyncer

func (s *LoginState) SecretSyncer(h func(*SecretSyncer), name string) error

func (*LoginState) Shutdown

func (s *LoginState) Shutdown() error

func (*LoginState) VerifyEmailAddress

func (s *LoginState) VerifyEmailAddress(email string, secretUI SecretUI, after afterFn) (err error)

func (*LoginState) VerifyPlaintextPassphrase

func (s *LoginState) VerifyPlaintextPassphrase(pp string) (ppStream *PassphraseStream, err error)

VerifyPlaintextPassphrase verifies that the supplied plaintext passphrase is indeed the correct passphrase for the logged in user. This is accomplished via a login request. The side effect will be that we'll retrieve the correct generation number of the current passphrase from the server.

type LoginUI

type LoginUI interface {
	keybase1.LoginUiInterface
}

type LogoutError

type LogoutError struct{}

func (LogoutError) Error

func (e LogoutError) Error() string

type LogoutHook added in v1.0.16

type LogoutHook interface {
	OnLogout() error
}

type Logs added in v1.0.17

type Logs struct {
	Desktop string
	Kbfs    string
	Service string
	Updater string
	Start   string
	Install string
	System  string
}

Logs is the struct to specify the path of log files

type LoopbackAddr

type LoopbackAddr struct{}

LoopbackAddr is an address class that implement the net.Addr interface for loopback devices

func (LoopbackAddr) Network

func (la LoopbackAddr) Network() (s string)

Network returns the name of the network

func (LoopbackAddr) String

func (la LoopbackAddr) String() (s string)

String returns the string form of address

type LoopbackConn

type LoopbackConn struct {
	// contains filtered or unexported fields
}

LoopbackConn implments the net.Conn interface but is used to loopback from a process to itself. It is goroutine safe.

func (*LoopbackConn) Close

func (lc *LoopbackConn) Close() (err error)

Close closes the connection. Any blocked Read or Write operations will be unblocked and return errors.

func (*LoopbackConn) LocalAddr

func (lc *LoopbackConn) LocalAddr() (addr net.Addr)

LocalAddr returns the local network address.

func (*LoopbackConn) Read

func (lc *LoopbackConn) Read(b []byte) (n int, err error)

Read reads data from the connection.

func (*LoopbackConn) RemoteAddr

func (lc *LoopbackConn) RemoteAddr() (addr net.Addr)

RemoteAddr returns the remote network address.

func (*LoopbackConn) SetDeadline

func (lc *LoopbackConn) SetDeadline(t time.Time) (err error)

SetDeadline sets the read and write deadlines associated with the connection. It is equivalent to calling both SetReadDeadline and SetWriteDeadline.

A deadline is an absolute time after which I/O operations fail with a timeout (see type Error) instead of blocking. The deadline applies to all future I/O, not just the immediately following call to Read or Write.

An idle timeout can be implemented by repeatedly extending the deadline after successful Read or Write calls.

A zero value for t means I/O operations will not time out.

func (*LoopbackConn) SetReadDeadline

func (lc *LoopbackConn) SetReadDeadline(t time.Time) (err error)

SetReadDeadline sets the deadline for future Read calls. A zero value for t means Read will not time out.

func (*LoopbackConn) SetWriteDeadline

func (lc *LoopbackConn) SetWriteDeadline(t time.Time) (err error)

SetWriteDeadline sets the deadline for future Write calls. Even if write times out, it may return n > 0, indicating that some of the data was successfully written. A zero value for t means Write will not time out.

func (*LoopbackConn) Write

func (lc *LoopbackConn) Write(b []byte) (n int, err error)

Write writes data to the connection.

type LoopbackListener

type LoopbackListener struct {
	// contains filtered or unexported fields
}

LoopbackListener is a listener that creates new loopback connections. It is goroutine safe.

func NewLoopbackListener

func NewLoopbackListener() *LoopbackListener

NewLoopbackListener creates a new Loopback listener

func (*LoopbackListener) Accept

func (ll *LoopbackListener) Accept() (ret net.Conn, err error)

Accept waits for and returns the next connection to the listener.

func (*LoopbackListener) Addr

func (ll *LoopbackListener) Addr() (addr net.Addr)

Addr returns the listener's network address.

func (*LoopbackListener) Close

func (ll *LoopbackListener) Close() (err error)

Close closes the listener. Any blocked Accept operations will be unblocked and return errors

func (*LoopbackListener) Dial

func (ll *LoopbackListener) Dial() (net.Conn, error)

LoopbackDial dials the given LoopbackListener and yields an new net.Conn that's a connection to it.

type Markup

type Markup struct {
	// contains filtered or unexported fields
}

func FmtMarkup

func FmtMarkup(f string, args ...interface{}) *Markup

func NewMarkup

func NewMarkup(s string) *Markup

func (*Markup) Append

func (m *Markup) Append(s string)

func (Markup) Export

func (m Markup) Export() (ret keybase1.Text)

func (Markup) GetRaw

func (m Markup) GetRaw() string

func (Markup) ToReader

func (m Markup) ToReader() io.Reader

type MerkleClashError

type MerkleClashError struct {
	// contains filtered or unexported fields
}

func (MerkleClashError) Error

func (m MerkleClashError) Error() string

type MerkleClient

type MerkleClient struct {
	Contextified

	// protects whole object
	sync.RWMutex
	// contains filtered or unexported fields
}

func NewMerkleClient

func NewMerkleClient(g *GlobalContext) *MerkleClient

func (*MerkleClient) FirstSeqnoWithSkips added in v1.0.19

func (mc *MerkleClient) FirstSeqnoWithSkips() *Seqno

func (*MerkleClient) LastRoot added in v1.0.19

func (mc *MerkleClient) LastRoot() *MerkleRoot

func (*MerkleClient) LastRootInfo added in v1.0.19

func (mc *MerkleClient) LastRootInfo() (*chat1.MerkleRoot, error)

Can return (nil, nil) if no root is known.

func (*MerkleClient) LastRootToSigJSON

func (mc *MerkleClient) LastRootToSigJSON() (ret *jsonw.Wrapper, err error)

func (*MerkleClient) LookupUser

func (mc *MerkleClient) LookupUser(ctx context.Context, q HTTPArgs, sigHints *SigHints) (u *MerkleUserLeaf, err error)

type MerkleClientError

type MerkleClientError struct {
	// contains filtered or unexported fields
}

func (MerkleClientError) Error

func (m MerkleClientError) Error() string

type MerkleNotFoundError

type MerkleNotFoundError struct {
	// contains filtered or unexported fields
}

func (MerkleNotFoundError) Error

func (m MerkleNotFoundError) Error() string

type MerkleRoot

type MerkleRoot struct {
	Contextified
	// contains filtered or unexported fields
}

func NewMerkleRootFromJSON

func NewMerkleRootFromJSON(jw *jsonw.Wrapper, g *GlobalContext) (ret *MerkleRoot, err error)

func (*MerkleRoot) Ctime added in v1.0.19

func (mr *MerkleRoot) Ctime() int64

func (*MerkleRoot) HasSkips added in v1.0.19

func (mr *MerkleRoot) HasSkips() bool

func (*MerkleRoot) LegacyUIDRootHash added in v1.0.19

func (mr *MerkleRoot) LegacyUIDRootHash() NodeHash

func (*MerkleRoot) RootHash added in v1.0.19

func (mr *MerkleRoot) RootHash() NodeHash

func (*MerkleRoot) Seqno added in v1.0.19

func (mr *MerkleRoot) Seqno() *Seqno

func (MerkleRoot) ShallowCopy added in v1.0.19

func (mr MerkleRoot) ShallowCopy() *MerkleRoot

func (MerkleRoot) ShortHash added in v1.0.19

func (mr MerkleRoot) ShortHash() NodeHashShort

func (*MerkleRoot) SkipToSeqno added in v1.0.19

func (mr *MerkleRoot) SkipToSeqno(s Seqno) NodeHash

func (*MerkleRoot) Store

func (mr *MerkleRoot) Store(storeFirstSkip bool) error

func (*MerkleRoot) ToInfo added in v1.0.19

func (mr *MerkleRoot) ToInfo() chat1.MerkleRoot

func (*MerkleRoot) ToJSON

func (mr *MerkleRoot) ToJSON() (jw *jsonw.Wrapper)

func (*MerkleRoot) ToSigJSON

func (mr *MerkleRoot) ToSigJSON() (ret *jsonw.Wrapper)

type MerkleRootPayload added in v1.0.19

type MerkleRootPayload struct {
	// contains filtered or unexported fields
}

func NewMerkleRootPayloadFromJSONString added in v1.0.19

func NewMerkleRootPayloadFromJSONString(s string) (ret MerkleRootPayload, err error)

type MerkleRootPayloadUnpacked added in v1.0.19

type MerkleRootPayloadUnpacked struct {
	Body struct {
		Kbfs struct {
			Private struct {
				Root    *string `json:"root"`
				Version *int    `json:"version"`
			} `json:"private"`
			Public struct {
				Root    *string `json:"root"`
				Version *int    `json:"version"`
			} `json:"public"`
		} `json:"kbfs"`
		Key struct {
			Fingerprint PGPFingerprint `json:"fingerprint"`
			KeyID       string         `json:"key_id"`
		} `json:"key"`
		LegacyUIDRoot NodeHashShort `json:"legacy_uid_root"`
		Prev          NodeHashLong  `json:"prev"`
		Root          NodeHashLong  `json:"root"`
		Seqno         Seqno         `json:"seqno"`
		Skips         SkipTable     `json:"skips"`
		Txid          string        `json:"txid"`
		Type          string        `json:"type"`
		Version       int           `json:"version"`
	} `json:"body"`
	Ctime int64  `json:"ctime"`
	Tag   string `json:"tag"`
}

type MerkleTriple

type MerkleTriple struct {
	Seqno  Seqno          `json:"seqno"`
	LinkID LinkID         `json:"id"`
	SigID  keybase1.SigID `json:"sigid,omitempty"`
}

func GetMerkleTriple

func GetMerkleTriple(jw *jsonw.Wrapper) (ret *MerkleTriple, err error)

func (MerkleTriple) Less

func (mt1 MerkleTriple) Less(mt2 MerkleTriple) bool

type MerkleUserLeaf

type MerkleUserLeaf struct {
	// contains filtered or unexported fields
}

func (*MerkleUserLeaf) MatchUser

func (mul *MerkleUserLeaf) MatchUser(u *User, uid keybase1.UID, nun NormalizedUsername) (err error)

type MissingDelegationTypeError

type MissingDelegationTypeError struct{}

func (MissingDelegationTypeError) Error

type NaclDHKeyPair

type NaclDHKeyPair struct {
	Public  NaclDHKeyPublic
	Private *NaclDHKeyPrivate
}

func GenerateNaclDHKeyPair

func GenerateNaclDHKeyPair() (NaclDHKeyPair, error)

func ImportNaclDHKeyPairFromBytes

func ImportNaclDHKeyPairFromBytes(pub []byte, priv []byte) (ret NaclDHKeyPair, err error)

func ImportNaclDHKeyPairFromHex

func ImportNaclDHKeyPairFromHex(s string) (ret NaclDHKeyPair, err error)

func MakeNaclDHKeyPairFromSecret

func MakeNaclDHKeyPairFromSecret(secret [NaclDHKeySecretSize]byte) (NaclDHKeyPair, error)

MakeNaclDHKeyPairFromSecret makes a DH key pair given a secret. Of course, the security of depends entirely on the randomness of the bytes in the secret.

func (NaclDHKeyPair) CanDecrypt

func (k NaclDHKeyPair) CanDecrypt() bool

CanDecrypt returns true if there's a private key available

func (NaclDHKeyPair) CanEncrypt

func (k NaclDHKeyPair) CanEncrypt() bool

CanEncrypt always returns true for an encryption key pair.

func (NaclDHKeyPair) CanSign

func (k NaclDHKeyPair) CanSign() bool

func (NaclDHKeyPair) CheckSecretKey

func (k NaclDHKeyPair) CheckSecretKey() error

func (NaclDHKeyPair) Decrypt

func (k NaclDHKeyPair) Decrypt(nei *NaclEncryptionInfo) (plaintext []byte, sender keybase1.KID, err error)

Decrypt a NaclEncryptionInfo packet, and on success return the plaintext and the KID of the sender (which might be an ephemeral key).

func (NaclDHKeyPair) DecryptFromString

func (k NaclDHKeyPair) DecryptFromString(ciphertext string) (msg []byte, sender keybase1.KID, err error)

DecryptFromString decrypts the output of EncryptToString above, and returns the KID of the other end.

func (NaclDHKeyPair) Encode

func (k NaclDHKeyPair) Encode() (string, error)

func (NaclDHKeyPair) Encrypt

func (k NaclDHKeyPair) Encrypt(msg []byte, sender *NaclDHKeyPair) (*NaclEncryptionInfo, error)

Encrypt a message for the given sender. If sender is nil, an ephemeral keypair will be invented

func (NaclDHKeyPair) EncryptToString

func (k NaclDHKeyPair) EncryptToString(plaintext []byte, sender GenericKey) (string, error)

EncryptToString encrypts the plaintext using DiffieHelman; the this object is the receiver, and the passed sender is optional. If not provided, we'll make up an ephemeral key.

func (NaclDHKeyPair) ExportPublicAndPrivate added in v1.0.18

func (k NaclDHKeyPair) ExportPublicAndPrivate() (RawPublicKey, RawPrivateKey, error)

func (NaclDHKeyPair) GetAlgoType

func (k NaclDHKeyPair) GetAlgoType() AlgoType

func (NaclDHKeyPair) GetBinaryKID added in v1.0.18

func (k NaclDHKeyPair) GetBinaryKID() (ret keybase1.BinaryKID)

func (NaclDHKeyPair) GetFingerprintP

func (k NaclDHKeyPair) GetFingerprintP() *PGPFingerprint

func (NaclDHKeyPair) GetKID

func (k NaclDHKeyPair) GetKID() keybase1.KID

func (NaclDHKeyPair) HasSecretKey

func (k NaclDHKeyPair) HasSecretKey() bool

func (NaclDHKeyPair) IsNil

func (k NaclDHKeyPair) IsNil() bool

func (NaclDHKeyPair) SecretSymmetricKey added in v1.0.18

func (k NaclDHKeyPair) SecretSymmetricKey(reason EncryptionReason) ([]byte, error)

func (NaclDHKeyPair) SignToString

func (k NaclDHKeyPair) SignToString(msg []byte) (sig string, id keybase1.SigID, err error)

func (NaclDHKeyPair) ToShortIDString

func (k NaclDHKeyPair) ToShortIDString() string

func (NaclDHKeyPair) VerboseDescription

func (k NaclDHKeyPair) VerboseDescription() string

func (NaclDHKeyPair) VerifyString

func (k NaclDHKeyPair) VerifyString(ctx VerifyContext, sig string, msg []byte) (id keybase1.SigID, err error)

func (NaclDHKeyPair) VerifyStringAndExtract

func (k NaclDHKeyPair) VerifyStringAndExtract(ctx VerifyContext, sig string) (msg []byte, id keybase1.SigID, err error)

type NaclDHKeyPrivate

type NaclDHKeyPrivate [NaclDHKeysize]byte

type NaclDHKeyPublic

type NaclDHKeyPublic [NaclDHKeysize]byte

func (NaclDHKeyPublic) GetBinaryKID added in v1.0.18

func (k NaclDHKeyPublic) GetBinaryKID() keybase1.BinaryKID

func (NaclDHKeyPublic) GetKID

func (k NaclDHKeyPublic) GetKID() keybase1.KID

type NaclEncryptionInfo

type NaclEncryptionInfo struct {
	Ciphertext     []byte `codec:"ciphertext"`
	EncryptionType int    `codec:"enc_type"`
	Nonce          []byte `codec:"nonce"`
	Receiver       []byte `codec:"receiver_key"`
	Sender         []byte `codec:"sender_key"`
}

func (*NaclEncryptionInfo) ToPacket

func (k *NaclEncryptionInfo) ToPacket() (ret *KeybasePacket, err error)

ToPacket implements the Packetable interface.

type NaclGenerator

type NaclGenerator func() (NaclKeyPair, error)

type NaclKeyGen

type NaclKeyGen struct {
	// contains filtered or unexported fields
}

func NewNaclKeyGen

func NewNaclKeyGen(arg NaclKeyGenArg) *NaclKeyGen

func (*NaclKeyGen) Generate

func (g *NaclKeyGen) Generate() (err error)

func (*NaclKeyGen) GetKeyPair

func (g *NaclKeyGen) GetKeyPair() NaclKeyPair

func (*NaclKeyGen) Push

func (g *NaclKeyGen) Push(lctx LoginContext, aggregated bool) (d Delegator, err error)

func (*NaclKeyGen) SaveLKS

func (g *NaclKeyGen) SaveLKS(gc *GlobalContext, lks *LKSec, lctx LoginContext) error

func (*NaclKeyGen) UpdateArg

func (g *NaclKeyGen) UpdateArg(signer GenericKey, eldestKID keybase1.KID, sibkey bool, user *User)

type NaclKeyGenArg

type NaclKeyGenArg struct {
	Signer      GenericKey // who is going to sign us into the Chain
	ExpiresIn   int
	Generator   NaclGenerator
	Me          *User
	Sibkey      bool
	ExpireIn    int          // how long it lasts
	EldestKeyID keybase1.KID // the eldest KID for this epoch
	Device      *Device
	RevSig      string // optional reverse sig.  set to nil for autogenerate.
}

type NaclKeyPair

type NaclKeyPair interface {
	GenericKey
}

type NaclSigInfo

type NaclSigInfo struct {
	Kid      keybase1.BinaryKID `codec:"key"`
	Payload  []byte             `codec:"payload,omitempty"`
	Sig      NaclSignature      `codec:"sig"`
	SigType  int                `codec:"sig_type"`
	HashType int                `codec:"hash_type"`
	Detached bool               `codec:"detached"`
	Version  int                `codec:"version,omitempty"`
	Prefix   SignaturePrefix    `codec:"prefix,omitempty"`
}

func (*NaclSigInfo) ArmoredEncode

func (s *NaclSigInfo) ArmoredEncode() (ret string, err error)

func (*NaclSigInfo) ToPacket

func (s *NaclSigInfo) ToPacket() (ret *KeybasePacket, err error)

func (NaclSigInfo) Verify

func (s NaclSigInfo) Verify() (*NaclSigningKeyPublic, error)

type NaclSignature

type NaclSignature [ed25519.SignatureSize]byte

type NaclSigningKeyPair

type NaclSigningKeyPair struct {
	Public  NaclSigningKeyPublic
	Private *NaclSigningKeyPrivate
}

func GenerateNaclSigningKeyPair

func GenerateNaclSigningKeyPair() (NaclSigningKeyPair, error)

func ImportNaclSigningKeyPairFromBytes

func ImportNaclSigningKeyPairFromBytes(pub []byte, priv []byte) (ret NaclSigningKeyPair, err error)

func ImportNaclSigningKeyPairFromHex

func ImportNaclSigningKeyPairFromHex(s string) (ret NaclSigningKeyPair, err error)

func MakeNaclSigningKeyPairFromSecret

func MakeNaclSigningKeyPairFromSecret(secret [NaclSigningKeySecretSize]byte) (NaclSigningKeyPair, error)

MakeNaclSigningKeyPairFromSecret makes a signing key pair given a secret. Of course, the security of depends entirely on the randomness of the bytes in the secret.

func (NaclSigningKeyPair) CanDecrypt

func (k NaclSigningKeyPair) CanDecrypt() bool

CanDecrypt always returns false for a signing key pair.

func (NaclSigningKeyPair) CanEncrypt

func (k NaclSigningKeyPair) CanEncrypt() bool

CanEncrypt always returns false for a signing key pair.

func (NaclSigningKeyPair) CanSign

func (k NaclSigningKeyPair) CanSign() bool

func (NaclSigningKeyPair) CheckSecretKey

func (k NaclSigningKeyPair) CheckSecretKey() error

func (NaclSigningKeyPair) DecryptFromString

func (k NaclSigningKeyPair) DecryptFromString(ciphertext string) (msg []byte, sender keybase1.KID, err error)

DecryptFromString fails for this type of key.

func (NaclSigningKeyPair) Encode

func (k NaclSigningKeyPair) Encode() (string, error)

func (NaclSigningKeyPair) EncryptToString

func (k NaclSigningKeyPair) EncryptToString(plaintext []byte, sender GenericKey) (ciphertext string, err error)

EncryptToString fails for this type of key.

func (NaclSigningKeyPair) ExportPublicAndPrivate added in v1.0.18

func (k NaclSigningKeyPair) ExportPublicAndPrivate() (RawPublicKey, RawPrivateKey, error)

func (NaclSigningKeyPair) GetAlgoType

func (k NaclSigningKeyPair) GetAlgoType() AlgoType

func (NaclSigningKeyPair) GetBinaryKID added in v1.0.18

func (k NaclSigningKeyPair) GetBinaryKID() (ret keybase1.BinaryKID)

func (NaclSigningKeyPair) GetFingerprintP

func (k NaclSigningKeyPair) GetFingerprintP() *PGPFingerprint

func (NaclSigningKeyPair) GetKID

func (k NaclSigningKeyPair) GetKID() (ret keybase1.KID)

func (NaclSigningKeyPair) HasSecretKey

func (k NaclSigningKeyPair) HasSecretKey() bool

func (NaclSigningKeyPair) SecretSymmetricKey added in v1.0.18

func (k NaclSigningKeyPair) SecretSymmetricKey(reason EncryptionReason) ([]byte, error)

func (NaclSigningKeyPair) Sign

func (k NaclSigningKeyPair) Sign(msg []byte) (ret *NaclSigInfo, err error)

func (NaclSigningKeyPair) SignToString

func (k NaclSigningKeyPair) SignToString(msg []byte) (sig string, id keybase1.SigID, err error)

func (NaclSigningKeyPair) SignV2 added in v1.0.18

func (k NaclSigningKeyPair) SignV2(msg []byte, prefix SignaturePrefix) (ret *NaclSigInfo, err error)

func (NaclSigningKeyPair) ToShortIDString

func (k NaclSigningKeyPair) ToShortIDString() string

func (NaclSigningKeyPair) VerboseDescription

func (k NaclSigningKeyPair) VerboseDescription() string

func (NaclSigningKeyPair) VerifyString

func (k NaclSigningKeyPair) VerifyString(ctx VerifyContext, sig string, msg []byte) (id keybase1.SigID, err error)

func (NaclSigningKeyPair) VerifyStringAndExtract

func (k NaclSigningKeyPair) VerifyStringAndExtract(ctx VerifyContext, sig string) (msg []byte, id keybase1.SigID, err error)

type NaclSigningKeyPrivate

type NaclSigningKeyPrivate [ed25519.PrivateKeySize]byte

func (NaclSigningKeyPrivate) Sign

func (k NaclSigningKeyPrivate) Sign(msg []byte) *NaclSignature

type NaclSigningKeyPublic

type NaclSigningKeyPublic [ed25519.PublicKeySize]byte

func KIDToNaclSigningKeyPublic

func KIDToNaclSigningKeyPublic(bk []byte) *NaclSigningKeyPublic

func (NaclSigningKeyPublic) GetBinaryKID added in v1.0.18

func (k NaclSigningKeyPublic) GetBinaryKID() keybase1.BinaryKID

func (NaclSigningKeyPublic) GetKID

func (k NaclSigningKeyPublic) GetKID() keybase1.KID

func (NaclSigningKeyPublic) Verify

func (k NaclSigningKeyPublic) Verify(msg []byte, sig *NaclSignature) bool

type NamedLock

type NamedLock struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*NamedLock) Release

func (l *NamedLock) Release(ctx context.Context)

type NeedInputError

type NeedInputError struct {
	// contains filtered or unexported fields
}

func (NeedInputError) Error

func (e NeedInputError) Error() string

type NeedOtherRekeyError added in v1.0.19

type NeedOtherRekeyError struct {
	// Canonical tlf name
	Tlf string
	Msg string
}

NeedOtherRekeyError indicates that the folder in question needs to be rekeyed for the local device, and can only done so by one of the other users.

func (NeedOtherRekeyError) Error added in v1.0.19

func (e NeedOtherRekeyError) Error() string

func (NeedOtherRekeyError) ToStatus added in v1.0.19

func (e NeedOtherRekeyError) ToStatus() keybase1.Status

type NeedSelfRekeyError added in v1.0.19

type NeedSelfRekeyError struct {
	// Canonical tlf name
	Tlf string
	Msg string
}

NeedSelfRekeyError indicates that the folder in question needs to be rekeyed for the local device, and can be done so by one of the other user's devices.

func (NeedSelfRekeyError) Error added in v1.0.19

func (e NeedSelfRekeyError) Error() string

func (NeedSelfRekeyError) ToStatus added in v1.0.19

func (e NeedSelfRekeyError) ToStatus() keybase1.Status

type NegBoolFunc

type NegBoolFunc struct {
	// contains filtered or unexported fields
}

type NetContext added in v1.0.19

type NetContext interface {
	GetNetContext() context.Context
}

type NoActiveKeyError

type NoActiveKeyError struct {
	Username string
}

func (NoActiveKeyError) Error

func (e NoActiveKeyError) Error() string

func (NoActiveKeyError) ToStatus

func (c NoActiveKeyError) ToStatus() (s keybase1.Status)

type NoConfigFile

type NoConfigFile struct{}

func (NoConfigFile) Error

func (n NoConfigFile) Error() string

type NoConfigWriterError

type NoConfigWriterError struct{}

func (NoConfigWriterError) Error

func (e NoConfigWriterError) Error() string

type NoDecryptionKeyError

type NoDecryptionKeyError struct {
	Msg string
}

func (NoDecryptionKeyError) Error

func (e NoDecryptionKeyError) Error() string

func (NoDecryptionKeyError) ToStatus

func (e NoDecryptionKeyError) ToStatus() (s keybase1.Status)

type NoDeviceError

type NoDeviceError struct {
	Reason string
}

func (NoDeviceError) Error

func (e NoDeviceError) Error() string

func (NoDeviceError) ToStatus

func (e NoDeviceError) ToStatus() keybase1.Status

type NoEldestKeyError

type NoEldestKeyError struct {
}

func (NoEldestKeyError) Error

func (e NoEldestKeyError) Error() string

type NoKeyError

type NoKeyError struct {
	Msg string
}

func (NoKeyError) Error

func (u NoKeyError) Error() string

func (NoKeyError) ToStatus

func (e NoKeyError) ToStatus() (s keybase1.Status)

type NoKeyringsError

type NoKeyringsError struct{}

func (NoKeyringsError) Error

func (k NoKeyringsError) Error() string

type NoMatchingGPGKeysError

type NoMatchingGPGKeysError struct {
	Fingerprints    []string
	HasActiveDevice bool // true if the user has an active device that they chose not to use
}

func (NoMatchingGPGKeysError) Error

func (e NoMatchingGPGKeysError) Error() string

func (NoMatchingGPGKeysError) ToStatus

func (e NoMatchingGPGKeysError) ToStatus() keybase1.Status

type NoNaClEncryptionKeyError

type NoNaClEncryptionKeyError struct {
	User      string
	HasPGPKey bool
}

func (NoNaClEncryptionKeyError) Error

func (e NoNaClEncryptionKeyError) Error() string

func (NoNaClEncryptionKeyError) ToStatus

type NoPGPEncryptionKeyError

type NoPGPEncryptionKeyError struct {
	User         string
	HasDeviceKey bool
}

func (NoPGPEncryptionKeyError) Error

func (e NoPGPEncryptionKeyError) Error() string

func (NoPGPEncryptionKeyError) ToStatus

type NoPaperKeysError

type NoPaperKeysError struct {
}

func (NoPaperKeysError) Error

func (u NoPaperKeysError) Error() string

type NoSecretKeyError

type NoSecretKeyError struct {
}

func (NoSecretKeyError) Error

func (u NoSecretKeyError) Error() string

func (NoSecretKeyError) ToStatus

func (u NoSecretKeyError) ToStatus() (s keybase1.Status)

type NoSelectedKeyError

type NoSelectedKeyError struct {
	// contains filtered or unexported fields
}

func (NoSelectedKeyError) Error

func (n NoSelectedKeyError) Error() string

type NoSessionWriterError

type NoSessionWriterError struct{}

func (NoSessionWriterError) Error

func (e NoSessionWriterError) Error() string

type NoSigChainError

type NoSigChainError struct{}

func (NoSigChainError) Error

func (e NoSigChainError) Error() string

func (NoSigChainError) ToStatus added in v1.0.17

func (e NoSigChainError) ToStatus() keybase1.Status

type NoSyncedPGPKeyError

type NoSyncedPGPKeyError struct{}

func (NoSyncedPGPKeyError) Error

func (e NoSyncedPGPKeyError) Error() string

func (NoSyncedPGPKeyError) ToStatus

func (e NoSyncedPGPKeyError) ToStatus() keybase1.Status

type NoUIDError

type NoUIDError struct{}

func (NoUIDError) Error

func (e NoUIDError) Error() string

type NoUIError

type NoUIError struct {
	Which string
}

func (NoUIError) Error

func (e NoUIError) Error() string

func (NoUIError) ToStatus

func (e NoUIError) ToStatus() keybase1.Status

type NoUserConfigError

type NoUserConfigError struct{}

func (NoUserConfigError) Error

func (n NoUserConfigError) Error() string

type NoUsernameError

type NoUsernameError struct{}

func (NoUsernameError) Error

func (e NoUsernameError) Error() string

type NodeHash

type NodeHash interface {
	Check(s string) bool // Check if the node hashes to this string
	String() string

	IsNil() bool
	// contains filtered or unexported methods
}

func GetNodeHash

func GetNodeHash(w *jsonw.Wrapper) (NodeHash, error)

func NodeHashFromHex

func NodeHashFromHex(s string) (NodeHash, error)

type NodeHashAny added in v1.0.19

type NodeHashAny struct {
	// contains filtered or unexported fields
}

NodeHashAny incorporates either a short (256-bit) or a long (512-bit) hash. It's unfortunate we need it, but I didn't see any other way to use the Go json marshal/unmarshal system where the hashes might be either short or long. Our hacky solution is to have a union-type struct that supports both, and just to unmarshal into the relevant relevant field. Note this type also fits ths NodeHash interface.

func (NodeHashAny) Check added in v1.0.19

func (h NodeHashAny) Check(s string) bool

func (NodeHashAny) IsNil added in v1.0.19

func (h NodeHashAny) IsNil() bool

func (*NodeHashAny) MarshalJSON added in v1.0.19

func (h *NodeHashAny) MarshalJSON() ([]byte, error)

func (NodeHashAny) String added in v1.0.19

func (h NodeHashAny) String() string

func (*NodeHashAny) UnmarshalJSON added in v1.0.19

func (h *NodeHashAny) UnmarshalJSON(b []byte) error

type NodeHashLong

type NodeHashLong [NodeHashLenLong]byte

func (NodeHashLong) Check

func (h1 NodeHashLong) Check(s string) bool

func (NodeHashLong) IsNil added in v1.0.19

func (h1 NodeHashLong) IsNil() bool

func (NodeHashLong) String

func (h1 NodeHashLong) String() string

func (*NodeHashLong) UnmarshalJSON added in v1.0.19

func (h1 *NodeHashLong) UnmarshalJSON(b []byte) error

type NodeHashShort

type NodeHashShort [NodeHashLenShort]byte

func (NodeHashShort) Check

func (h1 NodeHashShort) Check(s string) bool

func (NodeHashShort) IsNil added in v1.0.19

func (h1 NodeHashShort) IsNil() bool

func (NodeHashShort) String

func (h1 NodeHashShort) String() string

func (*NodeHashShort) UnmarshalJSON added in v1.0.19

func (h1 *NodeHashShort) UnmarshalJSON(b []byte) error

type NopWriteCloser

type NopWriteCloser struct {
	W io.Writer
}

NopWriteCloser is like an ioutil.NopCloser, but for an io.Writer. TODO: we have two of these in OpenPGP packages alone. This probably needs to be promoted somewhere more common.

From here:

https://code.google.com/p/go/source/browse/openpgp/write.go?repo=crypto&r=1e7a3e301825bf9cb32e0535f3761d62d2d369d1#364

func (NopWriteCloser) Close

func (c NopWriteCloser) Close() error

func (NopWriteCloser) Write

func (c NopWriteCloser) Write(data []byte) (n int, err error)

type NormalizedUsername

type NormalizedUsername string

NormalizedUsername is a username that has been normalized (toLowered) and therefore will compare correctly against other normalized usernames.

func NewNormalizedUsername

func NewNormalizedUsername(s string) NormalizedUsername

NewNormalizedUsername makes a normalized username out of a non-normalized plain string username

func (NormalizedUsername) Eq

Eq returns true if the given normalized usernames are equal

func (NormalizedUsername) IsNil

func (n NormalizedUsername) IsNil() bool

IsNil returns true if the username is the empty string

func (NormalizedUsername) String

func (n NormalizedUsername) String() string

String returns the normalized username as a string (in lower case)

type NotConfirmedError

type NotConfirmedError struct{}

func (NotConfirmedError) Error

func (e NotConfirmedError) Error() string

type NotFoundError

type NotFoundError struct {
	Msg string
}

func (NotFoundError) Error

func (e NotFoundError) Error() string

func (NotFoundError) ToStatus added in v1.0.16

func (e NotFoundError) ToStatus() keybase1.Status

type NotLatestSubchainError

type NotLatestSubchainError struct {
	Msg string
}

func (NotLatestSubchainError) Error

func (e NotLatestSubchainError) Error() string

type NotProvisionedError

type NotProvisionedError struct{}

func (NotProvisionedError) Error

func (e NotProvisionedError) Error() string

type NotifyListener added in v1.0.16

type NotifyListener interface {
	Logout()
	Login(username string)
	ClientOutOfDate(to, uri, msg string)
	UserChanged(uid keybase1.UID)
	TrackingChanged(uid keybase1.UID, username NormalizedUsername)
	FSActivity(activity keybase1.FSNotification)
	FSEditListResponse(arg keybase1.FSEditListArg)
	FSSyncStatusResponse(arg keybase1.FSSyncStatusArg)
	FSSyncEvent(arg keybase1.FSPathSyncStatus)
	FSEditListRequest(arg keybase1.FSEditListRequest)
	FavoritesChanged(uid keybase1.UID)
	PaperKeyCached(uid keybase1.UID, encKID keybase1.KID, sigKID keybase1.KID)
	KeyfamilyChanged(uid keybase1.UID)
	NewChatActivity(uid keybase1.UID, activity chat1.ChatActivity)
	ChatIdentifyUpdate(update keybase1.CanonicalTLFNameAndIDWithBreaks)
	ChatTLFFinalize(uid keybase1.UID, convID chat1.ConversationID,
		finalizeInfo chat1.ConversationFinalizeInfo)
	ChatTLFResolve(uid keybase1.UID, convID chat1.ConversationID,
		resolveInfo chat1.ConversationResolveInfo)
	ChatInboxStale(uid keybase1.UID)
	ChatThreadsStale(uid keybase1.UID, cids []chat1.ConversationID)
	PGPKeyInSecretStoreFile()
	BadgeState(badgeState keybase1.BadgeState)
	ReachabilityChanged(r keybase1.Reachability)
}

NotifyListener provides hooks for listening for when notifications are called. It is intended to simplify testing notifications.

type NotifyRouter

type NotifyRouter struct {
	Contextified
	// contains filtered or unexported fields
}

NotifyRouter routes notifications to the various active RPC connections. It's careful only to route to those who are interested

func NewNotifyRouter

func NewNotifyRouter(g *GlobalContext) *NotifyRouter

NewNotifyRouter makes a new notification router; we should only make one of these per process.

func (*NotifyRouter) AddConnection

func (n *NotifyRouter) AddConnection(xp rpc.Transporter, ch chan error) ConnectionID

AddConnection should be called every time there's a new RPC connection established for this server. The caller should pass in the Transporter and also the channel that will get messages when the channel closes.

func (*NotifyRouter) HandleAppExit added in v1.0.17

func (n *NotifyRouter) HandleAppExit()

HandleAppExit is called whenever an app exit command is issued

func (*NotifyRouter) HandleBadgeState added in v1.0.19

func (n *NotifyRouter) HandleBadgeState(badgeState keybase1.BadgeState)

HandleBadgeState is called whenever the badge state changes It will broadcast the messages to all curious listeners.

func (*NotifyRouter) HandleChatIdentifyUpdate added in v1.0.19

func (n *NotifyRouter) HandleChatIdentifyUpdate(ctx context.Context, update keybase1.CanonicalTLFNameAndIDWithBreaks)

func (*NotifyRouter) HandleChatInboxStale added in v1.0.19

func (n *NotifyRouter) HandleChatInboxStale(ctx context.Context, uid keybase1.UID)

func (*NotifyRouter) HandleChatTLFFinalize added in v1.0.19

func (n *NotifyRouter) HandleChatTLFFinalize(ctx context.Context, uid keybase1.UID, convID chat1.ConversationID, finalizeInfo chat1.ConversationFinalizeInfo, conv *chat1.ConversationLocal)

func (*NotifyRouter) HandleChatTLFResolve added in v1.0.19

func (n *NotifyRouter) HandleChatTLFResolve(ctx context.Context, uid keybase1.UID, convID chat1.ConversationID, resolveInfo chat1.ConversationResolveInfo)

func (*NotifyRouter) HandleChatThreadsStale added in v1.0.19

func (n *NotifyRouter) HandleChatThreadsStale(ctx context.Context, uid keybase1.UID,
	threads []chat1.ConversationID)

func (*NotifyRouter) HandleClientOutOfDate

func (n *NotifyRouter) HandleClientOutOfDate(upgradeTo, upgradeURI, upgradeMsg string)

ClientOutOfDate is called whenever the API server tells us our client is out of date. (This is done by adding special headers to every API response that an out-of-date client makes.)

func (*NotifyRouter) HandleFSActivity

func (n *NotifyRouter) HandleFSActivity(activity keybase1.FSNotification)

HandleFSActivity is called for any KBFS notification. It will broadcast the messages to all curious listeners.

func (*NotifyRouter) HandleFSEditListRequest added in v1.0.18

func (n *NotifyRouter) HandleFSEditListRequest(ctx context.Context, arg keybase1.FSEditListRequest)

HandleFSEditListRequest is called for KBFS edit list request notifications.

func (*NotifyRouter) HandleFSEditListResponse added in v1.0.18

func (n *NotifyRouter) HandleFSEditListResponse(ctx context.Context, arg keybase1.FSEditListArg)

HandleFSEditListResponse is called for KBFS edit list response notifications.

func (*NotifyRouter) HandleFSSyncEvent added in v1.0.19

func (n *NotifyRouter) HandleFSSyncEvent(ctx context.Context, arg keybase1.FSPathSyncStatus)

HandleFSSyncEvent is called for KBFS sync event notifications.

func (*NotifyRouter) HandleFSSyncStatus added in v1.0.19

func (n *NotifyRouter) HandleFSSyncStatus(ctx context.Context, arg keybase1.FSSyncStatusArg)

HandleFSSyncStatus is called for KBFS sync status notifications.

func (*NotifyRouter) HandleFavoritesChanged added in v1.0.16

func (n *NotifyRouter) HandleFavoritesChanged(uid keybase1.UID)

HandleFavoritesChanged is called whenever the kbfs favorites change for a user (and caches should be invalidated). It will broadcast the messages to all curious listeners.

func (*NotifyRouter) HandleKeyfamilyChanged added in v1.0.17

func (n *NotifyRouter) HandleKeyfamilyChanged(uid keybase1.UID)

HandleKeyfamilyChanged is called whenever a user's keyfamily changes.

func (*NotifyRouter) HandleLogin

func (n *NotifyRouter) HandleLogin(u string)

HandleLogin is called whenever a user logs in. It will broadcast the message to all connections who care about such a mesasge.

func (*NotifyRouter) HandleLogout

func (n *NotifyRouter) HandleLogout()

HandleLogout is called whenever the current user logged out. It will broadcast the message to all connections who care about such a mesasge.

func (*NotifyRouter) HandleNewChatActivity added in v1.0.18

func (n *NotifyRouter) HandleNewChatActivity(ctx context.Context, uid keybase1.UID, activity *chat1.ChatActivity)

func (*NotifyRouter) HandlePGPKeyInSecretStoreFile added in v1.0.18

func (n *NotifyRouter) HandlePGPKeyInSecretStoreFile()

HandlePGPKeyInSecretStoreFile is called to notify a user that they have a PGP key that is unlockable by a secret stored in a file in their home directory.

func (*NotifyRouter) HandlePaperKeyCached added in v1.0.17

func (n *NotifyRouter) HandlePaperKeyCached(uid keybase1.UID, encKID keybase1.KID, sigKID keybase1.KID)

HandlePaperKeyCached is called whenever a paper key is cached in response to a rekey harassment.

func (*NotifyRouter) HandleReachability added in v1.0.19

func (n *NotifyRouter) HandleReachability(r keybase1.Reachability)

func (*NotifyRouter) HandleServiceShutdown added in v1.0.17

func (n *NotifyRouter) HandleServiceShutdown()

HandleServiceShutdown is called whenever the service shuts down.

func (*NotifyRouter) HandleTrackingChanged

func (n *NotifyRouter) HandleTrackingChanged(uid keybase1.UID, username NormalizedUsername, isTracking bool)

HandleTrackingChanged is called whenever we have a new tracking or untracking chain link related to a given user. It will broadcast the messages to all curious listeners. isTracking is set to true if current user is tracking uid.

func (*NotifyRouter) HandleUserChanged

func (n *NotifyRouter) HandleUserChanged(uid keybase1.UID)

HandleUserChanged is called whenever we know that a given user has changed (and must be cache-busted). It will broadcast the messages to all curious listeners.

func (*NotifyRouter) SetChannels

SetChannels sets which notification channels are interested for the connection with the given connection ID.

func (*NotifyRouter) SetListener added in v1.0.16

func (n *NotifyRouter) SetListener(listener NotifyListener)

func (*NotifyRouter) Shutdown

func (n *NotifyRouter) Shutdown()

type NullConfiguration

type NullConfiguration struct{}

func (NullConfiguration) GetAPIDump

func (n NullConfiguration) GetAPIDump() (bool, bool)

func (NullConfiguration) GetAPITimeout

func (n NullConfiguration) GetAPITimeout() (time.Duration, bool)

func (NullConfiguration) GetAllUsernames

func (NullConfiguration) GetAutoFork

func (n NullConfiguration) GetAutoFork() (bool, bool)

func (NullConfiguration) GetBGIdentifierDisabled added in v1.0.19

func (n NullConfiguration) GetBGIdentifierDisabled() (bool, bool)

func (NullConfiguration) GetBool

func (n NullConfiguration) GetBool(string, bool) (bool, bool)

func (NullConfiguration) GetBoolAtPath

func (n NullConfiguration) GetBoolAtPath(string) (bool, bool)

func (NullConfiguration) GetBug3964RepairTime added in v1.0.18

func (n NullConfiguration) GetBug3964RepairTime(NormalizedUsername) (time.Time, error)

func (NullConfiguration) GetBundledCA

func (n NullConfiguration) GetBundledCA(h string) string

func (NullConfiguration) GetChatDbFilename added in v1.0.18

func (n NullConfiguration) GetChatDbFilename() string

func (NullConfiguration) GetChatDelivererInterval added in v1.0.19

func (n NullConfiguration) GetChatDelivererInterval() (time.Duration, bool)

func (NullConfiguration) GetCodeSigningKIDs

func (n NullConfiguration) GetCodeSigningKIDs() []string

func (NullConfiguration) GetConfigFilename

func (n NullConfiguration) GetConfigFilename() string

func (NullConfiguration) GetDbFilename

func (n NullConfiguration) GetDbFilename() string

func (NullConfiguration) GetDebug

func (n NullConfiguration) GetDebug() (bool, bool)

func (NullConfiguration) GetDeviceID

func (n NullConfiguration) GetDeviceID() keybase1.DeviceID

func (NullConfiguration) GetDeviceIDForUID added in v1.0.19

func (n NullConfiguration) GetDeviceIDForUID(u keybase1.UID) keybase1.DeviceID

func (NullConfiguration) GetDeviceIDForUsername added in v1.0.19

func (n NullConfiguration) GetDeviceIDForUsername(un NormalizedUsername) keybase1.DeviceID

func (NullConfiguration) GetEmail

func (n NullConfiguration) GetEmail() string

func (NullConfiguration) GetFeatureFlags added in v1.0.19

func (n NullConfiguration) GetFeatureFlags() (FeatureFlags, error)

func (NullConfiguration) GetGString

func (n NullConfiguration) GetGString(string) string

func (NullConfiguration) GetGpg

func (n NullConfiguration) GetGpg() string

func (NullConfiguration) GetGpgHome

func (n NullConfiguration) GetGpgHome() string

func (NullConfiguration) GetGpgOptions

func (n NullConfiguration) GetGpgOptions() []string

func (NullConfiguration) GetGregorDisabled added in v1.0.17

func (n NullConfiguration) GetGregorDisabled() (bool, bool)

func (NullConfiguration) GetGregorPingInterval added in v1.0.17

func (n NullConfiguration) GetGregorPingInterval() (time.Duration, bool)

func (NullConfiguration) GetGregorPingTimeout added in v1.0.19

func (n NullConfiguration) GetGregorPingTimeout() (time.Duration, bool)

func (NullConfiguration) GetGregorSaveInterval added in v1.0.16

func (n NullConfiguration) GetGregorSaveInterval() (time.Duration, bool)

func (NullConfiguration) GetGregorURI added in v1.0.16

func (n NullConfiguration) GetGregorURI() string

func (NullConfiguration) GetHome

func (n NullConfiguration) GetHome() string

func (NullConfiguration) GetIntAtPath

func (n NullConfiguration) GetIntAtPath(string) (int, bool)

func (NullConfiguration) GetInterfaceAtPath

func (n NullConfiguration) GetInterfaceAtPath(string) (interface{}, error)

func (NullConfiguration) GetLinkCacheCleanDur

func (n NullConfiguration) GetLinkCacheCleanDur() (time.Duration, bool)

func (NullConfiguration) GetLinkCacheSize

func (n NullConfiguration) GetLinkCacheSize() (int, bool)

func (NullConfiguration) GetLocalRPCDebug

func (n NullConfiguration) GetLocalRPCDebug() string

func (NullConfiguration) GetLocalTrackMaxAge

func (n NullConfiguration) GetLocalTrackMaxAge() (time.Duration, bool)

func (NullConfiguration) GetLogFile

func (n NullConfiguration) GetLogFile() string

func (NullConfiguration) GetLogFormat

func (n NullConfiguration) GetLogFormat() string

func (NullConfiguration) GetMerkleKIDs

func (n NullConfiguration) GetMerkleKIDs() []string

func (NullConfiguration) GetMountDir added in v1.0.17

func (n NullConfiguration) GetMountDir() string

func (NullConfiguration) GetNoAutoFork

func (n NullConfiguration) GetNoAutoFork() (bool, bool)

func (NullConfiguration) GetNoPinentry

func (n NullConfiguration) GetNoPinentry() (bool, bool)

func (NullConfiguration) GetNullAtPath

func (n NullConfiguration) GetNullAtPath(string) bool

func (NullConfiguration) GetPGPFingerprint

func (n NullConfiguration) GetPGPFingerprint() *PGPFingerprint

func (NullConfiguration) GetPidFile

func (n NullConfiguration) GetPidFile() string

func (NullConfiguration) GetPinentry

func (n NullConfiguration) GetPinentry() string

func (NullConfiguration) GetProofCacheLongDur

func (n NullConfiguration) GetProofCacheLongDur() (time.Duration, bool)

func (NullConfiguration) GetProofCacheMediumDur

func (n NullConfiguration) GetProofCacheMediumDur() (time.Duration, bool)

func (NullConfiguration) GetProofCacheShortDur

func (n NullConfiguration) GetProofCacheShortDur() (time.Duration, bool)

func (NullConfiguration) GetProofCacheSize

func (n NullConfiguration) GetProofCacheSize() (int, bool)

func (NullConfiguration) GetProxy

func (n NullConfiguration) GetProxy() string

func (NullConfiguration) GetProxyCACerts

func (n NullConfiguration) GetProxyCACerts() ([]string, error)

func (NullConfiguration) GetRunMode

func (n NullConfiguration) GetRunMode() (RunMode, error)

func (NullConfiguration) GetSalt

func (n NullConfiguration) GetSalt() []byte

func (NullConfiguration) GetScraperTimeout

func (n NullConfiguration) GetScraperTimeout() (time.Duration, bool)

func (NullConfiguration) GetSecretKeyringTemplate

func (n NullConfiguration) GetSecretKeyringTemplate() string

func (NullConfiguration) GetSecurityAccessGroupOverride

func (n NullConfiguration) GetSecurityAccessGroupOverride() (bool, bool)

func (NullConfiguration) GetServerURI

func (n NullConfiguration) GetServerURI() string

func (NullConfiguration) GetSessionFilename

func (n NullConfiguration) GetSessionFilename() string

func (NullConfiguration) GetSocketFile

func (n NullConfiguration) GetSocketFile() string

func (NullConfiguration) GetStandalone

func (n NullConfiguration) GetStandalone() (bool, bool)

func (NullConfiguration) GetString

func (n NullConfiguration) GetString(string) string

func (NullConfiguration) GetStringAtPath

func (n NullConfiguration) GetStringAtPath(string) (string, bool)

func (NullConfiguration) GetTimers

func (n NullConfiguration) GetTimers() string

func (NullConfiguration) GetTorHiddenAddress

func (n NullConfiguration) GetTorHiddenAddress() string

func (NullConfiguration) GetTorMode

func (n NullConfiguration) GetTorMode() (TorMode, error)

func (NullConfiguration) GetTorProxy

func (n NullConfiguration) GetTorProxy() string

func (NullConfiguration) GetUID

func (n NullConfiguration) GetUID() (ret keybase1.UID)

func (NullConfiguration) GetUpdateDisabled added in v1.0.16

func (n NullConfiguration) GetUpdateDisabled() (bool, bool)

func (NullConfiguration) GetUpdateLastChecked

func (n NullConfiguration) GetUpdateLastChecked() keybase1.Time

func (NullConfiguration) GetUpdatePreferenceAuto

func (n NullConfiguration) GetUpdatePreferenceAuto() (bool, bool)

func (NullConfiguration) GetUpdatePreferenceSkip

func (n NullConfiguration) GetUpdatePreferenceSkip() string

func (NullConfiguration) GetUpdatePreferenceSnoozeUntil

func (n NullConfiguration) GetUpdatePreferenceSnoozeUntil() keybase1.Time

func (NullConfiguration) GetUpdateURL

func (n NullConfiguration) GetUpdateURL() string

func (NullConfiguration) GetUpdaterConfigFilename added in v1.0.16

func (n NullConfiguration) GetUpdaterConfigFilename() string

func (NullConfiguration) GetUserCacheMaxAge

func (n NullConfiguration) GetUserCacheMaxAge() (time.Duration, bool)

func (NullConfiguration) GetUserConfig

func (n NullConfiguration) GetUserConfig() (*UserConfig, error)

func (NullConfiguration) GetUserConfigForUsername

func (n NullConfiguration) GetUserConfigForUsername(s NormalizedUsername) (*UserConfig, error)

func (NullConfiguration) GetUsername

func (n NullConfiguration) GetUsername() NormalizedUsername

func (NullConfiguration) GetVDebugSetting

func (n NullConfiguration) GetVDebugSetting() string

func (NullConfiguration) IsAdmin

func (n NullConfiguration) IsAdmin() (bool, bool)

type ObjType

type ObjType byte

type OutputDescriptor

type OutputDescriptor int

type PDPKA added in v1.0.18

type PDPKA string

PDPKA is a "Passphrase-Derived Public Key Authentication". In this case, it's a armored, packed, signature that's been output by our signing interface.

func (PDPKA) String added in v1.0.18

func (p PDPKA) String() string

type PDPKALoginPackage added in v1.0.18

type PDPKALoginPackage struct {
	// contains filtered or unexported fields
}

PDPKALoginPackage contains all relevant PDPKA versions in use at this time. For now, versions 4 and 5.

func ComputeLoginPackage added in v1.0.18

func ComputeLoginPackage(lctx LoginContext, username string) (ret PDPKALoginPackage, err error)

func (PDPKALoginPackage) PDPKA4 added in v1.0.18

func (lp PDPKALoginPackage) PDPKA4() PDPKA

PDPKA4 gets the v4 of the PDPKA token for this login package

func (PDPKALoginPackage) PDPKA5 added in v1.0.18

func (lp PDPKALoginPackage) PDPKA5() PDPKA

PDPKA5 gets the v4 of the PDPKA token for this login package

func (PDPKALoginPackage) PopulateArgs added in v1.0.18

func (lp PDPKALoginPackage) PopulateArgs(h *HTTPArgs)

PopulateArgs populates the given HTTP args with parameters in this PDPKA package. Right now that includes v4 and v5 of the PDPKA login system.

type PGPFingerprint

type PGPFingerprint [PGPFingerprintLen]byte

func GetPGPFingerprint

func GetPGPFingerprint(w *jsonw.Wrapper) (*PGPFingerprint, error)

func GetPGPFingerprintFromGenericKey added in v1.0.18

func GetPGPFingerprintFromGenericKey(k GenericKey) *PGPFingerprint

func ImportPGPFingerprintSlice

func ImportPGPFingerprintSlice(fp []byte) (ret *PGPFingerprint)

func PGPFingerprintFromHex

func PGPFingerprintFromHex(s string) (*PGPFingerprint, error)

func PGPFingerprintFromHexNoError

func PGPFingerprintFromHexNoError(s string) *PGPFingerprint

func PGPFingerprintFromSlice

func PGPFingerprintFromSlice(b []byte) (*PGPFingerprint, error)

func (PGPFingerprint) Eq

func (PGPFingerprint) GetProofState

func (p PGPFingerprint) GetProofState() keybase1.ProofState

func (PGPFingerprint) GetProofType

func (p PGPFingerprint) GetProofType() keybase1.ProofType

func (PGPFingerprint) LastWriterWins

func (p PGPFingerprint) LastWriterWins() bool

func (*PGPFingerprint) MarshalJSON added in v1.0.19

func (p *PGPFingerprint) MarshalJSON() ([]byte, error)

func (*PGPFingerprint) Match

func (p *PGPFingerprint) Match(q string, exact bool) bool

func (PGPFingerprint) String

func (p PGPFingerprint) String() string

func (PGPFingerprint) ToDisplayString

func (p PGPFingerprint) ToDisplayString(verbose bool) string

func (PGPFingerprint) ToIDString

func (p PGPFingerprint) ToIDString() string

func (PGPFingerprint) ToKeyID

func (p PGPFingerprint) ToKeyID() string

func (PGPFingerprint) ToKeyValuePair

func (p PGPFingerprint) ToKeyValuePair() (string, string)

func (PGPFingerprint) ToQuads

func (p PGPFingerprint) ToQuads() string

func (*PGPFingerprint) UnmarshalJSON added in v1.0.19

func (p *PGPFingerprint) UnmarshalJSON(b []byte) error

type PGPGenArg

type PGPGenArg struct {
	PrimaryBits     int
	SubkeyBits      int
	Ids             Identities
	Config          *packet.Config
	PGPUids         []string
	PrimaryLifetime int
	SubkeyLifetime  int
}

func ImportKeyGenArg

func ImportKeyGenArg(a keybase1.PGPKeyGenArg) (ret PGPGenArg)

func (*PGPGenArg) AddDefaultUID

func (a *PGPGenArg) AddDefaultUID()

Just for testing

func (*PGPGenArg) CreatePGPIDs

func (a *PGPGenArg) CreatePGPIDs() error

CreateIDs creates identities for KeyGenArg.Ids if none exist. It uses PGPUids to determine the set of Ids. It does not set the default keybase.io uid. AddDefaultUid() does that.

func (PGPGenArg) ExportTo

func (a PGPGenArg) ExportTo(ret *keybase1.PGPKeyGenArg)

func (*PGPGenArg) Init

func (a *PGPGenArg) Init() (err error)

func (*PGPGenArg) MakeAllIds

func (a *PGPGenArg) MakeAllIds() error

Just for testing

func (*PGPGenArg) PGPUserIDs

func (a *PGPGenArg) PGPUserIDs() ([]*packet.UserId, error)

func (*PGPGenArg) PreferredCompression

func (a *PGPGenArg) PreferredCompression() []uint8

func (*PGPGenArg) PreferredHash

func (a *PGPGenArg) PreferredHash() []uint8

func (*PGPGenArg) PreferredSymmetric

func (a *PGPGenArg) PreferredSymmetric() []uint8

type PGPKeyBundle

type PGPKeyBundle struct {
	*openpgp.Entity

	// GPGFallbackKey to be used as a fallback if given dummy a PrivateKey.
	GPGFallbackKey GenericKey

	// We make the (fairly dangerous) assumption that the key will never be
	// modified. This avoids the issue that encoding an openpgp.Entity is
	// nondeterministic due to Go's randomized iteration order (so different
	// exports of the same key may hash differently).
	//
	// If you're *sure* that you're creating a PGPKeyBundle from an armored
	// *public* key, you can prefill this field and Export() will use it.
	ArmoredPublicKey string

	// True if this key was generated by this program
	Generated bool
}

func GeneratePGPKeyBundle

func GeneratePGPKeyBundle(g *GlobalContext, arg PGPGenArg, logUI LogUI) (*PGPKeyBundle, error)

NewEntity returns an Entity that contains a fresh RSA/RSA keypair with a single identity composed of the given full name, comment and email, any of which may be empty but must not contain any of "()<>\x00". If config is nil, sensible defaults will be used.

Modification of: https://code.google.com/p/go/source/browse/openpgp/keys.go?repo=crypto&r=8fec09c61d5d66f460d227fd1df3473d7e015bc6#456

From golang.com/x/crypto/openpgp/keys.go

func LoadPGPKeyFromLocalDB

func LoadPGPKeyFromLocalDB(k keybase1.KID, g *GlobalContext) (*PGPKeyBundle, error)

func NewGeneratedPGPKeyBundle

func NewGeneratedPGPKeyBundle(entity *openpgp.Entity) *PGPKeyBundle

func NewPGPKeyBundle

func NewPGPKeyBundle(entity *openpgp.Entity) *PGPKeyBundle

func (*PGPKeyBundle) CanDecrypt

func (k *PGPKeyBundle) CanDecrypt() bool

CanDecrypt returns false for now, since we haven't implemented PGP encryption of packets for metadata operations

func (*PGPKeyBundle) CanEncrypt

func (k *PGPKeyBundle) CanEncrypt() bool

CanEncrypt returns false for now, since we haven't implemented PGP encryption of packets for metadata operations

func (*PGPKeyBundle) CanSign

func (k *PGPKeyBundle) CanSign() bool

func (*PGPKeyBundle) CheckFingerprint

func (k *PGPKeyBundle) CheckFingerprint(fp *PGPFingerprint) error

func (*PGPKeyBundle) CheckIdentity

func (k *PGPKeyBundle) CheckIdentity(kbid Identity) (match bool, ctime int64, etime int64)

CheckIdentity finds the foo_user@keybase.io PGP identity and figures out when it was created and when it's slated to expire. We plan to start phasing out use of PGP-specified Expiration times as far as sigchain walking is concerned. But for now, there are a few places where it's still used (see ComputedKeyInfos#InsertServerEldestKey).

func (*PGPKeyBundle) CheckSecretKey

func (k *PGPKeyBundle) CheckSecretKey() (err error)

func (*PGPKeyBundle) DecryptFromString

func (k *PGPKeyBundle) DecryptFromString(ciphertext string) (msg []byte, sender keybase1.KID, err error)

DecryptFromString fails for this type of key, since we haven't implemented it yet

func (PGPKeyBundle) DecryptionKeys

func (k PGPKeyBundle) DecryptionKeys() []openpgp.Key

func (*PGPKeyBundle) Encode

func (k *PGPKeyBundle) Encode() (ret string, err error)

func (*PGPKeyBundle) EncodeToStream

func (k *PGPKeyBundle) EncodeToStream(wc io.WriteCloser, private bool) error

func (*PGPKeyBundle) EncryptToString

func (k *PGPKeyBundle) EncryptToString(plaintext []byte, sender GenericKey) (ciphertext string, err error)

EncryptToString fails for this type of key, since we haven't implemented it yet

func (*PGPKeyBundle) Export

func (bundle *PGPKeyBundle) Export() keybase1.PublicKey

func (*PGPKeyBundle) ExportPublicAndPrivate added in v1.0.18

func (k *PGPKeyBundle) ExportPublicAndPrivate() (public RawPublicKey, private RawPrivateKey, err error)

func (*PGPKeyBundle) FindEmail

func (k *PGPKeyBundle) FindEmail(em string) bool

func (*PGPKeyBundle) FindKeybaseUsername

func (k *PGPKeyBundle) FindKeybaseUsername(un string) bool

XXX for now this is OK but probably we need a PGP uid parser as in pgp-utils

func (*PGPKeyBundle) FullHash

func (k *PGPKeyBundle) FullHash() (string, error)

func (PGPKeyBundle) GetAlgoType

func (k PGPKeyBundle) GetAlgoType() AlgoType

func (*PGPKeyBundle) GetBinaryKID added in v1.0.18

func (k *PGPKeyBundle) GetBinaryKID() keybase1.BinaryKID

func (PGPKeyBundle) GetFingerprint

func (k PGPKeyBundle) GetFingerprint() PGPFingerprint

func (PGPKeyBundle) GetFingerprintP

func (k PGPKeyBundle) GetFingerprintP() *PGPFingerprint

func (*PGPKeyBundle) GetKID

func (k *PGPKeyBundle) GetKID() keybase1.KID

func (*PGPKeyBundle) GetPGPIdentities

func (k *PGPKeyBundle) GetPGPIdentities() []keybase1.PGPIdentity

func (PGPKeyBundle) GetPrimaryUID

func (k PGPKeyBundle) GetPrimaryUID() string

GetPrimaryUID gets the primary UID in the given key bundle, returned in the 'Max K (foo) <bar@baz.com>' convention.

func (*PGPKeyBundle) HasSecretKey

func (k *PGPKeyBundle) HasSecretKey() bool

func (PGPKeyBundle) HumanDescription

func (k PGPKeyBundle) HumanDescription() string

func (*PGPKeyBundle) IdentityNames

func (k *PGPKeyBundle) IdentityNames() []string

func (*PGPKeyBundle) InitGPGKey

func (k *PGPKeyBundle) InitGPGKey()

func (PGPKeyBundle) KeyDescription

func (k PGPKeyBundle) KeyDescription() string

func (PGPKeyBundle) KeyInfo

func (k PGPKeyBundle) KeyInfo() (algorithm, kid, creation string)

func (PGPKeyBundle) KeysById

func (k PGPKeyBundle) KeysById(id uint64, fp []byte) []openpgp.Key

func (PGPKeyBundle) KeysByIdUsage

func (k PGPKeyBundle) KeysByIdUsage(id uint64, fp []byte, usage byte) []openpgp.Key

func (PGPKeyBundle) MatchesKey

func (k PGPKeyBundle) MatchesKey(key *openpgp.Key) bool

func (*PGPKeyBundle) MergeKey

func (to *PGPKeyBundle) MergeKey(from *PGPKeyBundle)

MergeKey adds the identities, revocations, and subkeys of another PGPKeyBundle to this key

func (PGPKeyBundle) SamePrimaryAs

func (k PGPKeyBundle) SamePrimaryAs(k2 PGPKeyBundle) bool

func (*PGPKeyBundle) SecretSymmetricKey added in v1.0.18

func (k *PGPKeyBundle) SecretSymmetricKey(reason EncryptionReason) ([]byte, error)

func (*PGPKeyBundle) SerializePrivate

func (k *PGPKeyBundle) SerializePrivate(w io.Writer) error

func (*PGPKeyBundle) SignToString

func (k *PGPKeyBundle) SignToString(msg []byte) (sig string, id keybase1.SigID, err error)

func (*PGPKeyBundle) StoreToLocalDb

func (k *PGPKeyBundle) StoreToLocalDb(g *GlobalContext) error

func (*PGPKeyBundle) StripRevocations

func (k *PGPKeyBundle) StripRevocations() (strippedKey *PGPKeyBundle)

StripRevocations returns a copy of the key with revocations removed

func (*PGPKeyBundle) ToServerSKB

func (key *PGPKeyBundle) ToServerSKB(gc *GlobalContext, tsec Triplesec, gen PassphraseGeneration) (ret *SKB, err error)

func (*PGPKeyBundle) Unlock

func (k *PGPKeyBundle) Unlock(g *GlobalContext, reason string, secretUI SecretUI) error

func (PGPKeyBundle) UsersDescription

func (k PGPKeyBundle) UsersDescription() []string

func (PGPKeyBundle) VerboseDescription

func (k PGPKeyBundle) VerboseDescription() string

func (PGPKeyBundle) VerifyString

func (k PGPKeyBundle) VerifyString(ctx VerifyContext, sig string, msg []byte) (id keybase1.SigID, err error)

func (PGPKeyBundle) VerifyStringAndExtract

func (k PGPKeyBundle) VerifyStringAndExtract(ctx VerifyContext, sig string) (msg []byte, id keybase1.SigID, err error)

type PGPKeySet

type PGPKeySet struct {
	Contextified
	PermissivelyMergedKey *PGPKeyBundle
	KeysByHash            map[string]*PGPKeyBundle
}

PGPKeySet represents a collection of versions of a PGP key. It includes a merged version of the key without revocations, and each individual version of the key with revocations intact.

type PGPPullLoggedOutError

type PGPPullLoggedOutError struct{}

func (PGPPullLoggedOutError) Error

func (e PGPPullLoggedOutError) Error() string
type PGPUpdateChainLink struct {
	GenericChainLink
	// contains filtered or unexported fields
}

PGPUpdateChainLink represents a chain link which marks a new version of a PGP key as current. The KID and a new new full hash are included in the pgp_update section of the body.

func ParsePGPUpdateChainLink(b GenericChainLink) (ret *PGPUpdateChainLink, err error)

ParsePGPUpdateChainLink creates a PGPUpdateChainLink from a GenericChainLink and verifies that its pgp_update section contains a KID and full_hash

func (*PGPUpdateChainLink) GetPGPFullHash

func (l *PGPUpdateChainLink) GetPGPFullHash() string

func (*PGPUpdateChainLink) ToDisplayString

func (l *PGPUpdateChainLink) ToDisplayString() string

func (*PGPUpdateChainLink) Type

func (l *PGPUpdateChainLink) Type() string

type PIDFileLockError

type PIDFileLockError struct {
	Filename string
}

func (PIDFileLockError) Error

func (e PIDFileLockError) Error() string

type Packetable

type Packetable interface {
	ToPacket() (*KeybasePacket, error)
}

type PaperChecker added in v1.0.16

type PaperChecker struct{}

PaperChecker implements PassphraseChecker for paper keys.

func (*PaperChecker) Check added in v1.0.16

func (p *PaperChecker) Check(g *GlobalContext, s string) error

Check a paper key format. Will return a detailed error message specific to the problems found in s.

type PaperKeyPhrase

type PaperKeyPhrase string

PaperKeyPhrase is the string that can generate a paper key. It is versioned and forced to be lowercase. To make a new random phrase, use MakePaperKeyPhrase. To convert a string to a PaperKeyPhrase, use NewPaperKeyPhrase.

func MakePaperKeyPhrase

func MakePaperKeyPhrase(version uint8) (PaperKeyPhrase, error)

MakePaperKeyPhrase creates a new, random paper key phrase for the given version.

func NewPaperKeyPhrase

func NewPaperKeyPhrase(phrase string) PaperKeyPhrase

NewPaperKeyPhrase converts a string into a PaperKeyPhrase.

func NewPaperKeyPhraseCheckVersion

func NewPaperKeyPhraseCheckVersion(g *GlobalContext, passphrase string) (ret PaperKeyPhrase, err error)

func (PaperKeyPhrase) Bytes

func (p PaperKeyPhrase) Bytes() []byte

Bytes returns a byte slice of the phrase.

func (PaperKeyPhrase) InvalidWords added in v1.0.16

func (p PaperKeyPhrase) InvalidWords() (words []string)

func (PaperKeyPhrase) NumWords added in v1.0.17

func (p PaperKeyPhrase) NumWords() int

func (PaperKeyPhrase) Prefix

func (p PaperKeyPhrase) Prefix() string

Prefix returns the first two words in the phrase.

func (PaperKeyPhrase) String

func (p PaperKeyPhrase) String() string

String returns a string representation of the phrase.

func (PaperKeyPhrase) Version

func (p PaperKeyPhrase) Version() (uint8, error)

Version calculates the phrase version. 0-15 are possible versions.

type ParsedSig

type ParsedSig struct {
	Block       *armor.Block
	SigBody     []byte
	MD          *openpgp.MessageDetails
	LiteralData []byte
}

func PGPOpenSig

func PGPOpenSig(armored string) (ps *ParsedSig, err error)

func (*ParsedSig) AssertPayload

func (ps *ParsedSig) AssertPayload(expected []byte) error

func (*ParsedSig) ID

func (ps *ParsedSig) ID() keybase1.SigID

func (*ParsedSig) Verify

func (ps *ParsedSig) Verify(k PGPKeyBundle) (err error)

type Parser

type Parser struct {
	// contains filtered or unexported fields
}

func NewParser

func NewParser(lexer *Lexer) *Parser

func (*Parser) Parse

type PassphraseChecker added in v1.0.16

type PassphraseChecker interface {
	Check(*GlobalContext, string) error
}

PassphraseChecker is an interface for checking the format of a passphrase. Returns nil if the format is ok, or a descriptive hint otherwise.

type PassphraseError

type PassphraseError struct {
	Msg string
}

func (PassphraseError) Error

func (p PassphraseError) Error() string

func (PassphraseError) ToStatus

func (p PassphraseError) ToStatus() (s keybase1.Status)

type PassphraseGeneration

type PassphraseGeneration int

PassphraseGeneration represents which generation of the passphrase is currently in use. It's used to guard against race conditions in which the passphrase is changed on one device which the other still has it cached.

type PassphrasePrompter

type PassphrasePrompter interface {
	Prompt(keybase1.GUIEntryArg) (keybase1.GetPassphraseRes, error)
}

type PassphraseProvisionImpossibleError

type PassphraseProvisionImpossibleError struct{}

func (PassphraseProvisionImpossibleError) Error

type PassphraseStream

type PassphraseStream struct {
	// contains filtered or unexported fields
}

func NewPassphraseStream

func NewPassphraseStream(s []byte) *PassphraseStream

func NewPassphraseStreamLKSecOnly added in v1.0.17

func NewPassphraseStreamLKSecOnly(s *LKSec) (*PassphraseStream, error)

NewPassphraseStreamLKSecOnly creates a PassphraseStream only with the lks bytes (stream[lksIndex:]). The rest of the stream is zeros. This is used to create a passphrase stream from the information in the secret store, which only contains the lksec portion of the stream.

func (*PassphraseStream) Clone

func (ps *PassphraseStream) Clone() *PassphraseStream

Clone a passphrase stream and return a copy.

func (PassphraseStream) DHSeed

func (ps PassphraseStream) DHSeed() []byte

func (PassphraseStream) EdDSASeed

func (ps PassphraseStream) EdDSASeed() []byte

func (PassphraseStream) Export

func (PassphraseStream) Generation

func (ps PassphraseStream) Generation() PassphraseGeneration

Generation returns the generation of this passphrase stream. It is >=0 for valid generation #. If 0, then we assume the passphrase has never been reset.

func (PassphraseStream) LksClientHalf

func (ps PassphraseStream) LksClientHalf() LKSecClientHalf

func (PassphraseStream) PDPKA5KID added in v1.0.18

func (ps PassphraseStream) PDPKA5KID() (keybase1.KID, error)

func (PassphraseStream) PWHash

func (ps PassphraseStream) PWHash() []byte

func (*PassphraseStream) SetGeneration

func (ps *PassphraseStream) SetGeneration(gen PassphraseGeneration)

func (PassphraseStream) String

func (ps PassphraseStream) String() string

func (PassphraseStream) ToLKSec added in v1.0.18

func (ps PassphraseStream) ToLKSec(g *GlobalContext, uid keybase1.UID) (*LKSec, error)

type PassphraseStreamCache

type PassphraseStreamCache struct {
	// contains filtered or unexported fields
}

func NewPassphraseStreamCache

func NewPassphraseStreamCache(tsec Triplesec, ps *PassphraseStream) *PassphraseStreamCache

func (*PassphraseStreamCache) Clear

func (s *PassphraseStreamCache) Clear()

func (*PassphraseStreamCache) Dump

func (s *PassphraseStreamCache) Dump()

func (*PassphraseStreamCache) PassphraseStream

func (s *PassphraseStreamCache) PassphraseStream() *PassphraseStream

PassphraseStream returns a copy of the currently cached passphrase stream, or nil if none exists.

func (*PassphraseStreamCache) PassphraseStreamRef

func (s *PassphraseStreamCache) PassphraseStreamRef() *PassphraseStream

PassphraseStream returns a reference to the currently cached passphrase stream, or nil if none exists.

func (*PassphraseStreamCache) Triplesec

func (s *PassphraseStreamCache) Triplesec() Triplesec

func (*PassphraseStreamCache) Valid

func (s *PassphraseStreamCache) Valid() bool

func (*PassphraseStreamCache) ValidPassphraseStream added in v1.0.17

func (s *PassphraseStreamCache) ValidPassphraseStream() bool

func (*PassphraseStreamCache) ValidTsec added in v1.0.17

func (s *PassphraseStreamCache) ValidTsec() bool

type PassphraseStreamCacheReader

type PassphraseStreamCacheReader interface {
	Triplesec() Triplesec
	PassphraseStream() *PassphraseStream
	Valid() bool
}

type PassphraseType added in v1.0.19

type PassphraseType string
const (
	PassphraseTypeKeybase PassphraseType = "Keybase"
	PassphraseTypePGP     PassphraseType = "PGP"
)

type PathStep

type PathStep struct {
	// contains filtered or unexported fields
}

type PathSteps

type PathSteps []*PathStep

func (PathSteps) VerifyPath

func (path PathSteps) VerifyPath(curr NodeHash, uidS string) (juser *jsonw.Wrapper, err error)

type PgpUI

type PgpUI interface {
	keybase1.PGPUiInterface
}

type PostAuthProofArg

type PostAuthProofArg struct {
	// contains filtered or unexported fields
}

type PostAuthProofRes

type PostAuthProofRes struct {
	SessionID string `json:"session"`
	AuthID    string `json:"auth_id"`
	CSRFToken string `json:"csrf_token"`
	UIDHex    string `json:"uid"`
	Username  string `json:"username"`
	PPGen     int    `json:"passphrase_generation"`
}

func PostAuthProof

func PostAuthProof(arg PostAuthProofArg) (*PostAuthProofRes, error)

type PostProofArg

type PostProofArg struct {
	Sig            string
	ID             keybase1.SigID
	RemoteUsername string
	ProofType      string
	Supersede      bool
	RemoteKey      string
	SigningKey     GenericKey
}

type PostProofRes

type PostProofRes struct {
	Text     string
	ID       string
	Metadata *jsonw.Wrapper
}

func PostProof

func PostProof(arg PostProofArg) (*PostProofRes, error)

type ProfileNotPublicError

type ProfileNotPublicError struct {
	// contains filtered or unexported fields
}

func NewProfileNotPublicError added in v1.0.18

func NewProfileNotPublicError(s string) ProfileNotPublicError

func (ProfileNotPublicError) Error

func (p ProfileNotPublicError) Error() string

func (ProfileNotPublicError) ToStatus

func (e ProfileNotPublicError) ToStatus() keybase1.Status

type PromptArg

type PromptArg struct {
	TerminalPrompt string
	PinentryDesc   string
	PinentryPrompt string
	Checker        *Checker
	RetryMessage   string
	UseSecretStore bool
	ShowTyping     bool
}

type PromptDefault

type PromptDefault int
const (
	PromptDefaultNo PromptDefault = iota
	PromptDefaultYes
	PromptDefaultNeither
)

type PromptDescriptor

type PromptDescriptor int

type Proof

type Proof struct {
	Key, Value string
}

func RemoteProofChainLinkToProof

func RemoteProofChainLinkToProof(r RemoteProofChainLink) Proof

type ProofAPIError

type ProofAPIError struct {
	ProofErrorImpl
	// contains filtered or unexported fields
}

func NewProofAPIError

func NewProofAPIError(s keybase1.ProofStatus, u string, d string, a ...interface{}) *ProofAPIError

func XapiError

func XapiError(err error, u string) *ProofAPIError

type ProofCache

type ProofCache struct {
	Contextified

	sync.RWMutex
	// contains filtered or unexported fields
}

func NewProofCache

func NewProofCache(g *GlobalContext, capac int) *ProofCache

func (*ProofCache) DisableDisk added in v1.0.19

func (pc *ProofCache) DisableDisk()

func (*ProofCache) Get

func (pc *ProofCache) Get(sid keybase1.SigID) *CheckResult

func (*ProofCache) Put

func (pc *ProofCache) Put(sid keybase1.SigID, pe ProofError) error

func (*ProofCache) Reset added in v1.0.19

func (pc *ProofCache) Reset() error

type ProofChecker

type ProofChecker interface {
	CheckHint(ctx ProofContext, h SigHint) ProofError
	CheckStatus(ctx ProofContext, h SigHint, pcm ProofCheckerMode) ProofError
	GetTorError() ProofError
}

type ProofCheckerMode added in v1.0.19

type ProofCheckerMode int
const (
	ProofCheckerModePassive ProofCheckerMode = iota
	ProofCheckerModeActive  ProofCheckerMode = iota
)

type ProofContext added in v1.0.18

type ProofContext interface {
	LogContext
	APIContext
	NetContext
}

ProofContext defines features needed by the proof system

type ProofError

type ProofError interface {
	error
	GetProofStatus() keybase1.ProofStatus
	GetDesc() string
}

func ImportProofError

func ImportProofError(e keybase1.ProofResult) ProofError

type ProofErrorImpl

type ProofErrorImpl struct {
	Status keybase1.ProofStatus
	Desc   string
}

func NewProofError

func NewProofError(s keybase1.ProofStatus, d string, a ...interface{}) *ProofErrorImpl

func (*ProofErrorImpl) Error

func (e *ProofErrorImpl) Error() string

func (*ProofErrorImpl) GetDesc

func (e *ProofErrorImpl) GetDesc() string

func (*ProofErrorImpl) GetProofStatus

func (e *ProofErrorImpl) GetProofStatus() keybase1.ProofStatus

type ProofLinkWithState

type ProofLinkWithState struct {
	// contains filtered or unexported fields
}

ProofLinkWithState contains a RemoteProofChainLink and the proof state. In addition, it satisfies the TrackIdComponent interface.

func (ProofLinkWithState) GetProofState

func (p ProofLinkWithState) GetProofState() keybase1.ProofState

func (ProofLinkWithState) GetProofType

func (p ProofLinkWithState) GetProofType() keybase1.ProofType

func (ProofLinkWithState) LastWriterWins

func (p ProofLinkWithState) LastWriterWins() bool

func (ProofLinkWithState) ToIDString

func (p ProofLinkWithState) ToIDString() string

func (ProofLinkWithState) ToKeyValuePair

func (p ProofLinkWithState) ToKeyValuePair() (string, string)

type ProofMetadata

type ProofMetadata struct {
	Me             *User
	SigningUser    UserBasic
	LastSeqno      Seqno
	PrevLinkID     LinkID
	LinkType       LinkType
	SigningKey     GenericKey
	Eldest         keybase1.KID
	CreationTime   int64
	ExpireIn       int
	IncludePGPHash bool
}

func (ProofMetadata) ToJSON

func (arg ProofMetadata) ToJSON(g *GlobalContext) (ret *jsonw.Wrapper, err error)

type ProofNotFoundForServiceError

type ProofNotFoundForServiceError struct {
	Service string
}

func (ProofNotFoundForServiceError) Error

func (ProofNotFoundForServiceError) ToStatus

func (e ProofNotFoundForServiceError) ToStatus() (s keybase1.Status)

type ProofNotFoundForUsernameError

type ProofNotFoundForUsernameError struct {
	Service  string
	Username string
}

func (ProofNotFoundForUsernameError) Error

func (ProofNotFoundForUsernameError) ToStatus

type ProofNotYetAvailableError

type ProofNotYetAvailableError struct{}

func (ProofNotYetAvailableError) Error

type ProofSet

type ProofSet struct {
	// contains filtered or unexported fields
}

func BaseProofSet added in v1.0.19

func BaseProofSet(u *keybase1.UserPlusAllKeys) *ProofSet

BaseProofSet creates a basic proof set for a user with their keybase and uid proofs and any pgp fingerprint proofs.

func NewProofSet

func NewProofSet(proofs []Proof) *ProofSet

func (*ProofSet) Add

func (ps *ProofSet) Add(p Proof)

func (ProofSet) Get

func (ps ProofSet) Get(keys []string) (ret []Proof)

type ProtocolDowngradeError

type ProtocolDowngradeError struct {
	// contains filtered or unexported fields
}

func NewProtocolDowngradeError added in v1.0.18

func NewProtocolDowngradeError(msg string) ProtocolDowngradeError

func (ProtocolDowngradeError) Error

func (h ProtocolDowngradeError) Error() string

type ProvisionUI

type ProvisionUI interface {
	keybase1.ProvisionUiInterface
}

type ProvisionUnavailableError

type ProvisionUnavailableError struct{}

func (ProvisionUnavailableError) Error

func (ProvisionUnavailableError) ToStatus

type PublicKeyList

type PublicKeyList []keybase1.PublicKey

func (PublicKeyList) Len

func (l PublicKeyList) Len() int

func (PublicKeyList) Less

func (l PublicKeyList) Less(i, j int) bool

func (PublicKeyList) Swap

func (l PublicKeyList) Swap(i, j int)

type RPCLogFactory

type RPCLogFactory struct {
	Contextified
}

func NewRPCLogFactory

func NewRPCLogFactory(g *GlobalContext) *RPCLogFactory

func (*RPCLogFactory) NewLog

func (r *RPCLogFactory) NewLog(a net.Addr) rpc.LogInterface

type RateLimitCategory

type RateLimitCategory string
const (
	CheckTrackingRateLimit RateLimitCategory = "CheckTrackingRateLimit"
	TestEventRateLimit                       = "TestEventRateLimit"
)

type RateLimits

type RateLimits struct {
	Contextified
	sync.Mutex
	// contains filtered or unexported fields
}

func NewRateLimits

func NewRateLimits(g *GlobalContext) *RateLimits

func (*RateLimits) GetPermission

func (r *RateLimits) GetPermission(category RateLimitCategory, interval time.Duration) bool

type RawKeyFamily

type RawKeyFamily struct {
	AllBundles []string `json:"all_bundles"`
}

As returned by user/lookup.json

type RawPrivateKey added in v1.0.18

type RawPrivateKey []byte

type RawPublicKey added in v1.0.18

type RawPublicKey []byte

type ReadCloseSeeker added in v1.0.19

type ReadCloseSeeker interface {
	io.ReadCloser
	io.Seeker
}

type ReadCloser

type ReadCloser struct {
	// contains filtered or unexported fields
}

type ReceiverDeviceError

type ReceiverDeviceError struct {
	Msg string
}

func NewReceiverDeviceError

func NewReceiverDeviceError(expected, received keybase1.DeviceID) ReceiverDeviceError

func (ReceiverDeviceError) Error

func (e ReceiverDeviceError) Error() string

func (ReceiverDeviceError) ToStatus

func (e ReceiverDeviceError) ToStatus() keybase1.Status

type ReloginRequiredError

type ReloginRequiredError struct{}

func (ReloginRequiredError) Error

func (e ReloginRequiredError) Error() string

func (ReloginRequiredError) ToStatus

func (e ReloginRequiredError) ToStatus() keybase1.Status
type RemoteProofChainLink interface {
	TypedChainLink
	TableKey() string
	LastWriterWins() bool
	GetRemoteUsername() string
	GetHostname() string
	GetProtocol() string
	DisplayCheck(ui IdentifyUI, lcr LinkCheckResult) error
	ToTrackingStatement(keybase1.ProofState) (*jsonw.Wrapper, error)
	CheckDataJSON() *jsonw.Wrapper
	ToIDString() string
	ToKeyValuePair() (string, string)
	ComputeTrackDiff(tl *TrackLookup) TrackDiff
	GetProofType() keybase1.ProofType
	ProofText() string
}

========================================================================= Remote, Web and Social

func ParseWebServiceBinding

func ParseWebServiceBinding(base GenericChainLink) (ret RemoteProofChainLink, e error)

To be used for signatures in a user's signature chain.

type RemoteProofLinks struct {
	// contains filtered or unexported fields
}

RemoteProofLinks holds a set of RemoteProofChainLinks, organized by service.

func NewRemoteProofLinks() *RemoteProofLinks

NewRemoteProofLinks creates a new empty collection of proof links.

func (*RemoteProofLinks) Active

func (r *RemoteProofLinks) Active() []RemoteProofChainLink

Active returns all the active proof links, deduplicating any and honoring the LastWriterWins option.

func (*RemoteProofLinks) AddProofsToSet

func (r *RemoteProofLinks) AddProofsToSet(existing *ProofSet, okStates []keybase1.ProofState)

AddProofsToSet adds the active proofs to an existing ProofSet, if they're one of the given OkStates. If okStates is nil, then we check only against keybase1.ProofState_OK.

func (*RemoteProofLinks) ForService

ForService returns all the active proof links for a service.

func (*RemoteProofLinks) Insert

func (r *RemoteProofLinks) Insert(link RemoteProofChainLink, err ProofError)

Insert adds a link to the collection of proof links.

func (*RemoteProofLinks) TrackSet

func (r *RemoteProofLinks) TrackSet() *TrackSet

TrackSet creates a new TrackSet with all the active proofs.

func (*RemoteProofLinks) TrackingStatement

func (r *RemoteProofLinks) TrackingStatement() *jsonw.Wrapper

TrackingStatement generates the remote proofs portions of the tracking statement from the active proofs.

type RemoteStream

type RemoteStream struct {
	Stream    keybase1.Stream
	Cli       *keybase1.StreamUiClient
	SessionID int
}

func (RemoteStream) Close

func (ewc RemoteStream) Close() (err error)

func (RemoteStream) Read

func (ewc RemoteStream) Read(buf []byte) (n int, err error)

func (RemoteStream) Reset added in v1.0.19

func (ewc RemoteStream) Reset() (err error)

func (RemoteStream) Write

func (ewc RemoteStream) Write(buf []byte) (n int, err error)

type RemoteStreamBuffered

type RemoteStreamBuffered struct {
	// contains filtered or unexported fields
}

func NewRemoteStreamBuffered

func NewRemoteStreamBuffered(s keybase1.Stream, c *keybase1.StreamUiClient, sessionID int) *RemoteStreamBuffered

func (*RemoteStreamBuffered) Close

func (x *RemoteStreamBuffered) Close() error

func (*RemoteStreamBuffered) Read

func (x *RemoteStreamBuffered) Read(p []byte) (int, error)

func (*RemoteStreamBuffered) Reset added in v1.0.19

func (x *RemoteStreamBuffered) Reset() (err error)

func (*RemoteStreamBuffered) Write

func (x *RemoteStreamBuffered) Write(p []byte) (int, error)

type ReportingTimer

type ReportingTimer interface {
	Report(prefix string)
}

ReportingTimer is an interface shared between ReportingTimerReal and ReportingTimerDummy, to allow for convenient disabling of timer features.

type ReportingTimerDummy

type ReportingTimerDummy struct{}

ReportingTimerDummy fulfills the ReportingTimer interface but doesn't do anything when done.

func (ReportingTimerDummy) Report

func (r ReportingTimerDummy) Report(prefix string)

Report is a noop.

type ReportingTimerReal

type ReportingTimerReal struct {
	SimpleTimer
	Contextified
}

ReportingTimerReal is a SimpleTimer that reports after the timing measurement is done.

func NewReportingTimerReal

func NewReportingTimerReal(ctx Contextified) *ReportingTimerReal

NewReportingTimerReal returns an initialized reporting timer that actually reports timing information.

func (*ReportingTimerReal) Report

func (r *ReportingTimerReal) Report(prefix string)

Report stops and resets the timer, then logs to Info what the duration was.

type Requester

type Requester interface {
	Contextifier
	// contains filtered or unexported methods
}

Internal and External APIs both implement these methods, allowing us to share the request-making code below in doRequest

type ResolutionError

type ResolutionError struct {
	Input string
	Msg   string
}

func (ResolutionError) Error

func (e ResolutionError) Error() string

func (ResolutionError) ToStatus

func (e ResolutionError) ToStatus() keybase1.Status

type ResolveCacheStats added in v1.0.18

type ResolveCacheStats struct {
	// contains filtered or unexported fields
}

func (ResolveCacheStats) Eq added in v1.0.18

func (s ResolveCacheStats) Eq(m, t, mt, et, h int) bool

func (ResolveCacheStats) EqWithDiskHits added in v1.0.19

func (s ResolveCacheStats) EqWithDiskHits(m, t, mt, et, h, dh int) bool

type ResolveResult

type ResolveResult struct {
	// contains filtered or unexported fields
}

func (*ResolveResult) GetBody

func (res *ResolveResult) GetBody() *jsonw.Wrapper

func (*ResolveResult) GetError

func (res *ResolveResult) GetError() error

func (*ResolveResult) GetNormalizedQueriedUsername

func (res *ResolveResult) GetNormalizedQueriedUsername() NormalizedUsername

func (*ResolveResult) GetNormalizedUsername

func (res *ResolveResult) GetNormalizedUsername() NormalizedUsername

func (*ResolveResult) GetUID

func (res *ResolveResult) GetUID() keybase1.UID

func (*ResolveResult) GetUsername

func (res *ResolveResult) GetUsername() string

func (ResolveResult) String added in v1.0.19

func (res ResolveResult) String() string

func (*ResolveResult) WasKBAssertion added in v1.0.17

func (res *ResolveResult) WasKBAssertion() bool

type Resolver

type Resolver struct {
	Contextified

	Stats   ResolveCacheStats
	NowFunc func() time.Time
	// contains filtered or unexported fields
}

func NewResolver

func NewResolver(g *GlobalContext) *Resolver

func (*Resolver) EnableCaching

func (r *Resolver) EnableCaching()

func (*Resolver) Resolve

func (r *Resolver) Resolve(input string) ResolveResult

func (*Resolver) ResolveFullExpression

func (r *Resolver) ResolveFullExpression(ctx context.Context, input string) (res ResolveResult)

func (*Resolver) ResolveFullExpressionNeedUsername

func (r *Resolver) ResolveFullExpressionNeedUsername(ctx context.Context, input string) (res ResolveResult)

func (*Resolver) ResolveFullExpressionWithBody

func (r *Resolver) ResolveFullExpressionWithBody(ctx context.Context, input string) (res ResolveResult)

func (*Resolver) ResolveWithBody

func (r *Resolver) ResolveWithBody(input string) ResolveResult

func (*Resolver) Shutdown

func (r *Resolver) Shutdown()

type RetryExhaustedError

type RetryExhaustedError struct {
}

func (RetryExhaustedError) Error

func (e RetryExhaustedError) Error() string

type ReverseSigError

type ReverseSigError struct {
	// contains filtered or unexported fields
}

func (ReverseSigError) Error

func (r ReverseSigError) Error() string
type RevokeChainLink struct {
	GenericChainLink
	// contains filtered or unexported fields
}
func ParseRevokeChainLink(b GenericChainLink) (ret *RevokeChainLink, err error)

func (*RevokeChainLink) GetDevice

func (r *RevokeChainLink) GetDevice() *Device

func (*RevokeChainLink) IsRevocationIsh

func (r *RevokeChainLink) IsRevocationIsh() bool

func (*RevokeChainLink) ToDisplayString

func (r *RevokeChainLink) ToDisplayString() string

func (*RevokeChainLink) Type

func (r *RevokeChainLink) Type() string

type RevokedKey

type RevokedKey struct {
	Key       GenericKey
	RevokedAt *KeybaseTime
	RevokedBy keybase1.KID
}

type RunGpg2Arg

type RunGpg2Arg struct {
	Arguments []string
	Stdin     bool
	Stderr    bool
	Stdout    bool
	TTY       string
}

type RunGpg2Res

type RunGpg2Res struct {
	Stdin  io.WriteCloser
	Stdout io.ReadCloser
	Stderr io.ReadCloser
	Wait   func() error
	Err    error
}

type RunMode

type RunMode string

func StringToRunMode

func StringToRunMode(s string) (RunMode, error)

StringToRunMode turns a string into a run-mode

type RunModeGetter

type RunModeGetter func() RunMode

type S

type S struct {
	Val string
}

func B64Arg

func B64Arg(b []byte) S

func HexArg

func HexArg(b []byte) S

func (S) String

func (s S) String() string

type SKB

type SKB struct {
	Priv SKBPriv  `codec:"priv"`
	Pub  []byte   `codec:"pub"`
	Type AlgoType `codec:"type,omitempty"`

	Contextified

	sync.Mutex // currently only for uid
	// contains filtered or unexported fields
}

func NewSKB

func NewSKB(gc *GlobalContext) *SKB

func ToServerSKB added in v1.0.18

func ToServerSKB(gc *GlobalContext, key GenericKey, tsec Triplesec, gen PassphraseGeneration) (ret *SKB, err error)

func WriteLksSKBToKeyring

func WriteLksSKBToKeyring(g *GlobalContext, k GenericKey, lks *LKSec, lctx LoginContext) (*SKB, error)

func (*SKB) ArmoredEncode

func (s *SKB) ArmoredEncode() (ret string, err error)

func (*SKB) Dump

func (s *SKB) Dump()

func (*SKB) GetPubKey

func (s *SKB) GetPubKey() (key GenericKey, err error)

func (*SKB) HumanDescription

func (s *SKB) HumanDescription(owner *User) (string, error)

func (*SKB) PromptAndUnlock

func (s *SKB) PromptAndUnlock(arg SecretKeyPromptArg, secretStore SecretStore, me *User) (ret GenericKey, err error)

func (*SKB) RawUnlockedKey

func (s *SKB) RawUnlockedKey() []byte

func (*SKB) ReadKey

func (s *SKB) ReadKey() (g GenericKey, err error)

func (*SKB) SetUID

func (s *SKB) SetUID(uid keybase1.UID)

func (*SKB) ToPacket

func (s *SKB) ToPacket() (ret *KeybasePacket, err error)

func (*SKB) UnlockNoPrompt

func (s *SKB) UnlockNoPrompt(lctx LoginContext, secretStore SecretStore) (GenericKey, error)

func (*SKB) UnlockSecretKey

func (s *SKB) UnlockSecretKey(lctx LoginContext, passphrase string, tsec Triplesec, pps *PassphraseStream, secretStorer SecretStorer) (key GenericKey, err error)

func (*SKB) UnlockWithStoredSecret

func (s *SKB) UnlockWithStoredSecret(lctx LoginContext, secretRetriever SecretRetriever) (ret GenericKey, err error)

func (*SKB) VerboseDescription

func (s *SKB) VerboseDescription() (ret string, err error)

type SKBKeyringFile

type SKBKeyringFile struct {
	Contextified
	sync.Mutex

	Blocks []*SKB
	// contains filtered or unexported fields
}

func LoadSKBKeyring

func LoadSKBKeyring(un NormalizedUsername, g *GlobalContext) (*SKBKeyringFile, error)

func NewSKBKeyringFile

func NewSKBKeyringFile(g *GlobalContext, un NormalizedUsername) *SKBKeyringFile

func (*SKBKeyringFile) AllPGPBlocks added in v1.0.18

func (k *SKBKeyringFile) AllPGPBlocks() ([]*SKB, error)

func (*SKBKeyringFile) Bug3964Repair added in v1.0.18

func (k *SKBKeyringFile) Bug3964Repair(lctx LoginContext, lks *LKSec, dkm DeviceKeyMap) (ret *SKBKeyringFile, serverHalfSet *LKSecServerHalfSet, err error)

func (*SKBKeyringFile) FindSecretKey

func (k *SKBKeyringFile) FindSecretKey(kids []keybase1.KID) (ret *SKB)

FindSecretKey will, given a list of KIDs, find the first one in the list that has a corresponding secret key in the keyring file.

func (*SKBKeyringFile) GetFilename

func (k *SKBKeyringFile) GetFilename() string

GetFilename is only called from within Save(), so it's called with a lock. Needs to be called GetFilename() to meet the interface required by SafeSaveToFile

func (*SKBKeyringFile) HasPGPKeys

func (k *SKBKeyringFile) HasPGPKeys() bool

func (*SKBKeyringFile) Index

func (k *SKBKeyringFile) Index() (err error)

func (*SKBKeyringFile) IsForUsername added in v1.0.19

func (k *SKBKeyringFile) IsForUsername(un NormalizedUsername) bool

func (*SKBKeyringFile) Load

func (k *SKBKeyringFile) Load() (err error)

func (*SKBKeyringFile) LoadAndIndex

func (k *SKBKeyringFile) LoadAndIndex() error

func (*SKBKeyringFile) LookupByFingerprint

func (k *SKBKeyringFile) LookupByFingerprint(fp PGPFingerprint) *SKB

func (*SKBKeyringFile) LookupByKid

func (k *SKBKeyringFile) LookupByKid(kid keybase1.KID) *SKB

func (*SKBKeyringFile) MTime added in v1.0.18

func (k *SKBKeyringFile) MTime() (mtime time.Time, err error)

func (*SKBKeyringFile) MarkDirty added in v1.0.18

func (k *SKBKeyringFile) MarkDirty()

func (*SKBKeyringFile) Push

func (k *SKBKeyringFile) Push(skb *SKB) error

func (*SKBKeyringFile) PushAndSave

func (k *SKBKeyringFile) PushAndSave(skb *SKB) error

func (*SKBKeyringFile) RemoveAllPGPBlocks added in v1.0.18

func (k *SKBKeyringFile) RemoveAllPGPBlocks() error

func (*SKBKeyringFile) Save

func (k *SKBKeyringFile) Save() error

func (*SKBKeyringFile) SearchWithComputedKeyFamily

func (k *SKBKeyringFile) SearchWithComputedKeyFamily(ckf *ComputedKeyFamily, ska SecretKeyArg) []*SKB

func (*SKBKeyringFile) Username added in v1.0.19

func (k *SKBKeyringFile) Username() NormalizedUsername

func (*SKBKeyringFile) WriteTo

func (k *SKBKeyringFile) WriteTo(w io.Writer) (int64, error)

WriteTo is similar to GetFilename described just above in terms of locking discipline.

type SKBPriv

type SKBPriv struct {
	Data                 []byte `codec:"data"`
	Encryption           int    `codec:"encryption"`
	PassphraseGeneration int    `codec:"passphrase_generation,omitempty"`
}

type SafeWriteLogger added in v1.0.18

type SafeWriteLogger interface {
	Debug(format string, args ...interface{})
	Errorf(format string, args ...interface{})
}

type SafeWriter

type SafeWriter interface {
	GetFilename() string
	WriteTo(io.Writer) (int64, error)
}

type SaltpackEncryptArg

type SaltpackEncryptArg struct {
	Source         io.Reader
	Sink           io.WriteCloser
	Receivers      []NaclDHKeyPublic
	Sender         NaclDHKeyPair
	Binary         bool
	HideRecipients bool
}

type SaltpackUI

type SaltpackUI interface {
	SaltpackPromptForDecrypt(context.Context, keybase1.SaltpackPromptForDecryptArg, bool) error
	SaltpackVerifySuccess(context.Context, keybase1.SaltpackVerifySuccessArg) error
	SaltpackVerifyBadSender(context.Context, keybase1.SaltpackVerifyBadSenderArg) error
}

type SaltpackVerifyContext added in v1.0.16

type SaltpackVerifyContext interface {
	GetLog() logger.Logger
}

SaltpackVerifyContext is context for engine calls

type SecretKeyArg

type SecretKeyArg struct {
	// Whose keys to use. Must be non-nil.
	Me *User

	// The allowed key types.
	KeyType SecretKeyType

	// For non-device keys, a string that the key has to match. If
	// empty, any valid key is allowed.
	KeyQuery   string
	ExactMatch bool // if set, full equality required
}

type SecretKeyPromptArg

type SecretKeyPromptArg struct {
	LoginContext   LoginContext
	Ska            SecretKeyArg
	SecretUI       SecretUI
	Reason         string
	UseCancelCache bool /* if true, when user cancels prompt, don't prompt again for 5m */
}

type SecretKeyType

type SecretKeyType int
const (
	// The current device signing key.
	DeviceSigningKeyType SecretKeyType = iota
	// The current device encryption key.
	DeviceEncryptionKeyType
	// A PGP key (including the synced PGP key, if there is one).
	PGPKeyType
)

func (SecretKeyType) String

func (t SecretKeyType) String() string

type SecretRetriever

type SecretRetriever interface {
	RetrieveSecret() (LKSecFullSecret, error)
}

type SecretStore

type SecretStore interface {
	SecretRetriever
	SecretStorer
}

func NewSecretStore

func NewSecretStore(g *GlobalContext, username NormalizedUsername) SecretStore

type SecretStoreAll

type SecretStoreAll interface {
	RetrieveSecret(username NormalizedUsername) (LKSecFullSecret, error)
	StoreSecret(username NormalizedUsername, secret LKSecFullSecret) error
	ClearSecret(username NormalizedUsername) error
	GetUsersWithStoredSecrets() ([]string, error)
	GetApprovalPrompt() string
	GetTerminalPrompt() string
}

func NewSecretStoreAll

func NewSecretStoreAll(g *GlobalContext) SecretStoreAll

type SecretStoreContext

type SecretStoreContext interface {
	GetAllUserNames() (NormalizedUsername, []NormalizedUsername, error)
	GetStoredSecretServiceName() string
	GetStoredSecretAccessGroup() string
	GetLog() logger.Logger
}

type SecretStoreError

type SecretStoreError struct {
	Msg string
}

func (SecretStoreError) Error

func (e SecretStoreError) Error() string

type SecretStoreFile added in v1.0.16

type SecretStoreFile struct {
	// contains filtered or unexported fields
}

func NewSecretStoreFile added in v1.0.16

func NewSecretStoreFile(dir string) *SecretStoreFile

func (*SecretStoreFile) ClearSecret added in v1.0.16

func (s *SecretStoreFile) ClearSecret(username NormalizedUsername) error

func (*SecretStoreFile) GetApprovalPrompt added in v1.0.16

func (s *SecretStoreFile) GetApprovalPrompt() string

func (*SecretStoreFile) GetTerminalPrompt added in v1.0.16

func (s *SecretStoreFile) GetTerminalPrompt() string

func (*SecretStoreFile) GetUsersWithStoredSecrets added in v1.0.16

func (s *SecretStoreFile) GetUsersWithStoredSecrets() ([]string, error)

func (*SecretStoreFile) RetrieveSecret added in v1.0.16

func (s *SecretStoreFile) RetrieveSecret(username NormalizedUsername) (LKSecFullSecret, error)

func (*SecretStoreFile) StoreSecret added in v1.0.16

func (s *SecretStoreFile) StoreSecret(username NormalizedUsername, secret LKSecFullSecret) error

type SecretStoreImp

type SecretStoreImp struct {
	// contains filtered or unexported fields
}

func (*SecretStoreImp) RetrieveSecret

func (s *SecretStoreImp) RetrieveSecret() (LKSecFullSecret, error)

func (*SecretStoreImp) StoreSecret

func (s *SecretStoreImp) StoreSecret(secret LKSecFullSecret) error

type SecretStoreLocked added in v1.0.18

type SecretStoreLocked struct {
	SecretStoreAll
	sync.Mutex
}

SecretStoreLocked protects a SecretStoreAll with a mutex.

func NewSecretStoreLocked added in v1.0.18

func NewSecretStoreLocked(g *GlobalContext) *SecretStoreLocked

func (*SecretStoreLocked) ClearSecret added in v1.0.18

func (s *SecretStoreLocked) ClearSecret(username NormalizedUsername) error

func (*SecretStoreLocked) GetUsersWithStoredSecrets added in v1.0.18

func (s *SecretStoreLocked) GetUsersWithStoredSecrets() ([]string, error)

func (*SecretStoreLocked) RetrieveSecret added in v1.0.18

func (s *SecretStoreLocked) RetrieveSecret(username NormalizedUsername) (LKSecFullSecret, error)

func (*SecretStoreLocked) StoreSecret added in v1.0.18

func (s *SecretStoreLocked) StoreSecret(username NormalizedUsername, secret LKSecFullSecret) error

type SecretStorer

type SecretStorer interface {
	StoreSecret(secret LKSecFullSecret) error
}

type SecretSyncer

type SecretSyncer struct {
	sync.Mutex
	Contextified
	// contains filtered or unexported fields
}

func NewSecretSyncer

func NewSecretSyncer(g *GlobalContext) *SecretSyncer

func (*SecretSyncer) ActiveDevices

func (ss *SecretSyncer) ActiveDevices(includeTypesSet DeviceTypeSet) (DeviceKeyMap, error)

ActiveDevices returns all the active desktop and mobile devices.

func (*SecretSyncer) AllActiveKeys

func (ss *SecretSyncer) AllActiveKeys(ckf *ComputedKeyFamily) []*SKB

AllActiveKeys returns all the active synced PGP keys.

func (*SecretSyncer) AllDevices added in v1.0.18

func (ss *SecretSyncer) AllDevices() DeviceKeyMap

func (*SecretSyncer) Clear

func (ss *SecretSyncer) Clear() error

func (*SecretSyncer) Devices

func (ss *SecretSyncer) Devices() (DeviceKeyMap, error)

func (*SecretSyncer) DumpPrivateKeys

func (ss *SecretSyncer) DumpPrivateKeys()

func (*SecretSyncer) FindActiveKey

func (ss *SecretSyncer) FindActiveKey(ckf *ComputedKeyFamily) (ret *SKB, err error)

FindActiveKey examines the synced keys, looking for one that's currently active. Returns ret=nil if none was found.

func (*SecretSyncer) FindDevice

func (ss *SecretSyncer) FindDevice(id keybase1.DeviceID) (DeviceKey, error)

func (*SecretSyncer) FindPrivateKey

func (ss *SecretSyncer) FindPrivateKey(kid string) (ServerPrivateKey, bool)

func (*SecretSyncer) HasActiveDevice

func (ss *SecretSyncer) HasActiveDevice(includeTypesSet DeviceTypeSet) (bool, error)

HasActiveDevice returns true if there is an active desktop or mobile device available.

func (*SecretSyncer) HasDevices

func (ss *SecretSyncer) HasDevices() bool

func (*SecretSyncer) IsDeviceNameTaken

func (ss *SecretSyncer) IsDeviceNameTaken(name string, includeTypesSet DeviceTypeSet) bool

IsDeviceNameTaken returns true if a desktop or mobile device is using a name already.

type SecretUI

type SecretUI interface {
	GetPassphrase(pinentry keybase1.GUIEntryArg, terminal *keybase1.SecretEntryArg) (keybase1.GetPassphraseRes, error)
}

type SelfNotFoundError

type SelfNotFoundError struct {
	// contains filtered or unexported fields
}

func (SelfNotFoundError) Error

func (e SelfNotFoundError) Error() string

func (SelfNotFoundError) ToStatus

func (e SelfNotFoundError) ToStatus() keybase1.Status
type SelfSigChainLink struct {
	GenericChainLink
	// contains filtered or unexported fields
}
func ParseSelfSigChainLink(base GenericChainLink) (ret *SelfSigChainLink, err error)

func (*SelfSigChainLink) CheckDataJSON

func (s *SelfSigChainLink) CheckDataJSON() *jsonw.Wrapper

func (*SelfSigChainLink) ComputeTrackDiff

func (s *SelfSigChainLink) ComputeTrackDiff(tl *TrackLookup) TrackDiff

func (*SelfSigChainLink) DisplayCheck

func (s *SelfSigChainLink) DisplayCheck(ui IdentifyUI, lcr LinkCheckResult) error

func (*SelfSigChainLink) GetDevice

func (s *SelfSigChainLink) GetDevice() *Device

func (*SelfSigChainLink) GetHostname

func (s *SelfSigChainLink) GetHostname() string

func (*SelfSigChainLink) GetPGPFullHash

func (s *SelfSigChainLink) GetPGPFullHash() string

func (*SelfSigChainLink) GetProofType

func (s *SelfSigChainLink) GetProofType() keybase1.ProofType

func (*SelfSigChainLink) GetProtocol

func (s *SelfSigChainLink) GetProtocol() string

func (*SelfSigChainLink) GetRemoteUsername

func (s *SelfSigChainLink) GetRemoteUsername() string

func (*SelfSigChainLink) LastWriterWins

func (s *SelfSigChainLink) LastWriterWins() bool

func (*SelfSigChainLink) ParseDevice

func (s *SelfSigChainLink) ParseDevice() (err error)

func (*SelfSigChainLink) ProofText

func (s *SelfSigChainLink) ProofText() string

func (*SelfSigChainLink) TableKey

func (s *SelfSigChainLink) TableKey() string

func (*SelfSigChainLink) ToDisplayString

func (s *SelfSigChainLink) ToDisplayString() string

func (*SelfSigChainLink) ToIDString

func (s *SelfSigChainLink) ToIDString() string

func (*SelfSigChainLink) ToKeyValuePair

func (s *SelfSigChainLink) ToKeyValuePair() (string, string)

func (*SelfSigChainLink) ToTrackingStatement

func (s *SelfSigChainLink) ToTrackingStatement(keybase1.ProofState) (*jsonw.Wrapper, error)

func (*SelfSigChainLink) Type

func (s *SelfSigChainLink) Type() string

type SelfTrackError

type SelfTrackError struct{}

func (SelfTrackError) Error

func (e SelfTrackError) Error() string

type Seqno

type Seqno int64

type Server

type Server interface {
}

type ServerChainError

type ServerChainError struct {
	// contains filtered or unexported fields
}

func NewServerChainError

func NewServerChainError(d string, a ...interface{}) ServerChainError

func (ServerChainError) Error

func (e ServerChainError) Error() string

type ServerPrivateKey

type ServerPrivateKey struct {
	Kid     string `json:"kid"`
	KeyType int    `json:"key_type"`
	Bundle  string `json:"bundle"`
	Mtime   int    `json:"mtime"`
	Ctime   int    `json:"ctime"`
	KeyBits int    `json:"key_bits"`
	KeyAlgo int    `json:"key_algo"`
}

func (*ServerPrivateKey) FindActiveKey

func (k *ServerPrivateKey) FindActiveKey(ckf *ComputedKeyFamily) (ret *SKB, err error)

func (ServerPrivateKey) ToSKB

func (k ServerPrivateKey) ToSKB(gc *GlobalContext) (*SKB, error)

type ServerPrivateKeyMap

type ServerPrivateKeyMap map[string]ServerPrivateKey

type ServerPrivateKeys

type ServerPrivateKeys struct {
	Status      APIStatus           `json:"status"`
	Version     int                 `json:"version"`
	Mtime       *int                `json:"mtime"`
	PrivateKeys ServerPrivateKeyMap `json:"private_keys"` // note these are only PGP keys
	Devices     DeviceKeyMap        `json:"devices"`
}

type ServiceBlock

type ServiceBlock struct {
	// contains filtered or unexported fields
}

Can be used to either parse a proof `service` JSON block, or a `remote_key_proof` JSON block in a tracking statement.

func ParseServiceBlock

func ParseServiceBlock(jw *jsonw.Wrapper, pt keybase1.ProofType) (sb *ServiceBlock, err error)

func (ServiceBlock) GetProofState

func (sb ServiceBlock) GetProofState() keybase1.ProofState

func (ServiceBlock) GetProofType

func (sb ServiceBlock) GetProofType() keybase1.ProofType

func (ServiceBlock) IsSocial

func (sb ServiceBlock) IsSocial() bool

func (ServiceBlock) LastWriterWins

func (sb ServiceBlock) LastWriterWins() bool

func (ServiceBlock) ToIDString

func (sb ServiceBlock) ToIDString() string

func (ServiceBlock) ToKeyValuePair

func (sb ServiceBlock) ToKeyValuePair() (string, string)

type ServiceInfo

type ServiceInfo struct {
	Version string `json:"version,omitempty"`
	Label   string `json:"label,omitempty"`
	Pid     int    `json:"pid,omitempty"`
}

ServiceInfo describes runtime info for a service. This is primarily used to detect service updates.

func KeybaseServiceInfo

func KeybaseServiceInfo(g *GlobalContext) ServiceInfo

KeybaseServiceInfo is runtime info for the Keybase service.

func NewServiceInfo

func NewServiceInfo(version string, prerelease string, label string, pid int) ServiceInfo

NewServiceInfo generates service info for other services (like KBFS).

func WaitForServiceInfoFile

func WaitForServiceInfoFile(path string, label string, pid string, timeout time.Duration, log serviceLog) (*ServiceInfo, error)

WaitForServiceInfoFile tries to wait for a service info file, which should be written on successful service startup.

func (ServiceInfo) WriteFile

func (s ServiceInfo) WriteFile(path string, log logger.Logger) error

WriteFile writes service info as JSON in runtimeDir.

type ServiceType

type ServiceType interface {
	AllStringKeys() []string

	// NormalizeUsername normalizes the given username, assuming
	// that it's free of any leading strings like '@' or 'dns://'.
	NormalizeUsername(string) (string, error)

	// NormalizeRemote normalizes the given remote username, which
	// is usually but not always the same as the username. It also
	// allows leaders like '@' and 'dns://'.
	//
	// In the case of Facebook, this version does the standard downcasing, but
	// leaves the dots in (that NormalizeUsername above would strip out). This
	// lets us keep the dots in the proof text, and display them on your
	// profile page, even though we ignore them for proof checking.
	NormalizeRemoteName(ctx ProofContext, name string) (string, error)

	GetPrompt() string
	LastWriterWins() bool
	PreProofCheck(ctx ProofContext, remotename string) (*Markup, error)
	PreProofWarning(remotename string) *Markup
	ToServiceJSON(remotename string) *jsonw.Wrapper
	PostInstructions(remotename string) *Markup
	DisplayName(remotename string) string
	RecheckProofPosting(tryNumber int, status keybase1.ProofStatus, remotename string) (warning *Markup, err error)
	GetProofType() string
	GetTypeName() string
	CheckProofText(text string, id keybase1.SigID, sig string) error
	FormatProofText(*PostProofRes) (string, error)
	GetAPIArgKey() string
	IsDevelOnly() bool

	MakeProofChecker(l RemoteProofChainLink) ProofChecker
}

ServiceType is an interface for describing an external proof service, like 'Twitter' or 'GitHub', etc.

type Session

type Session struct {
	Contextified
	// contains filtered or unexported fields
}

func NewSessionThin

func NewSessionThin(uid keybase1.UID, username NormalizedUsername, token string) *Session

NewSessionThin creates a minimal (thin) session of just the uid and username. Clients of the daemon that use the session protocol need this.

func (*Session) APIArgs

func (s *Session) APIArgs() (token, csrf string)

func (*Session) GetCsrf

func (s *Session) GetCsrf() string

func (*Session) GetDictionary

func (s *Session) GetDictionary() *jsonw.Wrapper

func (*Session) GetToken

func (s *Session) GetToken() string

func (*Session) GetUID

func (s *Session) GetUID() keybase1.UID

func (*Session) GetUsername

func (s *Session) GetUsername() *NormalizedUsername

func (*Session) HasSessionToken

func (s *Session) HasSessionToken() bool

func (*Session) Invalidate

func (s *Session) Invalidate()

Invalidate marks the session as invalid and posts a logout notification.

func (*Session) IsLoggedIn

func (s *Session) IsLoggedIn() bool

func (*Session) IsLoggedInAndProvisioned

func (s *Session) IsLoggedInAndProvisioned() bool

true if user is logged in and has a device fully provisioned

func (*Session) IsRecent

func (s *Session) IsRecent() bool

func (*Session) IsValid

func (s *Session) IsValid() bool

func (*Session) Load

func (s *Session) Load() error

func (*Session) Logout

func (s *Session) Logout() error

func (*Session) SetCsrf

func (s *Session) SetCsrf(t string)

func (*Session) SetDeviceProvisioned

func (s *Session) SetDeviceProvisioned(devid keybase1.DeviceID) error

func (*Session) SetLoggedIn

func (s *Session) SetLoggedIn(sessionID, csrfToken string, username NormalizedUsername, uid keybase1.UID, deviceID keybase1.DeviceID) error

func (*Session) SetUsername

func (s *Session) SetUsername(username NormalizedUsername)

type SessionReader

type SessionReader interface {
	APIArgs() (token, csrf string)
	IsLoggedIn() bool
	Invalidate()
}

type ShutdownHook

type ShutdownHook func() error

type SibkeyAlreadyExistsError

type SibkeyAlreadyExistsError struct{}

func (SibkeyAlreadyExistsError) Error

func (e SibkeyAlreadyExistsError) Error() string

func (SibkeyAlreadyExistsError) ToStatus

type SibkeyChainLink struct {
	GenericChainLink
	// contains filtered or unexported fields
}
func ParseSibkeyChainLink(b GenericChainLink) (ret *SibkeyChainLink, err error)

func (*SibkeyChainLink) GetDelegatedKid

func (s *SibkeyChainLink) GetDelegatedKid() keybase1.KID

func (*SibkeyChainLink) GetDevice

func (s *SibkeyChainLink) GetDevice() *Device

func (*SibkeyChainLink) GetPGPFullHash

func (s *SibkeyChainLink) GetPGPFullHash() string

func (*SibkeyChainLink) GetRole

func (s *SibkeyChainLink) GetRole() KeyRole

func (*SibkeyChainLink) ToDisplayString

func (s *SibkeyChainLink) ToDisplayString() string

func (*SibkeyChainLink) Type

func (s *SibkeyChainLink) Type() string

func (*SibkeyChainLink) VerifyReverseSig

func (s *SibkeyChainLink) VerifyReverseSig(ckf ComputedKeyFamily) (err error)

VerifyReverseSig checks a SibkeyChainLink's reverse signature using the ComputedKeyFamily provided.

type SigChain

type SigChain struct {
	Contextified
	// contains filtered or unexported fields
}

func (*SigChain) Bump

func (sc *SigChain) Bump(mt MerkleTriple)

func (*SigChain) CheckFreshness

func (sc *SigChain) CheckFreshness(srv *MerkleTriple) (current bool, err error)

func (*SigChain) Dump

func (sc *SigChain) Dump(w io.Writer)

Dump prints the sigchain to the writer arg.

func (SigChain) GetComputedKeyInfos

func (sc SigChain) GetComputedKeyInfos() (cki *ComputedKeyInfos)

func (*SigChain) GetCurrentSubchain

func (sc *SigChain) GetCurrentSubchain(eldest keybase1.KID) (links []*ChainLink, err error)

GetCurrentSubchain takes the given sigchain and walks backward until it finds the start of the current subchain, returning all the links in the subchain. A new subchain starts in one of three ways (from the perspective of walking from oldest to newest):

  1. A link has a new eldest key, usually in the form of reporting no eldest_kid of its own and being signed by a KID that's not the previous eldest. Most resets so far take this form.
  2. A link of type "eldest", regardless of the KIDs involved. We want this to be how everything works in the future.
  3. One of a set of six hardcoded links that made it in back when we allowed repeating eldest keys without using the "eldest" link type.

func (SigChain) GetCurrentTailTriple

func (sc SigChain) GetCurrentTailTriple() (ret *MerkleTriple)
func (sc SigChain) GetFirstLink() *ChainLink

func (SigChain) GetFutureChainTail

func (sc SigChain) GetFutureChainTail() (ret *MerkleTriple)

func (SigChain) GetLastKnownID

func (sc SigChain) GetLastKnownID() (ret LinkID)

func (SigChain) GetLastKnownSeqno

func (sc SigChain) GetLastKnownSeqno() (ret Seqno)
func (sc SigChain) GetLastLink() *ChainLink

func (SigChain) GetLastLoadedID

func (sc SigChain) GetLastLoadedID() (ret LinkID)

func (SigChain) GetLastLoadedSeqno

func (sc SigChain) GetLastLoadedSeqno() (ret Seqno)

func (*SigChain) GetLinkFromSeqno

func (sc *SigChain) GetLinkFromSeqno(seqno int) *ChainLink

func (*SigChain) GetLinkFromSigID

func (sc *SigChain) GetLinkFromSigID(id keybase1.SigID) *ChainLink

func (*SigChain) GetLinkFromSigIDQuery

func (sc *SigChain) GetLinkFromSigIDQuery(query string) *ChainLink

GetLinkFromSigIDQuery will return true if it finds a ChainLink with a SigID that starts with query.

func (SigChain) Len

func (sc SigChain) Len() int

func (*SigChain) LoadFromServer

func (sc *SigChain) LoadFromServer(ctx context.Context, t *MerkleTriple, selfUID keybase1.UID) (dirtyTail *MerkleTriple, err error)

func (*SigChain) LocalDelegate

func (sc *SigChain) LocalDelegate(kf *KeyFamily, key GenericKey, sigID keybase1.SigID, signingKid keybase1.KID, isSibkey bool) (err error)

func (*SigChain) Store

func (sc *SigChain) Store(ctx context.Context) (err error)
func (sc *SigChain) VerifiedChainLinks(fp PGPFingerprint) (ret []*ChainLink)

func (*SigChain) VerifyChain

func (sc *SigChain) VerifyChain(ctx context.Context) (err error)

func (*SigChain) VerifySigsAndComputeKeys

func (sc *SigChain) VerifySigsAndComputeKeys(ctx context.Context, eldest keybase1.KID, ckf *ComputedKeyFamily) (cached bool, err error)

type SigChainLoader

type SigChainLoader struct {
	Contextified
	// contains filtered or unexported fields
}

func (*SigChainLoader) AccessPreload

func (l *SigChainLoader) AccessPreload() bool

func (*SigChainLoader) CheckFreshness

func (l *SigChainLoader) CheckFreshness() (current bool, err error)

func (*SigChainLoader) GetKeyFamily

func (l *SigChainLoader) GetKeyFamily() (err error)

func (*SigChainLoader) GetMerkleTriple

func (l *SigChainLoader) GetMerkleTriple() (ret *MerkleTriple)

func (*SigChainLoader) Load

func (l *SigChainLoader) Load() (ret *SigChain, err error)

Load is the main entry point into the SigChain loader. It runs through all of the steps to load a chain in from storage, to refresh it against the server, and to verify its integrity.

func (*SigChainLoader) LoadFromServer

func (l *SigChainLoader) LoadFromServer() (err error)

func (*SigChainLoader) LoadLastLinkIDFromStorage

func (l *SigChainLoader) LoadLastLinkIDFromStorage() (mt *MerkleTriple, err error)

func (*SigChainLoader) LoadLinksFromStorage

func (l *SigChainLoader) LoadLinksFromStorage() (err error)

func (*SigChainLoader) MakeSigChain

func (l *SigChainLoader) MakeSigChain() error

func (*SigChainLoader) Store

func (l *SigChainLoader) Store() (err error)

Store a SigChain to local storage as a result of having loaded it. We eagerly write loaded chain links to storage if they verify properly.

func (*SigChainLoader) StoreTail

func (l *SigChainLoader) StoreTail() (err error)

func (*SigChainLoader) VerifySigsAndComputeKeys

func (l *SigChainLoader) VerifySigsAndComputeKeys() (err error)

type SigHint

type SigHint struct {
	// contains filtered or unexported fields
}

func NewSigHint

func NewSigHint(jw *jsonw.Wrapper) (sh *SigHint, err error)

func (SigHint) Export

func (sh SigHint) Export() *keybase1.SigHint

func (SigHint) GetAPIURL

func (sh SigHint) GetAPIURL() string

func (SigHint) GetCheckText

func (sh SigHint) GetCheckText() string

func (SigHint) GetHumanURL

func (sh SigHint) GetHumanURL() string

func (SigHint) MarshalToJSON

func (sh SigHint) MarshalToJSON() *jsonw.Wrapper

type SigHints

type SigHints struct {
	Contextified
	// contains filtered or unexported fields
}

func LoadAndRefreshSigHints

func LoadAndRefreshSigHints(ctx context.Context, uid keybase1.UID, g *GlobalContext) (sh *SigHints, err error)

func LoadSigHints

func LoadSigHints(ctx context.Context, uid keybase1.UID, g *GlobalContext) (sh *SigHints, err error)

func NewSigHints

func NewSigHints(jw *jsonw.Wrapper, uid keybase1.UID, dirty bool, g *GlobalContext) (sh *SigHints, err error)

func (SigHints) Lookup

func (sh SigHints) Lookup(i keybase1.SigID) *SigHint

func (SigHints) MarshalToJSON

func (sh SigHints) MarshalToJSON() *jsonw.Wrapper

func (*SigHints) PopulateWith

func (sh *SigHints) PopulateWith(jw *jsonw.Wrapper) (err error)

func (*SigHints) Refresh

func (sh *SigHints) Refresh(ctx context.Context) (err error)

func (*SigHints) RefreshWith added in v1.0.18

func (sh *SigHints) RefreshWith(ctx context.Context, jw *jsonw.Wrapper) (err error)

func (*SigHints) Store

func (sh *SigHints) Store(ctx context.Context) (err error)

type SignaturePrefix added in v1.0.18

type SignaturePrefix string
const (
	SignaturePrefixKBFS           SignaturePrefix = "Keybase-KBFS-1"
	SignaturePrefixSigchain       SignaturePrefix = "Keybase-Sigchain-1"
	SignaturePrefixChatAttachment SignaturePrefix = "Keybase-Chat-Attachment-1"
	SignaturePrefixTesting        SignaturePrefix = "Keybase-Testing-1"
	// Chat prefixes for each MessageBoxedVersion.
	SignaturePrefixChatMBv1 SignaturePrefix = "Keybase-Chat-1"
	SignaturePrefixChatMBv2 SignaturePrefix = "Keybase-Chat-2"
)

func (SignaturePrefix) Prefix added in v1.0.18

func (p SignaturePrefix) Prefix(msg []byte) []byte

type SignatureStatus

type SignatureStatus struct {
	IsSigned        bool
	Verified        bool
	SignatureError  error
	KeyID           uint64
	Entity          *openpgp.Entity
	SignatureTime   time.Time
	RecipientKeyIDs []uint64
}

func PGPDecrypt

func PGPDecrypt(g *GlobalContext, source io.Reader, sink io.Writer, kr openpgp.KeyRing) (*SignatureStatus, error)

func PGPDecryptWithBundles

func PGPDecryptWithBundles(g *GlobalContext, source io.Reader, sink io.Writer, keys []*PGPKeyBundle) (*SignatureStatus, error)

type SimpleTimer

type SimpleTimer struct {
	// contains filtered or unexported fields
}

SimpleTimer keeps track of how long something is taking, like a network API call. Meant to be very simple. It is not meant to be goroutine safe and should only be called from one Goroutine.

func (*SimpleTimer) GetTotal

func (s *SimpleTimer) GetTotal() time.Duration

GetTotal gets the total duration spent in the timer.

func (*SimpleTimer) Reset

func (s *SimpleTimer) Reset()

Reset the internal duration counter.

func (*SimpleTimer) Start

func (s *SimpleTimer) Start()

Start the timer running, if it's not already started.

func (*SimpleTimer) Stop

func (s *SimpleTimer) Stop() time.Duration

Stop the timer; panic if it hasn't been previously started. Return the total duration spent in the timer.

type SkipSecretPromptError

type SkipSecretPromptError struct{}

func (SkipSecretPromptError) Error

func (e SkipSecretPromptError) Error() string

func (SkipSecretPromptError) ToStatus

func (e SkipSecretPromptError) ToStatus() (s keybase1.Status)

type SkipSequence added in v1.0.19

type SkipSequence []MerkleRootPayload

type SkipTable added in v1.0.19

type SkipTable map[Seqno]NodeHashAny
type SocialProofChainLink struct {
	GenericChainLink
	// contains filtered or unexported fields
}
func NewSocialProofChainLink(b GenericChainLink, s, u, proofText string) *SocialProofChainLink

func (*SocialProofChainLink) CheckDataJSON

func (s *SocialProofChainLink) CheckDataJSON() *jsonw.Wrapper

func (*SocialProofChainLink) ComputeTrackDiff

func (s *SocialProofChainLink) ComputeTrackDiff(tl *TrackLookup) TrackDiff

func (*SocialProofChainLink) DisplayCheck

func (s *SocialProofChainLink) DisplayCheck(ui IdentifyUI, lcr LinkCheckResult) error

func (*SocialProofChainLink) GetHostname

func (s *SocialProofChainLink) GetHostname() string

func (*SocialProofChainLink) GetProofType

func (s *SocialProofChainLink) GetProofType() keybase1.ProofType

func (*SocialProofChainLink) GetProtocol

func (s *SocialProofChainLink) GetProtocol() string

func (*SocialProofChainLink) GetRemoteUsername

func (s *SocialProofChainLink) GetRemoteUsername() string

func (*SocialProofChainLink) GetService

func (s *SocialProofChainLink) GetService() string

func (*SocialProofChainLink) LastWriterWins

func (s *SocialProofChainLink) LastWriterWins() bool

func (*SocialProofChainLink) ProofText

func (s *SocialProofChainLink) ProofText() string

func (*SocialProofChainLink) TableKey

func (s *SocialProofChainLink) TableKey() string

func (*SocialProofChainLink) ToDisplayString

func (s *SocialProofChainLink) ToDisplayString() string

func (*SocialProofChainLink) ToIDString

func (s *SocialProofChainLink) ToIDString() string

func (*SocialProofChainLink) ToKeyValuePair

func (s *SocialProofChainLink) ToKeyValuePair() (string, string)

func (*SocialProofChainLink) ToTrackingStatement

func (s *SocialProofChainLink) ToTrackingStatement(state keybase1.ProofState) (*jsonw.Wrapper, error)

func (*SocialProofChainLink) Type

func (s *SocialProofChainLink) Type() string

type Socket

type Socket interface {
	BindToSocket() (net.Listener, error)
	DialSocket() (net.Conn, error)
}

NewSocket() (Socket, err) is defined in the various platform-specific socket_*.go files.

func NewSocket

func NewSocket(g *GlobalContext) (ret Socket, err error)

type SocketInfo

type SocketInfo struct {
	Contextified
	// contains filtered or unexported fields
}

func (SocketInfo) BindToSocket

func (s SocketInfo) BindToSocket() (ret net.Listener, err error)

func (SocketInfo) DialSocket

func (s SocketInfo) DialSocket() (ret net.Conn, err error)

func (SocketInfo) GetBindFile added in v1.0.18

func (s SocketInfo) GetBindFile() string

func (SocketInfo) GetDialFiles added in v1.0.18

func (s SocketInfo) GetDialFiles() []string

type SocketWrapper

type SocketWrapper struct {
	// contains filtered or unexported fields
}

type SpecialKeyRing

type SpecialKeyRing struct {
	Contextified
	// contains filtered or unexported fields
}

SpecialKeyRing holds blessed keys, like the one Keybase uses to sign its Merkle Root.

func NewSpecialKeyRing

func NewSpecialKeyRing(v []keybase1.KID, g *GlobalContext) *SpecialKeyRing

NewSpecialKeyRing allocates a new SpecialKeyRing with the given vector of KIDs. For NaCl keys, it will actually import those keys into the Keyring.

func (*SpecialKeyRing) IsValidKID

func (sk *SpecialKeyRing) IsValidKID(kid keybase1.KID) bool

IsValidKID returns if this KID is valid (blessed) according to this Keyring

func (*SpecialKeyRing) Load

func (sk *SpecialKeyRing) Load(kid keybase1.KID) (GenericKey, error)

Load takes a blessed KID and returns, if possible, the GenericKey associated with that KID, for signature verification. If the key isn't found in memory or on disk (in the case of PGP), then it will attempt to fetch the key from the keybase server.

type StreamClassification

type StreamClassification struct {
	Format  CryptoMessageFormat
	Type    CryptoMessageType
	Armored bool
}

StreamClassification tells what Format the stream is, if it's a Public signature or a Private Message, if it's a detached or attached signature in the public case, and if it's armored or binary.

func ClassifyStream

func ClassifyStream(r io.Reader) (sc StreamClassification, out io.Reader, err error)

ClassifyStream takes a stream reader in, and returns a likely classification of that stream without consuming any data from it. It returns a reader that you should read from instead, in addition to the classification. If classification fails, there will be a `UnknownStreamError`, or additional EOF errors if the stream ended beform classification could go.

type StreamExistsError

type StreamExistsError struct{}

func (StreamExistsError) Error

func (s StreamExistsError) Error() string

func (StreamExistsError) ToStatus

func (e StreamExistsError) ToStatus(s keybase1.Status)

type StreamNotFoundError

type StreamNotFoundError struct{}

func (StreamNotFoundError) Error

func (s StreamNotFoundError) Error() string

func (StreamNotFoundError) ToStatus

func (e StreamNotFoundError) ToStatus(s keybase1.Status)

type StreamPeeker

type StreamPeeker struct {
	// contains filtered or unexported fields
}

StreamPeeker is a reader that takes another reader and allow you to peek at the beginning of the stream without consuming it.

func NewStreamPeeker

func NewStreamPeeker(r io.Reader) *StreamPeeker

NewStreamPeeker makes a new Reader from the given Reader, but also allows you to Peek at the first N bytes.

func (*StreamPeeker) Peek

func (p *StreamPeeker) Peek(buf []byte) (n int, err error)

Peek at the first N bytes of the stream.

func (*StreamPeeker) Read

func (p *StreamPeeker) Read(buf []byte) (n int, err error)

Read is the standard read, that either reads the buffered peek region or reads directly from the stream.

type StreamWrongKindError

type StreamWrongKindError struct{}

func (StreamWrongKindError) Error

func (s StreamWrongKindError) Error() string

func (StreamWrongKindError) ToStatus

func (e StreamWrongKindError) ToStatus(s keybase1.Status)

type StringWarning

type StringWarning string

func (StringWarning) Warn

func (s StringWarning) Warn(g *GlobalContext)

func (StringWarning) Warning

func (s StringWarning) Warning() string

type StubAPIEngine

type StubAPIEngine struct {
	*ExternalAPIEngine
}

func NewStubAPIEngine

func NewStubAPIEngine() *StubAPIEngine

func (*StubAPIEngine) Get

func (e *StubAPIEngine) Get(arg APIArg) (res *ExternalAPIRes, err error)

func (*StubAPIEngine) GetHTML

func (e *StubAPIEngine) GetHTML(arg APIArg) (res *ExternalHTMLRes, err error)

func (*StubAPIEngine) GetText

func (e *StubAPIEngine) GetText(arg APIArg) (*ExternalTextRes, error)
type SubkeyChainLink struct {
	GenericChainLink
	// contains filtered or unexported fields
}
func ParseSubkeyChainLink(b GenericChainLink) (ret *SubkeyChainLink, err error)

func (*SubkeyChainLink) GetDelegatedKid

func (s *SubkeyChainLink) GetDelegatedKid() keybase1.KID

func (*SubkeyChainLink) GetParentKid

func (s *SubkeyChainLink) GetParentKid() keybase1.KID

func (*SubkeyChainLink) GetRole

func (s *SubkeyChainLink) GetRole() KeyRole

func (*SubkeyChainLink) ToDisplayString

func (s *SubkeyChainLink) ToDisplayString() string

func (*SubkeyChainLink) Type

func (s *SubkeyChainLink) Type() string

type Syncer

type Syncer interface {
	Contextifier
	sync.Locker
	// contains filtered or unexported methods
}

type TerminalUI

type TerminalUI interface {
	ErrorWriter() io.Writer
	Output(string) error
	OutputDesc(OutputDescriptor, string) error
	OutputWriter() io.Writer
	Printf(fmt string, args ...interface{}) (int, error)
	Prompt(PromptDescriptor, string) (string, error)
	PromptForConfirmation(prompt string) error
	PromptPassword(PromptDescriptor, string) (string, error)
	PromptYesNo(PromptDescriptor, string, PromptDefault) (bool, error)
	Tablify(headings []string, rowfunc func() []string)
	TerminalSize() (width int, height int)
}

type TestCancelSecretUI

type TestCancelSecretUI struct {
	CallCount int
}

func (*TestCancelSecretUI) GetPassphrase

type TestConfig

type TestConfig struct {
	// contains filtered or unexported fields
}

TestConfig tracks libkb config during a test

func (*TestConfig) CleanTest

func (c *TestConfig) CleanTest()

func (*TestConfig) GetConfigFileName

func (c *TestConfig) GetConfigFileName() string

func (*TestConfig) InitTest

func (c *TestConfig) InitTest(t *testing.T, initConfig string)

type TestContext

type TestContext struct {
	G          *GlobalContext
	PrevGlobal *GlobalContext
	Tp         TestParameters
	// TODO: Rename this to TB.
	T testing.TB
}

func SetupTest

func SetupTest(tb testing.TB, name string, depth int) (tc TestContext)

The depth argument is now ignored.

func (*TestContext) Cleanup

func (tc *TestContext) Cleanup()

func (TestContext) ClearAllStoredSecrets

func (tc TestContext) ClearAllStoredSecrets() error

func (TestContext) Clone

func (tc TestContext) Clone() (ret TestContext)

func (*TestContext) GenerateGPGKeyring

func (tc *TestContext) GenerateGPGKeyring(ids ...string) error

func (*TestContext) MakePGPKey

func (tc *TestContext) MakePGPKey(id string) (*PGPKeyBundle, error)

func (TestContext) MoveGpgKeyringTo

func (tc TestContext) MoveGpgKeyringTo(dst TestContext) error

func (*TestContext) ResetLoginState

func (tc *TestContext) ResetLoginState()

ResetLoginStateForTest simulates a shutdown and restart (for client state). Used by tests that need to clear out cached login state without logging out.

func (*TestContext) SetRuntimeDir

func (tc *TestContext) SetRuntimeDir(s string)

type TestLoginCancelUI

type TestLoginCancelUI struct {
	TestLoginUI
}

func (*TestLoginCancelUI) GetEmailOrUsername

func (t *TestLoginCancelUI) GetEmailOrUsername(_ context.Context, _ int) (string, error)

type TestLoginUI

type TestLoginUI struct {
	Username                 string
	RevokeBackup             bool
	CalledGetEmailOrUsername int
}

func (*TestLoginUI) DisplayPaperKeyPhrase

func (t *TestLoginUI) DisplayPaperKeyPhrase(_ context.Context, arg keybase1.DisplayPaperKeyPhraseArg) error

func (*TestLoginUI) DisplayPrimaryPaperKey

func (t *TestLoginUI) DisplayPrimaryPaperKey(_ context.Context, arg keybase1.DisplayPrimaryPaperKeyArg) error

func (*TestLoginUI) GetEmailOrUsername

func (t *TestLoginUI) GetEmailOrUsername(_ context.Context, _ int) (string, error)

func (*TestLoginUI) PromptRevokePaperKeys

func (t *TestLoginUI) PromptRevokePaperKeys(_ context.Context, arg keybase1.PromptRevokePaperKeysArg) (bool, error)

type TestOutput

type TestOutput struct {
	// contains filtered or unexported fields
}

TestOutput is a mock interface for capturing and testing output

func NewTestOutput

func NewTestOutput(e string, t *testing.T, c *bool) TestOutput

func (TestOutput) Write

func (to TestOutput) Write(p []byte) (n int, err error)

type TestParameters

type TestParameters struct {
	ConfigFilename string
	Home           string
	GPG            string
	GPGHome        string
	GPGOptions     []string
	Debug          bool
	// Whether we are in Devel Mode
	Devel bool
	// If we're in dev mode, the name for this test, with a random
	// suffix.
	DevelName  string
	RuntimeDir string

	// set to true to use production run mode in tests
	UseProductionRunMode bool
}

func (TestParameters) GetDebug

func (tp TestParameters) GetDebug() (bool, bool)

type TestSecretStoreAll

type TestSecretStoreAll struct {
	Contextified
	// contains filtered or unexported fields
}

Used by tests that want to mock out the secret store.

func (TestSecretStoreAll) ClearSecret

func (t TestSecretStoreAll) ClearSecret(accountName NormalizedUsername) error

func (TestSecretStoreAll) GetAllUserNames

func (TestSecretStoreAll) GetApprovalPrompt added in v1.0.16

func (t TestSecretStoreAll) GetApprovalPrompt() string

func (TestSecretStoreAll) GetTerminalPrompt added in v1.0.16

func (t TestSecretStoreAll) GetTerminalPrompt() string

func (TestSecretStoreAll) GetUsersWithStoredSecrets

func (t TestSecretStoreAll) GetUsersWithStoredSecrets() (ret []string, err error)

func (TestSecretStoreAll) RetrieveSecret

func (t TestSecretStoreAll) RetrieveSecret(accountName NormalizedUsername) (ret LKSecFullSecret, err error)

func (TestSecretStoreAll) StoreSecret

func (t TestSecretStoreAll) StoreSecret(accountName NormalizedUsername, secret LKSecFullSecret) error

type TestSecretUI

type TestSecretUI struct {
	Passphrase          string
	StoreSecret         bool
	CalledGetPassphrase bool
}

func (*TestSecretUI) GetPassphrase

type TimeoutError

type TimeoutError struct{}

func (TimeoutError) Error

func (e TimeoutError) Error() string

func (TimeoutError) ToStatus

func (e TimeoutError) ToStatus() keybase1.Status

type TimerSelector

type TimerSelector int

TimerSelector allows us to select which timers we want on.

const (
	// TimerNone means Timers Disabled
	TimerNone TimerSelector = 0
	// TimerAPI enables API timers
	TimerAPI TimerSelector = 1 << iota
	// TimerXAPI enables External API timers
	TimerXAPI
	// TimerRPC enables RPC timers
	TimerRPC
)

type TimerSet

type TimerSet struct {
	Contextified
	// contains filtered or unexported fields
}

TimerSet is the set of currently active timers

func NewTimerSet

func NewTimerSet(g *GlobalContext) *TimerSet

NewTimerSet looks into the given context for configuration information about how to set up timers. It then returns the corresponding TimerSet.

func (TimerSet) Start

func (s TimerSet) Start(sel TimerSelector) ReportingTimer

Start alloates and starts a new timer if the passed TimerSelector is currently enabled. Otherwise, it just returns a Dummy timer.

type Token

type Token struct {
	Typ int
	// contains filtered or unexported fields
}

func NewToken

func NewToken(typ int) *Token

func (Token) Eq

func (t Token) Eq(t2 Token) bool

type TooManyKeysError

type TooManyKeysError struct {
	// contains filtered or unexported fields
}

func (TooManyKeysError) Error

func (e TooManyKeysError) Error() string

type TorMode

type TorMode int
const (
	TorNone TorMode = iota
	TorStrict
	TorLeaky
)

func StringToTorMode

func StringToTorMode(s string) (ret TorMode, err error)

func (TorMode) Enabled

func (m TorMode) Enabled() bool

func (TorMode) UseCSRF

func (m TorMode) UseCSRF() bool

func (TorMode) UseCookies

func (m TorMode) UseCookies() bool

func (TorMode) UseHeaders

func (m TorMode) UseHeaders() bool

func (TorMode) UseSession

func (m TorMode) UseSession() bool

type TorSessionRequiredError

type TorSessionRequiredError struct{}

func (TorSessionRequiredError) Error

func (t TorSessionRequiredError) Error() string

type TrackBrokenError added in v1.0.19

type TrackBrokenError struct{}

func (TrackBrokenError) Error added in v1.0.19

func (e TrackBrokenError) Error() string

type TrackCache

type TrackCache struct {
	// contains filtered or unexported fields
}

func NewTrackCache

func NewTrackCache() *TrackCache

func (*TrackCache) Delete

func (c *TrackCache) Delete(key keybase1.TrackToken) error

func (*TrackCache) Get

func (*TrackCache) Insert

func (c *TrackCache) Insert(outcome *IdentifyOutcome) (keybase1.TrackToken, error)

func (*TrackCache) Shutdown

func (c *TrackCache) Shutdown()
type TrackChainLink struct {
	GenericChainLink
	// contains filtered or unexported fields
}

========================================================================= TrackChainLink

func GetRemoteChainLinkFor added in v1.0.19

func GetRemoteChainLinkFor(u *keybase1.UserPlusAllKeys, username NormalizedUsername, uid keybase1.UID, g *GlobalContext) (ret *TrackChainLink, err error)

func LocalTmpTrackChainLinkFor

func LocalTmpTrackChainLinkFor(tracker, trackee keybase1.UID, g *GlobalContext) (ret *TrackChainLink, err error)

func LocalTrackChainLinkFor

func LocalTrackChainLinkFor(tracker, trackee keybase1.UID, g *GlobalContext) (ret *TrackChainLink, err error)
func ParseTrackChainLink(b GenericChainLink) (ret *TrackChainLink, err error)

func TmpTrackChainLinkFor added in v1.0.19

func TmpTrackChainLinkFor(me keybase1.UID, them keybase1.UID, g *GlobalContext) (tcl *TrackChainLink, err error)

func TrackChainLinkFor added in v1.0.19

func TrackChainLinkFor(me keybase1.UID, them keybase1.UID, remote *TrackChainLink, remoteErr error, g *GlobalContext) (*TrackChainLink, error)

func TrackChainLinkFromUserPlusAllKeys added in v1.0.19

func TrackChainLinkFromUserPlusAllKeys(u *keybase1.UserPlusAllKeys, username NormalizedUsername, uid keybase1.UID, g *GlobalContext) (*TrackChainLink, error)

func (*TrackChainLink) DoOwnNewLinkFromServerNotifications

func (l *TrackChainLink) DoOwnNewLinkFromServerNotifications(g *GlobalContext)

func (TrackChainLink) Export added in v1.0.19

func (t TrackChainLink) Export() keybase1.RemoteTrack

func (*TrackChainLink) GetEldestKID

func (l *TrackChainLink) GetEldestKID() (kid keybase1.KID, err error)

func (*TrackChainLink) GetTmpExpireTime

func (l *TrackChainLink) GetTmpExpireTime() (ret time.Time)

func (*TrackChainLink) GetTrackedKeys

func (l *TrackChainLink) GetTrackedKeys() ([]TrackedKey, error)

func (*TrackChainLink) GetTrackedUID

func (l *TrackChainLink) GetTrackedUID() (keybase1.UID, error)

func (*TrackChainLink) GetTrackedUsername

func (l *TrackChainLink) GetTrackedUsername() (NormalizedUsername, error)

func (TrackChainLink) IsRemote

func (l TrackChainLink) IsRemote() bool

func (*TrackChainLink) IsRevoked

func (l *TrackChainLink) IsRevoked() bool

func (*TrackChainLink) RemoteKeyProofs

func (l *TrackChainLink) RemoteKeyProofs() *jsonw.Wrapper

func (*TrackChainLink) ToDisplayString

func (l *TrackChainLink) ToDisplayString() string

func (*TrackChainLink) ToServiceBlocks

func (l *TrackChainLink) ToServiceBlocks() (ret []*ServiceBlock)

func (*TrackChainLink) Type

func (l *TrackChainLink) Type() string

type TrackDiff

type TrackDiff interface {
	BreaksTracking() bool
	ToDisplayString() string
	ToDisplayMarkup() *Markup
	IsSameAsTracked() bool
	GetTrackDiffType() keybase1.TrackDiffType
}

type TrackDiffClash

type TrackDiffClash struct {
	// contains filtered or unexported fields
}

func (TrackDiffClash) BreaksTracking

func (t TrackDiffClash) BreaksTracking() bool

func (TrackDiffClash) GetTrackDiffType

func (t TrackDiffClash) GetTrackDiffType() keybase1.TrackDiffType

func (TrackDiffClash) IsSameAsTracked

func (t TrackDiffClash) IsSameAsTracked() bool

func (TrackDiffClash) ToDisplayMarkup

func (t TrackDiffClash) ToDisplayMarkup() *Markup

func (TrackDiffClash) ToDisplayString

func (t TrackDiffClash) ToDisplayString() string

type TrackDiffNew

type TrackDiffNew struct{}

func (TrackDiffNew) BreaksTracking

func (t TrackDiffNew) BreaksTracking() bool

func (TrackDiffNew) GetTrackDiffType

func (t TrackDiffNew) GetTrackDiffType() keybase1.TrackDiffType

func (TrackDiffNew) IsSameAsTracked

func (t TrackDiffNew) IsSameAsTracked() bool

func (TrackDiffNew) ToDisplayMarkup

func (t TrackDiffNew) ToDisplayMarkup() *Markup

func (TrackDiffNew) ToDisplayString

func (t TrackDiffNew) ToDisplayString() string

type TrackDiffNewEldest

type TrackDiffNewEldest struct {
	// contains filtered or unexported fields
}

func (TrackDiffNewEldest) BreaksTracking

func (t TrackDiffNewEldest) BreaksTracking() bool

func (TrackDiffNewEldest) GetTrackDiffType

func (t TrackDiffNewEldest) GetTrackDiffType() keybase1.TrackDiffType

func (TrackDiffNewEldest) IsSameAsTracked

func (t TrackDiffNewEldest) IsSameAsTracked() bool

func (TrackDiffNewEldest) ToDisplayMarkup

func (t TrackDiffNewEldest) ToDisplayMarkup() *Markup

func (TrackDiffNewEldest) ToDisplayString

func (t TrackDiffNewEldest) ToDisplayString() string

type TrackDiffNone

type TrackDiffNone struct{}

func (TrackDiffNone) BreaksTracking

func (t TrackDiffNone) BreaksTracking() bool

func (TrackDiffNone) GetTrackDiffType

func (t TrackDiffNone) GetTrackDiffType() keybase1.TrackDiffType

func (TrackDiffNone) IsSameAsTracked

func (t TrackDiffNone) IsSameAsTracked() bool

func (TrackDiffNone) ToDisplayMarkup

func (t TrackDiffNone) ToDisplayMarkup() *Markup

func (TrackDiffNone) ToDisplayString

func (t TrackDiffNone) ToDisplayString() string

type TrackDiffNoneViaTemporary

type TrackDiffNoneViaTemporary struct{}

func (TrackDiffNoneViaTemporary) BreaksTracking

func (t TrackDiffNoneViaTemporary) BreaksTracking() bool

func (TrackDiffNoneViaTemporary) GetTrackDiffType

func (t TrackDiffNoneViaTemporary) GetTrackDiffType() keybase1.TrackDiffType

func (TrackDiffNoneViaTemporary) IsSameAsTracked

func (t TrackDiffNoneViaTemporary) IsSameAsTracked() bool

func (TrackDiffNoneViaTemporary) ToDisplayMarkup

func (t TrackDiffNoneViaTemporary) ToDisplayMarkup() *Markup

func (TrackDiffNoneViaTemporary) ToDisplayString

func (t TrackDiffNoneViaTemporary) ToDisplayString() string

type TrackDiffRemoteChanged

type TrackDiffRemoteChanged struct {
	// contains filtered or unexported fields
}

func (TrackDiffRemoteChanged) BreaksTracking

func (t TrackDiffRemoteChanged) BreaksTracking() bool

func (TrackDiffRemoteChanged) GetTrackDiffType

func (t TrackDiffRemoteChanged) GetTrackDiffType() keybase1.TrackDiffType

func (TrackDiffRemoteChanged) IsSameAsTracked

func (t TrackDiffRemoteChanged) IsSameAsTracked() bool

func (TrackDiffRemoteChanged) ToDisplayMarkup

func (t TrackDiffRemoteChanged) ToDisplayMarkup() *Markup

func (TrackDiffRemoteChanged) ToDisplayString

func (t TrackDiffRemoteChanged) ToDisplayString() string

type TrackDiffRemoteFail

type TrackDiffRemoteFail struct {
	// contains filtered or unexported fields
}

func (TrackDiffRemoteFail) BreaksTracking

func (t TrackDiffRemoteFail) BreaksTracking() bool

func (TrackDiffRemoteFail) GetTrackDiffType

func (t TrackDiffRemoteFail) GetTrackDiffType() keybase1.TrackDiffType

func (TrackDiffRemoteFail) IsSameAsTracked

func (t TrackDiffRemoteFail) IsSameAsTracked() bool

func (TrackDiffRemoteFail) ToDisplayMarkup

func (t TrackDiffRemoteFail) ToDisplayMarkup() *Markup

func (TrackDiffRemoteFail) ToDisplayString

func (t TrackDiffRemoteFail) ToDisplayString() string

type TrackDiffRemoteWorking

type TrackDiffRemoteWorking struct {
	// contains filtered or unexported fields
}

func (TrackDiffRemoteWorking) BreaksTracking

func (t TrackDiffRemoteWorking) BreaksTracking() bool

func (TrackDiffRemoteWorking) GetTrackDiffType

func (t TrackDiffRemoteWorking) GetTrackDiffType() keybase1.TrackDiffType

func (TrackDiffRemoteWorking) IsSameAsTracked

func (t TrackDiffRemoteWorking) IsSameAsTracked() bool

func (TrackDiffRemoteWorking) ToDisplayMarkup

func (t TrackDiffRemoteWorking) ToDisplayMarkup() *Markup

func (TrackDiffRemoteWorking) ToDisplayString

func (t TrackDiffRemoteWorking) ToDisplayString() string

type TrackDiffRevoked

type TrackDiffRevoked struct {
	// contains filtered or unexported fields
}

func (TrackDiffRevoked) BreaksTracking

func (t TrackDiffRevoked) BreaksTracking() bool

func (TrackDiffRevoked) GetTrackDiffType

func (t TrackDiffRevoked) GetTrackDiffType() keybase1.TrackDiffType

func (TrackDiffRevoked) IsSameAsTracked

func (t TrackDiffRevoked) IsSameAsTracked() bool

func (TrackDiffRevoked) ToDisplayMarkup

func (t TrackDiffRevoked) ToDisplayMarkup() *Markup

func (TrackDiffRevoked) ToDisplayString

func (t TrackDiffRevoked) ToDisplayString() string

type TrackDiffSnoozedRevoked added in v1.0.17

type TrackDiffSnoozedRevoked struct {
	// contains filtered or unexported fields
}

func (TrackDiffSnoozedRevoked) BreaksTracking added in v1.0.17

func (t TrackDiffSnoozedRevoked) BreaksTracking() bool

func (TrackDiffSnoozedRevoked) GetTrackDiffType added in v1.0.17

func (t TrackDiffSnoozedRevoked) GetTrackDiffType() keybase1.TrackDiffType

func (TrackDiffSnoozedRevoked) IsSameAsTracked added in v1.0.17

func (t TrackDiffSnoozedRevoked) IsSameAsTracked() bool

func (TrackDiffSnoozedRevoked) ToDisplayMarkup added in v1.0.17

func (t TrackDiffSnoozedRevoked) ToDisplayMarkup() *Markup

func (TrackDiffSnoozedRevoked) ToDisplayString added in v1.0.17

func (t TrackDiffSnoozedRevoked) ToDisplayString() string

type TrackDiffUpgraded

type TrackDiffUpgraded struct {
	// contains filtered or unexported fields
}

func (TrackDiffUpgraded) BreaksTracking

func (t TrackDiffUpgraded) BreaksTracking() bool

func (TrackDiffUpgraded) GetCurr

func (t TrackDiffUpgraded) GetCurr() string

func (TrackDiffUpgraded) GetPrev

func (t TrackDiffUpgraded) GetPrev() string

func (TrackDiffUpgraded) GetTrackDiffType

func (t TrackDiffUpgraded) GetTrackDiffType() keybase1.TrackDiffType

func (TrackDiffUpgraded) IsSameAsTracked

func (t TrackDiffUpgraded) IsSameAsTracked() bool

func (TrackDiffUpgraded) ToDisplayMarkup

func (t TrackDiffUpgraded) ToDisplayMarkup() *Markup

func (TrackDiffUpgraded) ToDisplayString

func (t TrackDiffUpgraded) ToDisplayString() string

type TrackIDComponent

type TrackIDComponent interface {
	ToIDString() string
	ToKeyValuePair() (string, string)
	GetProofState() keybase1.ProofState
	LastWriterWins() bool
	GetProofType() keybase1.ProofType
}

Can be a ProofLinkWithState, one of the identities listed in a tracking statement, or a PGP Fingerprint!

type TrackInstructions

type TrackInstructions struct {
	Local  bool
	Remote bool
}

type TrackLookup

type TrackLookup struct {
	// contains filtered or unexported fields
}

func NewTrackLookup

func NewTrackLookup(link *TrackChainLink) *TrackLookup

func (*TrackLookup) GetCTime

func (l *TrackLookup) GetCTime() time.Time

func (TrackLookup) GetEldestKID

func (l TrackLookup) GetEldestKID() keybase1.KID

func (TrackLookup) GetProofState

func (l TrackLookup) GetProofState(id string) keybase1.ProofState

func (TrackLookup) GetTmpExpireTime

func (l TrackLookup) GetTmpExpireTime() (ret time.Time)

func (TrackLookup) GetTrackedKeys

func (l TrackLookup) GetTrackedKeys() []TrackedKey

func (TrackLookup) GetTrackerSeqno

func (l TrackLookup) GetTrackerSeqno() Seqno

func (TrackLookup) IsRemote

func (l TrackLookup) IsRemote() bool

func (TrackLookup) ToSummary

func (l TrackLookup) ToSummary() TrackSummary

type TrackSet

type TrackSet struct {
	// contains filtered or unexported fields
}

func NewTrackSet

func NewTrackSet() *TrackSet

func (TrackSet) Add

func (ts TrackSet) Add(t TrackIDComponent)

func (TrackSet) GetProofState

func (ts TrackSet) GetProofState(id string) keybase1.ProofState

func (TrackSet) HasMember

func (ts TrackSet) HasMember(t TrackIDComponent) bool

func (TrackSet) LenEq

func (ts TrackSet) LenEq(b TrackSet) bool

func (TrackSet) Subtract

func (ts TrackSet) Subtract(b TrackSet) (out []TrackIDComponent)

type TrackStaleError

type TrackStaleError struct {
	FirstTrack bool
}

func (TrackStaleError) Error

func (e TrackStaleError) Error() string

type TrackSummary

type TrackSummary struct {
	// contains filtered or unexported fields
}

func ImportTrackSummary

func ImportTrackSummary(s *keybase1.TrackSummary) *TrackSummary

func (TrackSummary) Export

func (s TrackSummary) Export(username string) (ret keybase1.TrackSummary)

func (TrackSummary) GetCTime

func (s TrackSummary) GetCTime() time.Time

func (TrackSummary) IsRemote

func (s TrackSummary) IsRemote() bool

func (TrackSummary) Username

func (s TrackSummary) Username() string

type TrackedKey

type TrackedKey struct {
	KID         keybase1.KID
	Fingerprint *PGPFingerprint
}

type Tracker

type Tracker keybase1.Tracker

func (Tracker) Eq

func (t Tracker) Eq(t2 Tracker) bool

func (Tracker) Export

func (t Tracker) Export() keybase1.Tracker

func (Tracker) GetUID

func (t Tracker) GetUID() keybase1.UID

type Tracker2Syncer added in v1.0.17

type Tracker2Syncer struct {
	sync.Mutex
	Contextified
	// contains filtered or unexported fields
}

func NewTracker2Syncer added in v1.0.17

func NewTracker2Syncer(g *GlobalContext) *Tracker2Syncer

func (*Tracker2Syncer) Result added in v1.0.17

type TrackerSyncer

type TrackerSyncer struct {
	// Locks the whole object
	sync.RWMutex
	Contextified
	// contains filtered or unexported fields
}

func NewTrackerSyncer

func NewTrackerSyncer(uid keybase1.UID, g *GlobalContext) *TrackerSyncer

func (*TrackerSyncer) Trackers

func (t *TrackerSyncer) Trackers() *Trackers

type Trackers

type Trackers struct {
	Version  int       `json:"version"`
	Trackers []Tracker `json:"trackers"`
}

type TrackingBrokeError

type TrackingBrokeError struct{}

func (TrackingBrokeError) Error

func (e TrackingBrokeError) Error() string

func (TrackingBrokeError) ToStatus

func (e TrackingBrokeError) ToStatus() keybase1.Status

type Triplesec added in v1.0.17

type Triplesec interface {
	DeriveKey(l int) ([]byte, []byte, error)
	Decrypt([]byte) ([]byte, error)
	Encrypt([]byte) ([]byte, error)
	Scrub()
}

func NewSecureTriplesec added in v1.0.17

func NewSecureTriplesec(passphrase []byte, salt []byte) (Triplesec, error)
type TypedChainLink interface {
	GetRevocations() []keybase1.SigID
	GetRevokeKids() []keybase1.KID

	GetSigID() keybase1.SigID
	GetArmoredSig() string

	ToDebugString() string
	Type() string
	ToDisplayString() string
	IsRevocationIsh() bool
	IsRevoked() bool
	GetRole() KeyRole
	GetSeqno() Seqno
	GetCTime() time.Time
	GetETime() time.Time
	GetPGPFingerprint() *PGPFingerprint
	GetPGPFullHash() string
	GetKID() keybase1.KID
	IsInCurrentFamily(u *User) bool
	GetUsername() string
	GetUID() keybase1.UID
	GetDelegatedKid() keybase1.KID
	GetParentKid() keybase1.KID
	VerifyReverseSig(ckf ComputedKeyFamily) error
	GetMerkleSeqno() int
	GetDevice() *Device
	DoOwnNewLinkFromServerNotifications(g *GlobalContext)
	// contains filtered or unexported methods
}

type U

type U struct {
	Val uint64
}

func (U) String

func (u U) String() string

type UHex

type UHex struct {
	Val uint64
}

func (UHex) String

func (h UHex) String() string

type UI

type UI interface {
	GetIdentifyUI() IdentifyUI
	GetIdentifyTrackUI() IdentifyUI
	GetLoginUI() LoginUI
	GetSecretUI() SecretUI
	GetTerminalUI() TerminalUI
	GetDumbOutputUI() DumbOutputUI
	GetProveUI() ProveUI
	GetLogUI() LogUI
	GetGPGUI() GPGUI
	GetProvisionUI(role KexRole) ProvisionUI
	GetPgpUI() PgpUI
	Configure() error
	Shutdown() error
}

type UIConsumer

type UIConsumer interface {
	Name() string
	RequiredUIs() []UIKind
	SubConsumers() []UIConsumer
}

type UIDMismatchError

type UIDMismatchError struct {
	Msg string
}

func (UIDMismatchError) Error

func (u UIDMismatchError) Error() string

type UIDelegationUnavailableError

type UIDelegationUnavailableError struct{}

func (UIDelegationUnavailableError) Error

func (UIDelegationUnavailableError) ToStatus

type UIKind

type UIKind int
const (
	GPGUIKind UIKind = iota
	IdentifyUIKind
	LogUIKind
	LoginUIKind
	ProveUIKind
	SecretUIKind
	ProvisionUIKind
	PgpUIKind
	UpdateUIKind
	SaltpackUIKind
	RekeyUIKind
)

func (UIKind) String

func (u UIKind) String() string

type UIRouter

type UIRouter interface {
	SetUI(ConnectionID, UIKind)

	// These are allowed to return nil for the UI even if
	// error is nil.
	GetIdentifyUI() (IdentifyUI, error)
	GetSecretUI(sessionID int) (SecretUI, error)
	GetRekeyUI() (keybase1.RekeyUIInterface, int, error)
	GetRekeyUINoSessionID() (keybase1.RekeyUIInterface, error)

	Shutdown()
}

type UPAKLoader added in v1.0.19

type UPAKLoader interface {
	ClearMemory()
	Load(arg LoadUserArg) (ret *keybase1.UserPlusAllKeys, user *User, err error)
	CheckKIDForUID(ctx context.Context, uid keybase1.UID, kid keybase1.KID) (found bool, revokedAt *keybase1.KeybaseTime, deleted bool, err error)
	LoadUserPlusKeys(ctx context.Context, uid keybase1.UID, pollForKID keybase1.KID) (keybase1.UserPlusKeys, error)
	Invalidate(ctx context.Context, uid keybase1.UID)
	LoadDeviceKey(ctx context.Context, uid keybase1.UID, deviceID keybase1.DeviceID) (upak *keybase1.UserPlusAllKeys, deviceKey *keybase1.PublicKey, revoked *keybase1.RevokedKey, err error)
	LookupUsername(ctx context.Context, uid keybase1.UID) (NormalizedUsername, error)
	LookupUsernameAndDevice(ctx context.Context, uid keybase1.UID, did keybase1.DeviceID) (username NormalizedUsername, deviceName string, deviceType string, err error)
	ListFollowedUIDs(uid keybase1.UID) ([]keybase1.UID, error)
	PutUserToCache(ctx context.Context, user *User) error
}

UPAK Loader is a loader for UserPlusAllKeys. It's a thin user object that is almost as good for many purposes, but can be safely copied and serialized.

func NewUncachedUPAKLoader added in v1.0.19

func NewUncachedUPAKLoader(g *GlobalContext) UPAKLoader

NewUncachedUPAKLoader creates a UPAK loader that doesn't do any caching. It uses the implementation of CachedUPAKLoader but disables all caching.

type UTF16UnsupportedError added in v1.0.19

type UTF16UnsupportedError struct{}

func (UTF16UnsupportedError) Error added in v1.0.19

func (e UTF16UnsupportedError) Error() string

type UncachedFullSelf added in v1.0.19

type UncachedFullSelf struct {
	Contextified
}

func NewUncachedFullSelf added in v1.0.19

func NewUncachedFullSelf(g *GlobalContext) *UncachedFullSelf

func (*UncachedFullSelf) HandleUserChanged added in v1.0.19

func (n *UncachedFullSelf) HandleUserChanged(u keybase1.UID) error

func (*UncachedFullSelf) OnLogin added in v1.0.19

func (n *UncachedFullSelf) OnLogin() error

func (*UncachedFullSelf) OnLogout added in v1.0.19

func (n *UncachedFullSelf) OnLogout() error

func (*UncachedFullSelf) Update added in v1.0.19

func (n *UncachedFullSelf) Update(ctx context.Context, u *User) error

func (*UncachedFullSelf) WithSelf added in v1.0.19

func (n *UncachedFullSelf) WithSelf(ctx context.Context, f func(u *User) error) error

func (*UncachedFullSelf) WithUser added in v1.0.19

func (n *UncachedFullSelf) WithUser(arg LoadUserArg, f func(u *User) error) error

type UnexpectedChatDataFromServer added in v1.0.18

type UnexpectedChatDataFromServer struct {
	Msg string
}

func (UnexpectedChatDataFromServer) Error added in v1.0.18

type UnexpectedKeyError

type UnexpectedKeyError struct {
}

func (UnexpectedKeyError) Error

func (e UnexpectedKeyError) Error() string

type UnforwardedLoggerWithLegacyInterface added in v1.0.17

type UnforwardedLoggerWithLegacyInterface interface {
	Debug(s string, args ...interface{})
	Error(s string, args ...interface{})
	Errorf(s string, args ...interface{})
	Warning(s string, args ...interface{})
	Info(s string, args ...interface{})
	Profile(s string, args ...interface{})
}

type UnhandledSignatureError added in v1.0.18

type UnhandledSignatureError struct {
	// contains filtered or unexported fields
}

func (UnhandledSignatureError) Error added in v1.0.18

func (e UnhandledSignatureError) Error() string

type UnknownKeyTypeError

type UnknownKeyTypeError struct {
	// contains filtered or unexported fields
}

func (UnknownKeyTypeError) Error

func (e UnknownKeyTypeError) Error() string

type UnknownSpecialKIDError

type UnknownSpecialKIDError struct {
	// contains filtered or unexported fields
}

func (UnknownSpecialKIDError) Error

func (u UnknownSpecialKIDError) Error() string

type UnknownStreamError

type UnknownStreamError struct{}

func (UnknownStreamError) Error

func (e UnknownStreamError) Error() string

type UnlockerFunc added in v1.0.19

type UnlockerFunc func(pw string, storeSecret bool) (ret GenericKey, err error)

type UnmarshalError

type UnmarshalError struct {
	T string
}

func (UnmarshalError) Error

func (u UnmarshalError) Error() string

type UnmetAssertionError

type UnmetAssertionError struct {
	User   string
	Remote bool
}

func (UnmetAssertionError) Error

func (e UnmetAssertionError) Error() string
type UntrackChainLink struct {
	GenericChainLink
	// contains filtered or unexported fields
}
func ParseUntrackChainLink(b GenericChainLink) (ret *UntrackChainLink, err error)

func (*UntrackChainLink) DoOwnNewLinkFromServerNotifications

func (u *UntrackChainLink) DoOwnNewLinkFromServerNotifications(g *GlobalContext)

func (*UntrackChainLink) IsRevocationIsh

func (u *UntrackChainLink) IsRevocationIsh() bool

func (*UntrackChainLink) ToDisplayString

func (u *UntrackChainLink) ToDisplayString() string

func (*UntrackChainLink) Type

func (u *UntrackChainLink) Type() string

type UntrackError

type UntrackError struct {
	// contains filtered or unexported fields
}

func NewUntrackError

func NewUntrackError(d string, a ...interface{}) UntrackError

func (UntrackError) Error

func (e UntrackError) Error() string

type UpdaterConfigReader added in v1.0.16

type UpdaterConfigReader interface {
	GetInstallID() InstallID
}

type Usage

type Usage struct {
	Config     bool
	GpgKeyring bool
	KbKeyring  bool
	API        bool
	Socket     bool
}

func (Usage) UseKeyring

func (u Usage) UseKeyring() bool

type User

type User struct {
	Contextified
	// contains filtered or unexported fields
}

func LoadMe

func LoadMe(arg LoadUserArg) (*User, error)

func LoadMeByUID

func LoadMeByUID(ctx context.Context, g *GlobalContext, uid keybase1.UID) (*User, error)

func LoadUser

func LoadUser(arg LoadUserArg) (ret *User, err error)

func LoadUserFromServer added in v1.0.17

func LoadUserFromServer(ctx context.Context, g *GlobalContext, uid keybase1.UID, body *jsonw.Wrapper) (u *User, err error)

func NewUser

func NewUser(g *GlobalContext, o *jsonw.Wrapper) (*User, error)

func NewUserFromLocalStorage

func NewUserFromLocalStorage(g *GlobalContext, o *jsonw.Wrapper) (*User, error)

func NewUserFromServer

func NewUserFromServer(g *GlobalContext, o *jsonw.Wrapper) (*User, error)

func NewUserThin

func NewUserThin(name string, uid keybase1.UID) *User

func (*User) AllSyncedSecretKeys

func (u *User) AllSyncedSecretKeys(lctx LoginContext) (keys []*SKB, err error)

AllSyncedSecretKeys returns all the PGP key blocks that were synced to API server. LoginContext can be nil if this isn't used while logging in, signing up.

func (*User) AuthenticationProof

func (u *User) AuthenticationProof(key GenericKey, session string, ei int) (ret *jsonw.Wrapper, err error)

AuthenticationProof makes a JSON proof statement for the user that he can sign to prove a log-in to the system. If successful, the server will return with a session token.

func (*User) BaseProofSet

func (u *User) BaseProofSet() *ProofSet

BaseProofSet creates a basic proof set for a user with their keybase and uid proofs and any pgp fingerpring proofs.

func (*User) CheckBasicsFreshness

func (u *User) CheckBasicsFreshness(server int64) (current bool, err error)

func (*User) CryptocurrencySig

func (u *User) CryptocurrencySig(key GenericKey, address string, typ CryptocurrencyType, sigToRevoke keybase1.SigID) (*jsonw.Wrapper, error)

func (*User) DeviceNames

func (u *User) DeviceNames() ([]string, error)

func (*User) Equal

func (u *User) Equal(other *User) bool

func (*User) Export

func (u *User) Export() *keybase1.User

func (*User) ExportRemoteTracks added in v1.0.19

func (u *User) ExportRemoteTracks() []keybase1.RemoteTrack

func (*User) ExportToUserPlusAllKeys added in v1.0.19

func (u *User) ExportToUserPlusAllKeys(idTime keybase1.Time) keybase1.UserPlusAllKeys

func (*User) ExportToUserPlusKeys

func (u *User) ExportToUserPlusKeys(idTime keybase1.Time) keybase1.UserPlusKeys

func (*User) ExportToVersionVector

func (u *User) ExportToVersionVector(idTime keybase1.Time) keybase1.UserVersionVector

func (*User) FilterActivePGPKeys

func (u *User) FilterActivePGPKeys(sibkey bool, query string) []*PGPKeyBundle

FilterActivePGPKeys returns the active pgp keys that match query.

func (*User) GetActivePGPFingerprints

func (u *User) GetActivePGPFingerprints(sibkey bool) (ret []PGPFingerprint)

GetActivePGPFingerprints looks into the user's ComputedKeyFamily and returns only the fingerprint of the active PGP keys. If you want only sibkeys, then // specify sibkey=true.

func (*User) GetActivePGPKIDs

func (u *User) GetActivePGPKIDs(sibkey bool) (ret []keybase1.KID)

func (*User) GetActivePGPKeys

func (u *User) GetActivePGPKeys(sibkey bool) (ret []*PGPKeyBundle)

GetActivePGPKeys looks into the user's ComputedKeyFamily and returns only the active PGP keys. If you want only sibkeys, then specify sibkey=true.

func (*User) GetComputedKeyFamily

func (u *User) GetComputedKeyFamily() (ret *ComputedKeyFamily)

func (*User) GetComputedKeyInfos

func (u *User) GetComputedKeyInfos() *ComputedKeyInfos

func (*User) GetDevice

func (u *User) GetDevice(id keybase1.DeviceID) (*Device, error)

func (*User) GetDeviceSibkey

func (u *User) GetDeviceSibkey() (GenericKey, error)

func (*User) GetDeviceSubkey

func (u *User) GetDeviceSubkey() (subkey GenericKey, err error)

func (*User) GetEldestKID

func (u *User) GetEldestKID() (ret keybase1.KID)

May return an empty KID

func (*User) GetIDVersion

func (u *User) GetIDVersion() (int64, error)

func (*User) GetKeyFamily

func (u *User) GetKeyFamily() *KeyFamily

func (*User) GetName

func (u *User) GetName() string

func (*User) GetNormalizedName

func (u *User) GetNormalizedName() NormalizedUsername

func (*User) GetPublicChainTail

func (u *User) GetPublicChainTail() *MerkleTriple

func (*User) GetSigChainLastKnownSeqno

func (u *User) GetSigChainLastKnownSeqno() Seqno

func (*User) GetSigHintsVersion

func (u *User) GetSigHintsVersion() int

func (*User) GetSigIDFromSeqno

func (u *User) GetSigIDFromSeqno(seqno int) keybase1.SigID

func (*User) GetSyncedSecretKey

func (u *User) GetSyncedSecretKey() (ret *SKB, err error)

func (*User) GetUID

func (u *User) GetUID() keybase1.UID

func (*User) HasActiveKey

func (u *User) HasActiveKey() (ret bool)

func (*User) HasCurrentDeviceInCurrentInstall

func (u *User) HasCurrentDeviceInCurrentInstall() bool

func (*User) HasDeviceInCurrentInstall

func (u *User) HasDeviceInCurrentInstall(did keybase1.DeviceID) bool

Returns whether or not the current install has an active device sibkey.

func (*User) HasEncryptionSubkey

func (u *User) HasEncryptionSubkey() bool

func (*User) IDTable

func (u *User) IDTable() *IdentityTable

func (*User) IsCachedIdentifyFresh

func (u *User) IsCachedIdentifyFresh(upk *keybase1.UserPlusKeys) bool

func (*User) IsNewerThan added in v1.0.19

func (u *User) IsNewerThan(v *User) (bool, error)

func (*User) IsSigIDActive

func (u *User) IsSigIDActive(sigID keybase1.SigID) (bool, error)

func (*User) LinkFromSigID

func (u *User) LinkFromSigID(sigID keybase1.SigID) *ChainLink

func (*User) LoadSigChains

func (u *User) LoadSigChains(ctx context.Context, allKeys bool, f *MerkleUserLeaf, self bool) (err error)

func (*User) MakeIDTable

func (u *User) MakeIDTable() error

func (User) PartialCopy added in v1.0.19

func (u User) PartialCopy() *User

PartialCopy copies some fields of the User object, but not all. For instance, it doesn't copy the SigChain or IDTable, and it only makes a shallow copy of the ComputedKeyFamily.

func (*User) RevokeKeysProof

func (u *User) RevokeKeysProof(key GenericKey, kidsToRevoke []keybase1.KID, deviceToDisable keybase1.DeviceID) (*jsonw.Wrapper, error)

func (*User) RevokeSigsProof

func (u *User) RevokeSigsProof(key GenericKey, sigIDsToRevoke []keybase1.SigID) (*jsonw.Wrapper, error)

func (*User) ServiceProof

func (u *User) ServiceProof(signingKey GenericKey, typ ServiceType, remotename string) (ret *jsonw.Wrapper, err error)

func (*User) SigChainBump

func (u *User) SigChainBump(linkID LinkID, sigID keybase1.SigID)

func (*User) SigChainBumpMT

func (u *User) SigChainBumpMT(mt MerkleTriple)

func (*User) SigChainDump

func (u *User) SigChainDump(w io.Writer)

func (*User) SigIDSearch

func (u *User) SigIDSearch(query string) (keybase1.SigID, error)

func (*User) SigningKeyPub

func (u *User) SigningKeyPub() (GenericKey, error)

func (*User) Store

func (u *User) Store(ctx context.Context) error

func (*User) StoreSigChain

func (u *User) StoreSigChain(ctx context.Context) error

func (*User) StoreTopLevel

func (u *User) StoreTopLevel(ctx context.Context) error

func (*User) SyncSecrets

func (u *User) SyncSecrets() error

func (*User) SyncedSecretKey

func (u *User) SyncedSecretKey(lctx LoginContext) (ret *SKB, err error)

func (*User) TmpTrackChainLinkFor

func (u *User) TmpTrackChainLinkFor(username string, uid keybase1.UID) (tcl *TrackChainLink, err error)

func (*User) ToTrackingStatement

func (u *User) ToTrackingStatement(w *jsonw.Wrapper, outcome *IdentifyOutcome) (err error)

func (*User) ToTrackingStatementBasics

func (u *User) ToTrackingStatementBasics(errp *error) *jsonw.Wrapper

func (*User) ToTrackingStatementKey

func (u *User) ToTrackingStatementKey(errp *error) *jsonw.Wrapper

func (*User) ToTrackingStatementPGPKeys

func (u *User) ToTrackingStatementPGPKeys(errp *error) *jsonw.Wrapper

func (*User) ToTrackingStatementSeqTail

func (u *User) ToTrackingStatementSeqTail() *jsonw.Wrapper

func (*User) ToUntrackingStatement

func (u *User) ToUntrackingStatement(w *jsonw.Wrapper) (err error)

func (*User) ToUntrackingStatementBasics

func (u *User) ToUntrackingStatementBasics() *jsonw.Wrapper

func (*User) TrackChainLinkFor

func (u *User) TrackChainLinkFor(username NormalizedUsername, uid keybase1.UID) (*TrackChainLink, error)

func (*User) TrackStatementJSON

func (u *User) TrackStatementJSON(them *User, outcome *IdentifyOutcome) (string, error)

func (*User) TrackingProofFor

func (u *User) TrackingProofFor(signingKey GenericKey, u2 *User, outcome *IdentifyOutcome) (ret *jsonw.Wrapper, err error)

func (*User) UntrackingProofFor

func (u *User) UntrackingProofFor(signingKey GenericKey, u2 *User) (ret *jsonw.Wrapper, err error)

func (*User) UpdateEmailProof added in v1.0.18

func (u *User) UpdateEmailProof(key GenericKey, newEmail string) (*jsonw.Wrapper, error)

func (*User) UpdatePassphraseProof

func (u *User) UpdatePassphraseProof(key GenericKey, pwh string, ppGen PassphraseGeneration, pdpka5kid string) (*jsonw.Wrapper, error)

func (*User) VerifySelfSig

func (u *User) VerifySelfSig() error

func (*User) VerifySelfSigByKey

func (u *User) VerifySelfSigByKey() (ret bool)

type UserBasic

type UserBasic interface {
	GetUID() keybase1.UID
	GetName() string
}

type UserCardCache added in v1.0.18

type UserCardCache struct {
	// contains filtered or unexported fields
}

UserCardCache caches keybase1.UserCard objects in memory.

func NewUserCardCache added in v1.0.18

func NewUserCardCache(maxAge time.Duration) *UserCardCache

NewUserCardCache creates a UserCardCache. keybase1.UserCards will expire after maxAge.

func (*UserCardCache) Delete added in v1.0.19

func (c *UserCardCache) Delete(uid keybase1.UID) error

func (*UserCardCache) Get added in v1.0.18

func (c *UserCardCache) Get(uid keybase1.UID, useSession bool) (*keybase1.UserCard, error)

Get looks for a keybase1.UserCard for uid. It returns nil, nil if not found. useSession is set if the card is being looked up with a session.

func (*UserCardCache) Set added in v1.0.18

func (c *UserCardCache) Set(card *keybase1.UserCard, usedSession bool) error

Set stores card in the UserCardCache. usedSession is set based on whether user/card was looked up with a session or not.

func (*UserCardCache) Shutdown added in v1.0.18

func (c *UserCardCache) Shutdown()

Shutdown stops any goroutines in the cache.

type UserChangedHandler added in v1.0.19

type UserChangedHandler interface {
	// HandlerUserChanged is called when the with User with the given UID has
	// changed, either because of a sigchain change, or a profile change.
	HandleUserChanged(uid keybase1.UID) error
}

UserChangedHandler is a generic interface for handling user changed events. If the call returns an error, we'll remove this handler from the list, under the supposition that it's now dead.

type UserConfig

type UserConfig struct {
	ID     string             `json:"id"`
	Name   NormalizedUsername `json:"name"`
	Salt   string             `json:"salt"`
	Device *string            `json:"device"`
	// contains filtered or unexported fields
}

func ImportUserConfigFromJSONWrapper

func ImportUserConfigFromJSONWrapper(jw *jsonw.Wrapper) (ret *UserConfig, err error)

func NewUserConfig

func NewUserConfig(id keybase1.UID, name NormalizedUsername, salt []byte, dev keybase1.DeviceID) *UserConfig

func (UserConfig) GetDeviceID

func (u UserConfig) GetDeviceID() keybase1.DeviceID

func (UserConfig) GetSalt

func (u UserConfig) GetSalt() []byte

func (UserConfig) GetUID

func (u UserConfig) GetUID() keybase1.UID

func (UserConfig) GetUsername

func (u UserConfig) GetUsername() NormalizedUsername

func (*UserConfig) Import

func (u *UserConfig) Import() (err error)

func (*UserConfig) SetDevice

func (u *UserConfig) SetDevice(d keybase1.DeviceID)

type UserConfigWrapper

type UserConfigWrapper struct {
	sync.Mutex
	// contains filtered or unexported fields
}

type UserInfo

type UserInfo struct {
	UID      keybase1.UID
	Username string
}

type UserNotFoundError

type UserNotFoundError struct {
	UID keybase1.UID
	Msg string
}

func (UserNotFoundError) Error

func (u UserNotFoundError) Error() string

type UserPlusKeysMemo added in v1.0.17

type UserPlusKeysMemo struct {
	sync.RWMutex
	Contextified
	// contains filtered or unexported fields
}

func NewUserPlusKeysMemo added in v1.0.17

func NewUserPlusKeysMemo(g *GlobalContext) *UserPlusKeysMemo

func (*UserPlusKeysMemo) Clear added in v1.0.17

func (u *UserPlusKeysMemo) Clear()

func (*UserPlusKeysMemo) Get added in v1.0.17

func (*UserPlusKeysMemo) Set added in v1.0.17

type VDebugLevel

type VDebugLevel int
const (
	VLog0 VDebugLevel = 0
	VLog1 VDebugLevel = 1
	VLog2 VDebugLevel = 2
	VLog3 VDebugLevel = 3
)

type VDebugLog

type VDebugLog struct {
	// contains filtered or unexported fields
}

VDebugLog is a "Verbose" debug logger; enable it if you really want spam and/or minutiae

func NewVDebugLog

func NewVDebugLog(l logger.Logger) *VDebugLog

func (*VDebugLog) CLogf added in v1.0.19

func (v *VDebugLog) CLogf(ctx context.Context, lev VDebugLevel, fs string, args ...interface{})

func (*VDebugLog) Configure

func (v *VDebugLog) Configure(s string)

func (*VDebugLog) DumpSiteLoadUser added in v1.0.19

func (v *VDebugLog) DumpSiteLoadUser() bool

func (*VDebugLog) Log

func (v *VDebugLog) Log(lev VDebugLevel, fs string, args ...interface{})

type VLogContext added in v1.0.19

type VLogContext interface {
	LogContext
	GetVDebugLog() *VDebugLog
}

type VerificationError

type VerificationError struct{}

func (VerificationError) Error

func (v VerificationError) Error() string

type VerificationPath

type VerificationPath struct {
	Contextified
	// contains filtered or unexported fields
}

type VerifyContext added in v1.0.18

type VerifyContext interface {
	Debug(format string, args ...interface{})
}

type WaitForItError

type WaitForItError struct{}

func (WaitForItError) Error

func (e WaitForItError) Error() string

type Warning

type Warning interface {
	Warning() string
	Warn(g *GlobalContext)
}

func ErrorToWarning

func ErrorToWarning(e error) Warning

func Warningf

func Warningf(format string, a ...interface{}) Warning

type Warnings

type Warnings struct {
	// contains filtered or unexported fields
}

func ImportWarnings

func ImportWarnings(v []string) Warnings

func (Warnings) IsEmpty

func (w Warnings) IsEmpty() bool

func (*Warnings) Push

func (w *Warnings) Push(e Warning)

func (Warnings) Warn

func (w Warnings) Warn(g *GlobalContext)

func (Warnings) Warnings

func (w Warnings) Warnings() []Warning
type WebProofChainLink struct {
	GenericChainLink
	// contains filtered or unexported fields
}
func NewWebProofChainLink(b GenericChainLink, p, h, proofText string) *WebProofChainLink

func (*WebProofChainLink) CheckDataJSON

func (w *WebProofChainLink) CheckDataJSON() *jsonw.Wrapper

func (*WebProofChainLink) ComputeTrackDiff

func (w *WebProofChainLink) ComputeTrackDiff(tl *TrackLookup) (res TrackDiff)

func (*WebProofChainLink) DisplayCheck

func (w *WebProofChainLink) DisplayCheck(ui IdentifyUI, lcr LinkCheckResult) error

func (*WebProofChainLink) GetHostname

func (w *WebProofChainLink) GetHostname() string

func (*WebProofChainLink) GetProofType

func (w *WebProofChainLink) GetProofType() keybase1.ProofType

func (*WebProofChainLink) GetProtocol

func (w *WebProofChainLink) GetProtocol() string

func (*WebProofChainLink) GetRemoteUsername

func (w *WebProofChainLink) GetRemoteUsername() string

func (*WebProofChainLink) LastWriterWins

func (w *WebProofChainLink) LastWriterWins() bool

func (*WebProofChainLink) ProofText

func (w *WebProofChainLink) ProofText() string

func (*WebProofChainLink) TableKey

func (w *WebProofChainLink) TableKey() string

func (*WebProofChainLink) ToDisplayString

func (w *WebProofChainLink) ToDisplayString() string

func (*WebProofChainLink) ToIDString

func (w *WebProofChainLink) ToIDString() string

func (*WebProofChainLink) ToKeyValuePair

func (w *WebProofChainLink) ToKeyValuePair() (string, string)

func (*WebProofChainLink) ToTrackingStatement

func (w *WebProofChainLink) ToTrackingStatement(state keybase1.ProofState) (*jsonw.Wrapper, error)

func (*WebProofChainLink) Type

func (w *WebProofChainLink) Type() string

type WebUnreachableError

type WebUnreachableError struct {
	// contains filtered or unexported fields
}

func NewWebUnreachableError added in v1.0.18

func NewWebUnreachableError(h string) WebUnreachableError

func (WebUnreachableError) Error

func (h WebUnreachableError) Error() string

type Win32

type Win32 struct {
	Base
}

func (Win32) CacheDir

func (w Win32) CacheDir() string

func (Win32) ConfigDir

func (w Win32) ConfigDir() string

func (Win32) DataDir

func (w Win32) DataDir() string

func (Win32) Home

func (w Win32) Home(emptyOk bool) string

func (Win32) LogDir

func (w Win32) LogDir() string

func (Win32) Normalize

func (w Win32) Normalize(s string) string

func (Win32) RuntimeDir

func (w Win32) RuntimeDir() string

func (Win32) SandboxCacheDir added in v1.0.18

func (w Win32) SandboxCacheDir() string

func (Win32) ServiceSpawnDir

func (w Win32) ServiceSpawnDir() (string, error)

func (Win32) Split

func (w Win32) Split(s string) []string

type WrongCryptoFormatError

type WrongCryptoFormatError struct {
	Wanted, Received CryptoMessageFormat
	Operation        string
}

func (WrongCryptoFormatError) Error

func (e WrongCryptoFormatError) Error() string

func (WrongCryptoFormatError) ToStatus

func (e WrongCryptoFormatError) ToStatus() keybase1.Status

type WrongKeyError

type WrongKeyError struct {
	// contains filtered or unexported fields
}

func (WrongKeyError) Error

func (e WrongKeyError) Error() string

type WrongKidError

type WrongKidError struct {
	// contains filtered or unexported fields
}

func (WrongKidError) Error

func (w WrongKidError) Error() string

type WrongSigError

type WrongSigError struct {
	// contains filtered or unexported fields
}

func (WrongSigError) Error

func (e WrongSigError) Error() string

type XAPIResType added in v1.0.18

type XAPIResType int
const (
	XAPIResJSON XAPIResType = iota
	XAPIResHTML
	XAPIResText
)

type XdgPosix

type XdgPosix struct {
	Base
}

func (XdgPosix) CacheDir

func (x XdgPosix) CacheDir() string

func (XdgPosix) ConfigDir

func (x XdgPosix) ConfigDir() string

func (XdgPosix) DataDir

func (x XdgPosix) DataDir() string

func (XdgPosix) Home

func (x XdgPosix) Home(emptyOk bool) string

func (XdgPosix) LogDir

func (x XdgPosix) LogDir() string

func (XdgPosix) Normalize

func (x XdgPosix) Normalize(s string) string

func (XdgPosix) RuntimeDir

func (x XdgPosix) RuntimeDir() string

func (XdgPosix) SandboxCacheDir added in v1.0.18

func (x XdgPosix) SandboxCacheDir() string

func (XdgPosix) ServiceSpawnDir

func (x XdgPosix) ServiceSpawnDir() (ret string, err error)

Source Files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL