1
0
mirror of https://github.com/wolfSSL/wolfssl.git synced 2026-10-24 04:09:07 +03:00

Merge pull request #11187 from holtrop-wolfssl/rust-fenrir-2026-08-17

Rust wrapper Fenrir fixes 2026-08-17
This commit is contained in:
philljj
2026-08-20 16:26:06 -05:00
committed by GitHub
5 changed files with 120 additions and 59 deletions

View File

@@ -26,6 +26,7 @@ This module provides a Rust wrapper for the wolfCrypt library's EdDSA Curve
#![cfg(ed25519)]
use crate::sys;
#[cfg(random)]
use crate::random::RNG;
use core::mem::MaybeUninit;
@@ -67,11 +68,15 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(random)]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
/// let mut rng = RNG::new().expect("Error creating RNG");
/// let ed = Ed25519::generate(&mut rng).expect("Error with generate()");
/// }
/// ```
#[cfg(random)]
pub fn generate(rng: &RNG) -> Result<Self, i32> {
Self::generate_ex(rng, None, None)
}
@@ -92,11 +97,15 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(random)]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
/// let mut rng = RNG::new().expect("Error creating RNG");
/// let ed = Ed25519::generate_ex(&mut rng, None, None).expect("Error with generate_ex()");
/// }
/// ```
#[cfg(random)]
pub fn generate_ex(rng: &RNG, heap: Option<*mut core::ffi::c_void>, dev_id: Option<i32>) -> Result<Self, i32> {
let mut ws_key: MaybeUninit<sys::ed25519_key> = MaybeUninit::uninit();
let heap = match heap {
@@ -198,11 +207,14 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(random)]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
/// let mut rng = RNG::new().expect("Error creating RNG");
/// let mut ed = Ed25519::generate(&mut rng).expect("Error with generate()");
/// ed.check_key().expect("Error with check_key()");
/// }
/// ```
pub fn check_key(&mut self) -> Result<(), i32> {
let rc = unsafe { sys::wc_ed25519_check_key(&mut self.ws_key) };
@@ -229,7 +241,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_export)]
/// #[cfg(all(ed25519_export, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -271,7 +283,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_export)]
/// #[cfg(all(ed25519_export, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -310,7 +322,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_export)]
/// #[cfg(all(ed25519_export, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -349,7 +361,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_export)]
/// #[cfg(all(ed25519_export, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -390,7 +402,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_import)]
/// #[cfg(all(ed25519_import, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -434,7 +446,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_import)]
/// #[cfg(all(ed25519_import, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -474,7 +486,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_import)]
/// #[cfg(all(ed25519_import, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -518,7 +530,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_import)]
/// #[cfg(all(ed25519_import, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -569,7 +581,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_import)]
/// #[cfg(all(ed25519_import, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -618,6 +630,8 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(all(ed25519_export, ed25519_import, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
/// let mut rng = RNG::new().expect("Error creating RNG");
@@ -628,6 +642,7 @@ impl Ed25519 {
/// ed.import_private_only(&private).expect("Error with import_private_only()");
/// let mut public = [0u8; Ed25519::KEY_SIZE];
/// ed.make_public(&mut public).expect("Error with make_public()");
/// }
/// ```
pub fn make_public(&mut self, pubkey: &mut [u8]) -> Result<(), i32> {
let pubkey_size = crate::buffer_len_to_u32(pubkey.len())?;
@@ -657,7 +672,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_sign)]
/// #[cfg(all(ed25519_sign, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -701,7 +716,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_sign)]
/// #[cfg(all(ed25519_sign, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -752,7 +767,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_sign)]
/// #[cfg(all(ed25519_sign, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -817,7 +832,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_sign)]
/// #[cfg(all(ed25519_sign, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -873,7 +888,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_sign)]
/// #[cfg(all(ed25519_sign, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -924,7 +939,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_verify)]
/// #[cfg(all(ed25519_verify, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -975,7 +990,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_verify)]
/// #[cfg(all(ed25519_verify, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -1034,7 +1049,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_verify)]
/// #[cfg(all(ed25519_verify, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -1106,7 +1121,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_verify)]
/// #[cfg(all(ed25519_verify, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -1169,7 +1184,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_verify)]
/// #[cfg(all(ed25519_verify, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -1229,7 +1244,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_streaming_verify)]
/// #[cfg(all(ed25519_streaming_verify, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -1281,7 +1296,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_streaming_verify)]
/// #[cfg(all(ed25519_streaming_verify, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -1324,7 +1339,7 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(ed25519_streaming_verify)]
/// #[cfg(all(ed25519_streaming_verify, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
@@ -1369,12 +1384,15 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(random)]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
/// let mut rng = RNG::new().expect("Error creating RNG");
/// let ed = Ed25519::generate(&mut rng).expect("Error with generate()");
/// let key_size = ed.size().expect("Error with size()");
/// assert_eq!(key_size, Ed25519::KEY_SIZE);
/// }
/// ```
pub fn size(&self) -> Result<usize, i32> {
let rc = unsafe { sys::wc_ed25519_size(&self.ws_key) };
@@ -1394,12 +1412,15 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(random)]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
/// let mut rng = RNG::new().expect("Error creating RNG");
/// let ed = Ed25519::generate(&mut rng).expect("Error with generate()");
/// let priv_size = ed.priv_size().expect("Error with priv_size()");
/// assert_eq!(priv_size, Ed25519::PRV_KEY_SIZE);
/// }
/// ```
pub fn priv_size(&self) -> Result<usize, i32> {
let rc = unsafe { sys::wc_ed25519_priv_size(&self.ws_key) };
@@ -1419,12 +1440,15 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(random)]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
/// let mut rng = RNG::new().expect("Error creating RNG");
/// let ed = Ed25519::generate(&mut rng).expect("Error with generate()");
/// let pub_size = ed.pub_size().expect("Error with pub_size()");
/// assert_eq!(pub_size, Ed25519::PUB_KEY_SIZE);
/// }
/// ```
pub fn pub_size(&self) -> Result<usize, i32> {
let rc = unsafe { sys::wc_ed25519_pub_size(&self.ws_key) };
@@ -1444,12 +1468,15 @@ impl Ed25519 {
/// # Example
///
/// ```rust
/// #[cfg(random)]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed25519::Ed25519;
/// let mut rng = RNG::new().expect("Error creating RNG");
/// let ed = Ed25519::generate(&mut rng).expect("Error with generate()");
/// let sig_size = ed.sig_size().expect("Error with sig_size()");
/// assert_eq!(sig_size, Ed25519::SIG_SIZE);
/// }
/// ```
pub fn sig_size(&self) -> Result<usize, i32> {
let rc = unsafe { sys::wc_ed25519_sig_size(&self.ws_key) };

View File

@@ -26,6 +26,7 @@ This module provides a Rust wrapper for the wolfCrypt library's EdDSA Curve
#![cfg(ed448)]
use crate::sys;
#[cfg(random)]
use crate::random::RNG;
use core::mem::MaybeUninit;
@@ -66,11 +67,15 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(random)]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
/// let mut rng = RNG::new().expect("Error creating RNG");
/// let ed = Ed448::generate(&mut rng).expect("Error with generate()");
/// }
/// ```
#[cfg(random)]
pub fn generate(rng: &RNG) -> Result<Self, i32> {
Self::generate_ex(rng, None, None)
}
@@ -91,11 +96,15 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(random)]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
/// let mut rng = RNG::new().expect("Error creating RNG");
/// let ed = Ed448::generate_ex(&mut rng, None, None).expect("Error with generate_ex()");
/// }
/// ```
#[cfg(random)]
pub fn generate_ex(rng: &RNG, heap: Option<*mut core::ffi::c_void>, dev_id: Option<i32>) -> Result<Self, i32> {
let mut ws_key: MaybeUninit<sys::ed448_key> = MaybeUninit::uninit();
let heap = match heap {
@@ -197,11 +206,14 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(random)]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
/// let mut rng = RNG::new().expect("Error creating RNG");
/// let mut ed = Ed448::generate(&mut rng).expect("Error with generate()");
/// ed.check_key().expect("Error with check_key()");
/// }
/// ```
pub fn check_key(&mut self) -> Result<(), i32> {
let rc = unsafe { sys::wc_ed448_check_key(&mut self.ws_key) };
@@ -228,7 +240,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_export)]
/// #[cfg(all(ed448_export, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -269,7 +281,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_export)]
/// #[cfg(all(ed448_export, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -307,7 +319,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_export)]
/// #[cfg(all(ed448_export, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -345,7 +357,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_export)]
/// #[cfg(all(ed448_export, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -386,7 +398,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_import)]
/// #[cfg(all(ed448_import, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -430,7 +442,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_import)]
/// #[cfg(all(ed448_import, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -470,7 +482,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_import)]
/// #[cfg(all(ed448_import, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -514,7 +526,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_import)]
/// #[cfg(all(ed448_import, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -565,7 +577,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_import)]
/// #[cfg(all(ed448_import, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -614,6 +626,8 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(all(ed448_export, ed448_import, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
/// let mut rng = RNG::new().expect("Error creating RNG");
@@ -624,6 +638,7 @@ impl Ed448 {
/// ed.import_private_only(&private).expect("Error with import_private_only()");
/// let mut public = [0u8; Ed448::KEY_SIZE];
/// ed.make_public(&mut public).expect("Error with make_public()");
/// }
/// ```
pub fn make_public(&mut self, pubkey: &mut [u8]) -> Result<(), i32> {
let pubkey_size = crate::buffer_len_to_u32(pubkey.len())?;
@@ -656,7 +671,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_sign)]
/// #[cfg(all(ed448_sign, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -712,7 +727,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_sign)]
/// #[cfg(all(ed448_sign, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -777,7 +792,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_sign)]
/// #[cfg(all(ed448_sign, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -833,7 +848,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_sign)]
/// #[cfg(all(ed448_sign, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -887,7 +902,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_verify)]
/// #[cfg(all(ed448_verify, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -951,7 +966,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_verify)]
/// #[cfg(all(ed448_verify, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -1023,7 +1038,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_verify)]
/// #[cfg(all(ed448_verify, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -1086,7 +1101,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_verify)]
/// #[cfg(all(ed448_verify, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -1146,7 +1161,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_streaming_verify)]
/// #[cfg(all(ed448_streaming_verify, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -1199,7 +1214,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_streaming_verify)]
/// #[cfg(all(ed448_streaming_verify, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -1243,7 +1258,7 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(ed448_streaming_verify)]
/// #[cfg(all(ed448_streaming_verify, random))]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
@@ -1289,12 +1304,15 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(random)]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
/// let mut rng = RNG::new().expect("Error creating RNG");
/// let ed = Ed448::generate(&mut rng).expect("Error with generate()");
/// let key_size = ed.size().expect("Error with size()");
/// assert_eq!(key_size, Ed448::KEY_SIZE);
/// }
/// ```
pub fn size(&self) -> Result<usize, i32> {
let rc = unsafe { sys::wc_ed448_size(&self.ws_key) };
@@ -1314,12 +1332,15 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(random)]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
/// let mut rng = RNG::new().expect("Error creating RNG");
/// let ed = Ed448::generate(&mut rng).expect("Error with generate()");
/// let priv_size = ed.priv_size().expect("Error with priv_size()");
/// assert_eq!(priv_size, Ed448::PRV_KEY_SIZE);
/// }
/// ```
pub fn priv_size(&self) -> Result<usize, i32> {
let rc = unsafe { sys::wc_ed448_priv_size(&self.ws_key) };
@@ -1339,12 +1360,15 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(random)]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
/// let mut rng = RNG::new().expect("Error creating RNG");
/// let ed = Ed448::generate(&mut rng).expect("Error with generate()");
/// let pub_size = ed.pub_size().expect("Error with pub_size()");
/// assert_eq!(pub_size, Ed448::PUB_KEY_SIZE);
/// }
/// ```
pub fn pub_size(&self) -> Result<usize, i32> {
let rc = unsafe { sys::wc_ed448_pub_size(&self.ws_key) };
@@ -1364,12 +1388,15 @@ impl Ed448 {
/// # Example
///
/// ```rust
/// #[cfg(random)]
/// {
/// use wolfssl_wolfcrypt::random::RNG;
/// use wolfssl_wolfcrypt::ed448::Ed448;
/// let mut rng = RNG::new().expect("Error creating RNG");
/// let ed = Ed448::generate(&mut rng).expect("Error with generate()");
/// let sig_size = ed.sig_size().expect("Error with sig_size()");
/// assert_eq!(sig_size, Ed448::SIG_SIZE);
/// }
/// ```
pub fn sig_size(&self) -> Result<usize, i32> {
let rc = unsafe { sys::wc_ed448_sig_size(&self.ws_key) };

View File

@@ -765,6 +765,7 @@ impl Lms {
///
/// Returns either Ok(usize) containing the key ID length on success,
/// or Err(e) containing the wolfSSL library error code value.
#[cfg(lms_make_key)]
pub fn get_kid(&mut self, kid: &mut [u8]) -> Result<usize, i32> {
let mut kid_ptr: *const u8 = core::ptr::null();
let mut kid_sz: u32 = 0;

View File

@@ -2,11 +2,12 @@
mod common;
#[cfg(random)]
use wolfssl_wolfcrypt::random::RNG;
use wolfssl_wolfcrypt::ed25519::*;
#[test]
#[cfg(all(ed25519_import, ed25519_export))]
#[cfg(all(ed25519_import, ed25519_export, random))]
fn test_make_public() {
common::setup();
@@ -21,6 +22,7 @@ fn test_make_public() {
}
#[test]
#[cfg(random)]
fn test_check_key() {
let mut rng = RNG::new().expect("Error creating RNG");
let mut ed = Ed25519::generate(&mut rng).expect("Error with generate()");
@@ -224,7 +226,7 @@ fn test_ph_sign_verify() {
// invalid signature is reported as Ok(false) rather than an error.
#[test]
#[cfg(all(ed25519_sign, ed25519_verify))]
#[cfg(all(ed25519_sign, ed25519_verify, random))]
fn test_verify_msg_bad_sig() {
common::setup();
@@ -240,7 +242,7 @@ fn test_verify_msg_bad_sig() {
}
#[test]
#[cfg(all(ed25519_sign, ed25519_verify))]
#[cfg(all(ed25519_sign, ed25519_verify, random))]
fn test_verify_msg_ex_bad_sig() {
common::setup();
@@ -256,7 +258,7 @@ fn test_verify_msg_ex_bad_sig() {
}
#[test]
#[cfg(all(ed25519_sign, ed25519_verify))]
#[cfg(all(ed25519_sign, ed25519_verify, random))]
fn test_verify_msg_ctx_bad_sig() {
common::setup();
@@ -273,7 +275,7 @@ fn test_verify_msg_ctx_bad_sig() {
}
#[test]
#[cfg(all(ed25519_sign, ed25519_verify))]
#[cfg(all(ed25519_sign, ed25519_verify, random))]
fn test_verify_msg_ph_bad_sig() {
common::setup();
@@ -290,7 +292,7 @@ fn test_verify_msg_ph_bad_sig() {
}
#[test]
#[cfg(all(ed25519_sign, ed25519_verify))]
#[cfg(all(ed25519_sign, ed25519_verify, random))]
fn test_verify_hash_ph_bad_sig() {
common::setup();
@@ -307,7 +309,7 @@ fn test_verify_hash_ph_bad_sig() {
}
#[test]
#[cfg(all(ed25519_sign, ed25519_streaming_verify))]
#[cfg(all(ed25519_sign, ed25519_streaming_verify, random))]
fn test_verify_msg_final_bad_sig() {
common::setup();
@@ -327,7 +329,7 @@ fn test_verify_msg_final_bad_sig() {
}
#[test]
#[cfg(all(ed25519_import, ed25519_export))]
#[cfg(all(ed25519_import, ed25519_export, random))]
fn test_import_export() {
common::setup();
@@ -359,7 +361,7 @@ fn test_import_export() {
}
#[test]
#[cfg(all(feature = "signature", ed25519_import, ed25519_export, ed25519_sign, ed25519_verify))]
#[cfg(all(feature = "signature", ed25519_import, ed25519_export, ed25519_sign, ed25519_verify, random))]
fn test_signature_traits() {
use signature::{Keypair, SignerMut, Verifier};
@@ -396,6 +398,7 @@ fn test_signature_traits() {
}
#[test]
#[cfg(random)]
fn test_sizes() {
let mut rng = RNG::new().expect("Error creating RNG");
let ed = Ed25519::generate(&mut rng).expect("Error with generate()");

View File

@@ -2,11 +2,12 @@
mod common;
#[cfg(random)]
use wolfssl_wolfcrypt::random::RNG;
use wolfssl_wolfcrypt::ed448::*;
#[test]
#[cfg(all(ed448_import, ed448_export))]
#[cfg(all(ed448_import, ed448_export, random))]
fn test_make_public() {
common::setup();
@@ -21,6 +22,7 @@ fn test_make_public() {
}
#[test]
#[cfg(random)]
fn test_check_key() {
let mut rng = RNG::new().expect("Error creating RNG");
let mut ed = Ed448::generate(&mut rng).expect("Error with generate()");
@@ -228,7 +230,7 @@ fn test_ph_sign_verify() {
// invalid signature is reported as Ok(false) rather than an error.
#[test]
#[cfg(all(ed448_sign, ed448_verify))]
#[cfg(all(ed448_sign, ed448_verify, random))]
fn test_verify_msg_bad_sig() {
common::setup();
@@ -244,7 +246,7 @@ fn test_verify_msg_bad_sig() {
}
#[test]
#[cfg(all(ed448_sign, ed448_verify))]
#[cfg(all(ed448_sign, ed448_verify, random))]
fn test_verify_msg_ex_bad_sig() {
common::setup();
@@ -260,7 +262,7 @@ fn test_verify_msg_ex_bad_sig() {
}
#[test]
#[cfg(all(ed448_sign, ed448_verify))]
#[cfg(all(ed448_sign, ed448_verify, random))]
fn test_verify_msg_ph_bad_sig() {
common::setup();
@@ -277,7 +279,7 @@ fn test_verify_msg_ph_bad_sig() {
}
#[test]
#[cfg(all(ed448_sign, ed448_verify))]
#[cfg(all(ed448_sign, ed448_verify, random))]
fn test_verify_hash_ph_bad_sig() {
common::setup();
@@ -294,7 +296,7 @@ fn test_verify_hash_ph_bad_sig() {
}
#[test]
#[cfg(all(ed448_sign, ed448_streaming_verify))]
#[cfg(all(ed448_sign, ed448_streaming_verify, random))]
fn test_verify_msg_final_bad_sig() {
common::setup();
@@ -313,7 +315,7 @@ fn test_verify_msg_final_bad_sig() {
}
#[test]
#[cfg(all(ed448_import, ed448_export))]
#[cfg(all(ed448_import, ed448_export, random))]
fn test_import_export() {
common::setup();
@@ -345,7 +347,7 @@ fn test_import_export() {
}
#[test]
#[cfg(all(feature = "signature", ed448_import, ed448_export, ed448_sign, ed448_verify))]
#[cfg(all(feature = "signature", ed448_import, ed448_export, ed448_sign, ed448_verify, random))]
fn test_signature_traits() {
use signature::{Keypair, SignerMut, Verifier};
@@ -382,6 +384,7 @@ fn test_signature_traits() {
}
#[test]
#[cfg(random)]
fn test_sizes() {
let mut rng = RNG::new().expect("Error creating RNG");
let ed = Ed448::generate(&mut rng).expect("Error with generate()");