mirror of https://github.com/docker/docs.git
55 lines
1.8 KiB
Go
55 lines
1.8 KiB
Go
package signed
|
|
|
|
import (
|
|
"github.com/docker/notary/tuf/data"
|
|
)
|
|
|
|
// SigningService defines the necessary functions to determine
|
|
// if a user is able to sign with a key, and to perform signing.
|
|
type SigningService interface {
|
|
// Sign takes a slice of keyIDs and a piece of data to sign
|
|
// and returns a slice of signatures and an error
|
|
Sign(keyIDs []string, data []byte) ([]data.Signature, error)
|
|
}
|
|
|
|
// KeyService provides management of keys locally. It will never
|
|
// accept or provide private keys. Communication between the KeyService
|
|
// and a SigningService happen behind the Create function.
|
|
type KeyService interface {
|
|
// Create issues a new key pair and is responsible for loading
|
|
// the private key into the appropriate signing service.
|
|
// The role isn't currently used for anything, but it's here to support
|
|
// future features
|
|
Create(role, algorithm string) (data.PublicKey, error)
|
|
|
|
// GetKey retrieves the public key if present, otherwise it returns nil
|
|
GetKey(keyID string) data.PublicKey
|
|
|
|
// GetPrivateKey retrieves the private key and role if present, otherwise
|
|
// it returns nil
|
|
GetPrivateKey(keyID string) (data.PrivateKey, string, error)
|
|
|
|
// RemoveKey deletes the specified key
|
|
RemoveKey(keyID string) error
|
|
|
|
// ListKeys returns a list of key IDs for the role
|
|
ListKeys(role string) []string
|
|
|
|
// ListAllKeys returns a map of all available signing key IDs to role
|
|
ListAllKeys() map[string]string
|
|
}
|
|
|
|
// CryptoService defines a unified Signing and Key Service as this
|
|
// will be most useful for most applications.
|
|
type CryptoService interface {
|
|
SigningService
|
|
KeyService
|
|
}
|
|
|
|
// Verifier defines an interface for verfying signatures. An implementer
|
|
// of this interface should verify signatures for one and only one
|
|
// signing scheme.
|
|
type Verifier interface {
|
|
Verify(key data.PublicKey, sig []byte, msg []byte) error
|
|
}
|