Struct nostr_types::PrivateKey

source ·
pub struct PrivateKey(/* private fields */);
Expand description

This is a private key which is to be kept secret and is used to prove identity

Implementations§

source§

impl PrivateKey

source

pub fn export_encrypted( &self, password: &str, log2_rounds: u8 ) -> Result<EncryptedPrivateKey, Error>

Export in a (non-portable) encrypted form. This does not downgrade the security of the key, but you are responsible to keep it encrypted. You should not attempt to decrypt it, only use import_encrypted() on it, or something similar in another library/client which also respects key security.

This currently exports into EncryptedPrivateKey version 2.

We recommend you zeroize() the password you pass in after you are done with it.

source

pub fn import_encrypted( encrypted: &EncryptedPrivateKey, password: &str ) -> Result<PrivateKey, Error>

Import an encrypted private key which was exported with export_encrypted().

We recommend you zeroize() the password you pass in after you are done with it.

This is backwards-compatible with keys that were exported with older code.

source§

impl PrivateKey

source

pub fn shared_secret( &self, other: &PublicKey, algo: ContentEncryptionAlgorithm ) -> [u8; 32]

Get the shared secret

source

pub fn encrypt( &self, other: &PublicKey, plaintext: &str, algo: ContentEncryptionAlgorithm ) -> Result<String, Error>

Encrypt

source

pub fn decrypt( &self, other: &PublicKey, ciphertext: &str ) -> Result<String, Error>

Decrypt (detects encryption version)

source

pub fn decrypt_nip04( &self, other: &PublicKey, ciphertext: &str ) -> Result<Vec<u8>, Error>

Decrypt NIP-04 only

source

pub fn decrypt_nip44( &self, other: &PublicKey, ciphertext: &str ) -> Result<String, Error>

Decrypt NIP-44 only, version is detected

source§

impl PrivateKey

source

pub fn new() -> PrivateKey

Generate a new PrivateKey (which can be used to get the PublicKey)

source

pub fn generate() -> PrivateKey

Generate a new PrivateKey (which can be used to get the PublicKey)

source

pub fn public_key(&self) -> PublicKey

Get the PublicKey matching this PrivateKey

source

pub fn key_security(&self) -> KeySecurity

Get the security level of the private key

source

pub fn as_hex_string(&mut self) -> String

Render into a hexadecimal string

WARNING: This weakens the security of your key. Your key will be marked with KeySecurity::Weak if you execute this.

source

pub fn try_from_hex_string(v: &str) -> Result<PrivateKey, Error>

Create from a hexadecimal string

This creates a key with KeySecurity::Weak. Use generate() or import_encrypted() for KeySecurity::Medium

source

pub fn as_bech32_string(&mut self) -> String

Export as a bech32 encoded string

WARNING: This weakens the security of your key. Your key will be marked with KeySecurity::Weak if you execute this.

source

pub fn try_from_bech32_string(s: &str) -> Result<PrivateKey, Error>

Import from a bech32 encoded string

This creates a key with KeySecurity::Weak. Use generate() or import_encrypted() for KeySecurity::Medium

source

pub fn as_secret_key(&self) -> SecretKey

As a secp256k1::SecretKey

source

pub fn sign_id(&self, id: Id) -> Result<Signature, Error>

Sign a 32-bit hash

source

pub fn sign(&self, message: &[u8]) -> Result<Signature, Error>

Sign a message (this hashes with SHA-256 first internally)

Trait Implementations§

source§

impl Default for PrivateKey

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl Drop for PrivateKey

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

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