# Enum sequoia_openpgp::crypto::mpi::SecretKeyMaterial [−][src]

```
#[non_exhaustive]
pub enum SecretKeyMaterial {
RSA {
d: ProtectedMPI,
p: ProtectedMPI,
q: ProtectedMPI,
u: ProtectedMPI,
},
DSA {
x: ProtectedMPI,
},
ElGamal {
x: ProtectedMPI,
},
EdDSA {
scalar: ProtectedMPI,
},
ECDSA {
scalar: ProtectedMPI,
},
ECDH {
scalar: ProtectedMPI,
},
Unknown {
mpis: Box<[ProtectedMPI]>,
rest: Protected,
},
}
```

## Expand description

A secret key.

Provides a typed and structured way of storing multiple MPIs in
`Key`

packets. Secret key components are protected by storing
them using `ProtectedMPI`

.

Note: This enum cannot be exhaustively matched to allow future extensions.

## Variants (Non-exhaustive)

## This enum is marked as non-exhaustive

RSA secret key.

### Fields of **RSA**

`d: ProtectedMPI`

Secret exponent, inverse of e in Phi(N).

`p: ProtectedMPI`

Smaller secret prime.

`q: ProtectedMPI`

Larger secret prime.

`u: ProtectedMPI`

Inverse of p mod q.

NIST DSA secret key.

### Fields of **DSA**

`x: ProtectedMPI`

Secret key log_g(y) in Zp.

ElGamal secret key.

### Fields of **ElGamal**

`x: ProtectedMPI`

Secret key log_g(y) in Zp.

DJBs “Twisted” Edwards curve DSA secret key.

### Fields of **EdDSA**

`scalar: ProtectedMPI`

Secret scalar.

NISTs Elliptic curve DSA secret key.

### Fields of **ECDSA**

`scalar: ProtectedMPI`

Secret scalar.

Elliptic curve ElGamal secret key.

### Fields of **ECDH**

`scalar: ProtectedMPI`

Secret scalar.

Unknown number of MPIs for an unknown algorithm.

### Fields of **Unknown**

`mpis: Box<[ProtectedMPI]>`

The successfully parsed MPIs.

`rest: Protected`

Any data that failed to parse.

## Implementations

Returns, if known, the public-key algorithm for this secret key.

#### pub fn parse_with_checksum<R: Read + Send + Sync>(

algo: PublicKeyAlgorithm,

reader: R,

checksum: SecretKeyChecksum

) -> Result<Self>

#### pub fn parse_with_checksum<R: Read + Send + Sync>(

algo: PublicKeyAlgorithm,

reader: R,

checksum: SecretKeyChecksum

) -> Result<Self>

Parses secret key MPIs for `algo`

plus their SHA1 checksum.

Fails if the checksum is wrong.

Parses a set of OpenPGP MPIs representing a secret key.

See Section 3.2 of RFC 4880 for details.

#### pub fn serialize_with_checksum(

&self,

w: &mut dyn Write,

checksum: SecretKeyChecksum

) -> Result<()>

#### pub fn serialize_with_checksum(

&self,

w: &mut dyn Write,

checksum: SecretKeyChecksum

) -> Result<()>

Writes this secret key with a checksum to `w`

.

## Trait Implementations

Performs the conversion.

Performs the conversion.

This method returns an ordering between `self`

and `other`

values if one exists. Read more

This method tests less than (for `self`

and `other`

) and is used by the `<`

operator. Read more

This method tests less than or equal to (for `self`

and `other`

) and is used by the `<=`

operator. Read more

This method tests greater than (for `self`

and `other`

) and is used by the `>`

operator. Read more

## Auto Trait Implementations

### impl RefUnwindSafe for SecretKeyMaterial

### impl Send for SecretKeyMaterial

### impl Sync for SecretKeyMaterial

### impl Unpin for SecretKeyMaterial

### impl UnwindSafe for SecretKeyMaterial

## Blanket Implementations

Mutably borrows from an owned value. Read more