Files
grafana/pkg/registry/apis/secret/encryption/secrets.go
T
Matheus Macabu 47abf5f811 Secrets: Clean up unused code (#108366)
* Secrets: Remove unused tracectx pkg

* Secrets: Remove unused assert pkg

* Secrets: Remove unused encryption interface

* Secrets: Remove unused encryption file/ref
2025-07-21 11:08:49 +02:00

43 lines
1.1 KiB
Go

package encryption
import (
"context"
"fmt"
"strings"
"time"
)
const UsageInsightsPrefix = "secrets_manager"
type ProviderConfig struct {
CurrentProvider ProviderID
AvailableProviders ProviderMap
}
type ProviderMap map[ProviderID]Provider
// Provider is a fully configured key encryption key provider used for to encrypt and decrypt data keys for envelope encryption
type Provider interface {
Encrypt(ctx context.Context, blob []byte) ([]byte, error)
Decrypt(ctx context.Context, blob []byte) ([]byte, error)
}
type ProviderID string
// Kind returns the kind of the provider, e.g. "secret_key", "aws_kms", "azure_keyvault", "google_kms", "hashicorp_vault"
func (id ProviderID) Kind() (string, error) {
idStr := string(id)
parts := strings.SplitN(idStr, ".", 2)
if len(parts) != 2 {
return "", fmt.Errorf("malformatted provider identifier %s: expected format <provider>.<keyName>", idStr)
}
return parts[0], nil
}
// KeyLabel returns a label for the data key that is unique to the current provider and today's date.
func KeyLabel(providerID ProviderID) string {
return fmt.Sprintf("%s@%s", time.Now().Format("2006-01-02"), providerID)
}