Struct sequoia_openpgp::crypto::mpi::MPI
source · pub struct MPI { /* private fields */ }
Expand description
A Multiprecision Integer.
Implementations§
source§impl MPI
impl MPI
sourcepub fn new(value: &[u8]) -> Self
pub fn new(value: &[u8]) -> Self
Creates a new MPI.
This function takes care of removing leading zeros.
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) -> Result<Cow<'_, [u8]>>
pub fn value_padded(&self, to: usize) -> Result<Cow<'_, [u8]>>
Returns the value of this MPI zero-padded to the given length.
MPI-encoding strips leading zero-bytes. This function adds
them back, if necessary. If the size exceeds to
, an error
is returned.
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 From<MPI> for ProtectedMPI
impl From<MPI> for ProtectedMPI
source§impl MarshalInto for MPI
impl MarshalInto for MPI
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 MPI
impl Ord for MPI
source§impl<'a> Parse<'a, MPI> for MPI
impl<'a> Parse<'a, MPI> for MPI
source§fn from_buffered_reader<R>(reader: R) -> Result<Self>where
R: BufferedReader<Cookie> + 'a,
fn from_buffered_reader<R>(reader: R) -> Result<Self>where
R: BufferedReader<Cookie> + 'a,
source§fn from_reader<R: 'a + Read + Send + Sync>(reader: R) -> Result<Self>
fn from_reader<R: 'a + Read + Send + Sync>(reader: R) -> Result<Self>
source§impl PartialOrd for MPI
impl PartialOrd for MPI
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