Change crate name to avoid annoying warning / add bit per symbol parameter in rust function

This commit is contained in:
2023-08-08 15:08:36 +02:00
parent c20a2843a3
commit 197ac78357
6 changed files with 27 additions and 74 deletions

22
Cargo.lock generated
View File

@@ -2,17 +2,6 @@
# It is not intended for manual editing.
version = 3
[[package]]
name = "SP800-90B-rs"
version = "0.1.0"
dependencies = [
"autocxx",
"autocxx-build",
"cxx",
"miette",
"rand",
]
[[package]]
name = "addr2line"
version = "0.20.0"
@@ -812,6 +801,17 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043"
[[package]]
name = "sp800_90b_rs"
version = "0.1.0"
dependencies = [
"autocxx",
"autocxx-build",
"cxx",
"miette",
"rand",
]
[[package]]
name = "strum_macros"
version = "0.24.3"

View File

@@ -1,5 +1,5 @@
[package]
name = "SP800-90B-rs"
name = "sp800_90b_rs"
version = "0.1.0"
build = "build.rs"
edition = "2021"

View File

@@ -54,28 +54,6 @@ public:
// distribution tests
bool iid_tests() const {
IidTestCase tc;
// tc.mean = rawmean;
// tc.median = median;
// tc.binary = is_binary;
//
// // to change if we want to compute conditionate data
// bool initial_entropy = true;
// double H_original = data.word_size;
// double H_bitstring = 1.0;
// // Compute the min-entropy of the dataset
// if (initial_entropy) {
// H_original = h_most_common();
// }
// tc.h_original = H_original;
// if (((data.alph_size > 2) || !initial_entropy)) {
// H_bitstring = h_bitstring_most_common();
// }
// tc.h_bitstring = H_bitstring;
// bool cst = chi_square_tests_();
return chi_square_tests_() && lrs_tests_() && permutation_tests_();
}

View File

@@ -1,6 +1,10 @@
#ifndef NIST_HPP
#define NIST_HPP
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#pragma GCC diagnostic ignored "-Wunused-parameter"
#include "../../SP800-90B_EntropyAssessment/cpp/shared/utils.h"
#define NO_NIST_DEFS
@@ -48,6 +52,8 @@ typedef struct data_t data;
#include "../../SP800-90B_EntropyAssessment/cpp/non_iid/multi_mcw_test.h"
#include "../../SP800-90B_EntropyAssessment/cpp/non_iid/multi_mmc_test.h"
#pragma GCC diagnostic pop
#include <limits.h>
#include <omp.h>
@@ -57,40 +63,6 @@ public:
Stats(data_t &data) { calc_stats(&data, this->rawmean, this->median); };
};
void SAalgs(const byte data[], const long len, const int alph_size,
double &t_tuple_res, double &lrs_res, const int verbose,
const char *label);
double most_common(byte *data, const long len, const int alph_size,
const int verbose, const char *label);
double multi_mcw_test(byte *data, const long len, const int alph_size,
const int verbose, const char *label);
double collision_test(byte *data, const long len, const int verbose,
const char *label);
double markov_test(byte *data, const long len, const int verbose,
const char *label);
double multi_mmc_test(byte *data, const long len, const int alph_size,
const int verbose, const char *label);
double compression_test(byte *data, const long len, const int verbose,
const char *label);
double lag_test(byte *data, const long len, const int alph_size,
const int verbose, const char *label);
double LZ78Y_test(byte *data, const long len, const int alph_size,
const int verbose, const char *label);
data_t construct_data_t(const char *samples, int sample_length,
int bits_per_symbol);
void free_data(data_t *data);
bool len_LRS_test(const byte data[], const int length, const int k,
const int verbosity, const char *label);
bool chi_square_tests(const byte data[], const int length, int alph_size,
const int verbosity);
bool permutation_tests(const data_t *data, double rawmean, double median,
int verbosity, IidTestCase &tc);
data_t construct_data_t(const char *symbols, int symbols_len,
int bits_per_word) {

View File

@@ -8,9 +8,8 @@ include_cpp! {
use ffi::Data as Data_;
pub fn generate_data(samples: &[i8]) -> UniquePtr<Data_> {
pub fn generate_data(samples: &[i8], bits_per_symbol: i32) -> UniquePtr<Data_> {
let samples_length = samples.len() as i32;
let bits_per_symbol = 8;
unsafe {
ffi::Data::new2(

View File

@@ -1,13 +1,17 @@
use SP800_90B_rs::generate_data;
use rand::Rng;
use sp800_90b_rs::generate_data;
fn main() {
// println!("Hello, world!");
let mut rng = rand::thread_rng();
let samples: [i8; 1_000_000] = rng.gen();
let data = generate_data(&samples);
let mut samples = [0_i8; 1_000_000];
for i in 0..samples.len(){
samples[i] = rng.gen_range(0..=1);
}
// let samples: [i8; 1_000_000] = rng.gen();
let data = generate_data(&samples, 1);
let a = data.iid_tests();