cipher_aes.go raw

   1  package pkcs8
   2  
   3  import (
   4  	"crypto/aes"
   5  	"encoding/asn1"
   6  )
   7  
   8  var (
   9  	oidAES128CBC = asn1.ObjectIdentifier{2, 16, 840, 1, 101, 3, 4, 1, 2}
  10  	oidAES128GCM = asn1.ObjectIdentifier{2, 16, 840, 1, 101, 3, 4, 1, 6}
  11  	oidAES192CBC = asn1.ObjectIdentifier{2, 16, 840, 1, 101, 3, 4, 1, 22}
  12  	oidAES192GCM = asn1.ObjectIdentifier{2, 16, 840, 1, 101, 3, 4, 1, 26}
  13  	oidAES256CBC = asn1.ObjectIdentifier{2, 16, 840, 1, 101, 3, 4, 1, 42}
  14  	oidAES256GCM = asn1.ObjectIdentifier{2, 16, 840, 1, 101, 3, 4, 1, 46}
  15  )
  16  
  17  func init() {
  18  	RegisterCipher(oidAES128CBC, func() Cipher {
  19  		return AES128CBC
  20  	})
  21  	RegisterCipher(oidAES128GCM, func() Cipher {
  22  		return AES128GCM
  23  	})
  24  	RegisterCipher(oidAES192CBC, func() Cipher {
  25  		return AES192CBC
  26  	})
  27  	RegisterCipher(oidAES192GCM, func() Cipher {
  28  		return AES192GCM
  29  	})
  30  	RegisterCipher(oidAES256CBC, func() Cipher {
  31  		return AES256CBC
  32  	})
  33  	RegisterCipher(oidAES256GCM, func() Cipher {
  34  		return AES256GCM
  35  	})
  36  }
  37  
  38  // AES128CBC is the 128-bit key AES cipher in CBC mode.
  39  var AES128CBC = cipherWithBlock{
  40  	ivSize:   aes.BlockSize,
  41  	keySize:  16,
  42  	newBlock: aes.NewCipher,
  43  	oid:      oidAES128CBC,
  44  }
  45  
  46  // AES128GCM is the 128-bit key AES cipher in GCM mode.
  47  var AES128GCM = cipherWithBlock{
  48  	ivSize:   aes.BlockSize,
  49  	keySize:  16,
  50  	newBlock: aes.NewCipher,
  51  	oid:      oidAES128GCM,
  52  }
  53  
  54  // AES192CBC is the 192-bit key AES cipher in CBC mode.
  55  var AES192CBC = cipherWithBlock{
  56  	ivSize:   aes.BlockSize,
  57  	keySize:  24,
  58  	newBlock: aes.NewCipher,
  59  	oid:      oidAES192CBC,
  60  }
  61  
  62  // AES192GCM is the 912-bit key AES cipher in GCM mode.
  63  var AES192GCM = cipherWithBlock{
  64  	ivSize:   aes.BlockSize,
  65  	keySize:  24,
  66  	newBlock: aes.NewCipher,
  67  	oid:      oidAES192GCM,
  68  }
  69  
  70  // AES256CBC is the 256-bit key AES cipher in CBC mode.
  71  var AES256CBC = cipherWithBlock{
  72  	ivSize:   aes.BlockSize,
  73  	keySize:  32,
  74  	newBlock: aes.NewCipher,
  75  	oid:      oidAES256CBC,
  76  }
  77  
  78  // AES256GCM is the 256-bit key AES cipher in GCM mode.
  79  var AES256GCM = cipherWithBlock{
  80  	ivSize:   aes.BlockSize,
  81  	keySize:  32,
  82  	newBlock: aes.NewCipher,
  83  	oid:      oidAES256GCM,
  84  }
  85