2022-04-25 04:27:24 -04:00
package cipher
import (
` bytes `
)
type Cipher interface {
2022-04-28 05:18:25 -04:00
// Setup initializes the Cipher with a given key.
Setup ( key [ ] byte ) ( err error )
2022-04-25 04:27:24 -04:00
// Name returns the string form of the cipher name.
Name ( ) ( name string )
// NameBytes returns the Name result but in bytes, with a leading uint32 bytecount packed in.
NameBytes ( ) ( name [ ] byte )
// BlockSize returns the blocksize of the cipher.Cipher. This is used for externally padding data for Cipher.Encrypt and Cipher.AllocateEncrypt.
BlockSize ( ) ( size int )
// KdfKeySize returns the desired/needed key size for use with kdf.KDF.
KdfKeySize ( ) ( size int )
/ *
Encrypt takes plain data , either a :
- string
- raw byte slice ( [ ] byte or [ ] uint8 )
- single byte ( byte or uint8 )
- * bytes . Buffer
and returns an encrypted * bytes . Buffer of data .
* /
Encrypt ( data interface { } ) ( encrypted * bytes . Reader , err error )
// AllocateEncrypt is exactly like cipher.Cipher.Encrypt except that it includes a (NON-encrypted) uint32 prefix of byte allocation.
AllocateEncrypt ( data interface { } ) ( encrypted * bytes . Reader , err error )
2022-04-28 05:18:25 -04:00
/ *
Pad returns padded bytes in a * bytes . Buffer according to the cipher ' s padding specification .
data can be one of either :
- string
- raw byte slice ( [ ] byte or [ ] uint8 )
- single byte ( byte or uint8 )
- * bytes . Buffer
This is a prerequisite in some ciphers , and must be performed BEFORE encrypting .
* /
Pad ( data interface { } ) ( paddedBuf * bytes . Reader , err error )
2022-04-25 04:27:24 -04:00
/ *
Decrypt takes encrypted data , either a :
- raw byte slice ( [ ] byte or [ ] uint8 )
- * bytes . Buffer
and returns a plain / decrypted * bytes . Buffer of data .
* /
Decrypt ( data interface { } ) ( decrypted * bytes . Reader , err error )
// AllocatedDecrypt is exactly like cipher.Cipher.Decrypt except that it assumes that data includes a (NON-encrypted) uint32 prefix of byte allocation.
AllocatedDecrypt ( data interface { } ) ( decrypted * bytes . Reader , err error )
// IsPlain returns true if this is a "null" cipher; i.e. no encryption is actually performed.
IsPlain ( ) ( plain bool )
}