Skip to content

Commit 391ede7

Browse files
Support CPU Jitter Entropy from upstream RAGDOLL (#865)
Ragdoll merge aws/aws-lc#2615 surface that aws-lc-rs CC build type doesn't support building the CPU Jitter Entropy sub module.
1 parent 35ee4e4 commit 391ede7

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

aws-lc-rs/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,8 @@ mod tests {
321321
#[test]
322322
fn test_fips() {
323323
assert!({ crate::try_fips_mode().is_err() });
324-
assert!({ crate::try_fips_cpu_jitter_entropy().is_err() });
324+
// Re-enable with fixed test after upstream has merged RAGDOLL
325+
//assert!({ crate::try_fips_cpu_jitter_entropy().is_ok() });
325326
}
326327

327328
#[test]

aws-lc-sys/builder/cc_builder.rs

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ impl CcBuilder {
344344
fn add_all_files(&self, lib: &Library, cc_build: &mut cc::Build) {
345345
use core::str::FromStr;
346346

347-
// s2n_bignum is compiled separately due to needing extra flags
347+
// s2n-bignum is compiled separately due to needing extra flags
348348
let mut s2n_bignum_builder = cc_build.clone();
349349
s2n_bignum_builder.flag(format!(
350350
"--include={}",
@@ -355,18 +355,41 @@ impl CcBuilder {
355355
.display()
356356
));
357357
s2n_bignum_builder.define("S2N_BN_HIDE_SYMBOLS", "1");
358+
359+
// CPU Jitter Entropy is compiled separately due to needing specific flags
360+
let mut jitter_entropy_builder = cc_build.clone();
361+
jitter_entropy_builder.flag(format!(
362+
"--include={}",
363+
self.manifest_dir
364+
.join("generated-include")
365+
.join("openssl")
366+
.join("boringssl_prefix_symbols.h")
367+
.display()
368+
));
369+
// From cmake script in /third_party/jitterentropy.
370+
// If ever supporting CC build for Windows these flags must be
371+
// conditioned on the target OS.
372+
jitter_entropy_builder.flag("-DAWSLC -fwrapv --param ssp-buffer-size=4 -fvisibility=hidden -Wcast-align -Wmissing-field-initializers -Wshadow -Wswitch-enum -Wextra -Wall -pedantic -O0 -fwrapv -Wconversion");
373+
358374
for source in lib.sources {
359375
let source_path = self.manifest_dir.join("aws-lc").join(source);
360376
let is_s2n_bignum = std::path::Path::new(source).starts_with("third_party/s2n-bignum");
377+
let is_jitter_entropy = std::path::Path::new(source).starts_with("third_party/jitterentropy");
361378

362379
if is_s2n_bignum {
363380
s2n_bignum_builder.file(source_path);
381+
} else if is_jitter_entropy {
382+
jitter_entropy_builder.file(source_path);
364383
} else {
365384
cc_build.file(source_path);
366385
}
367386
}
368-
let object_files = s2n_bignum_builder.compile_intermediates();
369-
for object in object_files {
387+
let s2n_bignum_object_files = s2n_bignum_builder.compile_intermediates();
388+
for object in s2n_bignum_object_files {
389+
cc_build.object(object);
390+
}
391+
let jitter_entropy_object_files = jitter_entropy_builder.compile_intermediates();
392+
for object in jitter_entropy_object_files {
370393
cc_build.object(object);
371394
}
372395
cc_build.file(PathBuf::from_str("rust_wrapper.c").unwrap());

0 commit comments

Comments
 (0)