1// Copyright 2016 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5package aes
6
7import (
8	"crypto/cipher"
9)
10
11// gcmAble is implemented by cipher.Blocks that can provide an optimized
12// implementation of GCM through the AEAD interface.
13// See crypto/cipher/gcm.go.
14type gcmAble interface {
15	NewGCM(nonceSize, tagSize int) (cipher.AEAD, error)
16}
17
18// cbcEncAble is implemented by cipher.Blocks that can provide an optimized
19// implementation of CBC encryption through the cipher.BlockMode interface.
20// See crypto/cipher/cbc.go.
21type cbcEncAble interface {
22	NewCBCEncrypter(iv []byte) cipher.BlockMode
23}
24
25// cbcDecAble is implemented by cipher.Blocks that can provide an optimized
26// implementation of CBC decryption through the cipher.BlockMode interface.
27// See crypto/cipher/cbc.go.
28type cbcDecAble interface {
29	NewCBCDecrypter(iv []byte) cipher.BlockMode
30}
31
32// ctrAble is implemented by cipher.Blocks that can provide an optimized
33// implementation of CTR through the cipher.Stream interface.
34// See crypto/cipher/ctr.go.
35type ctrAble interface {
36	NewCTR(iv []byte) cipher.Stream
37}
38