Documentation ¶
Index ¶
- Constants
- Variables
- func FakeIDByte(id ID) byte
- func SplitExtension(name string) (assertions, extensionSuffix string, err error)
- func SplitName(name string) (writerNames, readerNames []string, extensionSuffix string, err error)
- type BadNameError
- type CanonicalName
- type ErrUnknownTLFType
- type Handle
- func (h *Handle) DeepEqual(other Handle) bool
- func (h Handle) Extensions() (extensions []HandleExtension)
- func (h Handle) HasUnresolvedUsers() bool
- func (h Handle) IsBackedByTeam() bool
- func (h Handle) IsConflict() bool
- func (h Handle) IsFinal() bool
- func (h Handle) IsReader(user keybase1.UserOrTeamID) bool
- func (h Handle) IsWriter(user keybase1.UserOrTeamID) bool
- func (h Handle) ResolveAssertions(assertions map[keybase1.SocialAssertion]keybase1.UID) Handle
- func (h Handle) ResolvedUsers() []keybase1.UserOrTeamID
- func (h *Handle) ResolvedUsersEqual(writers []keybase1.UserOrTeamID, readers []keybase1.UserOrTeamID) bool
- func (h Handle) Type() Type
- func (h Handle) TypeForKeying() KeyingType
- func (h Handle) UnresolvedUsers() []keybase1.SocialAssertion
- type HandleExtension
- func NewHandleExtension(extType HandleExtensionType, num uint16, un kbname.NormalizedUsername, ...) (*HandleExtension, error)
- func NewTestHandleExtensionStaticTime(extType HandleExtensionType, num uint16, un kbname.NormalizedUsername) (*HandleExtension, error)
- func ParseHandleExtensionSuffix(s string) ([]HandleExtension, error)
- type HandleExtensionList
- type HandleExtensionMismatchError
- type HandleExtensionType
- type ID
- func (id ID) Bytes() []byte
- func (id ID) GetEpochFromTeamTLF(tid keybase1.TeamID) (matches bool, epoch byte, err error)
- func (id ID) MarshalBinary() (data []byte, err error)
- func (id ID) MarshalText() ([]byte, error)
- func (id ID) SafeType() (Type, error)
- func (id ID) String() string
- func (id ID) Type() Type
- func (id *ID) UnmarshalBinary(data []byte) error
- func (id *ID) UnmarshalText(buf []byte) error
- type InvalidIDError
- type KeyingType
- type PreferredName
- type SocialAssertionList
- type Type
- type UIDList
Constants ¶
const ( // HandleExtensionSep is the string that separates the folder // participants from an extension suffix in the TLF name. HandleExtensionSep = " " // HandleExtensionStaticTestDate is a static date used for tests (2016-03-14). HandleExtensionStaticTestDate = 1457913600 )
const ( // UnknownKeying is a placeholder type for when TLF keying mode is unknown. UnknownKeying = KeyingType(Unknown) // PrivateKeying specifies the TLF keying mode used in classic private TLFs. PrivateKeying = KeyingType(Private) // PublicKeying specifies the TLF keying mode used in classic public TLFs. PublicKeying = KeyingType(Public) // TeamKeying specifies the TLF keying mode used for SingleTeam or // implicit team backed TLFs. TeamKeying = KeyingType(SingleTeam) )
const ( // ReaderSep is the string that separates readers from writers in a // TLF name. ReaderSep = "#" )
Variables ¶
var NullID = ID{}
NullID is an empty ID
Functions ¶
func FakeIDByte ¶
FakeIDByte returns the byte used to create a fake TLF ID with FakeID.
func SplitExtension ¶
SplitExtension separates any extension suffix from the assertions.
Types ¶
type BadNameError ¶
type BadNameError struct {
Name string
}
BadNameError indicates a top-level folder name that has an incorrect format.
func (BadNameError) Error ¶
func (e BadNameError) Error() string
Error implements the error interface for BadNameError.
type CanonicalName ¶
type CanonicalName string
CanonicalName is a string containing the canonical name of a TLF.
func MakeCanonicalName ¶
func MakeCanonicalName(resolvedWriters []kbname.NormalizedUsername, unresolvedWriters []keybase1.SocialAssertion, resolvedReaders []kbname.NormalizedUsername, unresolvedReaders []keybase1.SocialAssertion, extensions []HandleExtension) CanonicalName
MakeCanonicalName makes a CanonicalName from components.
func MakeCanonicalNameForTeam ¶ added in v1.0.47
func MakeCanonicalNameForTeam(resolvedWriters []kbname.NormalizedUsername, unresolvedWriters []keybase1.SocialAssertion, resolvedReaders []kbname.NormalizedUsername, unresolvedReaders []keybase1.SocialAssertion, extensions []HandleExtension) CanonicalName
MakeCanonicalNameForTeam makes a CanonicalName from components for a team.
type ErrUnknownTLFType ¶ added in v1.0.48
type ErrUnknownTLFType struct {
// contains filtered or unexported fields
}
ErrUnknownTLFType is returned by ParseTlfType when an unknown TLF type string is provided.
func (ErrUnknownTLFType) Error ¶ added in v1.0.48
func (e ErrUnknownTLFType) Error() string
Error implements the error interface.
type Handle ¶
type Handle struct { Writers []keybase1.UserOrTeamID `codec:"w,omitempty"` Readers []keybase1.UserOrTeamID `codec:"r,omitempty"` UnresolvedWriters []keybase1.SocialAssertion `codec:"uw,omitempty"` UnresolvedReaders []keybase1.SocialAssertion `codec:"ur,omitempty"` ConflictInfo *HandleExtension `codec:"ci,omitempty"` FinalizedInfo *HandleExtension `codec:"fi,omitempty"` // contains filtered or unexported fields }
Handle uniquely identified top-level folders by readers and writers.
NOTE: if you change this type, ensure you update the `NumField` check in `init`, and that the new fields are correctly checked for equality in `Handle.DeepEqual()`. TODO: Have separate types for writers vs. readers.
func MakeHandle ¶
func MakeHandle( writers, readers []keybase1.UserOrTeamID, unresolvedWriters, unresolvedReaders []keybase1.SocialAssertion, extensions []HandleExtension) (Handle, error)
MakeHandle creates a Handle from the given list of readers and writers. If the given reader list contains just keybase1.PUBLIC_UID, then the returned handle will be for a public folder. Otherwise, it will be private. PUBLIC_UID shouldn't be in any list in any other case.
func (*Handle) DeepEqual ¶ added in v1.0.40
DeepEqual returns true if the handle is equal to another handle. This can mutate the Handle in that it might sort its Writers, Readers, UnresolvedWriters, and UnresolvedReaders.
func (Handle) Extensions ¶
func (h Handle) Extensions() (extensions []HandleExtension)
Extensions returns a list of extensions for the given handle.
func (Handle) HasUnresolvedUsers ¶
HasUnresolvedUsers returns true if this handle has any unresolved writers or readers.
func (Handle) IsBackedByTeam ¶ added in v1.0.40
IsBackedByTeam returns true if h represents a TLF backed by a team. It could be either a SingleTeam TLF or a private/public TLF backed by an implicit team.
func (Handle) IsConflict ¶
IsConflict returns true if the handle is a conflict handle.
func (Handle) IsReader ¶
func (h Handle) IsReader(user keybase1.UserOrTeamID) bool
IsReader returns whether or not the given user is a reader for the top-level folder represented by this Handle.
func (Handle) IsWriter ¶
func (h Handle) IsWriter(user keybase1.UserOrTeamID) bool
IsWriter returns whether or not the given user is a writer for the top-level folder represented by this Handle.
func (Handle) ResolveAssertions ¶
ResolveAssertions creates a new Handle given an existing one with while resolving the passed assertions.
func (Handle) ResolvedUsers ¶
func (h Handle) ResolvedUsers() []keybase1.UserOrTeamID
ResolvedUsers returns the concatenation of h.Writers and h.Readers, except if the handle is public, the returned list won't contain PUBLIC_UID.
func (*Handle) ResolvedUsersEqual ¶ added in v1.0.48
func (h *Handle) ResolvedUsersEqual( writers []keybase1.UserOrTeamID, readers []keybase1.UserOrTeamID) bool
ResolvedUsersEqual checks whether the resolved users of this TLF matches the provided lists of writers and readers.
func (Handle) TypeForKeying ¶ added in v1.0.40
func (h Handle) TypeForKeying() KeyingType
TypeForKeying returns the keying type for the handle h.
func (Handle) UnresolvedUsers ¶
func (h Handle) UnresolvedUsers() []keybase1.SocialAssertion
UnresolvedUsers returns the concatenation of h.UnresolvedWriters and h.UnresolvedReaders.
type HandleExtension ¶
type HandleExtension struct { Date int64 `codec:"date"` Number uint16 `codec:"num"` Type HandleExtensionType `codec:"type"` Username kbname.NormalizedUsername `codec:"un,omitempty"` codec.UnknownFieldSetHandler }
HandleExtension is information which identifies a particular extension.
func NewHandleExtension ¶
func NewHandleExtension(extType HandleExtensionType, num uint16, un kbname.NormalizedUsername, now time.Time) ( *HandleExtension, error)
NewHandleExtension returns a new HandleExtension struct populated with the date from the given time and conflict number.
func NewTestHandleExtensionStaticTime ¶
func NewTestHandleExtensionStaticTime(extType HandleExtensionType, num uint16, un kbname.NormalizedUsername) ( *HandleExtension, error)
NewTestHandleExtensionStaticTime returns a new HandleExtension struct populated with a static date for testing.
func ParseHandleExtensionSuffix ¶
func ParseHandleExtensionSuffix(s string) ([]HandleExtension, error)
ParseHandleExtensionSuffix parses a TLF handle extension suffix string.
func (HandleExtension) String ¶
func (e HandleExtension) String() string
String implements the fmt.Stringer interface for HandleExtension. Ex: "(conflicted copy 2016-05-09 #2)"
type HandleExtensionList ¶
type HandleExtensionList []HandleExtension
HandleExtensionList allows us to sort extensions by type.
func (HandleExtensionList) Len ¶
func (l HandleExtensionList) Len() int
func (HandleExtensionList) Less ¶
func (l HandleExtensionList) Less(i, j int) bool
func (HandleExtensionList) Splat ¶
func (l HandleExtensionList) Splat() (ci, fi *HandleExtension)
Splat will deconstruct the list for the caller into individual extension pointers (or nil.)
func (HandleExtensionList) Suffix ¶
func (l HandleExtensionList) Suffix() string
Suffix outputs a suffix string for this extension list.
func (HandleExtensionList) SuffixForTeamHandle ¶ added in v1.0.44
func (l HandleExtensionList) SuffixForTeamHandle() string
SuffixForTeamHandle outputs a suffix string for this extension list for a handle that's backed by a team (which must be an implicit team, since there aren't any suffixes for regulat teams).
func (HandleExtensionList) Swap ¶
func (l HandleExtensionList) Swap(i, j int)
type HandleExtensionMismatchError ¶
type HandleExtensionMismatchError struct { Expected HandleExtension // Actual may be nil. Actual *HandleExtension }
HandleExtensionMismatchError indicates the expected extension doesn't match the server's extension for the given handle.
func (HandleExtensionMismatchError) Error ¶
func (e HandleExtensionMismatchError) Error() string
Error implements the error interface for HandleExtensionMismatchError
type HandleExtensionType ¶
type HandleExtensionType int
HandleExtensionType is the type of extension.
const ( // HandleExtensionConflict means the handle conflicted as a result of a social // assertion resolution. HandleExtensionConflict HandleExtensionType = iota // HandleExtensionFinalized means the folder ended up with no more valid writers as // a result of an account reset. HandleExtensionFinalized // HandleExtensionUnknown means the type is unknown. HandleExtensionUnknown )
func (HandleExtensionType) String ¶
func (et HandleExtensionType) String(username kbname.NormalizedUsername) string
String implements the fmt.Stringer interface for HandleExtensionType
type ID ¶
type ID struct {
// contains filtered or unexported fields
}
ID is a top-level folder ID
func MakeIDFromTeam ¶ added in v1.0.40
MakeIDFromTeam makes a deterministic TLF ID from a team ID and an epoch representing how many times a new TLF has been needed for this team. Returns NullID on failure.
func MakeRandomID ¶
MakeRandomID makes a random ID using a cryptographically secure RNG. Returns NullID on failure.
func (ID) GetEpochFromTeamTLF ¶
GetEpochFromTeamTLF returns 1) whether this ID matches the given team TID, and 2) if so, which epoch it is.
func (ID) MarshalBinary ¶
MarshalBinary implements the encoding.BinaryMarshaler interface for ID.
func (ID) MarshalText ¶
MarshalText implements the encoding.TextMarshaler interface for ID.
func (ID) SafeType ¶
SafeType returns the type of TLF represented by this ID. If the ID isn't valid, it returns tlf.Unknown along with an error.
func (ID) Type ¶
Type returns the type of TLF represented by this ID.
Note that this function panics if the ID suffix is unknown, rather than returning tlf.Unknown.
func (*ID) UnmarshalBinary ¶
UnmarshalBinary implements the encoding.BinaryUnmarshaler interface for ID.
func (*ID) UnmarshalText ¶
UnmarshalText implements the encoding.TextUnmarshaler interface for ID.
type InvalidIDError ¶
type InvalidIDError struct {
// contains filtered or unexported fields
}
InvalidIDError indicates that a TLF ID string is not parseable or invalid.
func (InvalidIDError) Error ¶
func (e InvalidIDError) Error() string
type KeyingType ¶ added in v1.0.40
type KeyingType Type
KeyingType represents a TLF keying mode. It normally have the same values as Type.
func (KeyingType) String ¶ added in v1.0.40
func (t KeyingType) String() string
String implements the fmt.Stringer interface.
type PreferredName ¶
type PreferredName string
PreferredName is a preferred TLF name.
func CanonicalToPreferredName ¶
func CanonicalToPreferredName(username kbname.NormalizedUsername, canon CanonicalName) (PreferredName, error)
CanonicalToPreferredName returns the preferred TLF name, given a canonical name and a username. The username may be empty, and results in the canonical name being being returned unmodified.
type SocialAssertionList ¶
type SocialAssertionList []keybase1.SocialAssertion
SocialAssertionList can be used to lexicographically sort SocialAssertions.
func (SocialAssertionList) Len ¶
func (u SocialAssertionList) Len() int
func (SocialAssertionList) Less ¶
func (u SocialAssertionList) Less(i, j int) bool
func (SocialAssertionList) Swap ¶
func (u SocialAssertionList) Swap(i, j int)
type Type ¶
type Type int
Type is the type of TLF represented by a particular ID (e.g., public, private, etc.)
const ( // Unknown is a placeholder type for when TLF type information is not // available. It is the zero value of the type Type. Unknown Type = iota // Private represents a private TLF between one or more individual users. Private // Public represents a public TLF for one or more individual users. Public // SingleTeam represents a private TLF for a single Keybase team. SingleTeam )
func ParseTlfTypeFromPath ¶ added in v1.0.48
ParseTlfTypeFromPath parses str into a Type.
func TypeFromFolderType ¶
func TypeFromFolderType(ft keybase1.FolderType) Type
TypeFromFolderType returns the Type corresponding to the given keybase1.FolderType.
func (Type) FolderType ¶
func (t Type) FolderType() keybase1.FolderType
FolderType returns the keybase1.FolderType corresponding to the given TLF type.
func (Type) ToKeyingType ¶ added in v1.0.40
func (t Type) ToKeyingType() KeyingType
ToKeyingType converts Type t into a KeyingType.