package localsecrets
import "gocloud.dev/secrets/localsecrets"
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://gocloud.dev/concepts/urls/ for background information.
As
localsecrets does not support any types for As.
Code:play
Example (OpenFromURL)¶
package main
import (
"context"
"log"
"gocloud.dev/secrets"
)
func main() {
// PRAGMA: This example is used on gocloud.dev; PRAGMA comments adjust how it is shown and can be ignored.
// PRAGMA: On gocloud.dev, add a blank import: _ "gocloud.dev/secrets/localsecrets"
// PRAGMA: On gocloud.dev, 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.
// Note that base64.URLEncode should be used, to avoid URL-unsafe characters.
savedKeyKeeper, err := secrets.OpenKeeper(ctx, "base64key://smGbjm71Nxd1Ig5FS0wj9SlbzAIrnolCz9bQQ6uAhl4=")
if err != nil {
log.Fatal(err)
}
defer savedKeyKeeper.Close()
}
Index ¶
- Constants
- func Base64Key(base64str string) ([32]byte, error)
- func Base64KeyStd(base64str string) ([32]byte, error)
- func NewKeeper(sk [32]byte) *secrets.Keeper
- func NewRandomKey() ([32]byte, error)
- type URLOpener
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.
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. It uses base64.URLEncoding.
func Base64KeyStd ¶
Base64KeyStd takes a secret key as a base64 string and converts it to a [32]byte, erroring if the decoded data is not 32 bytes. It uses base64.StdEncoding.
func NewKeeper ¶
NewKeeper returns a *secrets.Keeper that uses the given symmetric
key. See the package documentation for an example.
Code:play
Example¶
package main
import (
"log"
"gocloud.dev/secrets/localsecrets"
)
func main() {
// PRAGMA: This example is used on gocloud.dev; 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()
}
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. Note that base64.URLEncoding should be used to avoid URL-unsafe character in the hostname. If the URL host is empty (e.g., "base64key://"), a new random key is generated.
No query parameters are supported.
func (*URLOpener) OpenKeeperURL ¶
OpenKeeperURL opens Keeper URLs.
Source Files ¶
localsecrets.go
- Version
- v0.41.0
- Published
- Mar 30, 2025
- Platform
- js/wasm
- Imports
- 10 packages
- Last checked
- 4 hours ago –
Tools for package owners.