[][src]Struct mumble_protocol::crypt::CryptState

pub struct CryptState<EncodeDst: VoicePacketDst, DecodeDst: VoicePacketDst> { /* fields omitted */ }

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]

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]

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

impl<EncodeDst: VoicePacketDst, DecodeDst: VoicePacketDst> Encoder<VoicePacket<EncodeDst>> for CryptState<EncodeDst, DecodeDst>[src]

type Error = Error

The type of encoding errors. Read more

Auto Trait Implementations

impl<EncodeDst, DecodeDst> RefUnwindSafe for CryptState<EncodeDst, DecodeDst> where
    DecodeDst: RefUnwindSafe,
    EncodeDst: RefUnwindSafe
[src]

impl<EncodeDst, DecodeDst> Send for CryptState<EncodeDst, DecodeDst> where
    DecodeDst: Send,
    EncodeDst: Send
[src]

impl<EncodeDst, DecodeDst> Sync for CryptState<EncodeDst, DecodeDst> where
    DecodeDst: Sync,
    EncodeDst: Sync
[src]

impl<EncodeDst, DecodeDst> Unpin for CryptState<EncodeDst, DecodeDst> where
    DecodeDst: Unpin,
    EncodeDst: Unpin
[src]

impl<EncodeDst, DecodeDst> UnwindSafe for CryptState<EncodeDst, DecodeDst> where
    DecodeDst: UnwindSafe,
    EncodeDst: UnwindSafe
[src]

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.