Documentation ¶
Index ¶
- func CreateKeyTable(db gorm.DB) error
- func CreateTUFTable(db gorm.DB) error
- type ErrKeyExists
- type ErrNoKey
- type ErrNotFound
- type ErrOldVersion
- type Key
- type KeyStore
- type MemStorage
- func (st *MemStorage) Delete(gun string) error
- func (st *MemStorage) GetChecksum(gun, role, checksum string) (data []byte, err error)
- func (st *MemStorage) GetCurrent(gun, role string) (data []byte, err error)
- func (st *MemStorage) GetKey(gun, role string) (algorithm string, public []byte, err error)
- func (st *MemStorage) SetKey(gun, role, algorithm string, public []byte) error
- func (st *MemStorage) UpdateCurrent(gun string, update MetaUpdate) error
- func (st *MemStorage) UpdateMany(gun string, updates []MetaUpdate) error
- type MetaStore
- type MetaUpdate
- type SQLStorage
- func (db *SQLStorage) CheckHealth() error
- func (db *SQLStorage) Delete(gun string) error
- func (db *SQLStorage) GetChecksum(gun, tufRole, checksum string) ([]byte, error)
- func (db *SQLStorage) GetCurrent(gun, tufRole string) ([]byte, error)
- func (db *SQLStorage) GetKey(gun, role string) (algorithm string, public []byte, err error)
- func (db *SQLStorage) SetKey(gun, role, algorithm string, public []byte) error
- func (db *SQLStorage) UpdateCurrent(gun string, update MetaUpdate) error
- func (db *SQLStorage) UpdateMany(gun string, updates []MetaUpdate) error
- type TUFFile
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CreateKeyTable ¶
CreateKeyTable creates the DB table for TUFFile
func CreateTUFTable ¶
CreateTUFTable creates the DB table for TUFFile
Types ¶
type ErrKeyExists ¶
type ErrKeyExists struct {
// contains filtered or unexported fields
}
ErrKeyExists is returned when a key already exists
func (ErrKeyExists) Error ¶
func (err ErrKeyExists) Error() string
ErrKeyExists is returned when a key already exists
type ErrNoKey ¶
type ErrNoKey struct {
// contains filtered or unexported fields
}
ErrNoKey is returned when no timestamp key is found
type ErrNotFound ¶
type ErrNotFound struct{}
ErrNotFound is returned when TUF metadata isn't found for a specific record
type ErrOldVersion ¶
type ErrOldVersion struct{}
ErrOldVersion is returned when a newer version of TUF metadada is already available
func (ErrOldVersion) Error ¶
func (err ErrOldVersion) Error() string
ErrOldVersion is returned when a newer version of TUF metadada is already available
type Key ¶
type Key struct { gorm.Model Gun string `sql:"type:varchar(255);not null;unique_index:gun_role"` Role string `sql:"type:varchar(255);not null;unique_index:gun_role"` Cipher string `sql:"type:varchar(30);not null"` Public []byte `sql:"type:blob;not null"` }
Key represents a single timestamp key in the database
type KeyStore ¶
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 }
KeyStore provides a minimal interface for managing key persistence
type MemStorage ¶
type MemStorage struct {
// contains filtered or unexported fields
}
MemStorage is really just designed for dev and testing. It is very inefficient in many scenarios
func NewMemStorage ¶
func NewMemStorage() *MemStorage
NewMemStorage instantiates a memStorage instance
func (*MemStorage) Delete ¶
func (st *MemStorage) Delete(gun string) error
Delete deletes all the metadata for a given GUN
func (*MemStorage) GetChecksum ¶
func (st *MemStorage) GetChecksum(gun, role, checksum string) (data []byte, err error)
GetChecksum returns the metadata for a given role, under a GUN
func (*MemStorage) GetCurrent ¶
func (st *MemStorage) GetCurrent(gun, role string) (data []byte, err error)
GetCurrent returns the metadata for a given role, under a GUN
func (*MemStorage) GetKey ¶
func (st *MemStorage) GetKey(gun, role string) (algorithm string, public []byte, err error)
GetKey returns the public key material of the timestamp key of a given gun
func (*MemStorage) SetKey ¶
func (st *MemStorage) SetKey(gun, role, algorithm string, public []byte) error
SetKey sets a key under a gun and role
func (*MemStorage) UpdateCurrent ¶
func (st *MemStorage) UpdateCurrent(gun string, update MetaUpdate) error
UpdateCurrent updates the meta data for a specific role
func (*MemStorage) UpdateMany ¶
func (st *MemStorage) UpdateMany(gun string, updates []MetaUpdate) error
UpdateMany updates multiple TUF records
type MetaStore ¶
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 string, 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 string, updates []MetaUpdate) error // GetCurrent returns the 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, tufRole string) (data []byte, err error) // GetChecksum return the given tuf role file for the GUN with the // provided checksum. If the given (gun, role, checksum) are not // found, it returns storage.ErrNotFound GetChecksum(gun, tufRole, checksum string) (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 string) error KeyStore }
MetaStore holds the methods that are used for a Metadata Store
type MetaUpdate ¶
MetaUpdate packages up the fields required to update a TUF record
type SQLStorage ¶
SQLStorage implements a versioned store using a relational database. See server/storage/models.go
func NewSQLStorage ¶
func NewSQLStorage(dialect string, args ...interface{}) (*SQLStorage, error)
NewSQLStorage is a convenience method to create a SQLStorage
func (*SQLStorage) CheckHealth ¶
func (db *SQLStorage) CheckHealth() error
CheckHealth asserts that both required tables are present
func (*SQLStorage) Delete ¶
func (db *SQLStorage) Delete(gun string) error
Delete deletes all the records for a specific GUN
func (*SQLStorage) GetChecksum ¶
func (db *SQLStorage) GetChecksum(gun, tufRole, checksum string) ([]byte, error)
GetChecksum gets a specific TUF record by its hex checksum
func (*SQLStorage) GetCurrent ¶
func (db *SQLStorage) GetCurrent(gun, tufRole string) ([]byte, error)
GetCurrent gets a specific TUF record
func (*SQLStorage) GetKey ¶
func (db *SQLStorage) GetKey(gun, role string) (algorithm string, public []byte, err error)
GetKey returns the Public Key data for a gun+role
func (*SQLStorage) SetKey ¶
func (db *SQLStorage) SetKey(gun, role, algorithm string, public []byte) error
SetKey attempts to write a key and returns an error if it already exists for the gun and role
func (*SQLStorage) UpdateCurrent ¶
func (db *SQLStorage) UpdateCurrent(gun string, update MetaUpdate) error
UpdateCurrent updates a single TUF.
func (*SQLStorage) UpdateMany ¶
func (db *SQLStorage) UpdateMany(gun string, updates []MetaUpdate) error
UpdateMany atomically updates many TUF records in a single transaction
type TUFFile ¶
type TUFFile struct { gorm.Model Gun string `sql:"type:varchar(255);not null"` Role string `sql:"type:varchar(255);not null"` Version int `sql:"not null"` Sha256 string `sql:"type:varchar(64);"` Data []byte `sql:"type:longblob;not null"` }
TUFFile represents a TUF file in the database