[−][src]Struct mumble_protocol::crypt::CryptState
Implements OCB2-AES128 for encryption and authentication of the voice packets when transmitted over UDP. Also provides statistics about good, late and lost packets.
Implements a Codec
which parses a stream of encrypted data chunks into VoicePackets.
Note that OCB is covered by patents, however a license has been granted for use in "most" software. See: http://web.cs.ucdavis.edu/~rogaway/ocb/license.htm
Based on https://github.com/mumble-voip/mumble/blob/e31d267a11b4ed0597ad41309a7f6b715837141f/src/CryptState.cpp
Implementations
impl<EncodeDst: VoicePacketDst, DecodeDst: VoicePacketDst> CryptState<EncodeDst, DecodeDst>
[src]
pub fn generate_new() -> Self
[src]
Creates a new CryptState with randomly generated key and initial encrypt- and decrypt-nonce.
pub fn new_from(
key: [u8; 16],
encrypt_nonce: [u8; 16],
decrypt_nonce: [u8; 16]
) -> Self
[src]
key: [u8; 16],
encrypt_nonce: [u8; 16],
decrypt_nonce: [u8; 16]
) -> Self
Creates a new CryptState from previously generated key, encrypt- and decrypt-nonce.
pub fn get_good(&self) -> u32
[src]
Returns the amount of packets transmitted without issues.
pub fn get_late(&self) -> u32
[src]
Returns the amount of packets which were transmitted successfully but arrived late.
pub fn get_lost(&self) -> u32
[src]
Returns the amount of packets which were lost.
pub fn get_key(&self) -> &[u8; 16]
[src]
Returns the shared, private key.
pub fn get_encrypt_nonce(&self) -> [u8; 16]
[src]
Returns the nonce used for encrypting.
pub fn get_decrypt_nonce(&self) -> [u8; 16]
[src]
Returns the nonce used for decrypting.
pub fn set_decrypt_nonce(&mut self, nonce: &[u8; 16])
[src]
Updates the nonce used for decrypting.
pub fn encrypt(&mut self, packet: VoicePacket<EncodeDst>, dst: &mut BytesMut)
[src]
Encrypts an encoded voice packet and returns the resulting bytes.
pub fn decrypt(
&mut self,
buf: &mut BytesMut
) -> Result<Result<VoicePacket<DecodeDst>, Error>, DecryptError>
[src]
&mut self,
buf: &mut BytesMut
) -> Result<Result<VoicePacket<DecodeDst>, Error>, DecryptError>
Decrypts a voice packet and (if successful) returns the Result
of parsing the packet.
Trait Implementations
impl<EncodeDst: VoicePacketDst, DecodeDst: VoicePacketDst> Decoder for CryptState<EncodeDst, DecodeDst>
[src]
type Item = VoicePacket<DecodeDst>
The type of decoded frames.
type Error = Error
The type of unrecoverable frame decoding errors. Read more
pub fn decode(
&mut self,
buf_mut: &mut BytesMut
) -> Result<Option<Self::Item>, Self::Error>
[src]
&mut self,
buf_mut: &mut BytesMut
) -> Result<Option<Self::Item>, Self::Error>
pub fn decode_eof(
&mut self,
buf: &mut BytesMut
) -> Result<Option<Self::Item>, Self::Error>
[src]
&mut self,
buf: &mut BytesMut
) -> Result<Option<Self::Item>, Self::Error>
pub fn framed<T>(self, io: T) -> Framed<T, Self> where
T: AsyncRead + AsyncWrite,
[src]
T: AsyncRead + AsyncWrite,
impl<EncodeDst: VoicePacketDst, DecodeDst: VoicePacketDst> Encoder<VoicePacket<EncodeDst>> for CryptState<EncodeDst, DecodeDst>
[src]
Auto Trait Implementations
impl<EncodeDst, DecodeDst> RefUnwindSafe for CryptState<EncodeDst, DecodeDst> where
DecodeDst: RefUnwindSafe,
EncodeDst: RefUnwindSafe,
[src]
DecodeDst: RefUnwindSafe,
EncodeDst: RefUnwindSafe,
impl<EncodeDst, DecodeDst> Send for CryptState<EncodeDst, DecodeDst> where
DecodeDst: Send,
EncodeDst: Send,
[src]
DecodeDst: Send,
EncodeDst: Send,
impl<EncodeDst, DecodeDst> Sync for CryptState<EncodeDst, DecodeDst> where
DecodeDst: Sync,
EncodeDst: Sync,
[src]
DecodeDst: Sync,
EncodeDst: Sync,
impl<EncodeDst, DecodeDst> Unpin for CryptState<EncodeDst, DecodeDst> where
DecodeDst: Unpin,
EncodeDst: Unpin,
[src]
DecodeDst: Unpin,
EncodeDst: Unpin,
impl<EncodeDst, DecodeDst> UnwindSafe for CryptState<EncodeDst, DecodeDst> where
DecodeDst: UnwindSafe,
EncodeDst: UnwindSafe,
[src]
DecodeDst: UnwindSafe,
EncodeDst: UnwindSafe,
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, 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>,