Documentation ¶
Overview ¶
Package localsecrets provides a secrets implementation using a locally 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/eliben/gocdkx/concepts/urls/ for background information.
As ¶
localsecrets does not support any types for As.
Example ¶
package main import ( "context" "fmt" "log" "github.com/eliben/gocdkx/secrets/localsecrets" ) func main() { // localsecrets.Keeper untilizes the golang.org/x/crypto/nacl/secretbox package // for the crypto implementation, and secretbox requires a secret key // that is a [32]byte. localsecrets secretKey, err := localsecrets.NewRandomKey() if err != nil { log.Fatal(err) } keeper := localsecrets.NewKeeper(secretKey) defer keeper.Close() // Now we can use keeper to encrypt or decrypt. plaintext := []byte("Hello, Secrets!") ctx := context.Background() ciphertext, err := keeper.Encrypt(ctx, plaintext) if err != nil { log.Fatal(err) } decrypted, err := keeper.Decrypt(ctx, ciphertext) fmt.Println(string(decrypted)) }
Output: Hello, Secrets!
Example (OpenKeeper) ¶
package main import ( "context" "log" "github.com/eliben/gocdkx/secrets" ) func main() { ctx := context.Background() // OpenKeeper creates a *secrets.Keeper from a URL. // Using "base64key://", a new random key will be generated. keeper, err := secrets.OpenKeeper(ctx, "base64key://") if err != nil { log.Fatal(err) } defer keeper.Close() // The URL hostname must be a base64-encoded key, of length 32 bytes when decoded. keeper, err = secrets.OpenKeeper(ctx, "base64key://smGbjm71Nxd1Ig5FS0wj9SlbzAIrnolCz9bQQ6uAhl4=") if err != nil { log.Fatal(err) } defer keeper.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.
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.