[−][src]Enum kerberos_crypto::Key
Encapsules the possible keys used by this Kerberos implementation. Each key can be used by a different cryptographic algorithm.
Variants
Secret(String)
The secret of the user. This is the most versatile key, since can it can be use to derive the rest of the keys, and therefore, being used by any cryptographic algorithm.
RC4 key used by RC4-HMAC algorithm. In Windows, this is the NTLM hash of the user password.
AES key used by AES128-CTS-HMAC-SHA1-96 algorithm.
AES key used by AES256-CTS-HMAC-SHA1-96 algorithm.
Implementations
impl Key
[src]
pub fn random(etype: i32) -> Result<Self>
[src]
pub fn etypes(&self) -> Vec<i32>
[src]
Return the etypes associated with the type of key.
Examples
use kerberos_crypto::*; use kerberos_constants::etypes::*; assert_eq!( vec![AES256_CTS_HMAC_SHA1_96, AES128_CTS_HMAC_SHA1_96, RC4_HMAC], Key::Secret("".to_string()).etypes() ); assert_eq!(vec![RC4_HMAC], Key::RC4Key([0; RC4_KEY_SIZE]).etypes()); assert_eq!( vec![AES128_CTS_HMAC_SHA1_96], Key::AES128Key([0; AES128_KEY_SIZE]).etypes() ); assert_eq!( vec![AES256_CTS_HMAC_SHA1_96], Key::AES256Key([0; AES256_KEY_SIZE]).etypes() );
pub fn as_bytes(&self) -> &[u8]
[src]
Retrieve the key as an array of bytes.
Examples
use kerberos_crypto::*; assert_eq!(&[0x73, 0x65, 0x63, 0x72, 0x65, 0x74], Key::Secret("secret".to_string()).as_bytes()); assert_eq!(&[0; RC4_KEY_SIZE], Key::RC4Key([0; RC4_KEY_SIZE]).as_bytes()); assert_eq!(&[0; AES128_KEY_SIZE], Key::AES128Key([0; AES128_KEY_SIZE]).as_bytes()); assert_eq!(&[0; AES256_KEY_SIZE], Key::AES256Key([0; AES256_KEY_SIZE]).as_bytes());
pub fn from_rc4_key_string(hex_str: &str) -> Result<Self>
[src]
Get a RC4 key from a hexdump.
Example
use kerberos_crypto::Key; assert_eq!( Key::RC4Key([0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]), Key::from_rc4_key_string("0123456789ABCDEF0123456789abcdef").unwrap() );
Errors
An error if raised if the argument string has any non hexadecimal character or size is different from 32.
pub fn from_aes_128_key_string(hex_str: &str) -> Result<Self>
[src]
Get a AES-128 key from a hexdump.
Example
use kerberos_crypto::Key; assert_eq!( Key::AES128Key([0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]), Key::from_aes_128_key_string("0123456789ABCDEF0123456789abcdef").unwrap() );
Errors
An error if raised if the argument string has any non hexadecimal character or size is different from 32.
pub fn from_aes_256_key_string(hex_str: &str) -> Result<Self>
[src]
Get a AES-256 key from a hexdump.
Example
use kerberos_crypto::Key; assert_eq!( Key::AES256Key([ 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef ]), Key::from_aes_256_key_string("0123456789ABCDEF0123456789abcdef0123456789ABCDEF0123456789abcdef").unwrap() );
Errors
An error if raised if the argument string has any non hexadecimal character or size is different from 64.
Trait Implementations
impl Clone for Key
[src]
impl Debug for Key
[src]
impl PartialEq<Key> for Key
[src]
impl StructuralPartialEq for Key
[src]
Auto Trait Implementations
impl RefUnwindSafe for Key
[src]
impl Send for Key
[src]
impl Sync for Key
[src]
impl Unpin for Key
[src]
impl UnwindSafe for Key
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> Same<T> for T
type Output = T
Should always be Self
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,