libkb

package
v1.0.4-0 Latest Latest
Warning

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

Go to latest
Published: Nov 30, 2015 License: BSD-3-Clause, BSD-3-Clause Imports: 66 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.

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 (
	XAPIResJSON = iota
	XAPIResHTML
	XAPIResText
)
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://keybase.io"
	TorServerURI        = "http://fncuwbiisyh6ak3i.onion"
)
View Source
const (
	DevelRunMode      RunMode = "devel"
	StagingRunMode            = "staging"
	ProductionRunMode         = "prod"
	RunModeError              = "error"
	NoRunMode                 = ""
)
View Source
const (
	ConfigFile  = "config.json"
	SessionFile = "session.json"
	DBFile      = "keybase.leveldb"
	SocketFile  = "keybased.sock"
	PIDFile     = "keybased.pid"

	SecretKeyringTemplate = "secretkeys.%u.mpack"

	APIVersion       = "1.0"
	APIURIPathPrefix = "/_/api/" + APIVersion
	DaemonPort       = 40933
	GoClientID       = "keybase.io go client"
	IdentifyAs       = GoClientID + " v" + Version + " " + runtime.GOOS
)
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   = 6 * time.Hour
	ProofCacheMediumDur = 30 * time.Minute
	ProofCacheShortDur  = 1 * time.Minute

	SigShortIDBytes = 27
)
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
)
View Source
const (
	SCOk                     = 0
	SCLoginRequired          = 201
	SCBadSession             = 202
	SCBadLoginPassword       = 204
	SCNotFound               = 205
	SCGeneric                = 218
	SCAlreadyLoggedIn        = 235
	SCCanceled               = 237
	SCReloginRequired        = 274
	SCBadSignupUsernameTaken = 701
	SCKeyNotFound            = 901
	SCKeyInUse               = 907
	SCKeyBadGen              = 913
	SCKeyNoSecret            = 914
	SCKeyBadUIDs             = 915
	SCKeyNoActive            = 916
	SCKeyNoSig               = 917
	SCKeyBadSig              = 918
	SCKeyBadEldest           = 919
	SCKeyNoEldest            = 920
	SCKeyDuplicateUpdate     = 921
	SCSibkeyAlreadyExists    = 922
	SCDecryptionKeyNotFound  = 924
	SCBadTrackSession        = 1301
	SCDeviceNotFound         = 1409
	SCDeviceMismatch         = 1410
	SCDeviceRequired         = 1411
	SCStreamExists           = 1501
	SCStreamNotFound         = 1502
	SCStreamWrongKind        = 1503
	SCStreamEOF              = 1504
	SCAPINetworkError        = 1601
	SCTimeout                = 1602
	SCProofError             = 1701
	SCIdentificationExpired  = 1702
	SCSelfNotFound           = 1703
	SCBadKexPhrase           = 1704
	SCNoUIDelegation         = 1705
)

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

View Source
const (
	MerkleTreeNode = 1
	MerkleTreeLeaf = 2
)
View Source
const (
	AuthenticationType    LinkType = "auth"
	CryptocurrencyType             = "cryptocurrency"
	RevokeType                     = "revoke"
	TrackType                      = "track"
	UntrackType                    = "untrack"
	UpdatePassphraseType           = "update_passphrase_hash"
	WebServiceBindingType          = "web_service_binding"

	EldestType    DelegationType = "eldest"
	PGPUpdateType                = "pgp_update"
	SibkeyType                   = "sibkey"
	SubkeyType                   = "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
	HTTPPollMaximum    = 5 * time.Second
)
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
	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
)
View Source
const (
	DBUser                    = 0x00
	DBSig                     = 0x0f
	DBLink                    = 0xe0
	DBLocalTrack              = 0xe1
	DBPGPKey                  = 0xe3
	DBSigHints                = 0xe4
	DBProofCheck              = 0xe5
	DBUserSecretKeys          = 0xe6
	DBSigChainTailPublic      = 0xe7
	DBSigChainTailSemiprivate = 0xe8
	DBSigChainTailEncrypted   = 0xe9
	DBMerkleRoot              = 0xf0
	DBTrackers                = 0xf1
)
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 (
	RedditPrefix = "https://www.reddit.com"
	RedditSub    = RedditPrefix + "/r/keybaseproofs"
)
View Source
const (
	TrackStatusNone     = 0
	TrackStatusTracking = 1
)
View Source
const Build = "0"

Build number

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 LKSecVersion = 100
View Source
const (
	LinkIDLen = 32
)
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 (
	PGPFingerprintLen = 20
)
View Source
const SHA256Code = 8
View Source
const (
	ServerUpdateLag = time.Minute
)
View Source
const (
	SigKbEddsa = KIDNaclEddsa
)
View Source
const UserSummaryLimit = 500 // max number of user summaries in one request
View Source
const Version = "1.0.4"

Version as MAJOR.MINOR.PATCH

Variables

View Source
var AllDeviceTypes = DeviceTypeSet{
	DeviceTypeDesktop: true,
	DeviceTypeMobile:  true,
	DeviceTypePaper:   true,
}
View Source
var BundledCAs = map[string]string{

	"api.keybase.io": `-----BEGIN CERTIFICATE-----
MIIGmzCCBIOgAwIBAgIJAPzhpcIBaOeNMA0GCSqGSIb3DQEBBQUAMIGPMQswCQYD
VQQGEwJVUzELMAkGA1UECBMCTlkxETAPBgNVBAcTCE5ldyBZb3JrMRQwEgYDVQQK
EwtLZXliYXNlIExMQzEXMBUGA1UECxMOQ2VydCBBdXRob3JpdHkxEzARBgNVBAMT
CmtleWJhc2UuaW8xHDAaBgkqhkiG9w0BCQEWDWNhQGtleWJhc2UuaW8wHhcNMTQw
MTAyMTY0MjMzWhcNMjMxMjMxMTY0MjMzWjCBjzELMAkGA1UEBhMCVVMxCzAJBgNV
BAgTAk5ZMREwDwYDVQQHEwhOZXcgWW9yazEUMBIGA1UEChMLS2V5YmFzZSBMTEMx
FzAVBgNVBAsTDkNlcnQgQXV0aG9yaXR5MRMwEQYDVQQDEwprZXliYXNlLmlvMRww
GgYJKoZIhvcNAQkBFg1jYUBrZXliYXNlLmlvMIICIjANBgkqhkiG9w0BAQEFAAOC
Ag8AMIICCgKCAgEA3sLA6ZG8uOvmlFvFLVIOURmcQrZyMFKbVu9/TeDiemls3w3/
JzVTduD+7KiUi9R7QcCW/V1ZpReTfunm7rfACiJ1fpIkjSQrgsvKDLghIzxIS5FM
I8utet5p6QtuJhaAwmmXn8xX05FvqWNbrcXRdpL4goFdigPsFK2xhTUiWatLMste
oShI7+zmrgkx75LeLMD0bL2uOf87JjOzbY8x2sUIZLGwPoATyG8WS38ey6KkJxRj
AhG3p+OTYEjYSrsAtQA6ImbeDpfSHKOB8HF3nVp//Eb4HEiEsWwBRbQXvAWh3DYL
GukFW0wiO0HVCoWY+bHL/Mqa0NdRGOlLsbL4Z4pLrhqKgSDU8umX9YuNRRaB0P5n
TkzyU6axHqzq990Gep/I62bjsBdYYp+DjSPK43mXRrfWJl2NTcl8xKAyfsOW+9hQ
9vwK0tpSicNxfYuUZs0BhfjSZ/Tc6Z1ERdgUYRiXTtohl+SRA2IgZMloHCllVMNj
EjXhguvHgLAOrcuyhVBupiUQGUHQvkMsr1Uz8VPNDFOJedwucRU2AaR881bknnSb
ds9+zNLsvUFV+BK7Qdnt/WkFpYL78rGwY47msi9Ooddx6fPyeg3qkJGM6cwn/boy
w9lQeleYDq8kyJdixIAxtAskNzRPJ4nDu2izTfByQoM8epwAWboc/gNFObMCAwEA
AaOB9zCB9DAdBgNVHQ4EFgQURqpATOw1gVVrzlqqFKbkfaKXvwowgcQGA1UdIwSB
vDCBuYAURqpATOw1gVVrzlqqFKbkfaKXvwqhgZWkgZIwgY8xCzAJBgNVBAYTAlVT
MQswCQYDVQQIEwJOWTERMA8GA1UEBxMITmV3IFlvcmsxFDASBgNVBAoTC0tleWJh
c2UgTExDMRcwFQYDVQQLEw5DZXJ0IEF1dGhvcml0eTETMBEGA1UEAxMKa2V5YmFz
ZS5pbzEcMBoGCSqGSIb3DQEJARYNY2FAa2V5YmFzZS5pb4IJAPzhpcIBaOeNMAwG
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggIBAA3Z5FIhulYghMuHdcHYTYWc
7xT5WD4hXQ0WALZs4p5Y+b2Af54o6v1wUE1Au97FORq5CsFXX/kGl/JzzTimeucn
YJwGuXMpilrlHCBAL5/lSQjA7qbYIolQ3SB9ON+LYuF1jKB9k8SqNp7qzucxT3tO
b8ZMDEPNsseC7NE2uwNtcW3yrTh6WZnSqg/jwswiWjHYDdG7U8FjMYlRol3wPux2
PizGbSgiR+ztI2OthxtxNWMrT9XKxNQTpcxOXnLuhiSwqH8PoY17ecP8VPpaa0K6
zym0zSkbroqydazaxcXRk3eSlc02Ktk7HzRzuqQQXhRMkxVnHbFHgGsz03L533pm
mlIEgBMggZkHwNvs1LR7f3v2McdKulDH7Mv8yyfguuQ5Jxxt7RJhUuqSudbEhoaM
6jAJwBkMFxsV2YnyFEd3eZ/qBYPf7TYHhyzmHW6WkSypGqSnXd4gYpJ8o7LxSf4F
inLjxRD+H9Xn1UVXWLM0gaBB7zZcXd2zjMpRsWgezf5IR5vyakJsc7fxzgor3Qeq
Ri6LvdEkhhFVl5rHMQBwNOPngySrq8cs/ikTLTfQVTYXXA4Ba1YyiMOlfaR1LhKw
If1AkUV0tfCTNRZ01EotKSK77+o+k214n+BAu+7mO+9B5Kb7lMFQcuWCHXKYB2Md
cT7Yh09F0QpFUd0ymEfv
-----END CERTIFICATE-----`,
}
View Source
var CheckDeviceName = Checker{
	F: func(s string) bool {
		re := regexp.MustCompile(`^[a-zA-Z0-9][ _'a-zA-Z0-9+-]*$`)
		bad := regexp.MustCompile(`  |[ '+_-]$|['+_-][ ]?['+_-]`)
		return len(s) >= 3 && len(s) <= 64 && re.MatchString(s) && !bad.MatchString(s)
	},
	Hint: "between 3 and 64 characters long",
}
View Source
var CheckEmail = Checker{
	F: func(s string) bool {
		re := regexp.MustCompile(`^\S+@\S+\.\S+$`)
		return len(s) > 3 && re.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 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 {
		re := regexp.MustCompile(`^([a-zA-Z0-9][a-zA-Z0-9_]?)+$`)
		return len(s) >= 2 && len(s) <= 16 && re.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 DefaultDeviceTypes = DeviceTypeSet{
	DeviceTypeDesktop: true,
	DeviceTypeMobile:  true,
}
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 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 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 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 = "Keybase/" + Version + " (" + runtime.Version() + " on " + runtime.GOOS + ")"

Functions

func APIBase

func APIBase(un string) string

func AppDataDir

func AppDataDir() (string, error)

func AttachedSignWrapper

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

func BtcAddrCheck

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

func CanEncrypt

func CanEncrypt(key GenericKey) bool

func CheckKarma

func CheckKarma(un string) (int, error)

func CheckPosted

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

func CheckPostedViaSigID

func CheckPostedViaSigID(sigID keybase1.SigID) (found bool, status keybase1.ProofStatus, err 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 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 Decode58

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

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 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

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 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 FindFirstBase64Block

func FindFirstBase64Block(s string) string

func FormatTime

func FormatTime(tm time.Time) string

func GenericKeyEqual

func GenericKeyEqual(k1, k2 GenericKey) bool

func GetConfiguredAccounts

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

func GetKID

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

func GetLinkIDVoid

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

func GetNodeHashVoid

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

func GetPGPFingerprintVoid

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

func GetProxyCAs

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

func GetSigID

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

func GetTerminalPrompt

func GetTerminalPrompt() string

func GetUID

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

func GetUIDVoid

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

func GetUsersWithStoredSecrets

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

func GiveMeAnS

func GiveMeAnS(i int) string

func HasSecretStore

func HasSecretStore() bool

func HexDecodeQuoted

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

func ImportStatusAsError

func ImportStatusAsError(s *keybase1.Status) error

func IsArmored

func IsArmored(buf []byte) bool

func IsClearsign

func IsClearsign(p *Peeker) bool

func IsDirEmpty

func IsDirEmpty(dir string) (bool, error)

IsDirEmpty returns whether directory has any files.

func IsEmpty

func IsEmpty(s string) bool

func IsIn

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

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

func IsNo

func IsNo(s string) bool

func IsPGP

func IsPGP(key GenericKey) bool

func IsPGPAlgo

func IsPGPAlgo(algo AlgoType) bool

func IsSocketClosedError

func IsSocketClosedError(e error) bool

net.errClosing isn't exported, so do this.. UGLY!

func IsValidHostname

func IsValidHostname(s string) bool

func IsYes

func IsYes(s string) bool

func KBCMFDecrypt

func KBCMFDecrypt(
	source io.Reader, sink io.WriteCloser,
	deviceEncryptionKey NaclDHKeyPair) error

func KBCMFEncrypt

func KBCMFEncrypt(
	source io.Reader, sink io.WriteCloser,
	receivers [][]NaclDHKeyPublic, sender NaclDHKeyPair) error

KBCMFEncrypt reads from the given source, encrypts it for the given receivers from the given sender, armors it, and writes it to sink.

func KarmaURL

func KarmaURL(un string) string

func KbOpenSig

func KbOpenSig(armored string) ([]byte, 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 ListProofCheckers

func ListProofCheckers() (proofCheckers []string)

ListProofCheckers returns the supported networks for "keybase prove".

func LoadUserPlusKeys

func LoadUserPlusKeys(g *GlobalContext, uid keybase1.UID, cacheOK bool) (keybase1.UserPlusKeys, error)

func MakeParentDirs

func MakeParentDirs(filename string) error

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 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 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 NewDNSChecker

func NewDNSChecker(p RemoteProofChainLink) (*DNSChecker, ProofError)

func NewDeviceID

func NewDeviceID() (keybase1.DeviceID, error)

func NewLoopbackConnPair

func NewLoopbackConnPair() (*LoopbackConn, *LoopbackConn)

NewLoopbackConnPair makes a new loopback connection pair

func NewTypedChainLink(cl *ChainLink) (ret TypedChainLink, w Warning)

func NewWebChecker

func NewWebChecker(p RemoteProofChainLink) (*WebChecker, ProofError)

func OpenLogFile

func OpenLogFile() (name string, file *os.File, err error)

OpenLogFile opens the standard Keybase logfile, and returns its name, its File object, or an Error if it didn't work out.

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 PGPDetect

func PGPDetect(p *Peeker) (armored, clearsign bool)

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, uid string, err error)

func PGPLookupFingerprint

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

func PGPLookupHex

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

func PacketArmoredEncode

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

func ParseCA

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

func ParseDNS

func ParseDNS(s string) (ret string, err error)

func ParseGpgIndexStream

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

func ParseWeb

func ParseWeb(s string) (hostname string, prot string, err error)

func PickFirstError

func PickFirstError(errors ...error) 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(sr SessionReader, deviceID keybase1.DeviceID, deviceType string, serverHalf []byte,
	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 RegisterProofCheckHook

func RegisterProofCheckHook(s string, h ProofCheckHook)

func RegisterServiceType

func RegisterServiceType(st ServiceType)

func RegisterSocialNetwork

func RegisterSocialNetwork(s string)

func RemoveLocalTrack

func RemoveLocalTrack(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 RunSyncer

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

func SafeWriteToFile

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

SafeWriteToFile to safely write to a file. Use mode=0 for default permissions.

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 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 SplitHost

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

func StoreLocalTrack

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

func Tablify

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

func TempFile

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

TempFile creates a termporary file. Use mode=0 for default permissions.

func TorParseProxy

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

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 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, interface{}) error
	Post(APIArg) (*APIRes, error)
	PostJSON(APIArg) (*APIRes, error)
	PostResp(APIArg) (*http.Response, error)
	PostDecode(APIArg, interface{}) error
}

type APIArg

type APIArg struct {
	Endpoint string

	Args        HTTPArgs
	JSONPayload JSONPayload
	NeedSession bool
	SessionR    SessionReader
	HTTPStatus  []int
	AppStatus   []string
	DecodeTo    interface{}
	Contextified
	// contains filtered or unexported fields
}

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

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  string
}

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) ClearLoginSession

func (a *Account) ClearLoginSession()

ClearLoginSession clears out any cached login sessions with the account object

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.Cipher, 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) Keyring

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

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) SecretSyncer

func (a *Account) SecretSyncer() *SecretSyncer

func (*Account) SetCachedSecretKey

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

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) Shutdown

func (a *Account) Shutdown() error

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
	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) 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 AppStatusError

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

func NewAppStatusError

func NewAppStatusError(jw *jsonw.Wrapper) 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) HasOr

func (a AssertionAnd) HasOr() bool

func (AssertionAnd) MatchSet

func (a AssertionAnd) MatchSet(ps ProofSet) bool

func (AssertionAnd) String

func (a AssertionAnd) String() string

type AssertionDNS

type AssertionDNS struct{ AssertionURLBase }

func (AssertionDNS) Check

func (a AssertionDNS) Check() (err error)

func (AssertionDNS) CollectUrls

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

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
	CollectUrls([]AssertionURL) []AssertionURL
}

func AssertionParse

func AssertionParse(s string) (AssertionExpression, error)

func AssertionParseAndOnly

func AssertionParseAndOnly(s string) (AssertionExpression, error)

type AssertionFingerprint

type AssertionFingerprint struct{ AssertionURLBase }

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) Check

func (a AssertionHTTP) Check() (err error)

func (AssertionHTTP) CollectUrls

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

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) Check

func (a AssertionHTTPS) Check() (err error)

func (AssertionHTTPS) CollectUrls

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

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) 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) 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) 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) Check

func (a AssertionSocial) Check() (err error)

func (AssertionSocial) CollectUrls

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

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) Check

func (a AssertionUID) Check() (err 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
	Check() error
	IsKeybase() bool
	IsUID() bool
	ToUID() keybase1.UID
	IsSocial() bool
	IsFingerprint() bool
	MatchProof(p Proof) bool
	ToKeyValuePair() (string, string)
	CacheKey() string
	GetValue() string
	ToLookup() (string, string, error)
}

func ParseAssertionURL

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

func ParseAssertionURLKeyValue

func ParseAssertionURLKeyValue(key, 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) Check

func (b AssertionURLBase) Check() error

func (AssertionURLBase) CheckHost

func (b AssertionURLBase) CheckHost() (err error)

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) 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) 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) Check

func (a AssertionWeb) Check() (err error)

func (AssertionWeb) CollectUrls

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

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 BadFingerprintError

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

func (BadFingerprintError) Error

func (b BadFingerprintError) Error() string

type BadKeyError

type BadKeyError struct {
	Msg string
}

func (BadKeyError) Error

func (p BadKeyError) 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 BadUsernameError

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

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(url url.URL, arg APIArg) (*http.Request, error)

func (*BaseAPIEngine) PreparePost

func (api *BaseAPIEngine) PreparePost(url 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) BaseToChecker

func (t BaseServiceType) BaseToChecker(st ServiceType, hint string) Checker

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) LastWriterWins

func (t BaseServiceType) LastWriterWins() bool

func (BaseServiceType) NormalizeUsername

func (t BaseServiceType) NormalizeUsername(s string) (string, error)

func (BaseServiceType) PreProofCheck

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

func (BaseServiceType) PreProofWarning

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

type BtcOpts

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

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 CanceledError

type CanceledError struct {
	M string
}

func (CanceledError) Error

func (c CanceledError) Error() string

func (CanceledError) ToStatus

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

func ImportLinkFromServer

func ImportLinkFromServer(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(parent *SigChain, id LinkID, jw *jsonw.Wrapper) *ChainLink

func (*ChainLink) CheckNameAndID

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

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) 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 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) IsFresh

func (cr CheckResult) IsFresh() bool

func (CheckResult) Pack

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

func (CheckResult) ToDisplayString

func (cr CheckResult) ToDisplayString() string

type Checker

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

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 CoinbaseChecker

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

func (*CoinbaseChecker) CheckHint

func (rc *CoinbaseChecker) CheckHint(h SigHint) ProofError

func (*CoinbaseChecker) CheckStatus

func (rc *CoinbaseChecker) CheckStatus(h SigHint) ProofError

func (*CoinbaseChecker) GetTorError

func (rc *CoinbaseChecker) GetTorError() ProofError

func (*CoinbaseChecker) ProfileURL

func (rc *CoinbaseChecker) ProfileURL() string

type CoinbaseServiceType

type CoinbaseServiceType struct{ BaseServiceType }

func (CoinbaseServiceType) AllStringKeys

func (t CoinbaseServiceType) AllStringKeys() []string

func (CoinbaseServiceType) CheckProofText

func (t CoinbaseServiceType) CheckProofText(text string, id keybase1.SigID, sig string) (err error)

func (CoinbaseServiceType) CheckUsername

func (t CoinbaseServiceType) CheckUsername(s string) (err error)

func (CoinbaseServiceType) DisplayName

func (t CoinbaseServiceType) DisplayName(un string) string

func (CoinbaseServiceType) GetPrompt

func (t CoinbaseServiceType) GetPrompt() string

func (CoinbaseServiceType) GetProofType

func (t CoinbaseServiceType) GetProofType() string

func (CoinbaseServiceType) GetTypeName

func (t CoinbaseServiceType) GetTypeName() string

func (CoinbaseServiceType) PostInstructions

func (t CoinbaseServiceType) PostInstructions(un string) *Markup

func (CoinbaseServiceType) RecheckProofPosting

func (t CoinbaseServiceType) RecheckProofPosting(tryNumber int, status keybase1.ProofStatus, _ string) (warning *Markup, err error)

func (CoinbaseServiceType) ToChecker

func (t CoinbaseServiceType) ToChecker() Checker

func (CoinbaseServiceType) ToServiceJSON

func (t CoinbaseServiceType) ToServiceJSON(un string) *jsonw.Wrapper

type Command

type Command interface {
	GetUsage() Usage
}

type CommandLine

type CommandLine interface {
	GetHome() string
	GetServerURI() string
	GetConfigFilename() string
	GetSessionFilename() string
	GetDbFilename() string
	GetDebug() (bool, bool)
	GetProxy() string
	GetLogFormat() string
	GetGpgHome() string
	GetAPIDump() (bool, bool)
	GetUserCacheMaxAge() (time.Duration, bool)
	GetProofCacheSize() (int, bool)
	GetMerkleKIDs() []string
	GetPinentry() string
	GetGpg() string
	GetGpgOptions() []string
	GetPGPFingerprint() *PGPFingerprint
	GetSecretKeyringTemplate() string
	GetSocketFile() string
	GetPidFile() string
	GetStandalone() (bool, bool)
	GetAutoFork() (bool, bool)
	GetNoAutoFork() (bool, bool)
	GetLocalRPCDebug() string
	GetTimers() string
	GetSplitLogOutput() (bool, bool)
	GetLogFile() string
	GetRunMode() (RunMode, error)

	GetScraperTimeout() (time.Duration, bool)
	GetAPITimeout() (time.Duration, bool)

	GetTorMode() (TorMode, error)
	GetTorHiddenAddress() string
	GetTorProxy() string

	// Lower-level functions
	GetGString(string) string
	GetString(string) string
	GetBool(string, bool) (bool, bool)
}

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

func (ComputedKeyFamily) ExportDeviceKeys

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

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) 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) 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) 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) 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) 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 {
	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

	// 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

	Contextified
}

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 {

	// 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() *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 {
	GetHome() string
	GetServerURI() string
	GetConfigFilename() string
	GetSessionFilename() string
	GetDbFilename() string
	GetDebug() (bool, bool)
	GetAutoFork() (bool, bool)
	GetUserConfig() (*UserConfig, error)
	GetUserConfigForUsername(s NormalizedUsername) (*UserConfig, error)
	GetProxy() string
	GetLogFormat() string
	GetGpgHome() string
	GetBundledCA(host string) string
	GetStringAtPath(string) (string, bool)
	GetBoolAtPath(string) (bool, bool)
	GetIntAtPath(string) (int, bool)
	GetNullAtPath(string) bool
	GetUserCacheMaxAge() (time.Duration, bool)
	GetProofCacheSize() (int, bool)
	GetProofCacheLongDur() (time.Duration, bool)
	GetProofCacheMediumDur() (time.Duration, bool)
	GetProofCacheShortDur() (time.Duration, bool)
	GetMerkleKIDs() []string
	GetPinentry() string
	GetNoPinentry() (bool, bool)
	GetGpg() string
	GetGpgOptions() []string
	GetSecretKeyringTemplate() string
	GetSalt() []byte
	GetSocketFile() string
	GetPidFile() string
	GetStandalone() (bool, bool)
	GetLocalRPCDebug() string
	GetTimers() string
	GetDeviceID() keybase1.DeviceID
	GetUsername() NormalizedUsername
	GetAllUsernames() (current NormalizedUsername, others []NormalizedUsername, err error)
	GetUID() keybase1.UID
	GetProxyCACerts() ([]string, error)
	GetSplitLogOutput() (bool, bool)
	GetLogFile() string
	GetRunMode() (RunMode, error)
	GetScraperTimeout() (time.Duration, bool)
	GetAPITimeout() (time.Duration, bool)
	GetSecurityAccessGroupOverride() (bool, bool)

	GetTorMode() (TorMode, error)
	GetTorHiddenAddress() string
	GetTorProxy() string
}

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
	SetNullAtPath(string) error
	DeleteAtPath(string)
	Reset()
	Save() error
	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) 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()

type Contexitifier

type Contexitifier interface {
	G() *GlobalContext
}

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 CryptocurrencyChainLink struct {
	GenericChainLink
	// contains filtered or unexported fields
}
func ParseCryptocurrencyChainLink(b GenericChainLink) (
	cl *CryptocurrencyChainLink, err error)

func (CryptocurrencyChainLink) Display

func (c CryptocurrencyChainLink) Display(ui IdentifyUI)

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 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
	User       *User
}

func GetCurrentStatus

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

func (CurrentStatus) Export

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

type DNSChecker

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

func (*DNSChecker) CheckDomain

func (rc *DNSChecker) CheckDomain(sig string, domain string) ProofError

func (*DNSChecker) CheckHint

func (rc *DNSChecker) CheckHint(h SigHint) ProofError

func (*DNSChecker) CheckStatus

func (rc *DNSChecker) CheckStatus(h SigHint) ProofError

func (*DNSChecker) GetTorError

func (rc *DNSChecker) GetTorError() ProofError

type DNSServiceType

type DNSServiceType struct{ BaseServiceType }

func (DNSServiceType) AllStringKeys

func (t DNSServiceType) AllStringKeys() []string

func (DNSServiceType) CheckProofText

func (t DNSServiceType) CheckProofText(text string, id keybase1.SigID, sig string) (err error)

func (DNSServiceType) CheckUsername

func (t DNSServiceType) CheckUsername(s string) error

func (DNSServiceType) DisplayName

func (t DNSServiceType) DisplayName(un string) string

func (DNSServiceType) FormatProofText

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

func (DNSServiceType) GetAPIArgKey

func (t DNSServiceType) GetAPIArgKey() string

func (DNSServiceType) GetPrompt

func (t DNSServiceType) GetPrompt() string

func (DNSServiceType) GetProofType

func (t DNSServiceType) GetProofType() string

func (DNSServiceType) GetTypeName

func (t DNSServiceType) GetTypeName() string

func (DNSServiceType) LastWriterWins

func (t DNSServiceType) LastWriterWins() bool

func (DNSServiceType) NormalizeUsername

func (t DNSServiceType) NormalizeUsername(s string) (string, error)

func (DNSServiceType) PostInstructions

func (t DNSServiceType) PostInstructions(un string) *Markup

func (DNSServiceType) RecheckProofPosting

func (t DNSServiceType) RecheckProofPosting(tryNumber int, status keybase1.ProofStatus, dn string) (warning *Markup, err error)

func (DNSServiceType) ToChecker

func (t DNSServiceType) ToChecker() Checker

func (DNSServiceType) ToServiceJSON

func (t DNSServiceType) ToServiceJSON(un string) *jsonw.Wrapper

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) ServiceSpawnDir

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

type DbKey

type DbKey struct {
	Typ ObjType
	Key string
}

func DbKeyParse

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

func DbKeyUID

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

func LocalTrackDBKey

func LocalTrackDBKey(tracker, trackee keybase1.UID) 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

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 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"`
}

func NewPaperDevice

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

NewPaperDevice creates a new paper backup key device

func ParseDevice

func ParseDevice(jw *jsonw.Wrapper) (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
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"`
}

func (DeviceKey) Display

func (d DeviceKey) Display() string

type DeviceKeyMap

type DeviceKeyMap map[keybase1.DeviceID]DeviceKey

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 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) []openpgp.Key

func (EmptyKeyRing) KeysByIdUsage

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

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) 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) 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) GetDataDir

func (e *Env) GetDataDir() string

func (*Env) GetDbFilename

func (e *Env) GetDbFilename() string

func (*Env) GetDebug

func (e *Env) GetDebug() bool

func (*Env) GetDeviceID

func (e *Env) GetDeviceID() 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) GetGpg

func (e *Env) GetGpg() string

func (*Env) GetGpgHome

func (e *Env) GetGpgHome() string

func (*Env) GetGpgOptions

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

func (*Env) GetHome

func (e *Env) GetHome() string

func (*Env) GetInt

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

func (*Env) GetLabel

func (e *Env) GetLabel() string

func (*Env) GetLocalRPCDebug

func (e *Env) GetLocalRPCDebug() string

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) 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) GetRuntimeDir

func (e *Env) GetRuntimeDir() string

func (*Env) GetSalt

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

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) GetServiceSpawnDir

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

func (*Env) GetSessionFilename

func (e *Env) GetSessionFilename() string

func (*Env) GetSocketFile

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

func (*Env) GetSplitLogOutput

func (e *Env) GetSplitLogOutput() bool

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) GetUserCacheMaxAge

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

func (*Env) GetUsername

func (e *Env) GetUsername() NormalizedUsername

func (*Env) SetCommandLine

func (e *Env) SetCommandLine(cmd CommandLine)

func (*Env) SetConfig

func (e *Env) SetConfig(config ConfigReader)

func (*Env) SetConfigWriter

func (e *Env) SetConfigWriter(writer ConfigWriter)

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 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 io.ReadCloser) 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) 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 int) (
	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 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 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() error

Save file

func (File) WriteTo

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

WriteTo is for SafeWriter

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 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) GetAlgoType

func (g *GPGKey) GetAlgoType() AlgoType

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) SignToString

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

func (*GPGKey) ToLksSKB

func (g *GPGKey) ToLksSKB(lks *LKSec) (*SKB, error)

func (*GPGKey) ToServerSKB

func (g *GPGKey) ToServerSKB(gc *GlobalContext, ts *triplesec.Cipher, gen PassphraseGeneration) (*SKB, error)

func (*GPGKey) VerboseDescription

func (g *GPGKey) VerboseDescription() string

func (*GPGKey) VerifyString

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

func (*GPGKey) VerifyStringAndExtract

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

type GPGUI

type GPGUI interface {
	keybase1.GpgUiInterface
}
type GenericChainLink struct {
	*ChainLink
}

func (*GenericChainLink) BaseToTrackingStatement

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

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
	GetFingerprintP() *PGPFingerprint
	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(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(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)

	ToServerSKB(gc *GlobalContext, ts *triplesec.Cipher, gen PassphraseGeneration) (*SKB, error)
	ToLksSKB(lks *LKSec) (*SKB, error)
	VerboseDescription() string
	CheckSecretKey() error
	CanSign() bool
	CanEncrypt() bool
	CanDecrypt() bool
	HasSecretKey() bool
	Encode() (string, error) // encode public key to string
}

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

func ParseGenericKey

func ParseGenericKey(bundle string) (GenericKey, error)

type GithubChecker

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

func (*GithubChecker) CheckHint

func (rc *GithubChecker) CheckHint(h SigHint) ProofError

func (*GithubChecker) CheckStatus

func (rc *GithubChecker) CheckStatus(h SigHint) ProofError

func (*GithubChecker) GetTorError

func (rc *GithubChecker) GetTorError() ProofError

type GithubServiceType

type GithubServiceType struct{ BaseServiceType }

func (GithubServiceType) AllStringKeys

func (t GithubServiceType) AllStringKeys() []string

func (GithubServiceType) CheckProofText

func (t GithubServiceType) CheckProofText(text string, id keybase1.SigID, sig string) (err error)

func (GithubServiceType) CheckUsername

func (t GithubServiceType) CheckUsername(s string) (err error)

func (GithubServiceType) DisplayName

func (t GithubServiceType) DisplayName(un string) string

func (GithubServiceType) GetPrompt

func (t GithubServiceType) GetPrompt() string

func (GithubServiceType) GetProofType

func (t GithubServiceType) GetProofType() string

func (GithubServiceType) GetTypeName

func (t GithubServiceType) GetTypeName() string

func (GithubServiceType) PostInstructions

func (t GithubServiceType) PostInstructions(un string) *Markup

func (GithubServiceType) RecheckProofPosting

func (t GithubServiceType) RecheckProofPosting(tryNumber int, status keybase1.ProofStatus, _ string) (warning *Markup, err error)

func (GithubServiceType) ToChecker

func (t GithubServiceType) ToChecker() Checker

func (GithubServiceType) ToServiceJSON

func (t GithubServiceType) ToServiceJSON(un string) *jsonw.Wrapper

type GlobalContext

type GlobalContext struct {
	Log           logger.Logger  // Handles all logging
	Env           *Env           // Env variables, cmdline args & config
	Keyrings      *Keyrings      // Gpg Keychains holding keys
	API           API            // How to make a REST call to the server
	ResolveCache  *ResolveCache  // cache of resolve results
	LocalDb       *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
	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
	IdentifyCache    *IdentifyCache    // cache of IdentifyOutcomes
	UserCache        *UserCache        // cache of Users
	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
	UIRouter          UIRouter           // How to route UIs
	ExitCode          keybase1.ExitCode  // Value to return to OS on Exit()
	// contains filtered or unexported fields
}
var G *GlobalContext

func NewGlobalContext

func NewGlobalContext() *GlobalContext

func (*GlobalContext) BindToSocket

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

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) 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) ConfigureUsage

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

func (*GlobalContext) GetGpgClient

func (g *GlobalContext) GetGpgClient() *GpgCLI

func (*GlobalContext) GetMyUID

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

func (*GlobalContext) GetSocket

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

func (*GlobalContext) Init

func (g *GlobalContext) Init()

func (*GlobalContext) LoginState

func (g *GlobalContext) LoginState() *LoginState

func (*GlobalContext) Logout

func (g *GlobalContext) Logout() error

func (*GlobalContext) MakeLoopbackServer

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

func (*GlobalContext) OutputBytes

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

func (*GlobalContext) OutputString

func (g *GlobalContext) OutputString(s string)

func (*GlobalContext) PushShutdownHook

func (g *GlobalContext) PushShutdownHook(sh ShutdownHook)

func (*GlobalContext) SKBFilenameForUser

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

func (*GlobalContext) SetCommandLine

func (g *GlobalContext) SetCommandLine(cmd CommandLine)

func (*GlobalContext) SetService

func (g *GlobalContext) SetService()

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()

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) (err error)

func (*GpgCLI) ImportKey

func (g *GpgCLI) ImportKey(secret bool, fp PGPFingerprint) (*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) *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) Sign

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

func (*GpgCLI) Version

func (g *GpgCLI) Version() (string, 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 {
	// contains filtered or unexported fields
}

func NewGpgIndexParser

func NewGpgIndexParser() *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 {
	GpgBaseKey
	// contains filtered or unexported fields
}

func NewGpgPrimaryKey

func NewGpgPrimaryKey() *GpgPrimaryKey

func ParseGpgPrimaryKey

func ParseGpgPrimaryKey(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 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 HackerNewsChecker

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

func (*HackerNewsChecker) APIBase

func (h *HackerNewsChecker) APIBase() string

func (*HackerNewsChecker) APIURL

func (h *HackerNewsChecker) APIURL() string

func (*HackerNewsChecker) CheckHint

func (h *HackerNewsChecker) CheckHint(hint SigHint) ProofError

func (*HackerNewsChecker) CheckStatus

func (h *HackerNewsChecker) CheckStatus(hint SigHint) ProofError

func (*HackerNewsChecker) GetTorError

func (h *HackerNewsChecker) GetTorError() ProofError

func (*HackerNewsChecker) HumanURL

func (h *HackerNewsChecker) HumanURL() string

func (*HackerNewsChecker) KarmaURL

func (h *HackerNewsChecker) KarmaURL() string

type HackerNewsServiceType

type HackerNewsServiceType struct{ BaseServiceType }

func (HackerNewsServiceType) AllStringKeys

func (t HackerNewsServiceType) AllStringKeys() []string

func (HackerNewsServiceType) CheckProofText

func (t HackerNewsServiceType) CheckProofText(text string, id keybase1.SigID, sig string) (err error)

func (HackerNewsServiceType) CheckUsername

func (t HackerNewsServiceType) CheckUsername(s string) (err error)

func (HackerNewsServiceType) DisplayName

func (t HackerNewsServiceType) DisplayName(un string) string

func (HackerNewsServiceType) GetPrompt

func (t HackerNewsServiceType) GetPrompt() string

func (HackerNewsServiceType) GetProofType

func (t HackerNewsServiceType) GetProofType() string

func (HackerNewsServiceType) GetTypeName

func (t HackerNewsServiceType) GetTypeName() string

func (HackerNewsServiceType) NormalizeUsername

func (t HackerNewsServiceType) NormalizeUsername(s string) (string, error)

HackerNews names are case-sensitive

func (HackerNewsServiceType) PostInstructions

func (t HackerNewsServiceType) PostInstructions(un string) *Markup

func (HackerNewsServiceType) PreProofCheck

func (t HackerNewsServiceType) PreProofCheck(un string) (markup *Markup, err error)

func (HackerNewsServiceType) RecheckProofPosting

func (t HackerNewsServiceType) RecheckProofPosting(tryNumber int, status keybase1.ProofStatus, _ string) (warning *Markup, err error)

func (HackerNewsServiceType) ToChecker

func (t HackerNewsServiceType) ToChecker() Checker

func (HackerNewsServiceType) ToServiceJSON

func (t HackerNewsServiceType) ToServiceJSON(un string) *jsonw.Wrapper

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)
}

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 IdentifyCache

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

func NewIdentifyCache

func NewIdentifyCache() *IdentifyCache

func (*IdentifyCache) Delete

func (c *IdentifyCache) Delete(key IdentifyCacheToken) error

func (*IdentifyCache) Get

func (*IdentifyCache) Insert

func (c *IdentifyCache) Insert(outcome *IdentifyOutcome) (IdentifyCacheToken, error)

func (*IdentifyCache) Shutdown

func (c *IdentifyCache) Shutdown()

type IdentifyCacheToken

type IdentifyCacheToken string

func ImportIdentifyCacheToken

func ImportIdentifyCacheToken(t string) IdentifyCacheToken

func (IdentifyCacheToken) Export

func (t IdentifyCacheToken) Export() string

type IdentifyOutcome

type IdentifyOutcome struct {
	Username     string
	Error        error
	KeyDiffs     []TrackDiff
	Revoked      []TrackDiffRevoked
	ProofChecks  []*LinkCheckResult
	Warnings     []Warning
	TrackUsed    *TrackLookup
	TrackEqual   bool // Whether the track statement was equal to what we saw
	MeSet        bool // whether me was set at the time
	TrackOptions keybase1.TrackOptions
	Reason       keybase1.IdentifyReason
}

func NewIdentifyOutcome

func NewIdentifyOutcome(m bool) *IdentifyOutcome

func (*IdentifyOutcome) ActiveProofs

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

func (*IdentifyOutcome) AddProofsToSet

func (i *IdentifyOutcome) AddProofsToSet(existing *ProofSet)

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) 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 (*IdentifyState) ComputeKeyDiffs

func (s *IdentifyState) ComputeKeyDiffs(dhook func(keybase1.IdentifyKey))

func (*IdentifyState) ComputeRevokedProofs

func (s *IdentifyState) ComputeRevokedProofs()

func (*IdentifyState) ComputeTrackDiffs

func (s *IdentifyState) ComputeTrackDiffs()

func (*IdentifyState) CreateTrackLookup

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

func (*IdentifyState) HasPreviousTrack

func (s *IdentifyState) HasPreviousTrack() bool

func (*IdentifyState) InitResultList

func (s *IdentifyState) InitResultList()

func (*IdentifyState) TrackLookup

func (s *IdentifyState) TrackLookup() *TrackLookup

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)
	FinishWebProofCheck(keybase1.RemoteProof, keybase1.LinkCheckResult)
	FinishSocialProofCheck(keybase1.RemoteProof, keybase1.LinkCheckResult)
	Confirm(*keybase1.IdentifyOutcome) (keybase1.ConfirmResult, error)
	DisplayCryptocurrency(keybase1.Cryptocurrency)
	DisplayKey(keybase1.IdentifyKey)
	ReportLastTrack(*keybase1.TrackSummary)
	LaunchNetworkChecks(*keybase1.Identity, *keybase1.User)
	DisplayTrackStatement(string) error
	ReportTrackToken(IdentifyCacheToken) error
	SetStrict(b bool)
	Finish()
}

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 {
	Order []TypedChainLink

	Contextified
	// 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() *CryptocurrencyChainLink

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[string][]*TrackChainLink

func (*IdentityTable) Identify

func (idt *IdentityTable) Identify(is IdentifyState, forceRemoteCheck bool, ui IdentifyUI)

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 string, uid keybase1.UID) (*TrackChainLink, error)

func (*IdentityTable) VerifySelfSig

func (idt *IdentityTable) VerifySelfSig(s string, uid keybase1.UID) bool

type InactiveKeyError

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

func (InactiveKeyError) Error

func (i InactiveKeyError) Error() string

type InsufficientKarmaError

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

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 interface{}) 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.

func (*InternalAPIEngine) Post

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

func (*InternalAPIEngine) PostDecode

func (a *InternalAPIEngine) PostDecode(arg APIArg, v interface{}) error

func (*InternalAPIEngine) PostJSON

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

func (*InternalAPIEngine) PostResp

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

PostResp performs a POST request and returns the http response.

type InternalError

type InternalError struct {
	Msg string
}

func (InternalError) Error

func (e InternalError) Error() string

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 (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 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) GetBoolAtPath

func (f JSONConfigFile) GetBoolAtPath(p string) (ret bool, isSet bool)

func (JSONConfigFile) GetBundledCA

func (f JSONConfigFile) GetBundledCA(host string) (ret 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) GetDurationAtPath

func (f JSONConfigFile) GetDurationAtPath(p string) (time.Duration, bool)

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) GetHome

func (f JSONConfigFile) GetHome() string

func (JSONConfigFile) GetIntAtPath

func (f JSONConfigFile) GetIntAtPath(p string) (ret int, isSet bool)

func (JSONConfigFile) GetLocalRPCDebug

func (f JSONConfigFile) GetLocalRPCDebug() string

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) 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) GetSplitLogOutput

func (f JSONConfigFile) GetSplitLogOutput() (bool, bool)

func (JSONConfigFile) GetStandalone

func (f JSONConfigFile) GetStandalone() (bool, bool)

func (JSONConfigFile) GetStringAtPath

func (f JSONConfigFile) GetStringAtPath(p string) (ret string, isSet bool)

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) GetUserCacheMaxAge

func (f JSONConfigFile) GetUserCacheMaxAge() (time.Duration, bool)

func (JSONConfigFile) GetUserConfig

func (f JSONConfigFile) GetUserConfig() (*UserConfig, error)

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) NukeUser

func (f *JSONConfigFile) NukeUser(nu NormalizedUsername) error

func (*JSONConfigFile) Reset

func (f *JSONConfigFile) Reset()

func (*JSONConfigFile) SetBoolAtPath

func (f *JSONConfigFile) SetBoolAtPath(p string, v bool) error

func (*JSONConfigFile) SetDeviceID

func (f *JSONConfigFile) SetDeviceID(did keybase1.DeviceID) (err error)

SetDeviceID sets the device field of the UserConfig object

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) 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) 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) 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) 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)

type JSONPayload

type JSONPayload map[string]interface{}

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(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) 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.

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

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 {
	Tries          int
	Reason         string
	KeyDesc        string
	Which          string
	UseSecretStore bool
	UI             SecretUI
	Unlocker       func(pw string, storeSecret bool) (ret GenericKey, err error)
}

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 (*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) HashMe

func (p *KeybasePacket) HashMe() 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 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() 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(lctx LoginContext, ska SecretKeyArg, secretUI SecretUI, reason string) (key GenericKey, skb *SKB, err error)

func (*Keyrings) GetSecretKeyLocked

func (k *Keyrings) GetSecretKeyLocked(lctx LoginContext, ska SecretKeyArg) (ret *SKB, which string, 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(lctx LoginContext, ska SecretKeyArg, secretUI SecretUI, reason string) (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 NewLKSForEncrypt

func NewLKSForEncrypt(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 NewLKSec

func NewLKSec(pps *PassphraseStream, uid keybase1.UID, gc *GlobalContext) *LKSec

func NewLKSecWithClientHalf

func NewLKSecWithClientHalf(clientHalf []byte, ppgen PassphraseGeneration, uid keybase1.UID, gc *GlobalContext) *LKSec

func NewLKSecWithFullSecret

func NewLKSecWithFullSecret(secret []byte, uid keybase1.UID, gc *GlobalContext) *LKSec

func (*LKSec) Decrypt

func (s *LKSec) Decrypt(lctx LoginContext, src []byte) (res []byte, gen PassphraseGeneration, 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 ecrypts it for the given key. This is for recovery of passphrases on device recovery operations.

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 []byte, err error)

func (*LKSec) GetServerHalf

func (s *LKSec) GetServerHalf() []byte

func (*LKSec) Load

func (s *LKSec) Load(lctx LoginContext) (err error)

func (*LKSec) SetClientHalf

func (s *LKSec) SetClientHalf(b []byte)

func (*LKSec) SetServerHalf

func (s *LKSec) SetServerHalf(b []byte)

func (*LKSec) SetUID

func (s *LKSec) SetUID(u keybase1.UID)

type LevelDb

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

func NewLevelDb

func NewLevelDb(g *GlobalContext) *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) ([]byte, bool, error)

func (*LevelDb) GetFilename

func (l *LevelDb) GetFilename() string

func (*LevelDb) Lookup

func (l *LevelDb) Lookup(id DbKey) ([]byte, bool, 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) Put

func (l *LevelDb) 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 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 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) 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 {
	UID               keybase1.UID
	Name              string // Can also be an assertion like foo@twitter
	PublicKeyOptional bool
	NoCacheResult     bool // currently ignore
	Self              bool
	ForceReload       bool
	AllKeys           bool
	LoginContext      LoginContext
	Contextified
}

func NewLoadUserArg

func NewLoadUserArg(g *GlobalContext) LoadUserArg

func NewLoadUserByNameArg

func NewLoadUserByNameArg(g *GlobalContext, name string) LoadUserArg

func NewLoadUserForceArg

func NewLoadUserForceArg(g *GlobalContext) LoadUserArg

func NewLoadUserPubOptionalArg

func NewLoadUserPubOptionalArg(g *GlobalContext) LoadUserArg

type LocalDb

type LocalDb interface {
	Open() error
	ForceOpen() error
	Close() error
	Nuke() (string, error)
	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 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)

Lock writes the pid to filename after acquiring a lock on the file. When the process exits, the lock will be released.

type LockTable

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

func NewLockTable

func NewLockTable() *LockTable

func (*LockTable) Lock

func (t *LockTable) Lock(s string) (ret *NamedLock)

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 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.Cipher, 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
	EnsureUsername(username NormalizedUsername)
	SaveState(sessionID, csrf string, username NormalizedUsername, uid keybase1.UID, deviceID keybase1.DeviceID) error

	Keyring() (*SKBKeyringFile, error)
	LockedLocalSecretKey(ska SecretKeyArg) (*SKB, error)

	SecretSyncer() *SecretSyncer
	RunSecretSyncer(uid keybase1.UID) error

	CachedSecretKey(ska SecretKeyArg) (GenericKey, error)
	SetCachedSecretKey(ska SecretKeyArg, key GenericKey) error
}

LoginContext is passed to all loginHandler functions. It allows them safe access to various parts of the LoginState during the login process.

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

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) 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)

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) GetVerifiedTriplesec

func (s *LoginState) GetVerifiedTriplesec(ui SecretUI) (ret *triplesec.Cipher, 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) 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) 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) 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 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) Init

func (mc *MerkleClient) Init() error

func (*MerkleClient) LastRootToSigJSON

func (mc *MerkleClient) LastRootToSigJSON() (ret *jsonw.Wrapper, err error)

func (*MerkleClient) LastSeqno

func (mc *MerkleClient) LastSeqno() Seqno

func (*MerkleClient) LoadRoot

func (mc *MerkleClient) LoadRoot() error

func (*MerkleClient) LookupPath

func (mc *MerkleClient) LookupPath(q HTTPArgs) (vp *VerificationPath, err error)

func (*MerkleClient) LookupUser

func (mc *MerkleClient) LookupUser(q HTTPArgs) (u *MerkleUserLeaf, err error)

func (*MerkleClient) VerifyRoot

func (mc *MerkleClient) VerifyRoot(root *MerkleRoot) 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) Store

func (mr *MerkleRoot) Store() error

func (*MerkleRoot) ToJSON

func (mr *MerkleRoot) ToJSON() (jw *jsonw.Wrapper)

func (*MerkleRoot) ToSigJSON

func (mr *MerkleRoot) ToSigJSON() (ret *jsonw.Wrapper)

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, un string) (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) GetAlgoType

func (k NaclDHKeyPair) GetAlgoType() AlgoType

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) SignToString

func (k NaclDHKeyPair) SignToString(msg []byte) (sig string, id keybase1.SigID, err error)

func (NaclDHKeyPair) ToLksSKB

func (k NaclDHKeyPair) ToLksSKB(lks *LKSec) (*SKB, error)

func (NaclDHKeyPair) ToServerSKB

func (k NaclDHKeyPair) ToServerSKB(gc *GlobalContext, t *triplesec.Cipher, gen PassphraseGeneration) (*SKB, error)

func (NaclDHKeyPair) ToShortIDString

func (k NaclDHKeyPair) ToShortIDString() string

func (NaclDHKeyPair) VerboseDescription

func (k NaclDHKeyPair) VerboseDescription() string

func (NaclDHKeyPair) VerifyString

func (k NaclDHKeyPair) VerifyString(sig string, msg []byte) (id keybase1.SigID, err error)

func (NaclDHKeyPair) VerifyStringAndExtract

func (k NaclDHKeyPair) VerifyStringAndExtract(sig string) (msg []byte, id keybase1.SigID, err error)

type NaclDHKeyPrivate

type NaclDHKeyPrivate [NaclDHKeysize]byte

type NaclDHKeyPublic

type NaclDHKeyPublic [NaclDHKeysize]byte

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      []byte        `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"`
}

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() (error, *NaclSigningKeyPublic)

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) GetAlgoType

func (k NaclSigningKeyPair) GetAlgoType() AlgoType

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) 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) ToLksSKB

func (k NaclSigningKeyPair) ToLksSKB(lks *LKSec) (*SKB, error)

func (NaclSigningKeyPair) ToServerSKB

NaCl keys are never wrapped for the server.

func (NaclSigningKeyPair) ToShortIDString

func (k NaclSigningKeyPair) ToShortIDString() string

func (NaclSigningKeyPair) VerboseDescription

func (k NaclSigningKeyPair) VerboseDescription() string

func (NaclSigningKeyPair) VerifyString

func (k NaclSigningKeyPair) VerifyString(sig string, msg []byte) (id keybase1.SigID, err error)

func (NaclSigningKeyPair) VerifyStringAndExtract

func (k NaclSigningKeyPair) VerifyStringAndExtract(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) GetKID

func (k NaclSigningKeyPublic) GetKID() keybase1.KID

func (NaclSigningKeyPublic) Verify

func (k NaclSigningKeyPublic) Verify(msg []byte, sig *NaclSignature) bool

type NamedLock

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

func (*NamedLock) Unlock

func (l *NamedLock) Unlock()

type NeedInputError

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

func (NeedInputError) Error

func (e NeedInputError) Error() string

type NegBoolFunc

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

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 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 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

type NoUIError

type NoUIError struct {
	Which string
}

func (NoUIError) Error

func (e NoUIError) Error() string

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
}

func GetNodeHash

func GetNodeHash(w *jsonw.Wrapper) (NodeHash, error)

func NodeHashFromHex

func NodeHashFromHex(s string) (NodeHash, error)

type NodeHashLong

type NodeHashLong [NodeHashLenLong]byte

func (NodeHashLong) Check

func (h1 NodeHashLong) Check(s string) bool

func (NodeHashLong) String

func (h1 NodeHashLong) String() string

type NodeHashShort

type NodeHashShort [NodeHashLenShort]byte

func (NodeHashShort) Check

func (h1 NodeHashShort) Check(s string) bool

func (NodeHashShort) String

func (h1 NodeHashShort) String() string

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 {
	// contains filtered or unexported fields
}

func (NotFoundError) Error

func (e NotFoundError) Error() string

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 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 chanel closes.

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) 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) 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) 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) GetBool

func (n NullConfiguration) GetBool(string, bool) (bool, bool)

func (NullConfiguration) GetBoolAtPath

func (n NullConfiguration) GetBoolAtPath(string) (bool, bool)

func (NullConfiguration) GetBundledCA

func (n NullConfiguration) GetBundledCA(h string) 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) GetEmail

func (n NullConfiguration) GetEmail() string

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) GetHome

func (n NullConfiguration) GetHome() string

func (NullConfiguration) GetIntAtPath

func (n NullConfiguration) GetIntAtPath(string) (int, bool)

func (NullConfiguration) GetLocalRPCDebug

func (n NullConfiguration) GetLocalRPCDebug() string

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) 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) GetSplitLogOutput

func (n NullConfiguration) GetSplitLogOutput() (bool, bool)

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) 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

type ObjType

type ObjType byte

type PGPFingerprint

type PGPFingerprint [PGPFingerprintLen]byte

func GetPGPFingerprint

func GetPGPFingerprint(w *jsonw.Wrapper) (*PGPFingerprint, error)

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) LastWriterWins

func (p PGPFingerprint) LastWriterWins() bool

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

type PGPGenArg

type PGPGenArg struct {
	PrimaryBits     int
	SubkeyBits      int
	Ids             Identities
	Config          *packet.Config
	PGPUids         []string
	NoDefPGPUid     bool
	PrimaryLifetime int
	SubkeyLifetime  int
}

func ImportKeyGenArg

func ImportKeyGenArg(a keybase1.PGPKeyGenArg) (ret PGPGenArg)

func (*PGPGenArg) AddDefaultUID

func (a *PGPGenArg) AddDefaultUID()

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

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

	// 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
}

func GeneratePGPKeyBundle

func GeneratePGPKeyBundle(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 GetOneKey

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

func LoadPGPKeyFromLocalDB

func LoadPGPKeyFromLocalDB(k keybase1.KID, g *GlobalContext) (*PGPKeyBundle, error)

func NewPGPKeyBundle

func NewPGPKeyBundle(entity *openpgp.Entity) *PGPKeyBundle

func ReadOneKeyFromBytes

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

func ReadOneKeyFromString

func ReadOneKeyFromString(s string) (*PGPKeyBundle, error)

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

func ReadPrivateKeyFromString

func ReadPrivateKeyFromString(s string) (*PGPKeyBundle, 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 (*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)

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) (err 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) 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) 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) 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) []openpgp.Key

func (PGPKeyBundle) KeysByIdUsage

func (k PGPKeyBundle) KeysByIdUsage(id uint64, 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) 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) ToLksSKB

func (key *PGPKeyBundle) ToLksSKB(lks *LKSec) (ret *SKB, err error)

func (*PGPKeyBundle) ToServerSKB

func (key *PGPKeyBundle) ToServerSKB(gc *GlobalContext, tsec *triplesec.Cipher, gen PassphraseGeneration) (ret *SKB, err error)

func (*PGPKeyBundle) Unlock

func (k *PGPKeyBundle) Unlock(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(sig string, msg []byte) (id keybase1.SigID, err error)

func (PGPKeyBundle) VerifyStringAndExtract

func (k PGPKeyBundle) VerifyStringAndExtract(sig string) (msg []byte, id keybase1.SigID, err error)

type PGPKeySet

type PGPKeySet struct {
	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 PGPNoDecryptionKeyError

type PGPNoDecryptionKeyError struct {
	Msg string
}

func (PGPNoDecryptionKeyError) Error

func (e PGPNoDecryptionKeyError) Error() string

func (PGPNoDecryptionKeyError) ToStatus

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

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 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 (PaperKeyPhrase) Bytes

func (p PaperKeyPhrase) Bytes() []byte

Bytes returns a byte slice of the phrase.

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

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

func (p *Parser) Parse() AssertionExpression

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 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 StretchPassphrase

func StretchPassphrase(passphrase string, salt []byte) (tsec *triplesec.Cipher, pps *PassphraseStream, err error)

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() []byte

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

type PassphraseStreamCache

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

func NewPassphraseStreamCache

func NewPassphraseStreamCache(tsec *triplesec.Cipher, 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.Cipher

func (*PassphraseStreamCache) Valid

func (s *PassphraseStreamCache) Valid() bool

type PassphraseStreamCacheReader

type PassphraseStreamCacheReader interface {
	Triplesec() *triplesec.Cipher
	PassphraseStream() *PassphraseStream
	Valid() bool
}

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 Peeker

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

func NewPeeker

func NewPeeker(r io.Reader) *Peeker

func (*Peeker) Peek

func (p *Peeker) Peek(d []byte) (int, error)

func (*Peeker) Read

func (p *Peeker) Read(d []byte) (int, error)

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 PromptArg

type PromptArg struct {
	TerminalPrompt string
	PinentryDesc   string
	PinentryPrompt string
	Checker        *Checker
	RetryMessage   string
	UseSecretStore 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
}

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) Get

func (pc *ProofCache) Get(sid keybase1.SigID) *CheckResult

func (*ProofCache) Put

func (pc *ProofCache) Put(sid keybase1.SigID, pe ProofError) error

type ProofCheckHook

type ProofCheckHook func(l RemoteProofChainLink) (ProofChecker, ProofError)

type ProofChecker

type ProofChecker interface {
	CheckHint(h SigHint) ProofError
	CheckStatus(h SigHint) ProofError
	GetTorError() ProofError
}

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) 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 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 (ProtocolDowngradeError) Error

func (h ProtocolDowngradeError) Error() string

type ProvisionUI

type ProvisionUI interface {
	keybase1.ProvisionUiInterface
}

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{}

func NewRPCLogFactory

func NewRPCLogFactory() *RPCLogFactory

func (*RPCLogFactory) NewLog

func (r *RPCLogFactory) NewLog(a net.Addr) rpc.LogInterface

type RPCLogOptions

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

func (*RPCLogOptions) ClientTrace

func (r *RPCLogOptions) ClientTrace() bool

func (*RPCLogOptions) Profile

func (r *RPCLogOptions) Profile() bool

func (*RPCLogOptions) Reload

func (r *RPCLogOptions) Reload()

func (*RPCLogOptions) ServerTrace

func (r *RPCLogOptions) ServerTrace() bool

func (*RPCLogOptions) ShowAddress

func (r *RPCLogOptions) ShowAddress() bool

func (*RPCLogOptions) ShowArg

func (r *RPCLogOptions) ShowArg() bool

func (*RPCLogOptions) ShowResult

func (r *RPCLogOptions) ShowResult() bool

func (*RPCLogOptions) TransportStart

func (r *RPCLogOptions) TransportStart() bool

type RawKeyFamily

type RawKeyFamily struct {
	AllBundles []string `json:"all_bundles"`
}

As returned by user/lookup.json

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 RedditChecker

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

func (*RedditChecker) CheckData

func (rc *RedditChecker) CheckData(h SigHint, dat *jsonw.Wrapper) ProofError

func (*RedditChecker) CheckHint

func (rc *RedditChecker) CheckHint(h SigHint) ProofError

func (*RedditChecker) CheckStatus

func (rc *RedditChecker) CheckStatus(h SigHint) ProofError

func (*RedditChecker) GetTorError

func (rc *RedditChecker) GetTorError() ProofError

func (*RedditChecker) ScreenNameCompare

func (rc *RedditChecker) ScreenNameCompare(s1, s2 string) bool

func (*RedditChecker) UnpackData

func (rc *RedditChecker) UnpackData(inp *jsonw.Wrapper) (*jsonw.Wrapper, ProofError)

type RedditServiceType

type RedditServiceType struct{ BaseServiceType }

func (RedditServiceType) AllStringKeys

func (t RedditServiceType) AllStringKeys() []string

func (RedditServiceType) CheckProofText

func (t RedditServiceType) CheckProofText(text string, id keybase1.SigID, sig string) (err error)

func (RedditServiceType) CheckUsername

func (t RedditServiceType) CheckUsername(s string) (err error)

func (RedditServiceType) DisplayName

func (t RedditServiceType) DisplayName(un string) string

func (RedditServiceType) FormatProofText

func (t RedditServiceType) FormatProofText(ppr *PostProofRes) (res string, err error)

func (RedditServiceType) GetPrompt

func (t RedditServiceType) GetPrompt() string

func (RedditServiceType) GetProofType

func (t RedditServiceType) GetProofType() string

func (RedditServiceType) GetTypeName

func (t RedditServiceType) GetTypeName() string

func (RedditServiceType) PostInstructions

func (t RedditServiceType) PostInstructions(un string) *Markup

func (RedditServiceType) RecheckProofPosting

func (t RedditServiceType) RecheckProofPosting(tryNumber int, status keybase1.ProofStatus, _ string) (warning *Markup, err error)

func (RedditServiceType) ToChecker

func (t RedditServiceType) ToChecker() Checker

func (RedditServiceType) ToServiceJSON

func (t RedditServiceType) ToServiceJSON(un string) *jsonw.Wrapper

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)
	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)

AddProofsToSet adds the active proofs to an existing ProofSet.

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) 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) 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 {
	// 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 ResolveCache

type ResolveCache struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

func NewResolveCache

func NewResolveCache() *ResolveCache

func (*ResolveCache) Get

func (c *ResolveCache) Get(key string) *ResolveResult

Get returns a ResolveResult, if present in the cache.

func (*ResolveCache) Put

func (c *ResolveCache) Put(key string, res ResolveResult)

Put receives a copy of a ResolveResult, clears out the body to avoid caching data that can go stale, and stores the result.

type ResolveResult

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

func ResolveUID

func ResolveUID(input string) (res ResolveResult)

func ResolveUIDValuePair

func ResolveUIDValuePair(key, value string) (res ResolveResult)

func (*ResolveResult) GetError

func (res *ResolveResult) GetError() error

func (*ResolveResult) GetUID

func (res *ResolveResult) GetUID() keybase1.UID

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 RooterChecker

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

func (*RooterChecker) CheckData

func (rc *RooterChecker) CheckData(h SigHint, dat string) ProofError

func (*RooterChecker) CheckHint

func (rc *RooterChecker) CheckHint(h SigHint) (err ProofError)

func (*RooterChecker) CheckStatus

func (rc *RooterChecker) CheckStatus(h SigHint) (perr ProofError)

func (*RooterChecker) GetTorError

func (rc *RooterChecker) GetTorError() ProofError

func (*RooterChecker) ScreenNameCompare

func (rc *RooterChecker) ScreenNameCompare(s1, s2 string) bool

func (*RooterChecker) UnpackData

func (rc *RooterChecker) UnpackData(inp *jsonw.Wrapper) (string, ProofError)

type RooterServiceType

type RooterServiceType struct{ BaseServiceType }

func (RooterServiceType) AllStringKeys

func (t RooterServiceType) AllStringKeys() []string

func (RooterServiceType) CheckProofText

func (t RooterServiceType) CheckProofText(text string, id keybase1.SigID, sig string) (err error)

func (RooterServiceType) CheckUsername

func (t RooterServiceType) CheckUsername(s string) (err error)

func (RooterServiceType) DisplayName

func (t RooterServiceType) DisplayName(un string) string

func (RooterServiceType) GetPrompt

func (t RooterServiceType) GetPrompt() string

func (RooterServiceType) GetProofType

func (t RooterServiceType) GetProofType() string

func (RooterServiceType) GetTypeName

func (t RooterServiceType) GetTypeName() string

func (RooterServiceType) NormalizeUsername

func (t RooterServiceType) NormalizeUsername(s string) (string, error)

func (RooterServiceType) PostInstructions

func (t RooterServiceType) PostInstructions(un string) *Markup

func (RooterServiceType) RecheckProofPosting

func (t RooterServiceType) RecheckProofPosting(tryNumber int, status keybase1.ProofStatus, _ string) (warning *Markup, err error)

func (RooterServiceType) ToChecker

func (t RooterServiceType) ToChecker() Checker

func (RooterServiceType) ToServiceJSON

func (t RooterServiceType) ToServiceJSON(un string) *jsonw.Wrapper

type RunGpg2Arg

type RunGpg2Arg struct {
	Arguments []string
	Stdin     bool
	Stderr    bool
	Stdout    bool
}

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 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(lctx LoginContext, reason, which string, secretStore SecretStore, ui SecretUI, lksPreload *LKSec, 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, lksPreload *LKSec) (GenericKey, error)

func (*SKB) UnlockSecretKey

func (s *SKB) UnlockSecretKey(lctx LoginContext, passphrase string, tsec *triplesec.Cipher, pps *PassphraseStream, secretStorer SecretStorer, lksPreload *LKSec) (key GenericKey, err error)

func (*SKB) UnlockWithStoredSecret

func (s *SKB) UnlockWithStoredSecret(secretRetriever SecretRetriever) (ret GenericKey, err error)

func (*SKB) VerboseDescription

func (s *SKB) VerboseDescription() (ret string, err error)

type SKBKeyringFile

type SKBKeyringFile struct {
	Blocks []*SKB
	// contains filtered or unexported fields
}

func LoadSKBKeyring

func LoadSKBKeyring(un NormalizedUsername, g *GlobalContext) (*SKBKeyringFile, error)

func NewSKBKeyringFile

func NewSKBKeyringFile(n string) *SKBKeyringFile

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

func (*SKBKeyringFile) HasPGPKeys

func (k *SKBKeyringFile) HasPGPKeys() bool

func (*SKBKeyringFile) Index

func (k *SKBKeyringFile) Index() (err error)

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) Push

func (k *SKBKeyringFile) Push(skb *SKB) error

func (*SKBKeyringFile) PushAndSave

func (k *SKBKeyringFile) PushAndSave(skb *SKB) error

func (*SKBKeyringFile) Save

func (k *SKBKeyringFile) Save() error

func (SKBKeyringFile) SearchWithComputedKeyFamily

func (k SKBKeyringFile) SearchWithComputedKeyFamily(ckf *ComputedKeyFamily, ska SecretKeyArg) []*SKB

func (SKBKeyringFile) WriteTo

func (k SKBKeyringFile) WriteTo(w io.Writer) (int64, error)

type SKBPriv

type SKBPriv struct {
	Data                 []byte `codec:"data"`
	Encryption           int    `codec:"encryption"`
	PassphraseGeneration int    `codec:"passphrase_generation,omitempty"`
}

type SafeWriter

type SafeWriter interface {
	GetFilename() string
	WriteTo(io.Writer) (int64, error)
}

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 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() ([]byte, error)
}

type SecretStore

type SecretStore interface {
	SecretRetriever
	SecretStorer
	ClearSecret() error
}

func NewSecretStore

func NewSecretStore(g *GlobalContext, username NormalizedUsername) SecretStore

type SecretStoreError

type SecretStoreError struct {
	Msg string
}

func (SecretStoreError) Error

func (e SecretStoreError) Error() string

type SecretStorer

type SecretStorer interface {
	StoreSecret(secret []byte) 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) 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 {
	GetSecret(pinentry keybase1.SecretEntryArg, terminal *keybase1.SecretEntryArg) (*keybase1.SecretEntryRes, error)
	GetNewPassphrase(keybase1.GetNewPassphraseArg) (keybase1.GetPassphraseRes, error)
	GetKeybasePassphrase(keybase1.GetKeybasePassphraseArg) (keybase1.GetPassphraseRes, error)
	GetPaperKeyPassphrase(keybase1.GetPaperKeyPassphraseArg) (string, error)
	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)

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) (sb *ServiceBlock, err error)

func (ServiceBlock) GetProofState

func (sb ServiceBlock) GetProofState() keybase1.ProofState

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, build string, label string, pid int) ServiceInfo

NewServiceInfo for generating service info for other services (like KBFS).

func WaitForServiceInfoFile

func WaitForServiceInfoFile(path string, pid string, maxAttempts int, wait time.Duration, reason string) (*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) error

WriteFile writes service info as JSON in runtimeDir.

type ServiceType

type ServiceType interface {
	AllStringKeys() []string
	CheckUsername(string) error
	NormalizeUsername(string) (string, error)
	ToChecker() Checker
	GetPrompt() string
	LastWriterWins() bool
	PreProofCheck(username string) (*Markup, error)
	PreProofWarning(remotename string) *Markup
	ToServiceJSON(remotename string) *jsonw.Wrapper
	PostInstructions(remotename string) *Markup
	DisplayName(username string) string
	RecheckProofPosting(tryNumber int, status keybase1.ProofStatus, username string) (warning *Markup, err error)
	GetProofType() string
	GetTypeName() string
	CheckProofText(text string, id keybase1.SigID, sig string) error
	FormatProofText(*PostProofRes) (string, error)
	GetAPIArgKey() string
}

func GetServiceType

func GetServiceType(s string) ServiceType

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) Len

func (sc SigChain) Len() int

func (*SigChain) LoadFromServer

func (sc *SigChain) LoadFromServer(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() (err error)
func (sc *SigChain) VerifiedChainLinks(fp PGPFingerprint) (ret []*ChainLink)

func (*SigChain) VerifyChain

func (sc *SigChain) VerifyChain() (err error)

func (*SigChain) VerifySigsAndComputeKeys

func (sc *SigChain) VerifySigsAndComputeKeys(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() (cached bool, err error)

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(uid keybase1.UID, g *GlobalContext) (sh *SigHints, err error)

func LoadSigHints

func LoadSigHints(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() error

func (*SigHints) Store

func (sh *SigHints) Store() (err error)

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(source io.Reader, sink io.Writer, kr openpgp.KeyRing) (*SignatureStatus, error)

func PGPDecryptWithBundles

func PGPDecryptWithBundles(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() int64

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() int64

Stop the timer; panic if it hasn't been previously started. Return the total duration spent in the timer.

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)

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)
	GetFile() string
}

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) GetFile

func (s SocketInfo) GetFile() 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 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 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()

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 {
	Contexitifier
	sync.Locker
	// contains filtered or unexported methods
}

type TerminalUI

type TerminalUI interface {
	OutputWriter() io.Writer
	Output(string) error
	Printf(fmt string, args ...interface{}) (int, error)
	PromptYesNo(PromptDescriptor, string, PromptDefault) (bool, error)
	Prompt(PromptDescriptor, string) (string, error)
	PromptPassword(PromptDescriptor, string) (string, error)
	PromptForConfirmation(prompt string) error
}

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) (tc TestContext)

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 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
	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
}

func (TestParameters) GetDebug

func (tp TestParameters) GetDebug() (bool, bool)

type TestSecretUI

type TestSecretUI struct {
	Passphrase             string
	BackupPassphrase       string
	StoreSecret            bool
	CalledGetSecret        bool
	CalledGetKBPassphrase  bool
	CalledGetBUPassphrase  bool
	CalledGetNewPassphrase bool
	CalledGetPassphrase    bool
}

func (*TestSecretUI) GetKeybasePassphrase

func (*TestSecretUI) GetNewPassphrase

func (*TestSecretUI) GetPaperKeyPassphrase

func (t *TestSecretUI) GetPaperKeyPassphrase(keybase1.GetPaperKeyPassphraseArg) (string, error)

func (*TestSecretUI) GetPassphrase

func (*TestSecretUI) GetSecret

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 TrackChainLink struct {
	GenericChainLink
	// contains filtered or unexported fields
}

========================================================================= TrackChainLink

func LocalTrackChainLinkFor

func LocalTrackChainLinkFor(tracker, trackee keybase1.UID, g *GlobalContext) (ret *TrackChainLink, err error)
func ParseTrackChainLink(b GenericChainLink) (ret *TrackChainLink, err error)

func (*TrackChainLink) GetEldestKID

func (l *TrackChainLink) GetEldestKID() (kid keybase1.KID, err error)

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() (string, 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
}

func ComputeRemoteDiff

func ComputeRemoteDiff(tracked, observed keybase1.ProofState) TrackDiff

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 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 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
}

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) GetTrackedKeys

func (l TrackLookup) GetTrackedKeys() []TrackedKey

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 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 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 TwitterChecker

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

func (*TwitterChecker) CheckHint

func (rc *TwitterChecker) CheckHint(h SigHint) ProofError

func (*TwitterChecker) CheckStatus

func (rc *TwitterChecker) CheckStatus(h SigHint) ProofError

func (*TwitterChecker) GetTorError

func (rc *TwitterChecker) GetTorError() ProofError

func (*TwitterChecker) ScreenNameCompare

func (rc *TwitterChecker) ScreenNameCompare(s1, s2 string) bool

type TwitterServiceType

type TwitterServiceType struct{ BaseServiceType }

func (TwitterServiceType) AllStringKeys

func (t TwitterServiceType) AllStringKeys() []string

func (TwitterServiceType) CheckProofText

func (t TwitterServiceType) CheckProofText(text string, id keybase1.SigID, sig string) (err error)

func (TwitterServiceType) CheckUsername

func (t TwitterServiceType) CheckUsername(s string) (err error)

func (TwitterServiceType) DisplayName

func (t TwitterServiceType) DisplayName(un string) string

func (TwitterServiceType) GetPrompt

func (t TwitterServiceType) GetPrompt() string

func (TwitterServiceType) GetProofType

func (t TwitterServiceType) GetProofType() string

func (TwitterServiceType) GetTypeName

func (t TwitterServiceType) GetTypeName() string

func (TwitterServiceType) NormalizeUsername

func (t TwitterServiceType) NormalizeUsername(s string) (string, error)

func (TwitterServiceType) PostInstructions

func (t TwitterServiceType) PostInstructions(un string) *Markup

func (TwitterServiceType) RecheckProofPosting

func (t TwitterServiceType) RecheckProofPosting(tryNumber int, status keybase1.ProofStatus, _ string) (warning *Markup, err error)

func (TwitterServiceType) ToChecker

func (t TwitterServiceType) ToChecker() Checker

func (TwitterServiceType) ToServiceJSON

func (t TwitterServiceType) ToServiceJSON(un string) *jsonw.Wrapper
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
	// 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(strict bool) IdentifyUI
	GetLoginUI() LoginUI
	GetSecretUI() SecretUI
	GetTerminalUI() TerminalUI
	GetDumbOutputUI() DumbOutputUI
	GetProveUI() ProveUI
	GetLogUI() LogUI
	GetGPGUI() GPGUI
	GetProvisionUI(role KexRole) ProvisionUI
	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
)

func (UIKind) String

func (u UIKind) String() string

type UIRouter

type UIRouter interface {
	SetUI(ConnectionID, UIKind)
	GetIdentifyUI() (IdentifyUI, error)
	GetSecretUI() (SecretUI, error)
	Shutdown()
}

type UnexpectedKeyError

type UnexpectedKeyError struct {
}

func (UnexpectedKeyError) Error

func (e UnexpectedKeyError) 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 UnmarshalError

type UnmarshalError struct {
	T string
}

func (UnmarshalError) Error

func (u UnmarshalError) Error() string
type UntrackChainLink struct {
	GenericChainLink
	// contains filtered or unexported fields
}
func ParseUntrackChainLink(b GenericChainLink) (ret *UntrackChainLink, err error)

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 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 LoadUser

func LoadUser(arg LoadUserArg) (ret *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, 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) 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) GetServerSeqno

func (u *User) GetServerSeqno() (i int, err error)

func (*User) GetSigChainLastKnownSeqno

func (u *User) GetSigChainLastKnownSeqno() Seqno

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) HasDeviceInCurrentInstall

func (u *User) HasDeviceInCurrentInstall() bool

Returns whether or not the current install has an active device sibkey.

func (*User) IDTable

func (u *User) IDTable() *IdentityTable

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(allKeys bool, f *MerkleUserLeaf, self bool) (err error)

func (*User) MakeIDTable

func (u *User) MakeIDTable() error

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) SigningKeyPub

func (u *User) SigningKeyPub() (GenericKey, error)

func (*User) Store

func (u *User) Store() error

func (*User) StoreSigChain

func (u *User) StoreSigChain() error

func (*User) StoreTopLevel

func (u *User) StoreTopLevel() error

func (*User) SyncSecrets

func (u *User) SyncSecrets() error

func (*User) SyncedSecretKey

func (u *User) SyncedSecretKey(lctx LoginContext) (ret *SKB, 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 string, 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) UpdatePassphraseProof

func (u *User) UpdatePassphraseProof(key GenericKey, pwh string, ppGen PassphraseGeneration) (*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 UserCache

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

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

func NewUserCache

func NewUserCache(maxAge time.Duration) *UserCache

NewUserCache creates a UserCache 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 (*UserCache) Get

func (c *UserCache) Get(uid keybase1.UID) (*keybase1.UserPlusKeys, error)

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

func (*UserCache) Insert

func (c *UserCache) Insert(up *keybase1.UserPlusKeys) error

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

func (*UserCache) Shutdown

func (c *UserCache) Shutdown()

Shutdown stops any goroutines in the cache.

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 {
	// contains filtered or unexported fields
}

func (UserNotFoundError) Error

func (u UserNotFoundError) Error() string

type VerificationError

type VerificationError struct{}

func (VerificationError) Error

func (v VerificationError) Error() string

type VerificationPath

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

func (*VerificationPath) VerifyUser

func (vp *VerificationPath) VerifyUser() (user *MerkleUserLeaf, err error)

func (*VerificationPath) VerifyUsername

func (vp *VerificationPath) VerifyUsername() (username string, err error)

type WaitForItError

type WaitForItError struct{}

func (WaitForItError) Error

func (e WaitForItError) Error() string

type Warning

type Warning interface {
	Warning() string
	Warn()
}

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()

func (Warnings) Warnings

func (w Warnings) Warnings() []Warning

type WebChecker

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

func (*WebChecker) CheckHint

func (rc *WebChecker) CheckHint(h SigHint) ProofError

func (*WebChecker) CheckStatus

func (rc *WebChecker) CheckStatus(h SigHint) ProofError

func (*WebChecker) GetTorError

func (rc *WebChecker) GetTorError() ProofError
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)

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 WebServiceType

type WebServiceType struct{ BaseServiceType }

func (WebServiceType) AllStringKeys

func (t WebServiceType) AllStringKeys() []string

func (WebServiceType) CheckProofText

func (t WebServiceType) CheckProofText(text string, id keybase1.SigID, sig string) (err error)

func (WebServiceType) CheckUsername

func (t WebServiceType) CheckUsername(s string) error

func (WebServiceType) DisplayName

func (t WebServiceType) DisplayName(un string) string

func (WebServiceType) GetAPIArgKey

func (t WebServiceType) GetAPIArgKey() string

func (WebServiceType) GetPrompt

func (t WebServiceType) GetPrompt() string

func (WebServiceType) GetProofType

func (t WebServiceType) GetProofType() string

func (WebServiceType) GetTypeName

func (t WebServiceType) GetTypeName() string

func (WebServiceType) LastWriterWins

func (t WebServiceType) LastWriterWins() bool

func (WebServiceType) MarkupFilenames

func (t WebServiceType) MarkupFilenames(un string, mkp *Markup)

func (WebServiceType) NormalizeUsername

func (t WebServiceType) NormalizeUsername(s string) (ret string, err error)

func (WebServiceType) PostInstructions

func (t WebServiceType) PostInstructions(un string) *Markup

func (WebServiceType) PreProofWarning

func (t WebServiceType) PreProofWarning(un string) *Markup

func (WebServiceType) PrimaryStringKeys

func (t WebServiceType) PrimaryStringKeys() []string

func (WebServiceType) RecheckProofPosting

func (t WebServiceType) RecheckProofPosting(tryNumber int, status keybase1.ProofStatus, _ string) (warning *Markup, err error)

func (WebServiceType) ToChecker

func (t WebServiceType) ToChecker() Checker

func (WebServiceType) ToServiceJSON

func (t WebServiceType) ToServiceJSON(un string) *jsonw.Wrapper

type WebUnreachableError

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

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) ServiceSpawnDir

func (w Win32) ServiceSpawnDir() (string, error)

func (Win32) Split

func (w Win32) Split(s string) []string

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 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) 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