daead

package
v1.7.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 10, 2022 License: Apache-2.0 Imports: 11 Imported by: 10

Documentation

Overview

Package daead provides implementations of the DeterministicAEAD primitive.

Unlike AEAD, implementations of this interface are not semantically secure, because encrypting the same plaintex always yields the same ciphertext.

Example
package main

import (
	"bytes"
	"encoding/base64"
	"fmt"
	"log"

	"github.com/google/tink/go/daead"
	"github.com/google/tink/go/keyset"
)

func main() {
	kh, err := keyset.NewHandle(daead.AESSIVKeyTemplate())
	if err != nil {
		log.Fatal(err)
	}

	// TODO: save the keyset to a safe location. DO NOT hardcode it in source code.
	// Consider encrypting it with a remote key in Cloud KMS, AWS KMS or HashiCorp Vault.
	// See https://github.com/google/tink/blob/master/docs/GOLANG-HOWTO.md#storing-and-loading-existing-keysets.

	d, err := daead.New(kh)
	if err != nil {
		log.Fatal(err)
	}

	msg := []byte("this data needs to be encrypted")
	aad := []byte("this data needs to be authenticated, but not encrypted")
	ct1, err := d.EncryptDeterministically(msg, aad)
	if err != nil {
		log.Fatal(err)
	}

	pt, err := d.DecryptDeterministically(ct1, aad)
	if err != nil {
		log.Fatal(err)
	}

	ct2, err := d.EncryptDeterministically(msg, aad)
	if err != nil {
		log.Fatal(err)
	}

	if !bytes.Equal(ct1, ct2) {
		log.Fatal("ct1 != ct2")
	}

	fmt.Printf("Ciphertext: %s\n", base64.StdEncoding.EncodeToString(ct1))
	fmt.Printf("Original  plaintext: %s\n", msg)
	fmt.Printf("Decrypted Plaintext: %s\n", pt)
}
Output:

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func AESSIVKeyTemplate

func AESSIVKeyTemplate() *tinkpb.KeyTemplate

AESSIVKeyTemplate is a KeyTemplate that generates a AES-SIV key.

func New

New returns a DeterministicAEAD primitive from the given keyset handle.

func NewWithKeyManager deprecated

func NewWithKeyManager(h *keyset.Handle, km registry.KeyManager) (tink.DeterministicAEAD, error)

NewWithKeyManager returns a DeterministicAEAD primitive from the given keyset handle and custom key manager.

Deprecated: Use New.

Types

This section is empty.

Directories

Path Synopsis
Package subtle provides subtle implementations of the DeterministicAEAD primitive.
Package subtle provides subtle implementations of the DeterministicAEAD primitive.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL