chacha20: Index | Files | Directories

package chacha20

import ""

Package chacha20 implements the ChaCha20 stream cipher.


Package Files



const (
    // BlockSize is the size of a ChaCha20 block in bytes.
    BlockSize = api.BlockSize

    // KeySize is the ChaCha20 key size in bytes.
    KeySize = 32

    // NonceSize is the ChaCha20 nonce size in bytes.
    NonceSize = 8

    // INonceSize is the IETF ChaCha20 nonce size in bytes.
    INonceSize = 12

    // XNonceSize is the XChaCha20 nonce size in bytes.
    XNonceSize = 24

    // HNonceSize is the HChaCha20 nonce size in bytes.
    HNonceSize = 16


var (
    // ErrInvalidKey is the error returned when the key is invalid.
    ErrInvalidKey = errors.New("chacha20: key length must be KeySize bytes")

    // ErrInvalidNonce is the error returned when the nonce is invalid.
    ErrInvalidNonce = errors.New("chacha20: nonce length must be NonceSize/INonceSize/XNonceSize bytes")

    // ErrInvalidCounter is the error returned when the counter is invalid.
    ErrInvalidCounter = errors.New("chacha20: block counter is invalid (out of range)")

func HChaCha Uses

func HChaCha(key, nonce []byte, dst *[32]byte)

HChaCha is the HChaCha20 hash function used to make XChaCha.

type Cipher Uses

type Cipher struct {
    // contains filtered or unexported fields

Cipher is an instance of ChaCha20/XChaCha20 using a particular key and nonce.

func New Uses

func New(key, nonce []byte) (*Cipher, error)

New returns a new ChaCha20/XChaCha20 instance.

func (*Cipher) KeyStream Uses

func (c *Cipher) KeyStream(dst []byte)

KeyStream sets dst to the raw keystream.

func (*Cipher) ReKey Uses

func (c *Cipher) ReKey(key, nonce []byte) error

ReKey reinitializes the ChaCha20/XChaCha20 instance with the provided key and nonce.

func (*Cipher) Reset Uses

func (c *Cipher) Reset()

Reset zeros the key data so that it will no longer appear in the process's memory.

func (*Cipher) Seek Uses

func (c *Cipher) Seek(blockCounter uint64) error

Seek sets the block counter to a given offset.

func (*Cipher) XORKeyStream Uses

func (c *Cipher) XORKeyStream(dst, src []byte)

XORKeyStream sets dst to the result of XORing src with the key stream. Dst and src may be the same slice but otherwise should not overlap.


internal/apiPackage api provides the ChaCha20 implementation abstract interface.
internal/hardwarePackage hardware provides the hardware accelerated ChaCha20 implementations.
internal/refPackage ref provides the portable ChaCha20 implementation.

Package chacha20 imports 7 packages (graph) and is imported by 3 packages. Updated 2019-09-17. Refresh now. Tools for package owners.