package cipher

import "errors"

var ErrInvalidKeyLength = errors.New("Invalid key length")

// A Block represents an implementation of a block cipher using block cipher
// specific parameters.
type Block interface {
	// Encrypt a source block into the destination. dst and src must be exactly
	// block sized. Panics if blocks are not sized correctly.
	Encrypt(dst, src []byte)
	// Decrypt a source block into the destination. dst and src must be exactly
	// block sized. Panics if blocks are not sized correctly.
	Decrypt(dst, src []byte)
	// BlockSize returns the blocksize in bytes
	BlockSize() int
	// Algorithm returns the name of the algorithm
	Algorithm() string
}