mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-11-04 04:28:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package command
 | 
						|
 | 
						|
import (
 | 
						|
	"errors"
 | 
						|
	"regexp"
 | 
						|
	"strings"
 | 
						|
 | 
						|
	"github.com/mitchellh/cli"
 | 
						|
	"github.com/posener/complete"
 | 
						|
)
 | 
						|
 | 
						|
var (
 | 
						|
	_                cli.Command             = (*TransformImportCommand)(nil)
 | 
						|
	_                cli.CommandAutocomplete = (*TransformImportCommand)(nil)
 | 
						|
	transformKeyPath                         = regexp.MustCompile("^(.*)/transformations/(fpe|tokenization)/([^/]*)$")
 | 
						|
)
 | 
						|
 | 
						|
type TransformImportCommand struct {
 | 
						|
	*BaseCommand
 | 
						|
}
 | 
						|
 | 
						|
func (c *TransformImportCommand) Synopsis() string {
 | 
						|
	return "Import a key into the Transform secrets engines."
 | 
						|
}
 | 
						|
 | 
						|
func (c *TransformImportCommand) Help() string {
 | 
						|
	helpText := `
 | 
						|
Usage: vault transform import PATH KEY [options...]
 | 
						|
 | 
						|
  Using the Transform key wrapping system, imports key material from
 | 
						|
  the base64 encoded KEY (either directly on the CLI or via @path notation),
 | 
						|
  into a new FPE or tokenization transformation whose API path is PATH. 
 | 
						|
 | 
						|
  To import a new key version into an existing tokenization transformation, 
 | 
						|
  use import_version. 
 | 
						|
  
 | 
						|
  The remaining options after KEY (key=value style) are passed on to 
 | 
						|
  Create/Update FPE Transformation or Create/Update Tokenization Transformation 
 | 
						|
  API endpoints.
 | 
						|
 | 
						|
  For example:
 | 
						|
  $ vault transform import transform/transformations/tokenization/application-form @path/to/key \        
 | 
						|
       allowed_roles=legacy-system 
 | 
						|
` + c.Flags().Help()
 | 
						|
 | 
						|
	return strings.TrimSpace(helpText)
 | 
						|
}
 | 
						|
 | 
						|
func (c *TransformImportCommand) Flags() *FlagSets {
 | 
						|
	return c.flagSet(FlagSetHTTP)
 | 
						|
}
 | 
						|
 | 
						|
func (c *TransformImportCommand) AutocompleteArgs() complete.Predictor {
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
func (c *TransformImportCommand) AutocompleteFlags() complete.Flags {
 | 
						|
	return c.Flags().Completions()
 | 
						|
}
 | 
						|
 | 
						|
func (c *TransformImportCommand) Run(args []string) int {
 | 
						|
	return ImportKey(c.BaseCommand, "import", transformImportKeyPath, c.Flags(), args)
 | 
						|
}
 | 
						|
 | 
						|
func transformImportKeyPath(s string, operation string) (path string, apiPath string, err error) {
 | 
						|
	parts := transformKeyPath.FindStringSubmatch(s)
 | 
						|
	if len(parts) != 4 {
 | 
						|
		return "", "", errors.New("expected transform path and key name in the form :path:/transformations/fpe|tokenization/:name:")
 | 
						|
	}
 | 
						|
	path = parts[1]
 | 
						|
	transformation := parts[2]
 | 
						|
	keyName := parts[3]
 | 
						|
	apiPath = path + "/transformations/" + transformation + "/" + keyName + "/" + operation
 | 
						|
 | 
						|
	return path, apiPath, nil
 | 
						|
}
 |