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