pub struct GuardedSigner { /* private fields */ }Expand description
A signer backed by the MY_SECRET_KEY vault.
The secret key is never stored in this struct — it’s fetched from the GuardedKey vault on every operation and zeroized immediately after use.
Implementations§
Source§impl GuardedSigner
impl GuardedSigner
pub fn new(public_key: PublicKey) -> Self
Sourcepub fn unwrap_gift_wrap(gift_wrap: &Event) -> Result<UnwrappedGift, SignerError>
pub fn unwrap_gift_wrap(gift_wrap: &Event) -> Result<UnwrappedGift, SignerError>
NIP-59 unwrap under one vault read; see Self::unwrap_batch.
Sourcepub fn unwrap_batch(wraps: &[&Event]) -> Vec<Result<UnwrappedGift, SignerError>>
pub fn unwrap_batch(wraps: &[&Event]) -> Vec<Result<UnwrappedGift, SignerError>>
NIP-59 unwrap of many wraps under one vault read, one result per wrap in order.
Checks what nostr’s from_gift_wrap checks, but opens every layer before verifying
any seal, so the key lives only for the NIP-44 opens and never across a signature
check. Opening an unverified seal is safe: its content authenticates under ECDH with
its claimed author, and nothing from it is trusted until that author’s signature
verifies.
A sender’s conversation key is derived once per batch and wiped with the secret key.
No identity check against my_public_key: a vault key that isn’t the identity can
only open wraps sealed to itself, which then authenticate their sender like any
DM. Signing keeps active_signer’s fail-closed check.
Trait Implementations§
Source§impl AsyncGetPublicKey for GuardedSigner
impl AsyncGetPublicKey for GuardedSigner
Source§type Error = SignerError
type Error = SignerError
Source§fn get_public_key_async(
&self,
) -> BoxedFuture<'_, Result<PublicKey, Self::Error>>
fn get_public_key_async( &self, ) -> BoxedFuture<'_, Result<PublicKey, Self::Error>>
Source§impl AsyncNip04 for GuardedSigner
impl AsyncNip04 for GuardedSigner
Source§type Error = SignerError
type Error = SignerError
Source§fn nip04_encrypt_async<'a>(
&'a self,
public_key: &'a PublicKey,
content: &'a str,
) -> BoxedFuture<'a, Result<String, Self::Error>>
fn nip04_encrypt_async<'a>( &'a self, public_key: &'a PublicKey, content: &'a str, ) -> BoxedFuture<'a, Result<String, Self::Error>>
Source§fn nip04_decrypt_async<'a>(
&'a self,
public_key: &'a PublicKey,
encrypted_content: &'a str,
) -> BoxedFuture<'a, Result<String, Self::Error>>
fn nip04_decrypt_async<'a>( &'a self, public_key: &'a PublicKey, encrypted_content: &'a str, ) -> BoxedFuture<'a, Result<String, Self::Error>>
Source§impl AsyncNip44 for GuardedSigner
impl AsyncNip44 for GuardedSigner
Source§type Error = SignerError
type Error = SignerError
Source§fn nip44_encrypt_async<'a>(
&'a self,
public_key: &'a PublicKey,
content: &'a str,
) -> BoxedFuture<'a, Result<String, Self::Error>>
fn nip44_encrypt_async<'a>( &'a self, public_key: &'a PublicKey, content: &'a str, ) -> BoxedFuture<'a, Result<String, Self::Error>>
Source§fn nip44_decrypt_async<'a>(
&'a self,
public_key: &'a PublicKey,
payload: &'a str,
) -> BoxedFuture<'a, Result<String, Self::Error>>
fn nip44_decrypt_async<'a>( &'a self, public_key: &'a PublicKey, payload: &'a str, ) -> BoxedFuture<'a, Result<String, Self::Error>>
Source§impl AsyncSignEvent for GuardedSigner
impl AsyncSignEvent for GuardedSigner
Source§type Error = SignerError
type Error = SignerError
Source§fn sign_event_async(
&self,
unsigned: UnsignedEvent,
) -> BoxedFuture<'_, Result<Event, Self::Error>>
fn sign_event_async( &self, unsigned: UnsignedEvent, ) -> BoxedFuture<'_, Result<Event, Self::Error>>
Source§impl Clone for GuardedSigner
impl Clone for GuardedSigner
Source§impl Debug for GuardedSigner
impl Debug for GuardedSigner
Source§impl GetPublicKey for GuardedSigner
impl GetPublicKey for GuardedSigner
Source§type Error = SignerError
type Error = SignerError
Source§impl Nip04 for GuardedSigner
impl Nip04 for GuardedSigner
Source§impl Nip44 for GuardedSigner
impl Nip44 for GuardedSigner
Source§impl SignEvent for GuardedSigner
impl SignEvent for GuardedSigner
Source§type Error = SignerError
type Error = SignerError
Source§fn sign_event(&self, unsigned: UnsignedEvent) -> Result<Event, Self::Error>
fn sign_event(&self, unsigned: UnsignedEvent) -> Result<Event, Self::Error>
Auto Trait Implementations§
impl Freeze for GuardedSigner
impl RefUnwindSafe for GuardedSigner
impl Send for GuardedSigner
impl Sync for GuardedSigner
impl Unpin for GuardedSigner
impl UnsafeUnpin for GuardedSigner
impl UnwindSafe for GuardedSigner
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more