Completely remove OpenSSL

This commit is contained in:
Alex Page 2023-06-28 03:49:35 -04:00
parent 2ffa34e673
commit b9067599d4
4 changed files with 13 additions and 100 deletions

63
Cargo.lock generated
View file

@ -241,21 +241,6 @@ dependencies = [
"subtle",
]
[[package]]
name = "foreign-types"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
dependencies = [
"foreign-types-shared",
]
[[package]]
name = "foreign-types-shared"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
[[package]]
name = "generic-array"
version = "0.14.7"
@ -385,47 +370,6 @@ version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
[[package]]
name = "openssl"
version = "0.10.55"
source = "git+https://github.com/sfackler/rust-openssl#8909d3e20682f2f3a3928b53a7cc1ebb118cf19d"
dependencies = [
"bitflags",
"cfg-if",
"foreign-types",
"libc",
"once_cell",
"openssl-macros",
"openssl-sys",
]
[[package]]
name = "openssl-macros"
version = "0.1.1"
source = "git+https://github.com/sfackler/rust-openssl#8909d3e20682f2f3a3928b53a7cc1ebb118cf19d"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "openssl-sys"
version = "0.9.90"
source = "git+https://github.com/sfackler/rust-openssl#8909d3e20682f2f3a3928b53a7cc1ebb118cf19d"
dependencies = [
"cc",
"libc",
"pkg-config",
"vcpkg",
]
[[package]]
name = "pkg-config"
version = "0.3.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
[[package]]
name = "ppv-lite86"
version = "0.2.17"
@ -611,7 +555,6 @@ dependencies = [
"num-bigint",
"num-integer",
"num-traits",
"openssl",
"rand",
"serde_json",
"sha1",
@ -630,12 +573,6 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
[[package]]
name = "vcpkg"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
name = "version_check"
version = "0.9.4"

View file

@ -10,7 +10,6 @@ elliptic-curve = "0.13.5"
num-bigint = { version = "0.4.3", features = ["rand"] }
num-integer = "0.1.45"
num-traits = "0.2.15"
openssl = { git = "https://github.com/sfackler/rust-openssl" }
rand = "0.8.5"
sha1 = "0.10.5"
thiserror = "1.0.40"

View file

@ -1,7 +1,9 @@
use std::collections::VecDeque;
use anyhow::{anyhow, Result};
use openssl::bn::BigNum;
use num_bigint::{BigInt, Sign};
use num_integer::Integer;
use num_traits::{ToPrimitive, Zero};
const PK_LENGTH: usize = 25;
@ -17,20 +19,24 @@ pub(crate) fn base24_decode(cd_key: &str) -> Result<Vec<u8>> {
.filter_map(|c| KEY_CHARSET.iter().position(|&x| x == c).map(|i| i as u8))
.collect();
let mut y = BigNum::from_u32(0).unwrap();
let mut y = BigInt::zero();
for i in decoded_key {
y.mul_word((PK_LENGTH - 1) as u32).unwrap();
y.add_word(i.into()).unwrap();
y *= PK_LENGTH - 1;
y += i as u32;
}
Ok(y.to_vec())
Ok(y.to_bytes_be().1)
}
pub(crate) fn base24_encode(byte_seq: &[u8]) -> Result<String> {
let mut z = BigNum::from_slice(byte_seq).unwrap();
let mut z = BigInt::from_bytes_be(Sign::Plus, byte_seq);
let mut out: VecDeque<char> = VecDeque::new();
(0..=24).for_each(|_| out.push_front(KEY_CHARSET[z.div_word(24).unwrap() as usize]));
(0..=24).for_each(|_| {
let (quo, rem) = z.div_rem(&BigInt::from(24));
z = quo;
out.push_front(KEY_CHARSET[rem.to_u32().unwrap() as usize]);
});
Ok(out.iter().collect())
}

View file

@ -59,32 +59,3 @@ pub fn mod_sqrt(n: &BigInt, p: &BigInt) -> Option<BigInt> {
m = i;
}
}
#[cfg(test)]
mod tests {
use openssl::bn::{BigNum, BigNumContext};
#[test]
fn test() {
let n = "1573769205219068003359487454943505465350185201622247106224183162699789934914421854093895861489537435530695722027283028984396996570717144433549421890648379";
let p = "5622613991231344109";
{
let n = num_bigint::BigInt::parse_bytes(n.as_bytes(), 10).unwrap();
let p = num_bigint::BigInt::parse_bytes(p.as_bytes(), 10).unwrap();
let r = super::mod_sqrt(&n, &p).unwrap();
dbg!(r);
}
{
let mut ctx = BigNumContext::new().unwrap();
let n = BigNum::from_dec_str(n).unwrap();
let p = BigNum::from_dec_str(p).unwrap();
let mut r = BigNum::new().unwrap();
r.mod_sqrt(&n, &p, &mut ctx).unwrap();
dbg!(r.to_dec_str().unwrap());
}
}
}