triplesec

package module
v0.0.0-...-b360b82 Latest Latest
Warning

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

Go to latest
Published: Jun 12, 2015 License: MIT Imports: 12 Imported by: 0

README

TripleSec

Golang implementation of the layered encryption scheme TripleSec

A fork of Fillipo's TripleSec

Documentation

Overview

Package triplesec implements the TripleSec v3 encryption and authentication scheme.

For details on TripleSec, go to https://keybase.io/triplesec/

Index

Constants

View Source
const MacOutputLen = 64
View Source
const SaltLen = 16

Variables

View Source
var (
	IVLen      = 16
	SalsaIVLen = 24
	TotalIVLen = 2*IVLen + SalsaIVLen
	DkLen      = 2*macKeyLen + 3*cipherKeyLen
)
View Source
var MagicBytes = [4]byte{0x1c, 0x94, 0xd7, 0xde}

The MagicBytes are the four bytes prefixed to every TripleSec ciphertext, 1c 94 d7 de.

Overhead is the amount of bytes added to a TripleSec ciphertext.

len(plaintext) + Overhead = len(ciphertext)

It consists of: magic bytes + version + salt + 2 * MACs + 3 * IVS.

View Source
var Version uint32 = 3

Functions

This section is empty.

Types

type BadPassphraseError

type BadPassphraseError struct{}

func (BadPassphraseError) Error

func (e BadPassphraseError) Error() string

type Cipher

type Cipher struct {
	// contains filtered or unexported fields
}

func NewCipher

func NewCipher(passphrase []byte, salt []byte) (*Cipher, error)

A Cipher is an instance of TripleSec using a particular key and a particular salt

func (*Cipher) Decrypt

func (c *Cipher) Decrypt(src []byte) (res []byte, err error)

Decrypt decrypts a TripleSec ciphertext using the Cipher passphrase. The dst buffer size must be at least len(src) - Overhead. dst and src can not overlap. src is left untouched.

Encrypt returns a error if the ciphertext is not recognized, if authentication fails or on memory failures.

func (*Cipher) DeriveKey

func (c *Cipher) DeriveKey(extra int) ([]byte, []byte, error)

func (*Cipher) Encrypt

func (c *Cipher) Encrypt(src []byte) (dst []byte, err error)

Encrypt encrypts and signs a plaintext message with TripleSec using a random salt and the Cipher passphrase. The dst buffer size must be at least len(src) + Overhead. dst and src can not overlap. src is left untouched.

Encrypt returns a error on memory or RNG failures.

func (*Cipher) GetSalt

func (c *Cipher) GetSalt() ([]byte, error)

func (*Cipher) Scrub

func (c *Cipher) Scrub()

func (*Cipher) SetSalt

func (c *Cipher) SetSalt(salt []byte) error

type CorruptionError

type CorruptionError struct {
	// contains filtered or unexported fields
}

func (CorruptionError) Error

func (e CorruptionError) Error() string

type VersionError

type VersionError struct {
	// contains filtered or unexported fields
}

func (VersionError) Error

func (e VersionError) Error() string

Directories

Path Synopsis
Package sha3 implements the SHA3 hash algorithm (formerly called Keccak) chosen by NIST in 2012.
Package sha3 implements the SHA3 hash algorithm (formerly called Keccak) chosen by NIST in 2012.

Jump to

Keyboard shortcuts

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