kms

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 27, 2026 License: MIT Imports: 23 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrUnsupportedProvider = errors.New("kms: unsupported provider")
	ErrInvalidConfig       = errors.New("kms: invalid configuration")
	ErrKeyNotFound         = errors.New("kms: key not found")
	ErrDecryptFailed       = errors.New("kms: data key decrypt failed")
	ErrEncryptFailed       = errors.New("kms: data key encrypt failed")
	ErrClosed              = errors.New("kms: provider closed")
)

Functions

func CloseProvider

func CloseProvider(provider KeyProvider)

Types

type AWSProvider

type AWSProvider struct {
	// contains filtered or unexported fields
}

func NewAWSProvider

func NewAWSProvider(ctx context.Context, cfg AWSProviderConfig) (*AWSProvider, error)

func (AWSProvider) Close

func (a AWSProvider) Close(context.Context) error

func (AWSProvider) DecryptDataKey

func (a AWSProvider) DecryptDataKey(ctx context.Context, encryptedKey []byte, _ DecryptOpts) ([]byte, error)

func (AWSProvider) GenerateDataKey

func (a AWSProvider) GenerateDataKey(ctx context.Context, opts KeyGenOpts) (*DataKey, error)

func (AWSProvider) GetKeyMetadata

func (a AWSProvider) GetKeyMetadata(ctx context.Context, keyURI string) (*KeyMetadata, error)

func (AWSProvider) RotateDataKey

func (a AWSProvider) RotateDataKey(ctx context.Context, encryptedKey []byte, opts RotateOpts) (*DataKey, error)

func (AWSProvider) SignAuditEvent

func (a AWSProvider) SignAuditEvent(context.Context, AuditEvent) error

type AWSProviderConfig

type AWSProviderConfig struct {
	KeyID                 string
	Region                string
	Endpoint              string
	RoleARN               string
	RoleSessionName       string
	AccessKey             string
	SecretKey             string
	SessionToken          string
	SharedCredsFilename   string
	SharedCredsProfile    string
	WebIdentityTokenFile  string
	DisallowEnvCredential bool
}

type AuditArchiver

type AuditArchiver struct {
	// contains filtered or unexported fields
}

func NewAuditArchiver

func NewAuditArchiver(cfg AuditArchiverConfig) (*AuditArchiver, error)

func (*AuditArchiver) Archive

func (a *AuditArchiver) Archive(ctx context.Context, event AuditEvent) error

type AuditArchiverConfig

type AuditArchiverConfig struct {
	LocalPath  string
	SignEvents bool
	SignKey    []byte
}

type AuditEvent

type AuditEvent struct {
	EventType  string                 `json:"event_type"`
	KeyURI     string                 `json:"key_uri,omitempty"`
	Principal  string                 `json:"principal,omitempty"`
	Timestamp  time.Time              `json:"timestamp"`
	Status     string                 `json:"status"`
	ErrorCode  string                 `json:"error_code,omitempty"`
	Metadata   map[string]interface{} `json:"metadata,omitempty"`
	Signature  string                 `json:"signature,omitempty"`
	ProviderID string                 `json:"provider_id,omitempty"`
}

type AuditSigner

type AuditSigner struct {
	// contains filtered or unexported fields
}

AuditSigner signs and verifies immutable KMS audit events.

func NewAuditSigner

func NewAuditSigner(key []byte) *AuditSigner

func (*AuditSigner) Sign

func (s *AuditSigner) Sign(event AuditEvent) (AuditEvent, error)

func (*AuditSigner) Verify

func (s *AuditSigner) Verify(event AuditEvent) bool

type AzureProvider

type AzureProvider struct {
	// contains filtered or unexported fields
}

func NewAzureProvider

func NewAzureProvider(ctx context.Context, cfg AzureProviderConfig) (*AzureProvider, error)

func (AzureProvider) Close

func (a AzureProvider) Close(context.Context) error

func (AzureProvider) DecryptDataKey

func (a AzureProvider) DecryptDataKey(ctx context.Context, encryptedKey []byte, _ DecryptOpts) ([]byte, error)

func (AzureProvider) GenerateDataKey

func (a AzureProvider) GenerateDataKey(ctx context.Context, opts KeyGenOpts) (*DataKey, error)

func (AzureProvider) GetKeyMetadata

func (a AzureProvider) GetKeyMetadata(ctx context.Context, keyURI string) (*KeyMetadata, error)

func (AzureProvider) RotateDataKey

func (a AzureProvider) RotateDataKey(ctx context.Context, encryptedKey []byte, opts RotateOpts) (*DataKey, error)

func (AzureProvider) SignAuditEvent

func (a AzureProvider) SignAuditEvent(context.Context, AuditEvent) error

type AzureProviderConfig

type AzureProviderConfig struct {
	VaultName             string
	KeyName               string
	TenantID              string
	ClientID              string
	ClientSecret          string
	Environment           string
	Resource              string
	DisallowEnvCredential bool
}

type DataKey

type DataKey struct {
	KeyURI     string
	Ciphertext []byte
	Plaintext  []byte
	Version    uint32
	CreatedAt  time.Time
	ExpiresAt  time.Time
	Algorithm  string
}

DataKey is an encrypted DEK plus runtime metadata.

type DecryptOpts

type DecryptOpts struct {
	KeyURI string
}

type FactoryConfig

type FactoryConfig struct {
	Provider   string
	KeyURI     string
	MasterKey  []byte
	Archiver   *AuditArchiver
	ProviderID string

	AWS   AWSProviderConfig
	Azure AzureProviderConfig
	GCP   GCPProviderConfig
}

type GCPProvider

type GCPProvider struct {
	// contains filtered or unexported fields
}

func (*GCPProvider) Close

func (p *GCPProvider) Close(context.Context) error

func (*GCPProvider) DecryptDataKey

func (p *GCPProvider) DecryptDataKey(ctx context.Context, encryptedKey []byte, _ DecryptOpts) ([]byte, error)

func (*GCPProvider) GenerateDataKey

func (p *GCPProvider) GenerateDataKey(ctx context.Context, opts KeyGenOpts) (*DataKey, error)

func (*GCPProvider) GetKeyMetadata

func (p *GCPProvider) GetKeyMetadata(ctx context.Context, keyURI string) (*KeyMetadata, error)

func (*GCPProvider) RotateDataKey

func (p *GCPProvider) RotateDataKey(ctx context.Context, encryptedKey []byte, opts RotateOpts) (*DataKey, error)

func (*GCPProvider) SignAuditEvent

func (p *GCPProvider) SignAuditEvent(context.Context, AuditEvent) error

type GCPProviderConfig

type GCPProviderConfig struct {
	Project         string
	Location        string
	KeyRing         string
	KeyName         string
	CredentialsFile string
}

type KeyGenOpts

type KeyGenOpts struct {
	Algorithm string
	TTL       time.Duration
	Label     string
}

type KeyMetadata

type KeyMetadata struct {
	KeyURI     string
	Version    uint32
	Algorithm  string
	CreatedAt  time.Time
	ExpiresAt  time.Time
	Provider   string
	FIPSLevel  string
	Properties map[string]interface{}
}

type KeyProvider

type KeyProvider interface {
	GenerateDataKey(ctx context.Context, opts KeyGenOpts) (*DataKey, error)
	DecryptDataKey(ctx context.Context, encryptedKey []byte, opts DecryptOpts) ([]byte, error)
	RotateDataKey(ctx context.Context, encryptedKey []byte, opts RotateOpts) (*DataKey, error)
	GetKeyMetadata(ctx context.Context, keyURI string) (*KeyMetadata, error)
	SignAuditEvent(ctx context.Context, event AuditEvent) error
	Close(ctx context.Context) error
}

KeyProvider abstracts KMS/HSM implementations for envelope workflows.

func NewGCPProvider

func NewGCPProvider(ctx context.Context, cfg GCPProviderConfig) (KeyProvider, error)

func NewProvider

func NewProvider(cfg FactoryConfig) (KeyProvider, error)

func WithAudit

func WithAudit(provider KeyProvider, archiver *AuditArchiver, providerID string) KeyProvider

type LocalConfig

type LocalConfig struct {
	MasterKey []byte
	KeyURI    string
}

type LocalProvider

type LocalProvider struct {
	// contains filtered or unexported fields
}

LocalProvider provides a minimal software-only KEK wrapper. It is intended for local/dev and compatibility tests.

func NewLocalProvider

func NewLocalProvider(cfg LocalConfig) (*LocalProvider, error)

func (*LocalProvider) Close

func (p *LocalProvider) Close(context.Context) error

func (*LocalProvider) DecryptDataKey

func (p *LocalProvider) DecryptDataKey(_ context.Context, encryptedKey []byte, _ DecryptOpts) ([]byte, error)

func (*LocalProvider) GenerateDataKey

func (p *LocalProvider) GenerateDataKey(_ context.Context, opts KeyGenOpts) (*DataKey, error)

func (*LocalProvider) GetKeyMetadata

func (p *LocalProvider) GetKeyMetadata(_ context.Context, keyURI string) (*KeyMetadata, error)

func (*LocalProvider) RotateDataKey

func (p *LocalProvider) RotateDataKey(ctx context.Context, encryptedKey []byte, opts RotateOpts) (*DataKey, error)

func (*LocalProvider) SignAuditEvent

func (p *LocalProvider) SignAuditEvent(context.Context, AuditEvent) error

type NopAuditProvider

type NopAuditProvider struct{}

NopAuditProvider can be embedded by providers that don't persist audit events.

func (NopAuditProvider) SignAuditEvent

func (NopAuditProvider) SignAuditEvent(context.Context, AuditEvent) error

type RotateOpts

type RotateOpts struct {
	KeyURI string
	Label  string
	TTL    time.Duration
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL