This is an automated email from the ASF dual-hosted git repository.
kmccusker pushed a commit to branch develop
in repository
https://gitbox.apache.org/repos/asf/incubator-milagro-crypto-rust.git
The following commit(s) were added to refs/heads/develop by this push:
new 06d8d79 Add fuzz targets for bls381 serialization
new 23d1fac Merge pull request #36 from sigp/fuzz-serialization
06d8d79 is described below
commit 06d8d790692a9ed1f7eb1bc35cb0099ccbc0c24a
Author: Kirk Baird <[email protected]>
AuthorDate: Thu May 14 20:38:43 2020 +1000
Add fuzz targets for bls381 serialization
Signed-off-by: Kirk Baird <[email protected]>
---
fuzz/.gitignore | 4 +++
fuzz/Cargo.toml | 33 +++++++++++++++++++++++
fuzz/fuzz_targets/bls381_deserialize_g1.rs | 14 ++++++++++
fuzz/fuzz_targets/bls381_deserialize_g2.rs | 13 +++++++++
fuzz/fuzz_targets/bls381_secret_key_from_bytes.rs | 11 ++++++++
5 files changed, 75 insertions(+)
diff --git a/fuzz/.gitignore b/fuzz/.gitignore
new file mode 100644
index 0000000..572e03b
--- /dev/null
+++ b/fuzz/.gitignore
@@ -0,0 +1,4 @@
+
+target
+corpus
+artifacts
diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml
new file mode 100644
index 0000000..0cf46fd
--- /dev/null
+++ b/fuzz/Cargo.toml
@@ -0,0 +1,33 @@
+
+[package]
+name = "amcl-fuzz"
+version = "0.0.0"
+authors = ["Automatically generated"]
+publish = false
+edition = "2018"
+
+[package.metadata]
+cargo-fuzz = true
+
+[dependencies]
+libfuzzer-sys = "0.2"
+
+[dependencies.amcl]
+path = ".."
+features = ["all"]
+
+# Prevent this from interfering with workspaces
+[workspace]
+members = ["."]
+
+[[bin]]
+name = "bls381_deserialize_g1"
+path = "fuzz_targets/bls381_deserialize_g1.rs"
+
+[[bin]]
+name = "bls381_deserialize_g2"
+path = "fuzz_targets/bls381_deserialize_g2.rs"
+
+[[bin]]
+name = "bls381_secret_key_from_bytes"
+path = "fuzz_targets/bls381_secret_key_from_bytes.rs"
diff --git a/fuzz/fuzz_targets/bls381_deserialize_g1.rs
b/fuzz/fuzz_targets/bls381_deserialize_g1.rs
new file mode 100644
index 0000000..2ae196c
--- /dev/null
+++ b/fuzz/fuzz_targets/bls381_deserialize_g1.rs
@@ -0,0 +1,14 @@
+#![no_main]
+use libfuzzer_sys::fuzz_target;
+use amcl::bls381::bls381::utils::{deserialize_g1, serialize_uncompressed_g1,
serialize_g1};
+
+
+fuzz_target!(|data: &[u8]| {
+ if let Ok(point) = deserialize_g1(data) {
+ let compressed = serialize_g1(&point).to_vec();
+ let uncompressed = serialize_uncompressed_g1(&point).to_vec();
+
+ let data = data.to_vec();
+ assert!(compressed == data || uncompressed == data );
+ }
+});
diff --git a/fuzz/fuzz_targets/bls381_deserialize_g2.rs
b/fuzz/fuzz_targets/bls381_deserialize_g2.rs
new file mode 100644
index 0000000..164c95e
--- /dev/null
+++ b/fuzz/fuzz_targets/bls381_deserialize_g2.rs
@@ -0,0 +1,13 @@
+#![no_main]
+use libfuzzer_sys::fuzz_target;
+use amcl::bls381::bls381::utils::{deserialize_g2, serialize_uncompressed_g2,
serialize_g2};
+
+fuzz_target!(|data: &[u8]| {
+ if let Ok(point) = deserialize_g2(data) {
+ let compressed = serialize_g2(&point).to_vec();
+ let uncompressed = serialize_uncompressed_g2(&point).to_vec();
+
+ let data = data.to_vec();
+ assert!(compressed == data || uncompressed == data );
+ }
+});
diff --git a/fuzz/fuzz_targets/bls381_secret_key_from_bytes.rs
b/fuzz/fuzz_targets/bls381_secret_key_from_bytes.rs
new file mode 100644
index 0000000..b802309
--- /dev/null
+++ b/fuzz/fuzz_targets/bls381_secret_key_from_bytes.rs
@@ -0,0 +1,11 @@
+#![no_main]
+use libfuzzer_sys::fuzz_target;
+use amcl::bls381::bls381::utils::{secret_key_to_bytes, secret_key_from_bytes};
+
+
+fuzz_target!(|data: &[u8]| {
+ if let Ok(big) = secret_key_from_bytes(data) {
+ let round_trip = secret_key_to_bytes(&big);
+ assert_eq!(data, round_trip);
+ }
+});