Enum nostr_types::KeySecurity

source ·
#[repr(u8)]
pub enum KeySecurity { Weak = 0, Medium = 1, NotTracked = 2, }
Expand description

This indicates the security of the key by keeping track of whether the secret key material was handled carefully. If the secret is exposed in any way, or leaked and the memory not zeroed, the key security drops to Weak.

This is a Best Effort tag. There are ways to leak the key and still have this tag claim the key is Medium security. So Medium really means it might not have leaked, whereas Weak means we know that it definately did leak.

We offer no Strong security via the PrivateKey structure. If we support hardware tokens in the future, it will probably be via a different structure.

Variants§

§

Weak = 0

This means that the key was exposed in a way such that this library cannot ensure it’s secrecy, usually either by being exported as a hex string, or by being imported from the same. Often in these cases it is displayed on the screen or left in the cut buffer or in freed memory that was not subsequently zeroed.

§

Medium = 1

This means that the key might not have been directly exposed. But it still might have as there are numerous ways you can leak it such as exporting it and then decrypting the exported key, using unsafe rust, transmuting it into a different type that doesn’t protect it, or using a privileged process to scan memory. Additionally, more advanced techniques can get at your key such as hardware attacks like spectre, rowhammer, and power analysis.

§

NotTracked = 2

Not tracked

Trait Implementations§

source§

impl Clone for KeySecurity

source§

fn clone(&self) -> KeySecurity

Returns a copy 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 KeySecurity

source§

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

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

impl Hash for KeySecurity

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for KeySecurity

source§

fn eq(&self, other: &KeySecurity) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl TryFrom<u8> for KeySecurity

§

type Error = Error

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

fn try_from(i: u8) -> Result<KeySecurity, Error>

Performs the conversion.
source§

impl Copy for KeySecurity

source§

impl Eq for KeySecurity

source§

impl StructuralPartialEq for KeySecurity

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> 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

§

type Output = T

Should always be Self
source§

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

§

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>,

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V