pkg util, func AppAndUserPatternFromBlessings(...string) (security.BlessingPattern, security.BlessingPattern, error)
pkg util, func Decode(string) (string, error)
pkg util, func DecodeId(string) (wire.Id, error)
pkg util, func Encode(string) string
pkg util, func EncodeId(wire.Id) string
pkg util, func FilterTags(access.Permissions, ...access.Tag) access.Permissions
pkg util, func IsPrefix(string, string) bool
pkg util, func ListChildIds(*context.T, string) ([]wire.Id, error)
pkg util, func NewErrFoundMultipleAppUserBlessings(*context.T, string, string) error
pkg util, func NewErrFoundMultipleUserBlessings(*context.T, string, string) error
pkg util, func NewErrFoundNoConventionalBlessings(*context.T) error
pkg util, func ParseCollectionRowPair(*context.T, string) (wire.Id, string, error)
pkg util, func PrefixRangeLimit(string) string
pkg util, func PrefixRangeStart(string) string
pkg util, func RowPrefixPattern(wire.Id, string) wire.CollectionRowPattern
pkg util, func ValidateId(wire.Id) error
pkg util, func ValidateRowKey(string) error
pkg util, type AccessController interface { GetPermissions, SetPermissions }
pkg util, type AccessController interface, GetPermissions(*context.T) (access.Permissions, string, error)
pkg util, type AccessController interface, SetPermissions(*context.T, access.Permissions, string) error
pkg util, var ErrFoundMultipleAppUserBlessings unknown-type
pkg util, var ErrFoundMultipleUserBlessings unknown-type
pkg util, var ErrFoundNoConventionalBlessings unknown-type
