gmsm/pkcs/cipher_aes.go

97 lines
2.2 KiB
Go
Raw Normal View History

2023-03-09 11:45:39 +08:00
package pkcs
2022-06-17 10:59:23 +08:00
import (
"crypto/aes"
"encoding/asn1"
)
var (
oidAES128CBC = asn1.ObjectIdentifier{2, 16, 840, 1, 101, 3, 4, 1, 2}
oidAES128GCM = asn1.ObjectIdentifier{2, 16, 840, 1, 101, 3, 4, 1, 6}
oidAES192CBC = asn1.ObjectIdentifier{2, 16, 840, 1, 101, 3, 4, 1, 22}
oidAES192GCM = asn1.ObjectIdentifier{2, 16, 840, 1, 101, 3, 4, 1, 26}
oidAES256CBC = asn1.ObjectIdentifier{2, 16, 840, 1, 101, 3, 4, 1, 42}
oidAES256GCM = asn1.ObjectIdentifier{2, 16, 840, 1, 101, 3, 4, 1, 46}
)
func init() {
RegisterCipher(oidAES128CBC, func() Cipher {
2023-03-09 11:45:39 +08:00
return AES128CBC
2022-06-17 10:59:23 +08:00
})
RegisterCipher(oidAES128GCM, func() Cipher {
2023-03-09 11:45:39 +08:00
return AES128GCM
2022-06-17 10:59:23 +08:00
})
RegisterCipher(oidAES192CBC, func() Cipher {
2023-03-09 11:45:39 +08:00
return AES192CBC
2022-06-17 10:59:23 +08:00
})
RegisterCipher(oidAES192GCM, func() Cipher {
2023-03-09 11:45:39 +08:00
return AES192GCM
2022-06-17 10:59:23 +08:00
})
RegisterCipher(oidAES256CBC, func() Cipher {
2023-03-09 11:45:39 +08:00
return AES256CBC
2022-06-17 10:59:23 +08:00
})
RegisterCipher(oidAES256GCM, func() Cipher {
2023-03-09 11:45:39 +08:00
return AES256GCM
2022-06-17 10:59:23 +08:00
})
}
// AES128CBC is the 128-bit key AES cipher in CBC mode.
2023-03-09 11:45:39 +08:00
var AES128CBC = &cbcBlockCipher{
baseBlockCipher: baseBlockCipher{
keySize: 16,
newBlock: aes.NewCipher,
oid: oidAES128CBC,
},
ivSize: aes.BlockSize,
2022-06-17 10:59:23 +08:00
}
// AES128GCM is the 128-bit key AES cipher in GCM mode.
2023-03-09 11:45:39 +08:00
var AES128GCM = &gcmBlockCipher{
baseBlockCipher: baseBlockCipher{
keySize: 16,
newBlock: aes.NewCipher,
oid: oidAES128GCM,
},
2022-06-17 10:59:23 +08:00
nonceSize: 12,
}
// AES192CBC is the 192-bit key AES cipher in CBC mode.
2023-03-09 11:45:39 +08:00
var AES192CBC = &cbcBlockCipher{
baseBlockCipher: baseBlockCipher{
keySize: 24,
newBlock: aes.NewCipher,
oid: oidAES192CBC,
},
2022-06-17 10:59:23 +08:00
ivSize: aes.BlockSize,
}
// AES192GCM is the 912-bit key AES cipher in GCM mode.
2023-03-09 11:45:39 +08:00
var AES192GCM = &gcmBlockCipher{
baseBlockCipher: baseBlockCipher{
keySize: 24,
newBlock: aes.NewCipher,
oid: oidAES192GCM,
},
2022-06-17 10:59:23 +08:00
nonceSize: 12,
}
// AES256CBC is the 256-bit key AES cipher in CBC mode.
2023-03-09 11:45:39 +08:00
var AES256CBC = &cbcBlockCipher{
baseBlockCipher: baseBlockCipher{
keySize: 32,
newBlock: aes.NewCipher,
oid: oidAES256CBC,
},
2022-06-17 10:59:23 +08:00
ivSize: aes.BlockSize,
}
// AES256GCM is the 256-bit key AES cipher in GCM mode.
2023-03-09 11:45:39 +08:00
var AES256GCM = &gcmBlockCipher{
baseBlockCipher: baseBlockCipher{
keySize: 32,
newBlock: aes.NewCipher,
oid: oidAES256GCM,
},
2022-06-17 10:59:23 +08:00
nonceSize: 12,
}