Documentation ¶
Overview ¶
Package localsecrets provides a secrets implementation using a locally provided symmetric key. Use NewKeeper to construct a *secrets.Keeper.
URLs ¶
For secrets.OpenKeeper, localsecrets registers for the scheme "base64key". To customize the URL opener, or for more details on the URL format, see URLOpener. See https://github.com/cornelk/go-cloud/concepts/urls/ for background information.
As ¶
localsecrets does not support any types for As.
Example (OpenFromURL) ¶
package main import ( "context" "log" "github.com/cornelk/go-cloud/secrets" ) func main() { // PRAGMA: This example is used on github.com/cornelk/go-cloud; PRAGMA comments adjust how it is shown and can be ignored. // PRAGMA: On github.com/cornelk/go-cloud, add a blank import: _ "github.com/cornelk/go-cloud/secrets/localsecrets" // PRAGMA: On github.com/cornelk/go-cloud, hide lines until the next blank line. ctx := context.Background() // Using "base64key://", a new random key will be generated. randomKeyKeeper, err := secrets.OpenKeeper(ctx, "base64key://") if err != nil { log.Fatal(err) } defer randomKeyKeeper.Close() // Otherwise, the URL hostname must be a base64-encoded key, of length 32 bytes when decoded. savedKeyKeeper, err := secrets.OpenKeeper(ctx, "base64key://smGbjm71Nxd1Ig5FS0wj9SlbzAIrnolCz9bQQ6uAhl4=") if err != nil { log.Fatal(err) } defer savedKeyKeeper.Close() }
Output:
Index ¶
Examples ¶
Constants ¶
const (
Scheme = "base64key"
)
Scheme is the URL scheme localsecrets registers its URLOpener under on secrets.DefaultMux. See the package documentation and/or URLOpener for details.
Variables ¶
This section is empty.
Functions ¶
func Base64Key ¶
Base64Key takes a secret key as a base64 string and converts it to a [32]byte, erroring if the decoded data is not 32 bytes.
func NewKeeper ¶
NewKeeper returns a *secrets.Keeper that uses the given symmetric key. See the package documentation for an example.
Example ¶
package main import ( "log" "github.com/cornelk/go-cloud/secrets/localsecrets" ) func main() { // PRAGMA: This example is used on github.com/cornelk/go-cloud; PRAGMA comments adjust how it is shown and can be ignored. secretKey, err := localsecrets.NewRandomKey() if err != nil { log.Fatal(err) } keeper := localsecrets.NewKeeper(secretKey) defer keeper.Close() }
Output:
func NewRandomKey ¶
NewRandomKey will generate random secret key material suitable to be used as the secret key argument to NewKeeper.
Types ¶
type URLOpener ¶
type URLOpener struct{}
URLOpener opens localsecrets URLs like "base64key://smGbjm71Nxd1Ig5FS0wj9SlbzAIrnolCz9bQQ6uAhl4=".
The URL host must be base64 encoded, and must decode to exactly 32 bytes. If the URL host is empty (e.g., "base64key://"), a new random key is generated.
No query parameters are supported.