[][src]Struct sequoia_openpgp::packet::key::Key4

pub struct Key4<P, R> where
    P: KeyParts,
    R: KeyRole
{ /* fields omitted */ }

Holds a public key, public subkey, private key or private subkey packet.

Use Key4::generate_rsa or Key4::generate_ecc to create a new key.

Existing key material can be turned into an OpenPGP key using Key4::with_secret, Key4::import_public_cv25519, Key4::import_public_ed25519, Key4::import_public_rsa, Key4::import_secret_cv25519, Key4::import_secret_ed25519, and Key4::import_secret_rsa.

Whether you create a new key or import existing key material, you still need to create a binding signature, and, for signing keys, a back signature before integrating the key into a certificate.

Normally, you won't directly use Key4, but Key, which is a relatively thin wrapper around Key4.

See Section 5.5 of RFC 4880 and the documentation for Key for more details.

Methods

impl<R> Key4<SecretParts, R> where
    R: KeyRole
[src]

pub fn import_secret_cv25519<H, S, T>(
    private_key: &[u8],
    hash: H,
    sym: S,
    ctime: T
) -> Result<Self> where
    H: Into<Option<HashAlgorithm>>,
    S: Into<Option<SymmetricAlgorithm>>,
    T: Into<Option<SystemTime>>, 
[src]

Creates a new OpenPGP secret key packet for an existing X25519 key.

The ECDH key will use hash algorithm hash and symmetric algorithm sym. If one or both are None secure defaults will be used. The key will have it's creation date set to ctime or the current time if None is given.

pub fn import_secret_ed25519<T>(private_key: &[u8], ctime: T) -> Result<Self> where
    T: Into<Option<SystemTime>>, 
[src]

Creates a new OpenPGP secret key packet for an existing Ed25519 key.

The ECDH key will use hash algorithm hash and symmetric algorithm sym. If one or both are None secure defaults will be used. The key will have it's creation date set to ctime or the current time if None is given.

pub fn import_secret_rsa<T>(
    d: &[u8],
    p: &[u8],
    q: &[u8],
    ctime: T
) -> Result<Self> where
    T: Into<Option<SystemTime>>, 
[src]

Creates a new OpenPGP public key packet for an existing RSA key.

The RSA key will use public exponent e and modulo n. The key will have it's creation date set to ctime or the current time if None is given.

pub fn generate_rsa(bits: usize) -> Result<Self>[src]

Generates a new RSA key with a public modulos of size bits.

pub fn generate_ecc(for_signing: bool, curve: Curve) -> Result<Self>[src]

Generates a new ECC key over curve.

If for_signing is false a ECDH key, if it's true either a EdDSA or ECDSA key is generated. Giving for_signing == true and curve == Cv25519 will produce an error. Likewise for_signing == false and curve == Ed25519 will produce an error.

impl<P, R> Key4<P, R> where
    P: KeyParts,
    R: KeyRole
[src]

pub fn parts_into_public(self) -> Key4<PublicParts, R>[src]

Changes the key's parts tag to PublicParts.

pub fn parts_as_public(&self) -> &Key4<PublicParts, R>[src]

Changes the key's parts tag to PublicParts.

pub fn parts_into_secret(self) -> Result<Key4<SecretParts, R>>[src]

Changes the key's parts tag to SecretParts.

pub fn parts_as_secret(&self) -> Result<&Key4<SecretParts, R>>[src]

Changes the key's parts tag to SecretParts.

pub fn parts_into_unspecified(self) -> Key4<UnspecifiedParts, R>[src]

Changes the key's parts tag to UnspecifiedParts.

pub fn parts_as_unspecified(&self) -> &Key4<UnspecifiedParts, R>[src]

Changes the key's parts tag to UnspecifiedParts.

impl<P, R> Key4<P, R> where
    P: KeyParts,
    R: KeyRole
[src]

pub fn role_into_primary(self) -> Key4<P, PrimaryRole>[src]

Changes the key's role tag to PrimaryRole.

pub fn role_as_primary(&self) -> &Key4<P, PrimaryRole>[src]

Changes the key's role tag to PrimaryRole.

pub fn role_into_subordinate(self) -> Key4<P, SubordinateRole>[src]

Changes the key's role tag to SubordinateRole.

pub fn role_as_subordinate(&self) -> &Key4<P, SubordinateRole>[src]

Changes the key's role tag to SubordinateRole.

pub fn role_into_unspecified(self) -> Key4<P, UnspecifiedRole>[src]

Changes the key's role tag to UnspecifiedRole.

pub fn role_as_unspecified(&self) -> &Key4<P, UnspecifiedRole>[src]

Changes the key's role tag to UnspecifiedRole.

impl<P, R> Key4<P, R> where
    P: KeyParts,
    R: KeyRole
[src]

pub fn public_cmp<PB, RB>(&self, b: &Key4<PB, RB>) -> Ordering where
    PB: KeyParts,
    RB: KeyRole
[src]

Compares the public bits of two keys.

This returns Ordering::Equal if the public MPIs, creation time, and algorithm of the two Key4s match. This does not consider the packets' encodings, packets' tags or their secret key material.

pub fn public_eq<PB, RB>(&self, b: &Key4<PB, RB>) -> bool where
    PB: KeyParts,
    RB: KeyRole
[src]

Tests whether two keys are equal modulo their secret key material.

This returns true if the public MPIs, creation time and algorithm of the two Key4s match. This does not consider the packets' encodings, packets' tags or their secret key material.

impl<R> Key4<PublicParts, R> where
    R: KeyRole
[src]

pub fn new<T>(
    creation_time: T,
    pk_algo: PublicKeyAlgorithm,
    mpis: PublicKey
) -> Result<Self> where
    T: Into<SystemTime>, 
[src]

Creates an OpenPGP public key from the specified key material.

pub fn import_public_cv25519<H, S, T>(
    public_key: &[u8],
    hash: H,
    sym: S,
    ctime: T
) -> Result<Self> where
    H: Into<Option<HashAlgorithm>>,
    S: Into<Option<SymmetricAlgorithm>>,
    T: Into<Option<SystemTime>>, 
[src]

Creates an OpenPGP public key packet from existing X25519 key material.

The ECDH key will use hash algorithm hash and symmetric algorithm sym. If one or both are None secure defaults will be used. The key will have its creation date set to ctime or the current time if None is given.

pub fn import_public_ed25519<T>(public_key: &[u8], ctime: T) -> Result<Self> where
    T: Into<Option<SystemTime>>, 
[src]

Creates an OpenPGP public key packet from existing Ed25519 key material.

The ECDH key will use hash algorithm hash and symmetric algorithm sym. If one or both are None secure defaults will be used. The key will have its creation date set to ctime or the current time if None is given.

pub fn import_public_rsa<T>(e: &[u8], n: &[u8], ctime: T) -> Result<Self> where
    T: Into<Option<SystemTime>>, 
[src]

Creates an OpenPGP public key packet from existing RSA key material.

The RSA key will use the public exponent e and the modulo n. The key will have its creation date set to ctime or the current time if None is given.

impl<R> Key4<SecretParts, R> where
    R: KeyRole
[src]

pub fn with_secret<T>(
    creation_time: T,
    pk_algo: PublicKeyAlgorithm,
    mpis: PublicKey,
    secret: SecretKeyMaterial
) -> Result<Self> where
    T: Into<SystemTime>, 
[src]

Creates an OpenPGP key packet from the specified secret key material.

impl<P, R> Key4<P, R> where
    P: KeyParts,
    R: KeyRole
[src]

pub fn creation_time(&self) -> SystemTime[src]

Gets the Key's creation time.

pub fn set_creation_time<T>(&mut self, timestamp: T) -> Result<SystemTime> where
    T: Into<SystemTime>, 
[src]

Sets the Key's creation time.

timestamp is converted to OpenPGP's internal format, Timestamp: a 32-bit quantity containing the number of seconds since the Unix epoch.

timestamp is silently rounded to match the internal resolution. An error is returned if timestamp is out of range.

pub fn pk_algo(&self) -> PublicKeyAlgorithm[src]

Gets the public key algorithm.

pub fn set_pk_algo(&mut self, pk_algo: PublicKeyAlgorithm) -> PublicKeyAlgorithm[src]

Sets the public key algorithm.

Returns the old public key algorithm.

pub fn mpis(&self) -> &PublicKey[src]

Returns a reference to the Key's MPIs.

pub fn mpis_mut(&mut self) -> &mut PublicKey[src]

Returns a mutable reference to the Key's MPIs.

pub fn set_mpis(&mut self, mpis: PublicKey) -> PublicKey[src]

Sets the Key's MPIs.

This function returns the old MPIs, if any.

pub fn has_secret(&self) -> bool[src]

Returns whether the Key contains secret key material.

pub fn has_unencrypted_secret(&self) -> bool[src]

Returns whether the Key contains unencrypted secret key material.

This returns false if the Key doesn't contain any secret key material.

pub fn optional_secret(&self) -> Option<&SecretKeyMaterial>[src]

Returns Key's secret key material, if any.

pub fn key_handle(&self) -> KeyHandle[src]

Computes and returns the Key's Fingerprint and returns it as a KeyHandle.

See Section 12.2 of RFC 4880.

pub fn fingerprint(&self) -> Fingerprint[src]

Computes and returns the Key's Fingerprint.

See Section 12.2 of RFC 4880.

pub fn keyid(&self) -> KeyID[src]

Computes and returns the Key's Key ID.

See Section 12.2 of RFC 4880.

impl<R> Key4<PublicParts, R> where
    R: KeyRole
[src]

Secret key material handling.

pub fn take_secret(self) -> (Key4<PublicParts, R>, Option<SecretKeyMaterial>)[src]

Takes the Key's SecretKeyMaterial, if any.

pub fn add_secret(
    self,
    secret: SecretKeyMaterial
) -> (Key4<SecretParts, R>, Option<SecretKeyMaterial>)
[src]

Adds the secret key material to the Key, returning the old secret key material, if any.

impl<R> Key4<UnspecifiedParts, R> where
    R: KeyRole
[src]

Secret key material handling.

pub fn take_secret(self) -> (Key4<PublicParts, R>, Option<SecretKeyMaterial>)[src]

Takes the Key's SecretKeyMaterial, if any.

pub fn add_secret(
    self,
    secret: SecretKeyMaterial
) -> (Key4<SecretParts, R>, Option<SecretKeyMaterial>)
[src]

Adds the secret key material to the Key, returning the old secret key material, if any.

impl<R> Key4<SecretParts, R> where
    R: KeyRole
[src]

Secret key handling.

pub fn secret(&self) -> &SecretKeyMaterial[src]

Gets the Key's SecretKeyMaterial.

pub fn secret_mut(&mut self) -> &mut SecretKeyMaterial[src]

Gets a mutable reference to the Key's SecretKeyMaterial.

pub fn take_secret(self) -> (Key4<PublicParts, R>, SecretKeyMaterial)[src]

Takes the Key's SecretKeyMaterial.

pub fn add_secret(
    self,
    secret: SecretKeyMaterial
) -> (Key4<SecretParts, R>, SecretKeyMaterial)
[src]

Adds SecretKeyMaterial to the Key.

This function returns the old secret key material, if any.

pub fn decrypt_secret(self, password: &Password) -> Result<Self>[src]

Decrypts the secret key material using password.

In OpenPGP, secret key material can be protected with a password. The password is usually hardened using a KDF.

Refer to the documentation of Key::decrypt_secret for details.

This function returns an error if the secret key material is not encrypted or the password is incorrect.

pub fn encrypt_secret(self, password: &Password) -> Result<Key4<SecretParts, R>>[src]

Encrypts the secret key material using password.

In OpenPGP, secret key material can be protected with a password. The password is usually hardened using a KDF.

Refer to the documentation of Key::encrypt_secret for details.

This returns an error if the secret key material is already encrypted.

impl<R: KeyRole> Key4<SecretParts, R>[src]

pub fn into_keypair(self) -> Result<KeyPair>[src]

Creates a new key pair from a secret Key with an unencrypted secret key.

Errors

Fails if the secret key is encrypted. You can use Key::decrypt_secret to decrypt a key.

Trait Implementations

impl<P, R> Hash for Key4<P, R> where
    P: KeyParts,
    R: KeyRole
[src]

fn hash(&self, hash: &mut Context)[src]

Update the Hash with a hash of the key.

impl<P, R> Marshal for Key4<P, R> where
    P: KeyParts,
    R: KeyRole
[src]

fn export(&self, o: &mut dyn Write) -> Result<()>[src]

Exports a serialized version of the object to o. Read more

impl<P, R> MarshalInto for Key4<P, R> where
    P: KeyParts,
    R: KeyRole
[src]

fn to_vec(&self) -> Result<Vec<u8>>[src]

Serializes the packet to a vector.

fn export_into(&self, buf: &mut [u8]) -> Result<usize>[src]

Exports into the given buffer. Read more

fn export_to_vec(&self) -> Result<Vec<u8>>[src]

Exports to a vector. Read more

impl<R> From<Key4<PublicParts, R>> for Key4<UnspecifiedParts, R> where
    R: KeyRole
[src]

impl<R, '_, '_> From<&'_ Key4<PublicParts, R>> for &'_ Key4<UnspecifiedParts, R> where
    R: KeyRole
[src]

impl<R> From<Key4<SecretParts, R>> for Key4<PublicParts, R> where
    R: KeyRole
[src]

impl<R, '_, '_> From<&'_ Key4<SecretParts, R>> for &'_ Key4<PublicParts, R> where
    R: KeyRole
[src]

impl<R> From<Key4<SecretParts, R>> for Key4<UnspecifiedParts, R> where
    R: KeyRole
[src]

impl<R, '_, '_> From<&'_ Key4<SecretParts, R>> for &'_ Key4<UnspecifiedParts, R> where
    R: KeyRole
[src]

impl<R> From<Key4<UnspecifiedParts, R>> for Key4<PublicParts, R> where
    R: KeyRole
[src]

impl<R, '_, '_> From<&'_ Key4<UnspecifiedParts, R>> for &'_ Key4<PublicParts, R> where
    R: KeyRole
[src]

impl<P> From<Key4<P, PrimaryRole>> for Key4<P, SubordinateRole> where
    P: KeyParts
[src]

impl<P, '_, '_> From<&'_ Key4<P, PrimaryRole>> for &'_ Key4<P, SubordinateRole> where
    P: KeyParts
[src]

impl<P> From<Key4<P, PrimaryRole>> for Key4<P, UnspecifiedRole> where
    P: KeyParts
[src]

impl<P, '_, '_> From<&'_ Key4<P, PrimaryRole>> for &'_ Key4<P, UnspecifiedRole> where
    P: KeyParts
[src]

impl<P> From<Key4<P, SubordinateRole>> for Key4<P, PrimaryRole> where
    P: KeyParts
[src]

impl<P, '_, '_> From<&'_ Key4<P, SubordinateRole>> for &'_ Key4<P, PrimaryRole> where
    P: KeyParts
[src]

impl<P> From<Key4<P, SubordinateRole>> for Key4<P, UnspecifiedRole> where
    P: KeyParts
[src]

impl<P, '_, '_> From<&'_ Key4<P, SubordinateRole>> for &'_ Key4<P, UnspecifiedRole> where
    P: KeyParts
[src]

impl<P> From<Key4<P, UnspecifiedRole>> for Key4<P, PrimaryRole> where
    P: KeyParts
[src]

impl<P, '_, '_> From<&'_ Key4<P, UnspecifiedRole>> for &'_ Key4<P, PrimaryRole> where
    P: KeyParts
[src]

impl<P> From<Key4<P, UnspecifiedRole>> for Key4<P, SubordinateRole> where
    P: KeyParts
[src]

impl<P, '_, '_> From<&'_ Key4<P, UnspecifiedRole>> for &'_ Key4<P, SubordinateRole> where
    P: KeyParts
[src]

impl From<Key4<PublicParts, PrimaryRole>> for Key4<SecretParts, SubordinateRole>[src]

impl<'_, '_> From<&'_ Key4<PublicParts, PrimaryRole>> for &'_ Key4<SecretParts, SubordinateRole>[src]

impl From<Key4<PublicParts, PrimaryRole>> for Key4<SecretParts, UnspecifiedRole>[src]

impl<'_, '_> From<&'_ Key4<PublicParts, PrimaryRole>> for &'_ Key4<SecretParts, UnspecifiedRole>[src]

impl From<Key4<PublicParts, PrimaryRole>> for Key4<UnspecifiedParts, SubordinateRole>[src]

impl<'_, '_> From<&'_ Key4<PublicParts, PrimaryRole>> for &'_ Key4<UnspecifiedParts, SubordinateRole>[src]

impl From<Key4<PublicParts, PrimaryRole>> for Key4<UnspecifiedParts, UnspecifiedRole>[src]

impl<'_, '_> From<&'_ Key4<PublicParts, PrimaryRole>> for &'_ Key4<UnspecifiedParts, UnspecifiedRole>[src]

impl From<Key4<PublicParts, SubordinateRole>> for Key4<SecretParts, PrimaryRole>[src]

impl<'_, '_> From<&'_ Key4<PublicParts, SubordinateRole>> for &'_ Key4<SecretParts, PrimaryRole>[src]

impl From<Key4<PublicParts, SubordinateRole>> for Key4<SecretParts, UnspecifiedRole>[src]

impl<'_, '_> From<&'_ Key4<PublicParts, SubordinateRole>> for &'_ Key4<SecretParts, UnspecifiedRole>[src]

impl From<Key4<PublicParts, SubordinateRole>> for Key4<UnspecifiedParts, PrimaryRole>[src]

impl<'_, '_> From<&'_ Key4<PublicParts, SubordinateRole>> for &'_ Key4<UnspecifiedParts, PrimaryRole>[src]

impl From<Key4<PublicParts, SubordinateRole>> for Key4<UnspecifiedParts, UnspecifiedRole>[src]

impl<'_, '_> From<&'_ Key4<PublicParts, SubordinateRole>> for &'_ Key4<UnspecifiedParts, UnspecifiedRole>[src]

impl From<Key4<PublicParts, UnspecifiedRole>> for Key4<SecretParts, PrimaryRole>[src]

impl<'_, '_> From<&'_ Key4<PublicParts, UnspecifiedRole>> for &'_ Key4<SecretParts, PrimaryRole>[src]

impl From<Key4<PublicParts, UnspecifiedRole>> for Key4<SecretParts, SubordinateRole>[src]

impl<'_, '_> From<&'_ Key4<PublicParts, UnspecifiedRole>> for &'_ Key4<SecretParts, SubordinateRole>[src]

impl From<Key4<PublicParts, UnspecifiedRole>> for Key4<UnspecifiedParts, PrimaryRole>[src]

impl<'_, '_> From<&'_ Key4<PublicParts, UnspecifiedRole>> for &'_ Key4<UnspecifiedParts, PrimaryRole>[src]

impl From<Key4<PublicParts, UnspecifiedRole>> for Key4<UnspecifiedParts, SubordinateRole>[src]

impl<'_, '_> From<&'_ Key4<PublicParts, UnspecifiedRole>> for &'_ Key4<UnspecifiedParts, SubordinateRole>[src]

impl From<Key4<SecretParts, PrimaryRole>> for Key4<PublicParts, SubordinateRole>[src]

impl<'_, '_> From<&'_ Key4<SecretParts, PrimaryRole>> for &'_ Key4<PublicParts, SubordinateRole>[src]

impl From<Key4<SecretParts, PrimaryRole>> for Key4<PublicParts, UnspecifiedRole>[src]

impl<'_, '_> From<&'_ Key4<SecretParts, PrimaryRole>> for &'_ Key4<PublicParts, UnspecifiedRole>[src]

impl From<Key4<SecretParts, PrimaryRole>> for Key4<UnspecifiedParts, SubordinateRole>[src]

impl<'_, '_> From<&'_ Key4<SecretParts, PrimaryRole>> for &'_ Key4<UnspecifiedParts, SubordinateRole>[src]

impl From<Key4<SecretParts, PrimaryRole>> for Key4<UnspecifiedParts, UnspecifiedRole>[src]

impl<'_, '_> From<&'_ Key4<SecretParts, PrimaryRole>> for &'_ Key4<UnspecifiedParts, UnspecifiedRole>[src]

impl From<Key4<SecretParts, SubordinateRole>> for Key4<PublicParts, PrimaryRole>[src]

impl<'_, '_> From<&'_ Key4<SecretParts, SubordinateRole>> for &'_ Key4<PublicParts, PrimaryRole>[src]

impl From<Key4<SecretParts, SubordinateRole>> for Key4<PublicParts, UnspecifiedRole>[src]

impl<'_, '_> From<&'_ Key4<SecretParts, SubordinateRole>> for &'_ Key4<PublicParts, UnspecifiedRole>[src]

impl From<Key4<SecretParts, SubordinateRole>> for Key4<UnspecifiedParts, PrimaryRole>[src]

impl<'_, '_> From<&'_ Key4<SecretParts, SubordinateRole>> for &'_ Key4<UnspecifiedParts, PrimaryRole>[src]

impl From<Key4<SecretParts, SubordinateRole>> for Key4<UnspecifiedParts, UnspecifiedRole>[src]

impl<'_, '_> From<&'_ Key4<SecretParts, SubordinateRole>> for &'_ Key4<UnspecifiedParts, UnspecifiedRole>[src]

impl From<Key4<SecretParts, UnspecifiedRole>> for Key4<PublicParts, PrimaryRole>[src]

impl<'_, '_> From<&'_ Key4<SecretParts, UnspecifiedRole>> for &'_ Key4<PublicParts, PrimaryRole>[src]

impl From<Key4<SecretParts, UnspecifiedRole>> for Key4<PublicParts, SubordinateRole>[src]

impl<'_, '_> From<&'_ Key4<SecretParts, UnspecifiedRole>> for &'_ Key4<PublicParts, SubordinateRole>[src]

impl From<Key4<SecretParts, UnspecifiedRole>> for Key4<UnspecifiedParts, PrimaryRole>[src]

impl<'_, '_> From<&'_ Key4<SecretParts, UnspecifiedRole>> for &'_ Key4<UnspecifiedParts, PrimaryRole>[src]

impl From<Key4<SecretParts, UnspecifiedRole>> for Key4<UnspecifiedParts, SubordinateRole>[src]

impl<'_, '_> From<&'_ Key4<SecretParts, UnspecifiedRole>> for &'_ Key4<UnspecifiedParts, SubordinateRole>[src]

impl From<Key4<UnspecifiedParts, PrimaryRole>> for Key4<PublicParts, SubordinateRole>[src]

impl<'_, '_> From<&'_ Key4<UnspecifiedParts, PrimaryRole>> for &'_ Key4<PublicParts, SubordinateRole>[src]

impl From<Key4<UnspecifiedParts, PrimaryRole>> for Key4<PublicParts, UnspecifiedRole>[src]

impl<'_, '_> From<&'_ Key4<UnspecifiedParts, PrimaryRole>> for &'_ Key4<PublicParts, UnspecifiedRole>[src]

impl From<Key4<UnspecifiedParts, PrimaryRole>> for Key4<SecretParts, SubordinateRole>[src]

impl<'_, '_> From<&'_ Key4<UnspecifiedParts, PrimaryRole>> for &'_ Key4<SecretParts, SubordinateRole>[src]

impl From<Key4<UnspecifiedParts, PrimaryRole>> for Key4<SecretParts, UnspecifiedRole>[src]

impl<'_, '_> From<&'_ Key4<UnspecifiedParts, PrimaryRole>> for &'_ Key4<SecretParts, UnspecifiedRole>[src]

impl From<Key4<UnspecifiedParts, SubordinateRole>> for Key4<PublicParts, PrimaryRole>[src]

impl<'_, '_> From<&'_ Key4<UnspecifiedParts, SubordinateRole>> for &'_ Key4<PublicParts, PrimaryRole>[src]

impl From<Key4<UnspecifiedParts, SubordinateRole>> for Key4<PublicParts, UnspecifiedRole>[src]

impl<'_, '_> From<&'_ Key4<UnspecifiedParts, SubordinateRole>> for &'_ Key4<PublicParts, UnspecifiedRole>[src]

impl From<Key4<UnspecifiedParts, SubordinateRole>> for Key4<SecretParts, PrimaryRole>[src]

impl<'_, '_> From<&'_ Key4<UnspecifiedParts, SubordinateRole>> for &'_ Key4<SecretParts, PrimaryRole>[src]

impl From<Key4<UnspecifiedParts, SubordinateRole>> for Key4<SecretParts, UnspecifiedRole>[src]

impl<'_, '_> From<&'_ Key4<UnspecifiedParts, SubordinateRole>> for &'_ Key4<SecretParts, UnspecifiedRole>[src]

impl From<Key4<UnspecifiedParts, UnspecifiedRole>> for Key4<PublicParts, PrimaryRole>[src]

impl<'_, '_> From<&'_ Key4<UnspecifiedParts, UnspecifiedRole>> for &'_ Key4<PublicParts, PrimaryRole>[src]

impl From<Key4<UnspecifiedParts, UnspecifiedRole>> for Key4<PublicParts, SubordinateRole>[src]

impl<'_, '_> From<&'_ Key4<UnspecifiedParts, UnspecifiedRole>> for &'_ Key4<PublicParts, SubordinateRole>[src]

impl From<Key4<UnspecifiedParts, UnspecifiedRole>> for Key4<SecretParts, PrimaryRole>[src]

impl<'_, '_> From<&'_ Key4<UnspecifiedParts, UnspecifiedRole>> for &'_ Key4<SecretParts, PrimaryRole>[src]

impl From<Key4<UnspecifiedParts, UnspecifiedRole>> for Key4<SecretParts, SubordinateRole>[src]

impl<'_, '_> From<&'_ Key4<UnspecifiedParts, UnspecifiedRole>> for &'_ Key4<SecretParts, SubordinateRole>[src]

impl<P, R> From<Key4<P, R>> for Key<P, R> where
    P: KeyParts,
    R: KeyRole
[src]

impl<P: KeyParts, R: KeyRole> Eq for Key4<P, R>[src]

impl<P: KeyParts, R: KeyRole> PartialEq<Key4<P, R>> for Key4<P, R>[src]

#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0
[src]

This method tests for !=.

impl<P: Clone, R: Clone> Clone for Key4<P, R> where
    P: KeyParts,
    R: KeyRole
[src]

fn clone_from(&mut self, source: &Self)
1.0.0
[src]

Performs copy-assignment from source. Read more

impl<P, R> Display for Key4<P, R> where
    P: KeyParts,
    R: KeyRole
[src]

impl<P: KeyParts, R: KeyRole> Hash for Key4<P, R>[src]

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

Feeds a slice of this type into the given [Hasher]. Read more

impl<P, R> Debug for Key4<P, R> where
    P: KeyParts,
    R: KeyRole
[src]

impl<R> TryFrom<Key4<PublicParts, R>> for Key4<SecretParts, R> where
    R: KeyRole
[src]

type Error = Error

The type returned in the event of a conversion error.

impl<R, '_, '_> TryFrom<&'_ Key4<PublicParts, R>> for &'_ Key4<SecretParts, R> where
    R: KeyRole
[src]

type Error = Error

The type returned in the event of a conversion error.

impl<R> TryFrom<Key4<UnspecifiedParts, R>> for Key4<SecretParts, R> where
    R: KeyRole
[src]

type Error = Error

The type returned in the event of a conversion error.

impl<R, '_, '_> TryFrom<&'_ Key4<UnspecifiedParts, R>> for &'_ Key4<SecretParts, R> where
    R: KeyRole
[src]

type Error = Error

The type returned in the event of a conversion error.

Auto Trait Implementations

impl<P, R> Send for Key4<P, R> where
    P: Send,
    R: Send

impl<P, R> Sync for Key4<P, R> where
    P: Sync,
    R: Sync

Blanket Implementations

impl<T> From for T[src]

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> DynClone for T where
    T: Clone
[src]