blob: 46a0d748fb76f30d4f0484807152248a032a0aad [file] [log] [blame]
// Package etypeID provides Kerberos 5 encryption type assigned numbers.
package etypeID
// Kerberos encryption type assigned numbers.
const (
//RESERVED : 0
DES_CBC_CRC int32 = 1
DES_CBC_MD4 int32 = 2
DES_CBC_MD5 int32 = 3
DES_CBC_RAW int32 = 4
DES3_CBC_MD5 int32 = 5
DES3_CBC_RAW int32 = 6
DES3_CBC_SHA1 int32 = 7
DES_HMAC_SHA1 int32 = 8
DSAWITHSHA1_CMSOID int32 = 9
MD5WITHRSAENCRYPTION_CMSOID int32 = 10
SHA1WITHRSAENCRYPTION_CMSOID int32 = 11
RC2CBC_ENVOID int32 = 12
RSAENCRYPTION_ENVOID int32 = 13
RSAES_OAEP_ENV_OID int32 = 14
DES_EDE3_CBC_ENV_OID int32 = 15
DES3_CBC_SHA1_KD int32 = 16
AES128_CTS_HMAC_SHA1_96 int32 = 17
AES256_CTS_HMAC_SHA1_96 int32 = 18
AES128_CTS_HMAC_SHA256_128 int32 = 19
AES256_CTS_HMAC_SHA384_192 int32 = 20
//UNASSIGNED : 21-22
RC4_HMAC int32 = 23
RC4_HMAC_EXP int32 = 24
CAMELLIA128_CTS_CMAC int32 = 25
CAMELLIA256_CTS_CMAC int32 = 26
//UNASSIGNED : 27-64
SUBKEY_KEYMATERIAL int32 = 65
//UNASSIGNED : 66-2147483647
)
// ETypesByName is a map of EncType names to their assigned EncType number.
var ETypesByName = map[string]int32{
"des-cbc-crc": DES_CBC_CRC,
"des-cbc-md4": DES_CBC_MD4,
"des-cbc-md5": DES_CBC_MD5,
"des-cbc-raw": DES_CBC_RAW,
"des3-cbc-md5": DES3_CBC_MD5,
"des3-cbc-raw": DES3_CBC_RAW,
"des3-cbc-sha1": DES3_CBC_SHA1,
"des3-hmac-sha1": DES_HMAC_SHA1,
"des3-cbc-sha1-kd": DES3_CBC_SHA1_KD,
"des-hmac-sha1": DES_HMAC_SHA1,
"dsaWithSHA1-CmsOID": DSAWITHSHA1_CMSOID,
"md5WithRSAEncryption-CmsOID": MD5WITHRSAENCRYPTION_CMSOID,
"sha1WithRSAEncryption-CmsOID": SHA1WITHRSAENCRYPTION_CMSOID,
"rc2CBC-EnvOID": RC2CBC_ENVOID,
"rsaEncryption-EnvOID": RSAENCRYPTION_ENVOID,
"rsaES-OAEP-ENV-OID": RSAES_OAEP_ENV_OID,
"des-ede3-cbc-Env-OID": DES_EDE3_CBC_ENV_OID,
"aes128-cts-hmac-sha1-96": AES128_CTS_HMAC_SHA1_96,
"aes128-cts": AES128_CTS_HMAC_SHA1_96,
"aes128-sha1": AES128_CTS_HMAC_SHA1_96,
"aes256-cts-hmac-sha1-96": AES256_CTS_HMAC_SHA1_96,
"aes256-cts": AES256_CTS_HMAC_SHA1_96,
"aes256-sha1": AES256_CTS_HMAC_SHA1_96,
"aes128-cts-hmac-sha256-128": AES128_CTS_HMAC_SHA256_128,
"aes128-sha2": AES128_CTS_HMAC_SHA256_128,
"aes256-cts-hmac-sha384-192": AES256_CTS_HMAC_SHA384_192,
"aes256-sha2": AES256_CTS_HMAC_SHA384_192,
"arcfour-hmac": RC4_HMAC,
"rc4-hmac": RC4_HMAC,
"arcfour-hmac-md5": RC4_HMAC,
"arcfour-hmac-exp": RC4_HMAC_EXP,
"rc4-hmac-exp": RC4_HMAC_EXP,
"arcfour-hmac-md5-exp": RC4_HMAC_EXP,
"camellia128-cts-cmac": CAMELLIA128_CTS_CMAC,
"camellia128-cts": CAMELLIA128_CTS_CMAC,
"camellia256-cts-cmac": CAMELLIA256_CTS_CMAC,
"camellia256-cts": CAMELLIA256_CTS_CMAC,
"subkey-keymaterial": SUBKEY_KEYMATERIAL,
}
// EtypeSupported resolves the etype name string to the etype ID.
// If zero is returned the etype is not supported by gokrb5.
func EtypeSupported(etype string) int32 {
// Slice of supported enctype IDs
s := []int32{
AES128_CTS_HMAC_SHA1_96,
AES256_CTS_HMAC_SHA1_96,
AES128_CTS_HMAC_SHA256_128,
AES256_CTS_HMAC_SHA384_192,
DES3_CBC_SHA1_KD,
RC4_HMAC,
}
id := ETypesByName[etype]
if id == 0 {
return id
}
for _, sid := range s {
if id == sid {
return id
}
}
return 0
}