code: func seal(data map[string]string, passphrase string) ([]byte, error) {
  	jstr, err := json.Marshal(data)
  	if err != nil {
  		return nil, err
  	}
  	var nonce [nonceLength]byte
  	if _, err := io.ReadFull(crypto_rand.Reader, nonce[:]); err != nil {
  		return nil, err
  	}
  	salt := make([]byte, saltLength)
  	if _, err := crypto_rand.Read(salt); err != nil {
  		return nil, err
  	}
  	secretKey := deriveKey(passphrase, salt)
  	prefix := append(salt, nonce[:]...)
  	return secretbox.Seal(prefix, jstr, &nonce, &secretKey), nil
  }
docs: // seal will try to marshal and seal the given data