func (c *DefaultCryptor) Decrypt(decryptor cipher.BlockMode, cipherText []byte) (msg []byte, err error) { if decryptor != nil { if len(cipherText) < decryptor.BlockSize() || len(cipherText)%decryptor.BlockSize() != 0 { err = ErrInputTextSize return } msg = cipherText decryptor.CryptBlocks(msg, cipherText) // let caller do pkcs7 unpadding msg, err = padding.PKCS7.Unpadding(msg, decryptor.BlockSize()) } return }
func (c *DefaultCryptor) Encrypt(encryptor cipher.BlockMode, msg []byte) (cipherText []byte, err error) { if msg != nil { // let caller do pkcs7 padding msg = padding.PKCS7.Padding(msg, encryptor.BlockSize()) if len(msg) < encryptor.BlockSize() || len(msg)%encryptor.BlockSize() != 0 { err = ErrInputTextSize return } cipherText = msg encryptor.CryptBlocks(cipherText, msg) } return }
// newCipherBlockReader returns an io.Reader that decrypts the given io.Reader using // the provided block mode cipher. func newCipherBlockReader(r io.Reader, mode cipher.BlockMode) io.Reader { cr := &cipherBlockReader{r: r, mode: mode} cr.outbuf = make([]byte, 0, mode.BlockSize()) cr.inbuf = make([]byte, 0, mode.BlockSize()) return cr }