67 lines
1.9 KiB
Go
67 lines
1.9 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package transit
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/hashicorp/vault/helper/random"
|
|
"github.com/hashicorp/vault/sdk/framework"
|
|
"github.com/hashicorp/vault/sdk/logical"
|
|
)
|
|
|
|
func (b *backend) pathRandom() *framework.Path {
|
|
return &framework.Path{
|
|
Pattern: "random(/" + framework.GenericNameRegex("source") + ")?" + framework.OptionalParamRegex("urlbytes"),
|
|
|
|
DisplayAttrs: &framework.DisplayAttributes{
|
|
OperationPrefix: operationPrefixTransit,
|
|
OperationVerb: "generate",
|
|
OperationSuffix: "random|random-with-source|random-with-bytes|random-with-source-and-bytes",
|
|
},
|
|
|
|
Fields: map[string]*framework.FieldSchema{
|
|
"urlbytes": {
|
|
Type: framework.TypeString,
|
|
Description: "The number of bytes to generate (POST URL parameter)",
|
|
},
|
|
|
|
"bytes": {
|
|
Type: framework.TypeInt,
|
|
Default: 32,
|
|
Description: "The number of bytes to generate (POST body parameter). Defaults to 32 (256 bits).",
|
|
},
|
|
|
|
"format": {
|
|
Type: framework.TypeString,
|
|
Default: "base64",
|
|
Description: `Encoding format to use. Can be "hex" or "base64". Defaults to "base64".`,
|
|
},
|
|
|
|
"source": {
|
|
Type: framework.TypeString,
|
|
Default: "platform",
|
|
Description: `Which system to source random data from, ether "platform", "seal", or "all".`,
|
|
},
|
|
},
|
|
|
|
Callbacks: map[logical.Operation]framework.OperationFunc{
|
|
logical.UpdateOperation: b.pathRandomWrite,
|
|
},
|
|
|
|
HelpSynopsis: pathRandomHelpSyn,
|
|
HelpDescription: pathRandomHelpDesc,
|
|
}
|
|
}
|
|
|
|
func (b *backend) pathRandomWrite(_ context.Context, _ *logical.Request, d *framework.FieldData) (*logical.Response, error) {
|
|
return random.HandleRandomAPI(d, b.GetRandomReader())
|
|
}
|
|
|
|
const pathRandomHelpSyn = `Generate random bytes`
|
|
|
|
const pathRandomHelpDesc = `
|
|
This function can be used to generate high-entropy random bytes.
|
|
`
|