mirror of
https://github.com/lbr77/SideImpactor.git
synced 2026-05-06 11:14:01 -04:00
more refactor
This commit is contained in:
2
wasm/openssl/.gitignore
vendored
2
wasm/openssl/.gitignore
vendored
@@ -1 +1,3 @@
|
||||
/target/
|
||||
/binary/
|
||||
/dist/
|
||||
|
||||
40
wasm/openssl/Cargo.lock
generated
40
wasm/openssl/Cargo.lock
generated
@@ -16,9 +16,9 @@ checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.2.56"
|
||||
version = "1.2.59"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2"
|
||||
checksum = "b7a4d3ec6524d28a329fc53654bbadc9bdd7b0431f5d65f1a56ffb28a1ee5283"
|
||||
dependencies = [
|
||||
"find-msvc-tools",
|
||||
"shlex",
|
||||
@@ -53,15 +53,15 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
|
||||
|
||||
[[package]]
|
||||
name = "itoa"
|
||||
version = "1.0.17"
|
||||
version = "1.0.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
|
||||
checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
|
||||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
version = "0.3.91"
|
||||
version = "0.3.94"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c"
|
||||
checksum = "2e04e2ef80ce82e13552136fabeef8a5ed1f985a96805761cbb9a2c34e7664d9"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
"wasm-bindgen",
|
||||
@@ -79,9 +79,9 @@ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.21.3"
|
||||
version = "1.21.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
|
||||
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
|
||||
|
||||
[[package]]
|
||||
name = "openssl"
|
||||
@@ -150,9 +150,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.44"
|
||||
version = "1.0.45"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
|
||||
checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
@@ -237,9 +237,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen"
|
||||
version = "0.2.114"
|
||||
version = "0.2.117"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e"
|
||||
checksum = "0551fc1bb415591e3372d0bc4780db7e587d84e2a7e79da121051c5c4b89d0b0"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"once_cell",
|
||||
@@ -250,9 +250,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro"
|
||||
version = "0.2.114"
|
||||
version = "0.2.117"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6"
|
||||
checksum = "7fbdf9a35adf44786aecd5ff89b4563a90325f9da0923236f6104e603c7e86be"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"wasm-bindgen-macro-support",
|
||||
@@ -260,9 +260,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro-support"
|
||||
version = "0.2.114"
|
||||
version = "0.2.117"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3"
|
||||
checksum = "dca9693ef2bab6d4e6707234500350d8dad079eb508dca05530c85dc3a529ff2"
|
||||
dependencies = [
|
||||
"bumpalo",
|
||||
"proc-macro2",
|
||||
@@ -273,18 +273,18 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-shared"
|
||||
version = "0.2.114"
|
||||
version = "0.2.117"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16"
|
||||
checksum = "39129a682a6d2d841b6c429d0c51e5cb0ed1a03829d8b3d1e69a011e62cb3d3b"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "web-sys"
|
||||
version = "0.3.91"
|
||||
version = "0.3.94"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9"
|
||||
checksum = "cd70027e39b12f0849461e08ffc50b9cd7688d942c1c8e3c7b22273236b4dd0a"
|
||||
dependencies = [
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
|
||||
@@ -5,18 +5,19 @@ edition = "2021"
|
||||
|
||||
[lib]
|
||||
crate-type = ["cdylib", "rlib"]
|
||||
path = "rust-src/lib.rs"
|
||||
|
||||
[build-dependencies]
|
||||
cc = "1"
|
||||
|
||||
[dependencies]
|
||||
js-sys = "0.3"
|
||||
js-sys = "0.3.94"
|
||||
openssl = "0.10.75"
|
||||
openssl-sys = { path = "vendor/openssl-sys" }
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
wasm-bindgen = "0.2.100"
|
||||
web-sys = { version = "0.3", features = ["Window", "Crypto"] }
|
||||
wasm-bindgen = "0.2.117"
|
||||
web-sys = { version = "0.3.94", features = ["Window", "Crypto"] }
|
||||
|
||||
[patch.crates-io]
|
||||
openssl-sys = { path = "vendor/openssl-sys" }
|
||||
|
||||
11
wasm/openssl/build.mjs
Normal file
11
wasm/openssl/build.mjs
Normal file
@@ -0,0 +1,11 @@
|
||||
import { cp, mkdir, rm } from "node:fs/promises"
|
||||
import { dirname, resolve } from "node:path"
|
||||
import { fileURLToPath } from "node:url"
|
||||
|
||||
const packageDir = dirname(fileURLToPath(import.meta.url))
|
||||
const sourceDir = resolve(packageDir, "src")
|
||||
const distDir = resolve(packageDir, "dist")
|
||||
|
||||
await rm(distDir, { recursive: true, force: true })
|
||||
await mkdir(distDir, { recursive: true })
|
||||
await cp(sourceDir, distDir, { recursive: true })
|
||||
@@ -1,6 +1,6 @@
|
||||
fn main() {
|
||||
cc::Build::new()
|
||||
.file("src/c_shim/vsnprintf_shim.c")
|
||||
.file("rust-src/c_shim/vsnprintf_shim.c")
|
||||
.flag_if_supported("-std=c99")
|
||||
.compile("vsnprintf_shim");
|
||||
}
|
||||
|
||||
@@ -4,8 +4,42 @@ set -euo pipefail
|
||||
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
cd "$ROOT_DIR"
|
||||
|
||||
OPENSSL_ROOT="/Users/libr/Desktop/Life/browser-apple/openssl-wasm/precompiled"
|
||||
LLVM_BIN="/opt/homebrew/opt/llvm/bin"
|
||||
OPENSSL_ROOT="${OPENSSL_ROOT:-${OPENSSL_PRECOMPILED_DIR:-$ROOT_DIR/precompiled}}"
|
||||
LLVM_BIN="${LLVM_BIN:-}"
|
||||
|
||||
if [[ ! -d "$OPENSSL_ROOT" ]]; then
|
||||
echo "OpenSSL precompiled directory not found: $OPENSSL_ROOT" >&2
|
||||
echo "Set OPENSSL_ROOT or OPENSSL_PRECOMPILED_DIR to a directory containing include/ and lib/." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "$LLVM_BIN" ]] && command -v brew >/dev/null 2>&1; then
|
||||
BREW_LLVM_PREFIX="$(brew --prefix llvm 2>/dev/null || true)"
|
||||
if [[ -n "$BREW_LLVM_PREFIX" && -x "$BREW_LLVM_PREFIX/bin/clang" ]]; then
|
||||
LLVM_BIN="$BREW_LLVM_PREFIX/bin"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -n "$LLVM_BIN" ]]; then
|
||||
CLANG_BIN="$LLVM_BIN/clang"
|
||||
LLVM_AR_BIN="$LLVM_BIN/llvm-ar"
|
||||
LLVM_RANLIB_BIN="$LLVM_BIN/llvm-ranlib"
|
||||
else
|
||||
CLANG_BIN="${CLANG_BIN:-$(command -v clang || true)}"
|
||||
LLVM_AR_BIN="${LLVM_AR_BIN:-$(command -v llvm-ar || true)}"
|
||||
LLVM_RANLIB_BIN="${LLVM_RANLIB_BIN:-$(command -v llvm-ranlib || true)}"
|
||||
fi
|
||||
|
||||
if [[ -z "$CLANG_BIN" || -z "$LLVM_AR_BIN" || -z "$LLVM_RANLIB_BIN" ]]; then
|
||||
echo "LLVM tools for wasm32-unknown-unknown are not available." >&2
|
||||
echo "Set LLVM_BIN or CLANG_BIN/LLVM_AR_BIN/LLVM_RANLIB_BIN." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! command -v wasm-bindgen >/dev/null 2>&1; then
|
||||
echo "Missing wasm-bindgen CLI. Install it with: cargo install wasm-bindgen-cli" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
export OPENSSL_NO_VENDOR=1
|
||||
export OPENSSL_STATIC=1
|
||||
@@ -14,22 +48,18 @@ export OPENSSL_LIB_DIR="$OPENSSL_ROOT/lib"
|
||||
export OPENSSL_INCLUDE_DIR="$OPENSSL_ROOT/include"
|
||||
export OPENSSL_LIBS="ssl:crypto"
|
||||
|
||||
export CC_wasm32_unknown_unknown="$LLVM_BIN/clang --target=wasm32-unknown-unknown"
|
||||
export AR_wasm32_unknown_unknown="$LLVM_BIN/llvm-ar"
|
||||
export RANLIB_wasm32_unknown_unknown="$LLVM_BIN/llvm-ranlib"
|
||||
export CC_wasm32_unknown_unknown="$CLANG_BIN --target=wasm32-unknown-unknown"
|
||||
export AR_wasm32_unknown_unknown="$LLVM_AR_BIN"
|
||||
export RANLIB_wasm32_unknown_unknown="$LLVM_RANLIB_BIN"
|
||||
|
||||
echo "[1/2] Building wasm32-unknown-unknown with openssl-rs..."
|
||||
cargo build --release --target wasm32-unknown-unknown
|
||||
|
||||
if command -v wasm-bindgen >/dev/null 2>&1; then
|
||||
echo "[2/2] Generating JS bindings with wasm-bindgen..."
|
||||
mkdir -p pkg
|
||||
wasm-bindgen \
|
||||
target/wasm32-unknown-unknown/release/openssl_wasm.wasm \
|
||||
--out-dir pkg \
|
||||
--target web
|
||||
echo "Done: pkg/ generated."
|
||||
else
|
||||
echo "[2/2] wasm-bindgen CLI not found; skipped JS binding generation."
|
||||
echo "Install via: cargo install wasm-bindgen-cli"
|
||||
fi
|
||||
echo "[2/2] Generating JS bindings with wasm-bindgen..."
|
||||
rm -rf binary
|
||||
mkdir -p binary
|
||||
wasm-bindgen \
|
||||
target/wasm32-unknown-unknown/release/openssl_wasm.wasm \
|
||||
--out-dir binary \
|
||||
--target web
|
||||
echo "Done: binary/ generated."
|
||||
|
||||
28
wasm/openssl/package.json
Normal file
28
wasm/openssl/package.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"name": "@lbr77/openssl-wasm",
|
||||
"version": "0.1.0",
|
||||
"description": "OpenSSL WebAssembly package with stable src/dist/binary layout.",
|
||||
"type": "module",
|
||||
"main": "./dist/index.mjs",
|
||||
"module": "./dist/index.mjs",
|
||||
"types": "./dist/index.d.ts",
|
||||
"exports": {
|
||||
".": {
|
||||
"types": "./dist/index.d.ts",
|
||||
"default": "./dist/index.mjs"
|
||||
},
|
||||
"./package.json": "./package.json"
|
||||
},
|
||||
"files": [
|
||||
"dist/**/*",
|
||||
"binary/**/*",
|
||||
"README.md"
|
||||
],
|
||||
"scripts": {
|
||||
"build:binary": "bash ./build.sh",
|
||||
"build:dist": "bun ./build.mjs",
|
||||
"build": "bun run build:binary && bun run build:dist",
|
||||
"clean": "rm -rf dist binary",
|
||||
"prepack": "bun run build"
|
||||
}
|
||||
}
|
||||
@@ -38,6 +38,15 @@ static COUNT_STAT: AtomicUsize = AtomicUsize::new(0);
|
||||
static COUNT_OPENDIR: AtomicUsize = AtomicUsize::new(0);
|
||||
static ARC4_FALLBACK_SEED: AtomicUsize = AtomicUsize::new(0x9E37_79B9);
|
||||
|
||||
#[no_mangle]
|
||||
pub static mut errno: c_int = 0;
|
||||
|
||||
#[no_mangle]
|
||||
pub static CLOCK_REALTIME: c_int = 0;
|
||||
|
||||
#[no_mangle]
|
||||
pub static _CLOCK_REALTIME: c_int = 0;
|
||||
|
||||
#[derive(Serialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
struct PairRecordWasmOut {
|
||||
3
wasm/openssl/src/index.d.ts
vendored
Normal file
3
wasm/openssl/src/index.d.ts
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
export * from "../binary/openssl_wasm.js"
|
||||
|
||||
export default function ensureOpenSslWasmModuleReady(input?: unknown): Promise<void>
|
||||
17
wasm/openssl/src/index.mjs
Normal file
17
wasm/openssl/src/index.mjs
Normal file
@@ -0,0 +1,17 @@
|
||||
import initOpenSslWasm from "../binary/openssl_wasm.js"
|
||||
|
||||
export * from "../binary/openssl_wasm.js"
|
||||
|
||||
let initPromise = null
|
||||
|
||||
/**
|
||||
* Keep a stable ESM wrapper in `src/` so consumers always import the package
|
||||
* entry, while the raw wasm-bindgen output stays isolated in `binary/`.
|
||||
*/
|
||||
export default async function ensureOpenSslWasmModuleReady(input) {
|
||||
if (!initPromise) {
|
||||
initPromise = Promise.resolve(initOpenSslWasm(input)).then(() => undefined)
|
||||
}
|
||||
|
||||
await initPromise
|
||||
}
|
||||
Reference in New Issue
Block a user