From bdba7ba0f5f30de1a28d1aaf5131960cda6b38f3 Mon Sep 17 00:00:00 2001 From: Skgland Date: Mon, 25 May 2026 19:07:20 +0200 Subject: [PATCH] merge crypto-impure feature into feature crypto-full --- Cargo.toml | 5 ++--- src/machine/system_calls.rs | 30 ++++++++++++++---------------- 2 files changed, 16 insertions(+), 19 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 9c49139d..dc17a2d9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,7 @@ default = ["all-simple-cross", "tls", "http"] # currently does not include # ffi due to libffi # tls, http due to openssl -# crypto-impure due to ring +# crypto-full due to ring all-pure = ["repl", "hostname"] # enables all features that are simple to get working for cross-compliation # currently all but tls, http as those depend on openssl @@ -34,8 +34,7 @@ hostname = ["dep:hostname"] tls = ["dep:native-tls"] http = ["dep:warp", "dep:reqwest"] # crypto function that require non pure-rust dependencies -crypto-impure = ["dep:ring"] -crypto-full = ["crypto-impure"] +crypto-full = ["dep:ring"] [lints.clippy] collapsible_match = "allow" diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index 2954ba39..2ac93cb7 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -75,10 +75,8 @@ use crossterm::terminal::{disable_raw_mode, enable_raw_mode}; use blake2::{Blake2b512, Blake2s256}; #[cfg(feature = "crypto-full")] -use ring::aead; -#[cfg(feature = "crypto-impure")] use ring::{ - digest, hkdf, hmac, pbkdf2, + aead, digest, hkdf, hmac, pbkdf2, rand::{SecureRandom, SystemRandom}, }; @@ -7846,7 +7844,7 @@ impl Machine { #[inline(always)] pub(crate) fn crypto_random_byte(&mut self) { - #[cfg(feature = "crypto-impure")] + #[cfg(feature = "crypto-full")] { let arg = self.machine_st.registers[1]; let mut bytes: [u8; 1] = [0]; @@ -7866,7 +7864,7 @@ impl Machine { self.machine_st.unify_fixnum(byte, arg); } - #[cfg(not(feature = "crypto-impure"))] + #[cfg(not(feature = "crypto-full"))] { let stub_gen = || functor_stub(atom!("crypto_random_byte"), 1); let err = self.machine_st.missing_feature_error(atom!("crypto")); @@ -8004,7 +8002,7 @@ impl Machine { ) } _ => { - #[cfg(feature = "crypto-impure")] + #[cfg(feature = "crypto-full")] { let ints = digest::digest( match algorithm { @@ -8030,7 +8028,7 @@ impl Machine { ) ) } - #[cfg(not(feature = "crypto-impure"))] + #[cfg(not(feature = "crypto-full"))] { let stub_gen = || functor_stub(atom!("crypto_data_hash"), 1); let err = self.machine_st.missing_feature_error(atom!("crypto")); @@ -8048,7 +8046,7 @@ impl Machine { pub(crate) fn crypto_hmac(&mut self) { let stub_gen = || functor_stub(atom!("crypto_data_hash"), 3); - #[cfg(feature = "crypto-impure")] + #[cfg(feature = "crypto-full")] { let encoding = cell_as_atom!(self.deref_register(2)); let data = self.string_encoding_bytes(self.machine_st.registers[1], encoding); @@ -8084,7 +8082,7 @@ impl Machine { unify!(self.machine_st, self.machine_st.registers[4], ints_list); } - #[cfg(not(feature = "crypto-impure"))] + #[cfg(not(feature = "crypto-full"))] { let err = self.machine_st.missing_feature_error(atom!("crypto")); let exception = self.machine_st.error_form(err, stub_gen()); @@ -8096,7 +8094,7 @@ impl Machine { pub(crate) fn crypto_data_hkdf(&mut self) { let stub1_gen = || functor_stub(atom!("crypto_data_hkdf"), 4); - #[cfg(feature = "crypto-impure")] + #[cfg(feature = "crypto-full")] { let encoding = cell_as_atom!(self.deref_register(2)); let data = self.string_encoding_bytes(self.machine_st.registers[1], encoding); @@ -8167,7 +8165,7 @@ impl Machine { unify!(self.machine_st, self.machine_st.registers[7], ints_list); } - #[cfg(not(feature = "crypto-impure"))] + #[cfg(not(feature = "crypto-full"))] { let err = self.machine_st.missing_feature_error(atom!("crypto")); let exception = self.machine_st.error_form(err, stub1_gen()); @@ -8179,7 +8177,7 @@ impl Machine { pub(crate) fn crypto_password_hash(&mut self) { let stub1_gen = || functor_stub(atom!("crypto_password_hash"), 3); - #[cfg(feature = "crypto-impure")] + #[cfg(feature = "crypto-full")] { use std::num::NonZeroU32; let data = self @@ -8235,7 +8233,7 @@ impl Machine { unify!(self.machine_st, self.machine_st.registers[4], ints_list); } - #[cfg(not(feature = "crypto-impure"))] + #[cfg(not(feature = "crypto-full"))] { let err = self.machine_st.missing_feature_error(atom!("crypto")); let exception = self.machine_st.error_form(err, stub1_gen()); @@ -9602,7 +9600,7 @@ impl Machine { } } -#[cfg(feature = "crypto-impure")] +#[cfg(feature = "crypto-full")] fn rng() -> &'static dyn SecureRandom { use std::ops::Deref; @@ -9611,10 +9609,10 @@ fn rng() -> &'static dyn SecureRandom { RANDOM.deref() } -#[cfg(feature = "crypto-impure")] +#[cfg(feature = "crypto-full")] struct MyKey(T); -#[cfg(feature = "crypto-impure")] +#[cfg(feature = "crypto-full")] impl hkdf::KeyType for MyKey { fn len(&self) -> usize { self.0 -- 2.54.0