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 Handle
- func (h Handle) Extensions() (extensions []HandleExtension)
- func (h Handle) HasUnresolvedUsers() 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) Type() Type
- func (h Handle) UnresolvedUsers() []keybase1.SocialAssertion
- type HandleExtension
- func NewHandleExtension(extType HandleExtensionType, num uint16, un libkb.NormalizedUsername, ...) (*HandleExtension, error)
- func NewTestHandleExtensionStaticTime(extType HandleExtensionType, num uint16, un libkb.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) 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 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 ( // 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 []libkb.NormalizedUsername, unresolvedWriters []keybase1.SocialAssertion, resolvedReaders []libkb.NormalizedUsername, unresolvedReaders []keybase1.SocialAssertion, extensions []HandleExtension) CanonicalName
MakeCanonicalName makes a CanonicalName from components.
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"`
}
Handle uniquely identifies top-level folders by readers and writers.
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) 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) 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) 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 libkb.NormalizedUsername `codec:"un,omitempty"`
codec.UnknownFieldSetHandler
}
HandleExtension is information which identifies a particular extension.
func NewHandleExtension ¶
func NewHandleExtension(extType HandleExtensionType, num uint16, un libkb.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 libkb.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) 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 libkb.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 MakeRandomID ¶
MakeRandomID makes a random ID using a cryptographically secure RNG. Returns NullID on failure.
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 PreferredName ¶
type PreferredName string
PreferredName is a preferred TLF name.
func CanonicalToPreferredName ¶
func CanonicalToPreferredName(username libkb.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 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.