MasterKey

Struct MasterKey 

Source
pub struct MasterKey { /* private fields */ }
Expand description

A stream master key

Composed of the key, salt, an optional MKI and key life time

Implementations§

Source§

impl MasterKey

Source

pub fn new(key: &[u8], salt: &[u8], mki: &Option<Vec<u8>>) -> Self

create a stream master key

The key is created with default lifetime (2^48 for RTP, 2^31 for RTCP) and default soft limits (2^16 for both RTP and RTCP)

§Arguments
  • key: the master key
  • salt: the master salt, this field can be an empty slice, in that case the master salt is considered all 0.
  • mki: optionnal master key id - see RFC 3711 - section 3.1
Source

pub fn set_keys_lifetime( &mut self, rtp: u64, rtp_limit: u64, rtcp: u32, rtcp_limit: u32, ) -> Result<(), SrtpError>

Set the session keys lifetime and soft limit

§Arguments
  • rtp : number of lives a session key gets on RTP stream. Must be <= 2^48
  • rtp_limit : when the lives left is under this limit, raise an alert. Must be < rtp
  • rtcp : number of lives a session key gets on RTCP stream. Must be <= 2^31
  • rtcp_limit : when the lives left is under this limit, raise an alert. Must be < rtcp
§Returns one of:
  • Ok
  • InvalidProfile when the arguments don’t match the requirements
§Notes
  • When a master key is used by several streams (from a stream template):

    • Each one will start with the same lifetime.
    • The lifetime countdown is not shared on the master key but on each stream.
    • When a stream reaches it’s end of life, all the other streams derived from the master key are killed.
  • When a stream reaches the end of one of its key(RTP/RTCP) lifetime, it is disabled for both types.

  • For streams using mki, when the soft or hard limit is reached it applies to one master key, the stream can keep going using others mki after one is dead.

Trait Implementations§

Source§

impl Clone for MasterKey

Source§

fn clone(&self) -> MasterKey

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MasterKey

Debug redacting secret key

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for MasterKey

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Zeroize for MasterKey

Source§

fn zeroize(&mut self)

Zero out this object from memory using Rust intrinsics which ensure the zeroization operation is not “optimized away” by the compiler.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.