Documentation ¶
Index ¶
- Variables
- func IsLatestSnapshot(err error) bool
- func IsNotFound(err error) bool
- type Client
- func (c *Client) Download(name string, dest Destination) (err error)
- func (c *Client) Init(rootKeys []*data.PublicKey, threshold int) errordeprecated
- func (c *Client) InitLocal(rootJSON []byte) error
- func (c *Client) Target(name string) (data.TargetFileMeta, error)
- func (c *Client) Targets() (data.TargetFiles, error)
- func (c *Client) Update() (data.TargetFiles, error)
- func (c *Client) UpdateRoots() error
- func (c *Client) VerifyDigest(digest string, digestAlg string, length int64, path string) error
- type Destination
- type ErrDecodeFailed
- type ErrDownloadFailed
- type ErrInvalidURL
- type ErrLatestSnapshot
- type ErrMaxDelegations
- type ErrMetaTooLarge
- type ErrMissingRemoteMetadata
- type ErrNotFound
- type ErrRoleNotInSnapshot
- type ErrUnknownTarget
- type ErrWrongSize
- type HTTPRemoteOptions
- type HTTPRemoteRetries
- type LocalStore
- type RemoteStore
Constants ¶
This section is empty.
Variables ¶
var ( ErrNoRootKeys = errors.New("tuf: no root keys found in local meta store") ErrInsufficientKeys = errors.New("tuf: insufficient keys to meet threshold") ErrNoLocalSnapshot = errors.New("tuf: no snapshot stored locally") )
var DefaultHTTPRetries = &HTTPRemoteRetries{ Delay: time.Second, Total: 10 * time.Second, }
Functions ¶
func IsLatestSnapshot ¶
func IsNotFound ¶
Types ¶
type Client ¶
type Client struct { // MaxDelegations limits by default the number of delegations visited for any // target MaxDelegations int // MaxRootRotations limits the number of downloaded roots in 1.0.19 root updater MaxRootRotations int // contains filtered or unexported fields }
Client provides methods for fetching updates from a remote repository and downloading remote target files.
func NewClient ¶
func NewClient(local LocalStore, remote RemoteStore) *Client
func (*Client) Download ¶
func (c *Client) Download(name string, dest Destination) (err error)
Download downloads the given target file from remote storage into dest.
dest will be deleted and an error returned in the following situations:
- The target does not exist in the local targets.json
- Failed to fetch the chain of delegations accessible from local snapshot.json
- The target does not exist in any targets
- Metadata cannot be generated for the downloaded data
- Generated metadata does not match local metadata for the given file
func (*Client) Init
deprecated
Init initializes a local repository.
The latest root.json is fetched from remote storage, verified using rootKeys and threshold, and then saved in local storage. It is expected that rootKeys were securely distributed with the software being updated.
Deprecated: Use c.InitLocal and c.Update to initialize a local repository.
func (*Client) InitLocal ¶
InitLocal initializes a local repository from root metadata.
The root's keys are extracted from the root and saved in local storage. Root expiration is not checked. It is expected that rootJSON was securely distributed with the software being updated.
func (*Client) Target ¶
func (c *Client) Target(name string) (data.TargetFileMeta, error)
Target returns the target metadata for a specific target if it exists, searching from top-level level targets then through all delegations. If it does not, ErrNotFound will be returned.
func (*Client) Targets ¶
func (c *Client) Targets() (data.TargetFiles, error)
Targets returns the complete list of available top-level targets.
func (*Client) Update ¶
func (c *Client) Update() (data.TargetFiles, error)
Update downloads and verifies remote metadata and returns updated targets. It always performs root update (5.2 and 5.3) section of the v1.0.19 spec.
https://theupdateframework.github.io/specification/v1.0.19/index.html#load-trusted-root
func (*Client) UpdateRoots ¶
type Destination ¶
type ErrDecodeFailed ¶
func (ErrDecodeFailed) Error ¶
func (e ErrDecodeFailed) Error() string
type ErrDownloadFailed ¶
func (ErrDownloadFailed) Error ¶
func (e ErrDownloadFailed) Error() string
type ErrInvalidURL ¶
type ErrInvalidURL struct {
URL string
}
func (ErrInvalidURL) Error ¶
func (e ErrInvalidURL) Error() string
type ErrLatestSnapshot ¶
type ErrLatestSnapshot struct {
Version int
}
func (ErrLatestSnapshot) Error ¶
func (e ErrLatestSnapshot) Error() string
type ErrMaxDelegations ¶
func (ErrMaxDelegations) Error ¶
func (e ErrMaxDelegations) Error() string
type ErrMetaTooLarge ¶
func (ErrMetaTooLarge) Error ¶
func (e ErrMetaTooLarge) Error() string
type ErrMissingRemoteMetadata ¶
type ErrMissingRemoteMetadata struct {
Name string
}
func (ErrMissingRemoteMetadata) Error ¶
func (e ErrMissingRemoteMetadata) Error() string
type ErrNotFound ¶
type ErrNotFound struct {
File string
}
func (ErrNotFound) Error ¶
func (e ErrNotFound) Error() string
type ErrRoleNotInSnapshot ¶
func (ErrRoleNotInSnapshot) Error ¶
func (e ErrRoleNotInSnapshot) Error() string
type ErrUnknownTarget ¶
func (ErrUnknownTarget) Error ¶
func (e ErrUnknownTarget) Error() string
type ErrWrongSize ¶
func (ErrWrongSize) Error ¶
func (e ErrWrongSize) Error() string
type HTTPRemoteOptions ¶
type HTTPRemoteOptions struct { MetadataPath string TargetsPath string UserAgent string Retries *HTTPRemoteRetries }
type LocalStore ¶
type LocalStore interface { io.Closer // GetMeta returns top-level metadata from local storage. The keys are // in the form `ROLE.json`, with ROLE being a valid top-level role. GetMeta() (map[string]json.RawMessage, error) // SetMeta persists the given top-level metadata in local storage, the // name taking the same format as the keys returned by GetMeta. SetMeta(name string, meta json.RawMessage) error // DeleteMeta deletes a given metadata. DeleteMeta(name string) error }
LocalStore is local storage for downloaded top-level metadata.
func MemoryLocalStore ¶
func MemoryLocalStore() LocalStore
type RemoteStore ¶
type RemoteStore interface { // GetMeta downloads the given metadata from remote storage. // // `name` is the filename of the metadata (e.g. "root.json") // // `err` is ErrNotFound if the given file does not exist. // // `size` is the size of the stream, -1 indicating an unknown length. GetMeta(name string) (stream io.ReadCloser, size int64, err error) // GetTarget downloads the given target file from remote storage. // // `path` is the path of the file relative to the root of the remote // targets directory (e.g. "/path/to/file.txt"). // // `err` is ErrNotFound if the given file does not exist. // // `size` is the size of the stream, -1 indicating an unknown length. GetTarget(path string) (stream io.ReadCloser, size int64, err error) }
RemoteStore downloads top-level metadata and target files from a remote repository.
func HTTPRemoteStore ¶
func HTTPRemoteStore(baseURL string, opts *HTTPRemoteOptions, client *http.Client) (RemoteStore, error)