forked from notaryproject/notary
/
interface.go
62 lines (51 loc) · 2.89 KB
/
interface.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package storage
import (
"time"
"github.com/hunter1085/notary/tuf/data"
)
// KeyStore provides a minimal interface for managing key persistence
type KeyStore interface {
// GetKey returns the algorithm and public key for the given GUN and role.
// If the GUN+role don't exist, returns an error.
GetKey(gun, role string) (algorithm string, public []byte, err error)
// SetKey sets the algorithm and public key for the given GUN and role if
// it doesn't already exist. Otherwise an error is returned.
SetKey(gun, role, algorithm string, public []byte) error
}
// MetaStore holds the methods that are used for a Metadata Store
type MetaStore interface {
// UpdateCurrent adds new metadata version for the given GUN if and only
// if it's a new role, or the version is greater than the current version
// for the role. Otherwise an error is returned.
UpdateCurrent(gun data.GUN, update MetaUpdate) error
// UpdateMany adds multiple new metadata for the given GUN. It can even
// add multiple versions for the same role, so long as those versions are
// all unique and greater than any current versions. Otherwise,
// none of the metadata is added, and an error is be returned.
UpdateMany(gun data.GUN, updates []MetaUpdate) error
// GetCurrent returns the modification date and data part of the metadata for
// the latest version of the given GUN and role. If there is no data for
// the given GUN and role, an error is returned.
GetCurrent(gun data.GUN, tufRole data.RoleName) (created *time.Time, data []byte, err error)
// GetChecksum returns the given TUF role file and creation date for the
// GUN with the provided checksum. If the given (gun, role, checksum) are
// not found, it returns storage.ErrNotFound
GetChecksum(gun data.GUN, tufRole data.RoleName, checksum string) (created *time.Time, data []byte, err error)
// GetVersion returns the given TUF role file and creation date for the
// GUN with the provided version. If the given (gun, role, version) are
// not found, it returns storage.ErrNotFound
GetVersion(gun data.GUN, tufRole data.RoleName, version int) (created *time.Time, data []byte, err error)
// Delete removes all metadata for a given GUN. It does not return an
// error if no metadata exists for the given GUN.
Delete(gun data.GUN) error
// GetChanges returns an ordered slice of changes. It starts from
// the change matching changeID, but excludes this change from the results
// on the assumption that if a user provides an ID, they've seen that change.
// If changeID is 0, it starts from the
// beginning, and if changeID is -1, it starts from the most recent
// change. The number of results returned is limited by records.
// If records is negative, we will return that number of changes preceding
// the given changeID.
// The returned []Change should always be ordered oldest to newest.
GetChanges(changeID string, records int, filterName string) ([]Change, error)
}