Skip to content

Commit 1dd904d

Browse files
committed
nostd support
1 parent fcd1e53 commit 1dd904d

File tree

8 files changed

+36
-17
lines changed

8 files changed

+36
-17
lines changed

Cargo.toml

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,16 @@ categories = ["cryptography"]
1212
readme = "README.md"
1313

1414
[dependencies]
15-
num-bigint = { version = "0.5", features = ["rand", "i128", "u64_digit", "prime", "zeroize"], package = "num-bigint-dig" }
16-
num-traits = "0.2.6"
17-
num-integer = "0.1.39"
18-
num-iter = "0.1.37"
19-
lazy_static = "1.3.0"
20-
rand = "0.6.5"
21-
byteorder = "1.3.1"
22-
failure = "0.1.5"
23-
subtle = "2.0.0"
15+
num-bigint = { version = "0.5", features = ["i128", "u64_digit", "prime", "zeroize"], default-features = false, package = "num-bigint-dig" }
16+
num-traits = { version = "0.2.6", default-features = false }
17+
num-integer = { version = "0.1.39", default-features = false }
18+
num-iter = { version = "0.1.37", default-features = false }
19+
lazy_static = { version = "1.3.0", features = ["spin_no_std"] }
20+
rand = { version = "0.6.5", default-features = false }
21+
byteorder = { version = "1.3.1", default-features = false }
22+
failure = { version = "0.1.5", default-features = false, features = ["derive"] }
23+
subtle = { version = "2.0.0", default-features = false }
24+
libm = "0.1.4"
2425

2526
[dependencies.zeroize]
2627
version = "0.10.1"
@@ -30,10 +31,10 @@ features = ["alloc", "zeroize_derive"]
3031
optional = true
3132
version = "1.0.89"
3233
default-features = false
33-
features = ["std", "derive"]
34+
features = ["derive"]
3435

3536
[dev-dependencies]
36-
base64 = "0.10.1"
37+
#base64 = "0.10.1"
3738
sha-1 = "0.8.1"
3839
sha2 = "0.8.0"
3940
hex = "0.4.0"
@@ -50,7 +51,8 @@ name = "key"
5051
# debug = true
5152

5253
[features]
53-
default = []
54+
default = ["std"]
55+
std = []
5456
nightly = ["subtle/nightly", "num-bigint/nightly"]
5557
serde1 = ["num-bigint/serde", "serde"]
5658
expose-internals = []

src/algorithms.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ use num_bigint::traits::ModInverse;
22
use num_bigint::{BigUint, RandPrime};
33
use num_traits::{FromPrimitive, One, Zero};
44
use rand::Rng;
5+
use libm::F64Ext;
56

67
use crate::errors::{Error, Result};
78
use crate::key::RSAPrivateKey;

src/errors.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
pub type Result<T> = ::std::result::Result<T, Error>;
1+
pub type Result<T> = core::result::Result<T, Error>;
22

33
/// Error types
44
#[derive(Debug, Fail)]

src/hash.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use alloc::vec::Vec;
2+
13
/// A generic trait that exposes the information that is needed for a hash function to be
24
/// used in `sign` and `verify.`.
35
pub trait Hash {

src/internals.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
use num_bigint::{BigInt, BigUint, IntoBigInt, IntoBigUint, ModInverse, RandBigInt, ToBigInt};
22
use num_traits::{One, Signed, Zero};
33
use rand::Rng;
4-
use std::borrow::Cow;
4+
use alloc::vec::Vec;
5+
use alloc::borrow::Cow;
56
use zeroize::Zeroize;
67

78
use crate::errors::{Error, Result};

src/key.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
use alloc::vec::Vec;
12
use num_bigint::traits::ModInverse;
23
use num_bigint::Sign::Plus;
34
use num_bigint::{BigInt, BigUint};
45
use num_traits::{FromPrimitive, One};
5-
use rand::{rngs::ThreadRng, Rng};
6+
use rand::rngs::StdRng;
7+
use rand::Rng;
68
#[cfg(feature = "serde1")]
79
use serde::{Deserialize, Serialize};
810
use zeroize::Zeroize;
@@ -403,7 +405,7 @@ impl RSAPrivateKey {
403405
pub fn decrypt(&self, padding: PaddingScheme, ciphertext: &[u8]) -> Result<Vec<u8>> {
404406
match padding {
405407
// need to pass any Rng as the type arg, so the type checker is happy, it is not actually used for anything
406-
PaddingScheme::PKCS1v15 => pkcs1v15::decrypt::<ThreadRng>(None, self, ciphertext),
408+
PaddingScheme::PKCS1v15 => pkcs1v15::decrypt::<StdRng>(None, self, ciphertext),
407409
PaddingScheme::OAEP => unimplemented!("not yet implemented"),
408410
_ => Err(Error::InvalidPaddingScheme),
409411
}
@@ -432,7 +434,7 @@ impl RSAPrivateKey {
432434
digest: &[u8],
433435
) -> Result<Vec<u8>> {
434436
match padding {
435-
PaddingScheme::PKCS1v15 => pkcs1v15::sign::<ThreadRng, _>(None, self, hash, digest),
437+
PaddingScheme::PKCS1v15 => pkcs1v15::sign::<StdRng, _>(None, self, hash, digest),
436438
PaddingScheme::PSS => unimplemented!("not yet implemented"),
437439
_ => Err(Error::InvalidPaddingScheme),
438440
}

src/lib.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,16 @@
2626
//! ```
2727
//!
2828
29+
#![no_std]
30+
31+
#[cfg(feature = "std")]
32+
#[macro_use]
33+
extern crate std as alloc;
34+
35+
#[cfg(not(feature = "std"))]
36+
#[macro_use]
37+
extern crate alloc;
38+
2939
#[macro_use]
3040
extern crate lazy_static;
3141

src/pkcs1v15.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use alloc::vec::Vec;
12
use num_bigint::BigUint;
23
use rand::Rng;
34
use subtle::{Choice, ConditionallySelectable, ConstantTimeEq};

0 commit comments

Comments
 (0)