Skip to content
This repository was archived by the owner on Mar 16, 2026. It is now read-only.

Commit 32a2a14

Browse files
jainejaine
authored andcommitted
ci: install luasodium; accept sodium/luasodium in checks
1 parent 55949b9 commit 32a2a14

5 files changed

Lines changed: 47 additions & 17 deletions

File tree

.github/workflows/ci.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ jobs:
2020
sudo apt-get update
2121
sudo apt-get install -y lua5.4 lua5.4-dev luarocks libsodium-dev
2222
23-
- name: "Install required rocks (Lua 5.4: lua-cjson/luv/lsqlite3/luaossl/sodium)"
23+
- name: "Install required rocks (Lua 5.4: lua-cjson/luv/lsqlite3/luaossl/luasodium)"
2424
run: |
25-
rocks=(lua-cjson luv lsqlite3 luaossl sodium)
25+
rocks=(lua-cjson luv lsqlite3 luaossl luasodium)
2626
for rock in "${rocks[@]}"; do
2727
luarocks --lua-version=5.4 install --local "$rock" || exit 1
2828
done
@@ -48,7 +48,7 @@ jobs:
4848
4949
- name: Install gitleaks
5050
run: |
51-
curl -sSfL https://raw.githubusercontent.com/gitleaks/gitleaks/master/install.sh | bash -s -- -b /usr/local/bin
51+
curl -sSfL https://raw.githubusercontent.com/gitleaks/gitleaks/main/install.sh | bash -s -- -b /usr/local/bin
5252
5353
- name: Preflight (schemas + Lua syntax + deps)
5454
env:

ao/shared/arweave.lua

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ local cjson = cjson_safe or require("cjson") -- required dependency
2828
local schema = require("ao.shared.schema")
2929
local openssl_ok, openssl = pcall(require, "openssl")
3030
local sodium_ok, sodium = pcall(require, "sodium")
31+
if not sodium_ok then
32+
sodium_ok, sodium = pcall(require, "luasodium")
33+
end
3134

3235
local function next_tx()
3336
counter = counter + 1

ao/shared/auth.lua

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ local DEVICE_TOKEN = os.getenv("AUTH_DEVICE_TOKEN")
2323
local REQUIRE_DEVICE = os.getenv("AUTH_REQUIRE_DEVICE_TOKEN") == "1"
2424
local openssl_ok, openssl = pcall(require, "openssl")
2525
local sodium_ok, sodium = pcall(require, "sodium")
26+
if not sodium_ok then
27+
sodium_ok, sodium = pcall(require, "luasodium")
28+
end
2629
local ed25519_ok, ed25519 = pcall(require, "ed25519") -- pure-lua (MIT) if installed
2730
local sqlite_ok, sqlite = pcall(require, "lsqlite3")
2831
local SHELL_FALLBACK = os.getenv("AUTH_ALLOW_SHELL_FALLBACK") == "1" -- default now off

scripts/verify/deps_check.lua

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
local deps = {
2-
{ name = "luv", mod = "luv" },
3-
{ name = "lsqlite3", mod = "lsqlite3" },
4-
{ name = "cjson", mod = "cjson.safe" },
5-
{ name = "luaossl", mod = "openssl" },
6-
{ name = "sodium", mod = "sodium" },
2+
{ name = "luv", mods = { "luv" } },
3+
{ name = "lsqlite3", mods = { "lsqlite3" } },
4+
{ name = "cjson", mods = { "cjson.safe", "cjson" } },
5+
{ name = "luaossl", mods = { "openssl" } },
6+
{ name = "sodium", mods = { "sodium", "luasodium" } },
77
}
88

99
local function require_any(label, modules)
@@ -20,11 +20,11 @@ end
2020

2121
-- core deps
2222
for _, d in ipairs(deps) do
23-
if not require_any(d.name, { d.mod }) then os.exit(1) end
23+
if not require_any(d.name, d.mods) then os.exit(1) end
2424
end
2525

2626
-- Ed25519 signer: allow either ed25519 rock or sodium providing crypto_sign_* API
27-
local ed25519_ok = require_any("ed25519", { "ed25519", "sodium" })
27+
local ed25519_ok = require_any("ed25519", { "ed25519", "sodium", "luasodium" })
2828
if not ed25519_ok then os.exit(1) end
2929

3030
-- Fail-closed if signatures required and no sodium available (used for ed25519)

scripts/verify/libsodium_strict.sh

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,33 @@
11
#!/usr/bin/env bash
22
set -euo pipefail
3-
python3 - <<'PY'
4-
import importlib
5-
mods = ["sodium", "ed25519"]
6-
missing = [m for m in mods if importlib.util.find_spec(m) is None]
7-
if missing:
8-
raise SystemExit(f"Missing modules: {missing}")
9-
PY
3+
4+
lua_versions=(lua5.4 lua)
5+
found_lua=""
6+
for l in "${lua_versions[@]}"; do
7+
if command -v "$l" >/dev/null 2>&1; then
8+
found_lua="$l"
9+
break
10+
fi
11+
done
12+
13+
if [ -z "$found_lua" ]; then
14+
echo "Lua interpreter not found for libsodium check" >&2
15+
exit 1
16+
fi
17+
18+
"$found_lua" - <<'LUA'
19+
local function require_any(mods)
20+
for _, m in ipairs(mods) do
21+
local ok, mod = pcall(require, m)
22+
if ok then return true end
23+
end
24+
return false
25+
end
26+
27+
local sodium_ok = require_any({ "sodium", "luasodium" })
28+
local ed_ok = require_any({ "ed25519", "sodium", "luasodium" })
29+
30+
if not sodium_ok or not ed_ok then
31+
error(string.format("Missing sodium/ed25519 (sodium:%s ed25519:%s)", tostring(sodium_ok), tostring(ed_ok)))
32+
end
33+
LUA

0 commit comments

Comments
 (0)