1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use crate::{Error, Result};
use crate::cryptography::AesSizes;
use kerberos_constants::etypes::{
AES128_CTS_HMAC_SHA1_96, AES256_CTS_HMAC_SHA1_96, RC4_HMAC,
};
use crate::{KerberosCipher, AesCipher, Rc4Cipher};
pub fn new_kerberos_cipher(etype: i32) -> Result<Box<dyn KerberosCipher>> {
match etype {
AES256_CTS_HMAC_SHA1_96 => {
return Ok(Box::new(AesCipher::new(AesSizes::Aes256)));
}
AES128_CTS_HMAC_SHA1_96 => {
return Ok(Box::new(AesCipher::new(AesSizes::Aes128)));
}
RC4_HMAC => {
return Ok(Box::new(Rc4Cipher::new()));
}
_ => {
return Err(Error::UnsupportedAlgorithm(etype))?;
}
}
}