Home | History | Annotate | Download | only in aes
      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 
      5 package aes
      6 
      7 import (
      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.
     14 type gcmAble interface {
     15 	NewGCM(size 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.
     21 type 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.
     28 type 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.
     35 type ctrAble interface {
     36 	NewCTR(iv []byte) cipher.Stream
     37 }
     38