diff --git a/Cargo.lock b/Cargo.lock index 5b299d8..cac58ee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -145,9 +145,9 @@ checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "cbc" @@ -265,7 +265,6 @@ checksum = "96272c2ff28b807e09250b180ad1fb7889a3258f7455759b5c3c58b719467130" dependencies = [ "der", "num-traits", - "rand_core 0.6.4", "serdect", "subtle", "zeroize", @@ -419,7 +418,6 @@ dependencies = [ "generic-array", "group", "hkdf", - "pem-rfc7468", "pkcs8", "rand_core 0.6.4", "sec1", @@ -617,16 +615,14 @@ dependencies = [ "cfg-if", "ecdsa", "elliptic-curve", - "once_cell", "sha2", - "signature", ] [[package]] name = "keccak" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +checksum = "cb26cec98cce3a3d96cbb7bced3c4b16e3d13f27ec56dbd62cbc8f39cfb9d653" dependencies = [ "cpufeatures", ] @@ -1371,6 +1367,9 @@ name = "strum" version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros", +] [[package]] name = "strum_macros" @@ -1623,7 +1622,6 @@ checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" dependencies = [ "curve25519-dalek", "rand_core 0.6.4", - "serde", "zeroize", ] diff --git a/Makefile b/Makefile index 551bb55..1b6635e 100644 --- a/Makefile +++ b/Makefile @@ -59,11 +59,16 @@ do-lint-ci: # Test crate packages features test-feat: - cargo test -p keetanetwork-crypto --no-default-features --features signature - cargo test -p keetanetwork-crypto --no-default-features --features encryption - cargo test -p keetanetwork-crypto --no-default-features --features der + cargo test -p keetanetwork-crypto --no-default-features --features std,signature + cargo test -p keetanetwork-crypto --no-default-features --features std,encryption + cargo test -p keetanetwork-crypto --no-default-features --features std,der cargo test -p keetanetwork-account --no-default-features --features der cargo test -p keetanetwork-account --no-default-features --features rasn + cargo test -p keetanetwork-crypto --no-default-features --features std + cargo check -p keetanetwork-crypto --no-default-features + cargo check -p keetanetwork-crypto --no-default-features --features signature + cargo check -p keetanetwork-crypto --no-default-features --features encryption + cargo check -p keetanetwork-crypto --no-default-features --features signature,encryption,rasn cargo test -p keetanetwork-x509 --no-default-features --features der cargo test -p keetanetwork-x509 --no-default-features --features rasn cargo test -p keetanetwork-x509 --no-default-features --features der, serde @@ -73,7 +78,6 @@ test-feat: cargo test -p keetanetwork-asn1 --no-default-features --features der,serde cargo test -p keetanetwork-asn1 --no-default-features --features rasn,serde cargo test -p keetanetwork-crypto -p keetanetwork-x509 --all-features - cargo test -p keetanetwork-crypto --no-default-features # Run tests with host system's default target test: diff --git a/keetanetwork-account/Cargo.toml b/keetanetwork-account/Cargo.toml index 4c117a7..d839c3f 100644 --- a/keetanetwork-account/Cargo.toml +++ b/keetanetwork-account/Cargo.toml @@ -9,7 +9,6 @@ homepage.workspace = true description = "Account management and cryptographic identities for Keetanetwork" [lib] -crate-type = ["staticlib", "rlib"] path = "src/lib.rs" [dependencies] diff --git a/keetanetwork-asn1/Cargo.toml b/keetanetwork-asn1/Cargo.toml index 9472d97..fbe3619 100644 --- a/keetanetwork-asn1/Cargo.toml +++ b/keetanetwork-asn1/Cargo.toml @@ -9,7 +9,6 @@ homepage.workspace = true description = "ASN.1 definitions and utilities for Keetanetwork" [lib] -crate-type = ["staticlib", "rlib"] path = "src/lib.rs" [dependencies.spki] diff --git a/keetanetwork-asn1/src/generated.rs b/keetanetwork-asn1/src/generated.rs index e95981e..d9b4f36 100644 --- a/keetanetwork-asn1/src/generated.rs +++ b/keetanetwork-asn1/src/generated.rs @@ -19,6 +19,5 @@ mod subject_public_key_info_definitions { } // Re-export all types from the generated modules -pub use algorithm_identifier_definitions::{AlgorithmIdentifier}; -pub use subject_public_key_info_definitions::{SubjectPublicKeyInfo}; - +pub use algorithm_identifier_definitions::AlgorithmIdentifier; +pub use subject_public_key_info_definitions::SubjectPublicKeyInfo; diff --git a/keetanetwork-crypto/Cargo.toml b/keetanetwork-crypto/Cargo.toml index af2d133..15059b9 100644 --- a/keetanetwork-crypto/Cargo.toml +++ b/keetanetwork-crypto/Cargo.toml @@ -9,50 +9,55 @@ homepage.workspace = true description = "Cryptographic primitives and operations for Keetanetwork" [lib] -crate-type = ["staticlib", "rlib"] path = "src/lib.rs" [dependencies] # Cryptographic libraries [dependencies.k256] version = "0.13.2" -features = ["ecdsa", "ecdh"] +default-features = false +features = ["ecdsa", "ecdh", "alloc"] [dependencies.p256] version = "0.13.2" -features = ["ecdsa", "ecdh"] +default-features = false +features = ["ecdsa", "ecdh", "alloc"] [dependencies.ed25519-dalek] version = "2.0" -features = ["std", "rand_core", "zeroize"] +default-features = false +features = ["rand_core", "zeroize"] [dependencies.x25519-dalek] version = "2.0" +default-features = false features = ["zeroize"] [dependencies.curve25519-dalek] version = "4.1.3" +default-features = false features = ["zeroize"] [dependencies.hkdf] version = "0.12.4" -features = ["std"] +default-features = false [dependencies.pbkdf2] version = "0.12.2" -features = ["hmac", "parallel", "sha2", "std"] +default-features = false +features = ["hmac", "sha2"] [dependencies.sha1] version = "0.10.6" -features = ["asm"] +default-features = false [dependencies.sha2] version = "0.10.9" -features = ["asm", "asm-aarch64", "sha2-asm"] +default-features = false [dependencies.sha3] version = "0.10.8" -features = ["asm"] +default-features = false [dependencies.zeroize] version = "1.8.1" @@ -60,10 +65,12 @@ features = ["derive"] [dependencies.rand_core] version = "0.9.3" -features = ["std", "os_rng"] +default-features = false +features = ["os_rng"] [dependencies.snafu] workspace = true +default-features = false # RustCrypto trait crates [dependencies.signature] @@ -107,7 +114,8 @@ optional = true [dependencies.aes-gcm] version = "0.10.3" -features = ["std"] +default-features = false +features = ["alloc", "aes", "getrandom"] # Utilities [dependencies.bip39-dict] @@ -115,10 +123,13 @@ version = "0.1.3" [dependencies.crypto-bigint] version = "0.6.1" +default-features = false features = ["serde", "der", "zeroize"] [dependencies.strum] -workspace = true +version = "0.27.2" +default-features = false +features = ["derive"] [dependencies.strum_macros] workspace = true @@ -135,7 +146,9 @@ workspace = true version = "0.22" [dependencies.hex] -workspace = true +version = "0.4.3" +default-features = false +features = ["serde", "alloc"] [dependencies.chrono] workspace = true @@ -145,6 +158,7 @@ optional = true [dependencies.keetanetwork-error] version = "0.1.0" path = "../keetanetwork-error" +optional = true [dependencies.keetanetwork-asn1] version = "0.1.0" @@ -154,9 +168,34 @@ optional = true [dependencies.keetanetwork-utils] version = "0.1.0" path = "../keetanetwork-utils" +default-features = false [features] -default = ["signature", "encryption", "rasn"] +default = ["std", "signature", "encryption", "rasn"] +std = [ + "alloc", + "snafu/std", + "ed25519-dalek/std", + "hkdf/std", + "pbkdf2/std", + "pbkdf2/parallel", + "rand_core/std", + "aes-gcm/std", + "strum/std", + "hex/std", + "sha1/asm", + "sha2/asm", + "sha2/asm-aarch64", + "sha2/sha2-asm", + "sha3/asm", + "dep:chrono", + "dep:keetanetwork-error", + "keetanetwork-utils/std", + "signature?/std", + "aead?/std", + "rand?/std", +] +alloc = [] signature = ["dep:signature"] encryption = [ "dep:aead", diff --git a/keetanetwork-crypto/src/algorithms/aes_cbc.rs b/keetanetwork-crypto/src/algorithms/aes_cbc.rs index 15e42af..201d98a 100644 --- a/keetanetwork-crypto/src/algorithms/aes_cbc.rs +++ b/keetanetwork-crypto/src/algorithms/aes_cbc.rs @@ -2,6 +2,8 @@ //! //! This module provides AES-CBC encryption. +use alloc::vec::Vec; + use aes::Aes256; use cbc::cipher::{block_padding::Pkcs7, BlockDecryptMut, BlockEncryptMut, KeyIvInit}; use cbc::{Decryptor, Encryptor}; diff --git a/keetanetwork-crypto/src/algorithms/aes_ctr.rs b/keetanetwork-crypto/src/algorithms/aes_ctr.rs index 4c92aee..6c3be34 100644 --- a/keetanetwork-crypto/src/algorithms/aes_ctr.rs +++ b/keetanetwork-crypto/src/algorithms/aes_ctr.rs @@ -2,6 +2,8 @@ //! //! This module provides AES-CTR symmetric encryption. +use alloc::vec::Vec; + use aes::Aes128; use ctr::cipher::{KeyIvInit, StreamCipher}; use ctr::Ctr128BE; diff --git a/keetanetwork-crypto/src/algorithms/aes_gcm.rs b/keetanetwork-crypto/src/algorithms/aes_gcm.rs index 8cf572f..2e30ae8 100644 --- a/keetanetwork-crypto/src/algorithms/aes_gcm.rs +++ b/keetanetwork-crypto/src/algorithms/aes_gcm.rs @@ -2,6 +2,8 @@ //! //! This module provides AES-GCM AEAD. +use alloc::vec::Vec; + use aes_gcm::aead::{Aead, AeadCore, KeyInit, OsRng}; use aes_gcm::{Aes256Gcm as AesGcmCipher, Key}; diff --git a/keetanetwork-crypto/src/algorithms/ecies.rs b/keetanetwork-crypto/src/algorithms/ecies.rs index 3b32287..9179a84 100644 --- a/keetanetwork-crypto/src/algorithms/ecies.rs +++ b/keetanetwork-crypto/src/algorithms/ecies.rs @@ -2,6 +2,8 @@ //! //! This module provides ECIES encryption. +use alloc::vec::Vec; + use core::sync::atomic::{fence, Ordering}; use hmac::{Hmac, Mac}; diff --git a/keetanetwork-crypto/src/algorithms/ed25519.rs b/keetanetwork-crypto/src/algorithms/ed25519.rs index dd4b58a..328bda7 100644 --- a/keetanetwork-crypto/src/algorithms/ed25519.rs +++ b/keetanetwork-crypto/src/algorithms/ed25519.rs @@ -27,6 +27,8 @@ // Re-export algorithm-specific signature types pub use ed25519_dalek::Signature as Ed25519Signature; +use alloc::vec::Vec; + use core::fmt::{Debug, Formatter, Result as FmtResult}; use core::sync::atomic::{fence, Ordering}; @@ -612,6 +614,7 @@ impl KeyDerivation for Ed25519Derivation { #[cfg(test)] mod tests { + extern crate std; use std::collections::HashMap; use super::*; diff --git a/keetanetwork-crypto/src/algorithms/mod.rs b/keetanetwork-crypto/src/algorithms/mod.rs index 8fdd102..651406a 100644 --- a/keetanetwork-crypto/src/algorithms/mod.rs +++ b/keetanetwork-crypto/src/algorithms/mod.rs @@ -1,3 +1,5 @@ +use alloc::vec::Vec; + use core::fmt::Debug; use secrecy::SecretBox; @@ -193,6 +195,8 @@ macro_rules! impl_any_signature { impl $any_signature_type { pub fn to_bytes(&self) -> Vec { + #[allow(unused_imports)] + use ::signature::SignatureEncoding; match self { $( $any_signature_type::$variant(sig) => sig.to_vec(), diff --git a/keetanetwork-crypto/src/algorithms/secp256k1.rs b/keetanetwork-crypto/src/algorithms/secp256k1.rs index 24a4c73..d4af862 100644 --- a/keetanetwork-crypto/src/algorithms/secp256k1.rs +++ b/keetanetwork-crypto/src/algorithms/secp256k1.rs @@ -10,6 +10,8 @@ // Re-export algorithm-specific signature types pub use k256::ecdsa::Signature as Secp256k1Signature; +use alloc::vec::Vec; + use core::fmt::{Debug, Formatter, Result as FmtResult}; use k256::ecdsa::{Signature, SigningKey}; diff --git a/keetanetwork-crypto/src/algorithms/secp256r1.rs b/keetanetwork-crypto/src/algorithms/secp256r1.rs index 6ce3a62..51570bc 100644 --- a/keetanetwork-crypto/src/algorithms/secp256r1.rs +++ b/keetanetwork-crypto/src/algorithms/secp256r1.rs @@ -10,6 +10,8 @@ // Re-export algorithm-specific signature types pub use p256::ecdsa::Signature as Secp256r1Signature; +use alloc::vec::Vec; + use core::fmt::{Debug, Formatter, Result as FmtResult}; use p256::ecdsa::{Signature, SigningKey}; diff --git a/keetanetwork-crypto/src/error.rs b/keetanetwork-crypto/src/error.rs index ff58a94..27ca562 100644 --- a/keetanetwork-crypto/src/error.rs +++ b/keetanetwork-crypto/src/error.rs @@ -1,3 +1,7 @@ +use alloc::string::String; +#[cfg(all(not(feature = "std"), feature = "encryption"))] +use alloc::string::ToString; + use keetanetwork_utils::impl_variant_error_from; use snafu::Snafu; diff --git a/keetanetwork-crypto/src/hash.rs b/keetanetwork-crypto/src/hash.rs index aa79cfb..8e24618 100644 --- a/keetanetwork-crypto/src/hash.rs +++ b/keetanetwork-crypto/src/hash.rs @@ -2,6 +2,8 @@ //! //! This module provides a flexible abstraction over different hash algorithms. +use alloc::vec::Vec; + use sha1::Sha1; use sha2::{Sha256, Sha512}; use sha3::{Digest, Sha3_256}; diff --git a/keetanetwork-crypto/src/kdf.rs b/keetanetwork-crypto/src/kdf.rs index f87f0fe..7a4a706 100644 --- a/keetanetwork-crypto/src/kdf.rs +++ b/keetanetwork-crypto/src/kdf.rs @@ -3,6 +3,8 @@ //! This module provides abstractions over different key derivation functions //! used for expanding key material and deriving cryptographic keys. +use alloc::vec::Vec; + use hkdf::Hkdf; use sha2::{Sha256, Sha512}; use sha3::Sha3_256; diff --git a/keetanetwork-crypto/src/lib.rs b/keetanetwork-crypto/src/lib.rs index 0f44770..81ad088 100644 --- a/keetanetwork-crypto/src/lib.rs +++ b/keetanetwork-crypto/src/lib.rs @@ -5,6 +5,15 @@ //! - Public key formatting with checksums //! - Support for multiple algorithms (secp256k1, Ed25519) +#![cfg_attr(not(feature = "std"), no_std)] + +#[macro_use] +extern crate alloc; + +use alloc::boxed::Box; +use alloc::string::{String, ToString}; +use alloc::vec::Vec; + pub mod algorithms; pub mod bigint; pub mod constants; diff --git a/keetanetwork-crypto/src/operations/encryption.rs b/keetanetwork-crypto/src/operations/encryption.rs index cff191e..6bc2b18 100644 --- a/keetanetwork-crypto/src/operations/encryption.rs +++ b/keetanetwork-crypto/src/operations/encryption.rs @@ -3,6 +3,8 @@ //! This module provides idiomatic traits and types for encryption, //! decryption, and key exchange operations. +use alloc::vec::Vec; + use crate::error::CryptoError; // Re-export key RustCrypto AEAD traits for easier use diff --git a/keetanetwork-crypto/src/operations/signature.rs b/keetanetwork-crypto/src/operations/signature.rs index 31ef37d..f88a0cc 100644 --- a/keetanetwork-crypto/src/operations/signature.rs +++ b/keetanetwork-crypto/src/operations/signature.rs @@ -3,6 +3,8 @@ //! This module provides idiomatic traits and types for cryptographic signing //! and verification operations, leveraging the RustCrypto ecosystem. +use alloc::vec::Vec; + use crate::algorithms::CryptoAlgorithm; // Re-export key RustCrypto signature traits for easier use diff --git a/keetanetwork-crypto/src/test_utils.rs b/keetanetwork-crypto/src/test_utils.rs index 6683e74..91381d5 100644 --- a/keetanetwork-crypto/src/test_utils.rs +++ b/keetanetwork-crypto/src/test_utils.rs @@ -73,7 +73,7 @@ macro_rules! test_key_derivation { $seed_suffix:expr ) => { #[test] - fn test_key_derivation() -> Result<(), Box> { + fn test_key_derivation() -> Result<(), alloc::boxed::Box> { let seed = crate::test_utils::TEST_SEED; let private_key = <$derivation_type>::derive_from_seed(seed.to_vec().into_secret())?; let public_key = private_key.as_public_key(); @@ -100,7 +100,7 @@ macro_rules! test_key_derivation { } #[test] - fn test_deterministic() -> Result<(), Box> { + fn test_deterministic() -> Result<(), alloc::boxed::Box> { let seed = crate::test_utils::TEST_SEED_ALTERNATE; let key1 = <$derivation_type>::derive_from_seed(seed.to_vec().into_secret())?; let key2 = <$derivation_type>::derive_from_seed(seed.to_vec().into_secret())?; @@ -115,7 +115,7 @@ macro_rules! test_key_derivation { } #[test] - fn test_different_seeds() -> Result<(), Box> { + fn test_different_seeds() -> Result<(), alloc::boxed::Box> { // Create two different seeds by modifying the constant let mut seed1 = crate::test_utils::TEST_SEED.to_vec(); let mut seed2 = crate::test_utils::TEST_SEED.to_vec(); @@ -136,7 +136,7 @@ macro_rules! test_key_derivation { } #[test] - fn test_serialization_roundtrip() -> Result<(), Box> { + fn test_serialization_roundtrip() -> Result<(), alloc::boxed::Box> { let seed = crate::test_utils::TEST_SEED; let private_key = <$derivation_type>::derive_from_seed(seed.to_vec().into_secret())?; let public_key = private_key.as_public_key(); @@ -187,7 +187,7 @@ macro_rules! test_crypto_utils { } #[test] - fn test_debug_formatting() -> Result<(), Box> { + fn test_debug_formatting() -> Result<(), alloc::boxed::Box> { let mut seed = crate::test_utils::TEST_SEED.to_vec(); seed.extend_from_slice(concat!("_", $seed_suffix, "_debug").as_bytes()); @@ -214,7 +214,7 @@ macro_rules! test_signatures { const TEST_MESSAGE: &[u8] = b"test message for signing"; #[test] - fn test_signing_operations() -> Result<(), Box> { + fn test_signing_operations() -> Result<(), alloc::boxed::Box> { let seed = crate::test_utils::TEST_SEED; let private_key = <$derivation_type>::derive_from_seed(seed.to_vec().into_secret())?; let public_key = private_key.as_public_key(); @@ -231,7 +231,7 @@ macro_rules! test_signatures { } #[test] - fn test_signature_deterministic() -> Result<(), Box> { + fn test_signature_deterministic() -> Result<(), alloc::boxed::Box> { let seed = crate::test_utils::TEST_SEED; let private_key = <$derivation_type>::derive_from_seed(seed.to_vec().into_secret())?; @@ -244,7 +244,7 @@ macro_rules! test_signatures { } #[test] - fn test_signature_verification_failures() -> Result<(), Box> { + fn test_signature_verification_failures() -> Result<(), alloc::boxed::Box> { // Create different seeds for Alice and Bob let mut alice_seed = crate::test_utils::TEST_SEED.to_vec(); let mut bob_seed = crate::test_utils::TEST_SEED.to_vec(); @@ -273,7 +273,7 @@ macro_rules! test_signatures { } #[test] - fn test_crypto_signer_ext_trait() -> Result<(), Box> { + fn test_crypto_signer_ext_trait() -> Result<(), alloc::boxed::Box> { let seed = crate::test_utils::TEST_SEED; let private_key = <$derivation_type>::derive_from_seed(seed.to_vec().into_secret())?; @@ -298,7 +298,7 @@ macro_rules! test_signatures { } #[test] - fn test_crypto_verifier_ext_trait() -> Result<(), Box> { + fn test_crypto_verifier_ext_trait() -> Result<(), alloc::boxed::Box> { let seed = crate::test_utils::TEST_SEED; let private_key = <$derivation_type>::derive_from_seed(seed.to_vec().into_secret())?; let public_key = private_key.as_public_key(); @@ -315,7 +315,7 @@ macro_rules! test_signatures { } #[test] - fn test_crypto_signer_with_options() -> Result<(), Box> { + fn test_crypto_signer_with_options() -> Result<(), alloc::boxed::Box> { let seed = crate::test_utils::TEST_SEED; let private_key = <$derivation_type>::derive_from_seed(seed.to_vec().into_secret())?; let message = b"test message for signing with options"; @@ -354,7 +354,7 @@ macro_rules! test_signatures { } #[test] - fn test_crypto_verifier_with_options() -> Result<(), Box> { + fn test_crypto_verifier_with_options() -> Result<(), alloc::boxed::Box> { let seed = crate::test_utils::TEST_SEED; let private_key = <$derivation_type>::derive_from_seed(seed.to_vec().into_secret())?; let public_key = private_key.as_public_key(); @@ -407,7 +407,7 @@ macro_rules! test_key_exchange { $seed_suffix:expr ) => { #[test] - fn test_ecdh_operations() -> Result<(), Box> { + fn test_ecdh_operations() -> Result<(), alloc::boxed::Box> { // Create two different seeds for Alice and Bob let mut alice_seed = crate::test_utils::TEST_SEED.to_vec(); let mut bob_seed = crate::test_utils::TEST_SEED.to_vec(); @@ -429,7 +429,7 @@ macro_rules! test_key_exchange { } #[test] - fn test_ecdh_consistency() -> Result<(), Box> { + fn test_ecdh_consistency() -> Result<(), alloc::boxed::Box> { // Create two different seeds let mut seed1 = crate::test_utils::TEST_SEED.to_vec(); let mut seed2 = crate::test_utils::TEST_SEED.to_vec(); @@ -464,7 +464,7 @@ macro_rules! test_ecdh { $seed_suffix:expr ) => { #[test] - fn test_ecdh_key_exchange_trait() -> Result<(), Box> { + fn test_ecdh_key_exchange_trait() -> Result<(), alloc::boxed::Box> { // Create seeds for key exchange testing let mut seed1 = crate::test_utils::TEST_SEED.to_vec(); let mut seed2 = crate::test_utils::TEST_SEED_ALTERNATE.to_vec(); @@ -526,7 +526,7 @@ macro_rules! test_der { $seed_suffix:expr ) => { #[test] - fn test_oid_conversion() -> Result<(), Box> { + fn test_oid_conversion() -> Result<(), alloc::boxed::Box> { let mut seed = crate::test_utils::TEST_SEED.to_vec(); seed.extend_from_slice(concat!("_", $seed_suffix, "_oid").as_bytes()); @@ -552,7 +552,7 @@ macro_rules! test_asymmetric_encryption { $seed_suffix:expr ) => { #[test] - fn test_asymmetric_encryption_trait() -> Result<(), Box> { + fn test_asymmetric_encryption_trait() -> Result<(), alloc::boxed::Box> { let seed = crate::test_utils::TEST_SEED; let private_key = <$derivation_type>::derive_from_seed(seed.to_vec().into_secret())?; let public_key = private_key.as_public_key(); @@ -585,7 +585,7 @@ macro_rules! test_asymmetric_encryption { } #[test] - fn test_asymmetric_encryption_round_trip() -> Result<(), Box> { + fn test_asymmetric_encryption_round_trip() -> Result<(), alloc::boxed::Box> { let seed = crate::test_utils::TEST_SEED; let private_key = <$derivation_type>::derive_from_seed(seed.to_vec().into_secret())?; let plaintext = b"round trip test data with various characters: 123!@#$%^&*()"; @@ -600,7 +600,7 @@ macro_rules! test_asymmetric_encryption { } #[test] - fn test_asymmetric_encryption_different_keys() -> Result<(), Box> { + fn test_asymmetric_encryption_different_keys() -> Result<(), alloc::boxed::Box> { // Create different key pairs let mut seed1 = crate::test_utils::TEST_SEED.to_vec(); let mut seed2 = crate::test_utils::TEST_SEED_ALTERNATE.to_vec(); @@ -642,7 +642,7 @@ macro_rules! test_ecies { use crate::operations::encryption::AsymmetricEncryption; #[test] - fn basic() -> Result<(), Box> { + fn basic() -> Result<(), alloc::boxed::Box> { let seed = core::str::from_utf8(crate::test_utils::TEST_SEED)?; let (private_key, public_key) = $create_keypair_fn(seed, None)?; let plaintext = b"Hello, ECIES world!"; @@ -659,7 +659,7 @@ macro_rules! test_ecies { } #[test] - fn trait_implementation() -> Result<(), Box> { + fn trait_implementation() -> Result<(), alloc::boxed::Box> { let seed = core::str::from_utf8(crate::test_utils::TEST_SEED)?; let (private_key, public_key) = $create_keypair_fn(seed, None)?; let plaintext = b"Testing AsymmetricEncryption trait"; @@ -672,7 +672,7 @@ macro_rules! test_ecies { } #[test] - fn different_keys() -> Result<(), Box> { + fn different_keys() -> Result<(), alloc::boxed::Box> { let seed = core::str::from_utf8(crate::test_utils::TEST_SEED)?; let (alice_private, alice_public) = $create_keypair_fn(seed, Some("alice"))?; let seed = core::str::from_utf8(crate::test_utils::TEST_SEED_ALTERNATE)?; @@ -705,7 +705,7 @@ macro_rules! test_ecies { } #[test] - fn ephemeral_keys() -> Result<(), Box> { + fn ephemeral_keys() -> Result<(), alloc::boxed::Box> { let seed = core::str::from_utf8(crate::test_utils::TEST_SEED)?; let (private_key, public_key) = $create_keypair_fn(seed, None)?; let plaintext = b"Same message"; @@ -726,7 +726,7 @@ macro_rules! test_ecies { } #[test] - fn invalid_ciphertext() -> Result<(), Box> { + fn invalid_ciphertext() -> Result<(), alloc::boxed::Box> { let seed = core::str::from_utf8(crate::test_utils::TEST_SEED)?; let (private_key, _) = $create_keypair_fn(seed, None)?; @@ -738,7 +738,7 @@ macro_rules! test_ecies { } #[test] - fn public_key_cannot_decrypt() -> Result<(), Box> { + fn public_key_cannot_decrypt() -> Result<(), alloc::boxed::Box> { let seed = core::str::from_utf8(crate::test_utils::TEST_SEED)?; let (_, public_key) = $create_keypair_fn(seed, None)?; let fake_ciphertext = [0u8; 100]; @@ -750,7 +750,7 @@ macro_rules! test_ecies { } #[test] - fn short_cipher_boundary_condition() -> Result<(), Box> { + fn short_cipher_boundary_condition() -> Result<(), alloc::boxed::Box> { let seed = core::str::from_utf8(crate::test_utils::TEST_SEED)?; let (private_key, _) = $create_keypair_fn(seed, None)?; @@ -788,7 +788,7 @@ macro_rules! test_aes_symmetric { $cipher_name:expr ) => { #[test] - fn test_basic_encrypt_decrypt() -> Result<(), Box> { + fn test_basic_encrypt_decrypt() -> Result<(), alloc::boxed::Box> { let cipher = <$cipher_type>::new(); let key = vec![0x42u8; $key_size]; let plaintext = b"Hello, AES encryption world!"; @@ -829,7 +829,7 @@ macro_rules! test_aes_symmetric { } #[test] - fn test_random_iv_different_ciphertexts() -> Result<(), Box> { + fn test_random_iv_different_ciphertexts() -> Result<(), alloc::boxed::Box> { let cipher = <$cipher_type>::new(); let key = vec![0x42u8; $key_size]; let plaintext = b"Same plaintext for randomness test"; @@ -850,7 +850,7 @@ macro_rules! test_aes_symmetric { } #[test] - fn test_various_plaintext_sizes() -> Result<(), Box> { + fn test_various_plaintext_sizes() -> Result<(), alloc::boxed::Box> { let cipher = <$cipher_type>::new(); let key = vec![0x42u8; $key_size]; @@ -887,7 +887,7 @@ macro_rules! test_aes_symmetric { } #[test] - fn test_different_keys_different_results() -> Result<(), Box> { + fn test_different_keys_different_results() -> Result<(), alloc::boxed::Box> { let plaintext = b"Test message for key difference verification"; // Create two different keys @@ -926,7 +926,7 @@ macro_rules! test_aes_symmetric { } #[test] - fn test_deterministic_with_fixed_iv() -> Result<(), Box> { + fn test_deterministic_with_fixed_iv() -> Result<(), alloc::boxed::Box> { let cipher = <$cipher_type>::new(); let key = vec![0x42u8; $key_size]; let plaintext = b"Test deterministic encryption"; diff --git a/keetanetwork-crypto/src/utils.rs b/keetanetwork-crypto/src/utils.rs index 5feb220..3eafb6a 100644 --- a/keetanetwork-crypto/src/utils.rs +++ b/keetanetwork-crypto/src/utils.rs @@ -1,3 +1,6 @@ +use alloc::string::{String, ToString}; +use alloc::vec::Vec; + use core::mem::size_of; use core::slice::from_raw_parts_mut; use core::str::FromStr; diff --git a/keetanetwork-error/Cargo.toml b/keetanetwork-error/Cargo.toml index 3f26f34..5ce361d 100644 --- a/keetanetwork-error/Cargo.toml +++ b/keetanetwork-error/Cargo.toml @@ -9,7 +9,6 @@ homepage.workspace = true description = "Error types for Keetanetwork" [lib] -crate-type = ["staticlib", "rlib"] path = "src/lib.rs" [dependencies] diff --git a/keetanetwork-utils/Cargo.toml b/keetanetwork-utils/Cargo.toml index 7943bad..82ca44c 100644 --- a/keetanetwork-utils/Cargo.toml +++ b/keetanetwork-utils/Cargo.toml @@ -9,7 +9,6 @@ homepage.workspace = true description = "Utility functions and build tools for Keetanetwork" [lib] -crate-type = ["staticlib", "rlib"] path = "src/lib.rs" [dependencies] @@ -17,5 +16,6 @@ path = "src/lib.rs" rasn-compiler = { version = "0.14", optional = true } [features] -default = [] +default = ["std"] +std = [] build = ["dep:rasn-compiler"] diff --git a/keetanetwork-utils/src/lib.rs b/keetanetwork-utils/src/lib.rs index 499e369..519e48e 100644 --- a/keetanetwork-utils/src/lib.rs +++ b/keetanetwork-utils/src/lib.rs @@ -3,6 +3,8 @@ //! This crate provides reusable `macro_rules!` macros that can be shared //! across all workspace members for common testing patterns and utilities. +#![cfg_attr(not(feature = "std"), no_std)] + pub mod errors; pub mod testing; diff --git a/keetanetwork-x509/Cargo.toml b/keetanetwork-x509/Cargo.toml index 3ea9e0a..2264a22 100644 --- a/keetanetwork-x509/Cargo.toml +++ b/keetanetwork-x509/Cargo.toml @@ -9,7 +9,6 @@ homepage.workspace = true description = "X.509 certificate handling for Keetanetwork" [lib] -crate-type = ["staticlib", "rlib"] path = "src/lib.rs" # X.509 certificate parsing diff --git a/rustfmt.toml b/rustfmt.toml index 2e9f927..1bc8493 100644 --- a/rustfmt.toml +++ b/rustfmt.toml @@ -3,6 +3,9 @@ # This configuration file controls the formatting of Rust code in this project. # It enforces a consistent style with a focus on readability. +# Ignore generated files +ignore = ["keetanetwork-asn1/src/generated.rs"] + # Indentation settings # -------------------- # Use tabs instead of spaces for indentation