Struct sequoia_openpgp::crypto::mpi::ProtectedMPI
source · pub struct ProtectedMPI { /* private fields */ }
Expand description
Holds a single MPI containing secrets.
The memory will be cleared when the object is dropped. Used by
SecretKeyMaterial
to protect secret keys.
Implementations§
source§impl ProtectedMPI
impl ProtectedMPI
sourcepub fn new_point(x: &[u8], y: &[u8], field_bits: usize) -> Self
pub fn new_point(x: &[u8], y: &[u8], field_bits: usize) -> Self
Creates new MPI encoding an uncompressed EC point.
Encodes the given point on a elliptic curve (see Section 6 of
RFC 6637 for details). This is used to encode public keys
and ciphertexts for the NIST curves (NistP256
, NistP384
,
and NistP521
).
sourcepub fn new_compressed_point(x: &[u8]) -> Self
pub fn new_compressed_point(x: &[u8]) -> Self
Creates new MPI encoding a compressed EC point using native encoding.
Encodes the given point on a elliptic curve (see Section 13.2
of RFC4880bis for details). This is used to encode public
keys and ciphertexts for the Bernstein curves (currently
X25519
).
sourcepub fn bits(&self) -> usize
pub fn bits(&self) -> usize
Returns the length of the MPI in bits.
Leading zero-bits are not included in the returned size.
sourcepub fn value(&self) -> &[u8] ⓘ
pub fn value(&self) -> &[u8] ⓘ
Returns the value of this MPI.
Note that due to stripping of zero-bytes, the returned value may be shorter than expected.
sourcepub fn value_padded(&self, to: usize) -> Protected
pub fn value_padded(&self, to: usize) -> Protected
Returns the value of this MPI zero-padded to the given length.
MPI-encoding strips leading zero-bytes. This function adds
them back. This operation is done unconditionally to avoid
timing differences. If the size exceeds to
, the result is
silently truncated to avoid timing differences.
sourcepub fn decode_point(&self, curve: &Curve) -> Result<(&[u8], &[u8])>
pub fn decode_point(&self, curve: &Curve) -> Result<(&[u8], &[u8])>
Decodes an EC point encoded as MPI.
Decodes the MPI into a point on an elliptic curve (see
Section 6 of RFC 6637 and Section 13.2 of RFC4880bis for
details). If the point is not compressed, the function
returns (x, y)
. If it is compressed, y
will be empty.
Errors
Returns Error::UnsupportedEllipticCurve
if the curve is not
supported, Error::MalformedMPI
if the point is formatted
incorrectly, Error::InvalidOperation
if the given curve is
operating on native octet strings.
Trait Implementations§
source§impl Clone for ProtectedMPI
impl Clone for ProtectedMPI
source§fn clone(&self) -> ProtectedMPI
fn clone(&self) -> ProtectedMPI
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ProtectedMPI
impl Debug for ProtectedMPI
source§impl From<MPI> for ProtectedMPI
impl From<MPI> for ProtectedMPI
source§impl From<Protected> for ProtectedMPI
impl From<Protected> for ProtectedMPI
source§impl Hash for ProtectedMPI
impl Hash for ProtectedMPI
source§impl Marshal for ProtectedMPI
impl Marshal for ProtectedMPI
source§impl MarshalInto for ProtectedMPI
impl MarshalInto for ProtectedMPI
source§fn serialized_len(&self) -> usize
fn serialized_len(&self) -> usize
source§fn serialize_into(&self, buf: &mut [u8]) -> Result<usize>
fn serialize_into(&self, buf: &mut [u8]) -> Result<usize>
source§impl Ord for ProtectedMPI
impl Ord for ProtectedMPI
source§fn cmp(&self, other: &ProtectedMPI) -> Ordering
fn cmp(&self, other: &ProtectedMPI) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl PartialEq<ProtectedMPI> for ProtectedMPI
impl PartialEq<ProtectedMPI> for ProtectedMPI
source§fn eq(&self, other: &ProtectedMPI) -> bool
fn eq(&self, other: &ProtectedMPI) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd<ProtectedMPI> for ProtectedMPI
impl PartialOrd<ProtectedMPI> for ProtectedMPI
source§fn partial_cmp(&self, other: &ProtectedMPI) -> Option<Ordering>
fn partial_cmp(&self, other: &ProtectedMPI) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more