Struct jwt_compact::alg::StrongAlg
source · pub struct StrongAlg<T>(pub T);
Expand description
Wrapper around a JWT algorithm signalling that it supports only StrongKey
s.
The wrapper will implement Algorithm
if the wrapped value is an Algorithm
with both
signing and verifying keys convertible to StrongKey
s.
§Examples
let weak_key = Hs256Key::new(b"too short!");
assert!(StrongKey::try_from(weak_key).is_err());
// There is no way to create a `StrongKey` from `weak_key`!
let strong_key: StrongKey<_> = Hs256Key::generate(&mut thread_rng());
let claims = // ...
let token = StrongAlg(Hs256)
.token(&Header::empty(), &claims, &strong_key)?;
Tuple Fields§
§0: T
Trait Implementations§
source§impl<T: Algorithm> Algorithm for StrongAlg<T>where
StrongKey<T::SigningKey>: TryFrom<T::SigningKey>,
StrongKey<T::VerifyingKey>: TryFrom<T::VerifyingKey>,
impl<T: Algorithm> Algorithm for StrongAlg<T>where
StrongKey<T::SigningKey>: TryFrom<T::SigningKey>,
StrongKey<T::VerifyingKey>: TryFrom<T::VerifyingKey>,
§type SigningKey = StrongKey<<T as Algorithm>::SigningKey>
type SigningKey = StrongKey<<T as Algorithm>::SigningKey>
Key used when issuing new tokens.
§type VerifyingKey = StrongKey<<T as Algorithm>::VerifyingKey>
type VerifyingKey = StrongKey<<T as Algorithm>::VerifyingKey>
Key used when verifying tokens. May coincide with
Self::SigningKey
for symmetric
algorithms (e.g., HS*
).source§fn name(&self) -> Cow<'static, str>
fn name(&self) -> Cow<'static, str>
Returns the name of this algorithm, as mentioned in the
alg
field of the JWT header.source§fn sign(
&self,
signing_key: &Self::SigningKey,
message: &[u8],
) -> Self::Signature
fn sign( &self, signing_key: &Self::SigningKey, message: &[u8], ) -> Self::Signature
Signs a
message
with the signing_key
.source§fn verify_signature(
&self,
signature: &Self::Signature,
verifying_key: &Self::VerifyingKey,
message: &[u8],
) -> bool
fn verify_signature( &self, signature: &Self::Signature, verifying_key: &Self::VerifyingKey, message: &[u8], ) -> bool
Verifies the
message
against the signature
and verifying_key
.impl<T: Copy> Copy for StrongAlg<T>
Auto Trait Implementations§
impl<T> Freeze for StrongAlg<T>where
T: Freeze,
impl<T> RefUnwindSafe for StrongAlg<T>where
T: RefUnwindSafe,
impl<T> Send for StrongAlg<T>where
T: Send,
impl<T> Sync for StrongAlg<T>where
T: Sync,
impl<T> Unpin for StrongAlg<T>where
T: Unpin,
impl<T> UnwindSafe for StrongAlg<T>where
T: UnwindSafe,
Blanket Implementations§
source§impl<A> AlgorithmExt for Awhere
A: Algorithm,
impl<A> AlgorithmExt for Awhere
A: Algorithm,
source§fn token<T>(
&self,
header: &Header<impl Serialize>,
claims: &Claims<T>,
signing_key: &<A as Algorithm>::SigningKey,
) -> Result<String, CreationError>where
T: Serialize,
fn token<T>(
&self,
header: &Header<impl Serialize>,
claims: &Claims<T>,
signing_key: &<A as Algorithm>::SigningKey,
) -> Result<String, CreationError>where
T: Serialize,
Creates a new token and serializes it to string.
source§fn compact_token<T>(
&self,
header: &Header<impl Serialize>,
claims: &Claims<T>,
signing_key: &<A as Algorithm>::SigningKey,
) -> Result<String, CreationError>where
T: Serialize,
fn compact_token<T>(
&self,
header: &Header<impl Serialize>,
claims: &Claims<T>,
signing_key: &<A as Algorithm>::SigningKey,
) -> Result<String, CreationError>where
T: Serialize,
Available on crate feature
ciborium
only.Creates a new token with CBOR-encoded claims and serializes it to string.
source§fn validator<'a, T>(
&'a self,
verifying_key: &'a <A as Algorithm>::VerifyingKey,
) -> Validator<'a, A, T>
fn validator<'a, T>( &'a self, verifying_key: &'a <A as Algorithm>::VerifyingKey, ) -> Validator<'a, A, T>
Creates a JWT validator for the specified verifying key and the claims type.
The validator can then be used to validate integrity of one or more tokens.
source§fn validate_integrity<T>(
&self,
token: &UntrustedToken<'_>,
verifying_key: &<A as Algorithm>::VerifyingKey,
) -> Result<Token<T>, ValidationError>where
T: DeserializeOwned,
fn validate_integrity<T>(
&self,
token: &UntrustedToken<'_>,
verifying_key: &<A as Algorithm>::VerifyingKey,
) -> Result<Token<T>, ValidationError>where
T: DeserializeOwned,
👎Deprecated: Use
.validator().validate()
for added flexibilityValidates the token integrity against the provided
verifying_key
.source§fn validate_for_signed_token<T>(
&self,
token: &UntrustedToken<'_>,
verifying_key: &<A as Algorithm>::VerifyingKey,
) -> Result<SignedToken<A, T>, ValidationError>where
T: DeserializeOwned,
fn validate_for_signed_token<T>(
&self,
token: &UntrustedToken<'_>,
verifying_key: &<A as Algorithm>::VerifyingKey,
) -> Result<SignedToken<A, T>, ValidationError>where
T: DeserializeOwned,
👎Deprecated: Use
.validator().validate_for_signed_token()
for added flexibilityValidates the token integrity against the provided
verifying_key
. Read moresource§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
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Copy,
impl<T> CloneToUninit for Twhere
T: Copy,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)