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 more