Skip to content

Commit 65d4e01

Browse files
Merge pull request #9212 from holtrop/rust-wc-random
Rust wrapper: add wolfssl::wolfcrypt::random module
2 parents 561fead + 821758a commit 65d4e01

File tree

12 files changed

+552
-0
lines changed

12 files changed

+552
-0
lines changed

.github/workflows/rust-wrapper.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,6 @@ jobs:
2828
- name: Build Rust Wrapper
2929
working-directory: wolfssl
3030
run: make -C wrapper/rust
31+
- name: Run Rust Wrapper Tests
32+
working-directory: wolfssl
33+
run: make -C wrapper/rust test

wrapper/rust/Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ all:
33
+$(MAKE) -C wolfssl-sys
44
+$(MAKE) -C wolfssl
55

6+
.PHONY: test
7+
test:
8+
+$(MAKE) -C wolfssl test
9+
610
.PHONY: clean
711
clean:
812
+$(MAKE) -C wolfssl-sys clean

wrapper/rust/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ Then build the wolfssl Rust wrapper with:
88

99
make -C wrapper/rust
1010

11+
Run tests with:
12+
13+
make -C wrapper/rust test
14+
1115
## Repository Directory Structure
1216

1317
| Repository Directory | Description |

wrapper/rust/include.am

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,8 @@ EXTRA_DIST += wrapper/rust/wolfssl-sys/src/lib.rs
1313
EXTRA_DIST += wrapper/rust/wolfssl/Cargo.lock
1414
EXTRA_DIST += wrapper/rust/wolfssl/Cargo.toml
1515
EXTRA_DIST += wrapper/rust/wolfssl/Makefile
16+
EXTRA_DIST += wrapper/rust/wolfssl/build.rs
1617
EXTRA_DIST += wrapper/rust/wolfssl/src/lib.rs
18+
EXTRA_DIST += wrapper/rust/wolfssl/src/wolfcrypt.rs
19+
EXTRA_DIST += wrapper/rust/wolfssl/src/wolfcrypt/random.rs
20+
EXTRA_DIST += wrapper/rust/wolfssl/tests/test_random.rs

wrapper/rust/wolfssl/Cargo.lock

Lines changed: 293 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wrapper/rust/wolfssl/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ version = "0.1.0"
44
edition = "2024"
55

66
[dependencies]
7+
wolfssl-sys = { path = "../wolfssl-sys" }

wrapper/rust/wolfssl/Makefile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
.PHONY: all
22
all:
33
cargo build
4+
cargo doc
5+
6+
.PHONY: test
7+
test:
8+
cargo test
49

510
.PHONY: clean
611
clean:

wrapper/rust/wolfssl/build.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
use std::io::Result;
2+
3+
/// Perform crate build.
4+
fn main() {
5+
if let Err(e) = run_build() {
6+
eprintln!("Build failed: {}", e);
7+
std::process::exit(1);
8+
}
9+
}
10+
11+
/// Perform all build steps.
12+
///
13+
/// Returns `Ok(())` if successful, or an error if any step fails.
14+
fn run_build() -> Result<()> {
15+
setup_wolfssl_link()?;
16+
Ok(())
17+
}
18+
19+
/// Instruct cargo to link against wolfssl C library
20+
///
21+
/// Returns `Ok(())` if successful, or an error if any step fails.
22+
fn setup_wolfssl_link() -> Result<()> {
23+
let wrapper_dir = std::env::current_dir()?.display().to_string();
24+
let wolfssl_base_dir = format!("{}/../../..", wrapper_dir);
25+
let wolfssl_lib_dir = format!("{}/src/.libs", wolfssl_base_dir);
26+
27+
println!("cargo:rustc-link-search={}", wolfssl_lib_dir);
28+
println!("cargo:rustc-link-lib=wolfssl");
29+
println!("cargo:rustc-link-arg=-Wl,-rpath,{}", wolfssl_lib_dir);
30+
31+
Ok(())
32+
}

wrapper/rust/wolfssl/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pub mod wolfcrypt;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pub mod random;

0 commit comments

Comments
 (0)