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.