Documentation ¶
Index ¶
- Constants
- Variables
- func ExtractEncoding(v string) (mbase.Encoding, error)
- func NewTokenContext(ctx context.Context, token Token) context.Context
- func ToAddr(id ID) ma.Multiaddr
- type Credentials
- type Head
- type ID
- func (i ID) Bytes() []byte
- func (i ID) Defined() bool
- func (i ID) Encode(base mbase.Encoder) string
- func (i ID) Equals(o ID) bool
- func (i ID) KeyString() string
- func (i ID) Loggable() map[string]interface{}
- func (i ID) MarshalBinary() ([]byte, error)
- func (i ID) MarshalText() ([]byte, error)
- func (i ID) String() string
- func (i ID) StringOfBase(base mbase.Encoding) (string, error)
- func (i *ID) UnmarshalBinary(data []byte) error
- func (i *ID) UnmarshalText(text []byte) error
- func (i ID) Validate() error
- func (i ID) Variant() Variant
- func (i ID) Version() uint64
- type IDSlice
- type Identity
- type Info
- type Key
- type Libp2pIdentity
- func (p *Libp2pIdentity) Decrypt(_ context.Context, data []byte) ([]byte, error)
- func (p *Libp2pIdentity) Equals(i Identity) bool
- func (p *Libp2pIdentity) GetPublic() PubKey
- func (p *Libp2pIdentity) MarshalBinary() ([]byte, error)
- func (p *Libp2pIdentity) Sign(_ context.Context, msg []byte) ([]byte, error)
- func (p *Libp2pIdentity) UnmarshalBinary(bytes []byte) (err error)
- type Libp2pPubKey
- func (p *Libp2pPubKey) Encrypt(data []byte) ([]byte, error)
- func (p *Libp2pPubKey) Equals(k PubKey) bool
- func (p *Libp2pPubKey) MarshalBinary() ([]byte, error)
- func (p *Libp2pPubKey) String() string
- func (p *Libp2pPubKey) UnmarshalBinary(bytes []byte) (err error)
- func (p *Libp2pPubKey) UnmarshalString(str string) error
- type LogInfo
- type PubKey
- type Token
- type Variant
Constants ¶
const ( // Name is the protocol slug. Name = "thread" // Code is the protocol code. Code = 406 // Version is the current protocol version. Version = "0.0.1" // Protocol is the dc threads protocol tag. Protocol protocol.ID = "/dc/" + Name + "/" + Version )
const CounterUndef int64 = 0
const (
V1 = 0x01
)
Versions.
Variables ¶
var ( // ErrVarintBuffSmall means that a buffer passed to the ID parser was not // long enough, or did not contain an invalid ID. ErrVarintBuffSmall = fmt.Errorf("reading varint: buffer too small") // ErrVarintTooBig means that the varint in the given ID was above the // limit of 2^64. ErrVarintTooBig = fmt.Errorf("reading varint: varint bigger than 64bits" + " and not supported") // ErrIDTooShort means that the ID passed to decode was not long // enough to be a valid ID. ErrIDTooShort = fmt.Errorf("id too short") )
var ( // ErrInvalidKey indicates an invalid byte slice was given to KeyFromBytes. ErrInvalidKey = fmt.Errorf("invalid key") )
var ErrInvalidToken = fmt.Errorf("invalid thread token")
ErrInvalidToken indicates the token is invalid.
var ErrTokenNotFound = fmt.Errorf("thread token not found")
ErrTokenNotFound indicates the token was not found in the context.
var HeadUndef = Head{ ID: cid.Undef, Counter: CounterUndef, }
var Undef = ID("")
Undef can be used to represent a nil or undefined Cid, using Cid{} directly is also acceptable.
Functions ¶
func ExtractEncoding ¶
ExtractEncoding from an ID. If Decode on the same string did not return an error neither will this function.
func NewTokenContext ¶
NewTokenContext adds Token to a context.
Types ¶
type Credentials ¶
type Credentials struct {
Secure bool
}
Credentials implements PerRPCCredentials, allowing context values to be included in request metadata.
func (Credentials) GetRequestMetadata ¶
func (Credentials) RequireTransportSecurity ¶
func (c Credentials) RequireTransportSecurity() bool
type Head ¶
type Head struct { // ID of the head ID cid.Cid // Counter is the number of logs in the head Counter int64 }
Head represents the log head (including the number of records in the log and the id of the head)
type ID ¶
type ID string
ID represents a self-describing thread identifier. It is formed by a Version, a Variant, and a random number of a given length.
func Cast ¶
Cast takes an ID data slice, parses it and returns an ID. For IDV1, the data buffer is in the form:
<version><variant><random-number>
Please use decode when parsing a regular ID string, as Cast does not expect multibase-encoded data. Cast accepts the output of ID.Bytes().
func Decode ¶
Decode parses an ID-encoded string and returns an ID object. For IDV1, an ID-encoded string is primarily a multibase string:
<multibase-type-code><base-encoded-string>
The base-encoded string represents a:
<version><variant><random-number>
func (ID) Bytes ¶
Bytes returns the byte representation of an ID. The output of bytes can be parsed back into an ID with Cast().
func (ID) Defined ¶
Defined returns true if an ID is defined. Calling any other methods on an undefined ID will result in undefined behavior.
func (ID) Encode ¶
Encode return the string representation of an ID in a given base when applicable.
func (ID) Loggable ¶
Loggable returns a Loggable (as defined by https://godoc.org/github.com/ipfs/go-log/v2).
func (ID) MarshalBinary ¶
MarshalBinary is equivalent to Bytes(). It implements the encoding.BinaryMarshaler interface.
func (ID) MarshalText ¶
MarshalText is equivalent to String(). It implements the encoding.TextMarshaler interface.
func (ID) String ¶
String returns the default string representation of an ID. Currently, Base32 is used as the encoding for the multibase string.
func (ID) StringOfBase ¶
StringOfBase returns the string representation of an ID encoded is selected base.
func (*ID) UnmarshalBinary ¶
UnmarshalBinary is equivalent to Cast(). It implements the encoding.BinaryUnmarshaler interface.
func (*ID) UnmarshalText ¶
UnmarshalText is equivalent to Decode(). It implements the encoding.TextUnmarshaler interface.
type Identity ¶
type Identity interface { encoding.BinaryMarshaler encoding.BinaryUnmarshaler // Sign the given bytes cryptographically. Sign(context.Context, []byte) ([]byte, error) // GetPublic returns the public key paired with this identity. GetPublic() PubKey // Decrypt returns decrypted data. Decrypt(context.Context, []byte) ([]byte, error) // Equals returns true if the identities are equal. Equals(Identity) bool }
Identity represents an entity capable of signing a message and returning the associated public key for verification. In many cases, this will just be a private key, but callers can use any setup that suits their needs.
func NewLibp2pIdentity ¶
NewLibp2pIdentity returns a new Libp2pIdentity.
type Info ¶
Info holds thread logs, keys and addresses.
func (Info) GetFirstPrivKeyLog ¶
GetFirstPrivKeyLog returns the first log found with a private key. This is a strict owership check, vs returning all directly 'managed' logs. Deprecated: This is no longer safe to use.
type Key ¶
type Key struct {
// contains filtered or unexported fields
}
Key is a thread encryption key with two components. Service key is used to encrypt outer log record linkages. Read key is used to encrypt inner record events.
func KeyFromBytes ¶
KeyFromBytes returns a key by wrapping k.
func KeyFromString ¶
KeyFromString returns a key by decoding a base32-encoded string.
func NewRandomKey ¶
func NewRandomKey() Key
NewRandomKey returns a random key, which includes a service and read key.
func NewRandomServiceKey ¶
func NewRandomServiceKey() Key
NewRandomServiceKey returns a random service-only key.
func (Key) Defined ¶
Defined returns whether or not key has any defined components. Since it's not possible to have a read key w/o a service key, we just need to check service key.
func (Key) MarshalBinary ¶
MarshalBinary implements BinaryMarshaler.
type Libp2pIdentity ¶
Libp2pIdentity wraps crypto.PrivKey, overwriting GetPublic with thread.PubKey.
func (*Libp2pIdentity) Equals ¶
func (p *Libp2pIdentity) Equals(i Identity) bool
func (*Libp2pIdentity) GetPublic ¶
func (p *Libp2pIdentity) GetPublic() PubKey
func (*Libp2pIdentity) MarshalBinary ¶
func (p *Libp2pIdentity) MarshalBinary() ([]byte, error)
func (*Libp2pIdentity) UnmarshalBinary ¶
func (p *Libp2pIdentity) UnmarshalBinary(bytes []byte) (err error)
type Libp2pPubKey ¶
Libp2pPubKey wraps crypto.PubKey.
func (*Libp2pPubKey) Equals ¶
func (p *Libp2pPubKey) Equals(k PubKey) bool
func (*Libp2pPubKey) MarshalBinary ¶
func (p *Libp2pPubKey) MarshalBinary() ([]byte, error)
func (*Libp2pPubKey) String ¶
func (p *Libp2pPubKey) String() string
func (*Libp2pPubKey) UnmarshalBinary ¶
func (p *Libp2pPubKey) UnmarshalBinary(bytes []byte) (err error)
func (*Libp2pPubKey) UnmarshalString ¶
func (p *Libp2pPubKey) UnmarshalString(str string) error
type LogInfo ¶
type LogInfo struct { // ID is the log's identifier. ID peer.ID // PubKey is the log's public key. PubKey crypto.PubKey // PrivKey is the log's private key. PrivKey crypto.PrivKey // Addrs are the addresses associated with the given log. Addrs []ma.Multiaddr // Head is the log's current head. Head Head // Managed logs are any logs directly added/created by the host, and/or logs for which we have the private key Managed bool }
LogInfo holds log keys, addresses, and heads.
type PubKey ¶
type PubKey interface { encoding.BinaryMarshaler encoding.BinaryUnmarshaler // String encodes the public key into a base32 string. fmt.Stringer // UnmarshalString decodes the public key from a base32 string. UnmarshalString(string) error // Verify that 'sig' is the signed hash of 'data' Verify(data []byte, sig []byte) (bool, error) // Encrypt data with the public key. Encrypt([]byte) ([]byte, error) // Equals returns true if the keys are equal. Equals(PubKey) bool }
Pubkey can be anything that provides a verify method.
func NewLibp2pPubKey ¶
NewLibp2pPubKey returns a new PubKey.
type Token ¶
type Token string
Token is a concrete type for a JWT token string, which provides a claim to an identity.
func NewTokenFromMD ¶
NewTokenFromMD returns Token from the given context, if present.
func TokenFromContext ¶
TokenFromContext returns Token from a context.