aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorV1K1NGbg <victor@ilchev.com>2024-07-28 00:47:36 +0300
committerV1K1NGbg <victor@ilchev.com>2024-08-05 20:49:17 +0300
commit6ba46976d477ecbe09c44ee14a451cd014d2fd0b (patch)
treecd27f05c4bdf6cff94ffc5c8902d4201b2f1379f /src
parent6ebbf9abeccc119078eadf8bf0a9d5341a7d327b (diff)
downloadluarocks-6ba46976d477ecbe09c44ee14a451cd014d2fd0b.tar.gz
luarocks-6ba46976d477ecbe09c44ee14a451cd014d2fd0b.tar.bz2
luarocks-6ba46976d477ecbe09c44ee14a451cd014d2fd0b.zip
signing
Diffstat (limited to 'src')
-rw-r--r--src/luarocks/core/cfg.d.tl1
-rw-r--r--src/luarocks/fs.d.tl3
-rw-r--r--src/luarocks/signing-original.lua48
-rw-r--r--src/luarocks/signing.tl48
-rw-r--r--src/luarocks/util.lua2
5 files changed, 101 insertions, 1 deletions
diff --git a/src/luarocks/core/cfg.d.tl b/src/luarocks/core/cfg.d.tl
index f21bd64c..2218c172 100644
--- a/src/luarocks/core/cfg.d.tl
+++ b/src/luarocks/core/cfg.d.tl
@@ -59,6 +59,7 @@ local record cfg
59 59
60 record variables 60 record variables
61 LUA: string 61 LUA: string
62 GPG: string
62 end 63 end
63 rocks_provided: {Rockspec} 64 rocks_provided: {Rockspec}
64end 65end
diff --git a/src/luarocks/fs.d.tl b/src/luarocks/fs.d.tl
index fe96b742..17a367cc 100644
--- a/src/luarocks/fs.d.tl
+++ b/src/luarocks/fs.d.tl
@@ -14,6 +14,9 @@ local record fs
14 current_dir: function(): string 14 current_dir: function(): string
15 list_dir: function(string): {string} 15 list_dir: function(string): {string}
16 delete: function(string) 16 delete: function(string)
17 -- signing
18 is_tool_available: function(string, string): string, string
19 execute: function(...: string): boolean --? boolean? src/luarocks/signing.tl: 27
17end 20end
18 21
19return fs 22return fs
diff --git a/src/luarocks/signing-original.lua b/src/luarocks/signing-original.lua
new file mode 100644
index 00000000..cb91643a
--- /dev/null
+++ b/src/luarocks/signing-original.lua
@@ -0,0 +1,48 @@
1local signing = {}
2
3local cfg = require("luarocks.core.cfg")
4local fs = require("luarocks.fs")
5
6local function get_gpg()
7 local vars = cfg.variables
8 local gpg = vars.GPG
9 local gpg_ok, err = fs.is_tool_available(gpg, "gpg")
10 if not gpg_ok then
11 return nil, err
12 end
13 return gpg
14end
15
16function signing.signature_url(url)
17 return url .. ".asc"
18end
19
20function signing.sign_file(file)
21 local gpg, err = get_gpg()
22 if not gpg then
23 return nil, err
24 end
25
26 local sigfile = file .. ".asc"
27 if fs.execute(gpg, "--armor", "--output", sigfile, "--detach-sign", file) then
28 return sigfile
29 else
30 return nil, "failed running " .. gpg .. " to sign " .. file
31 end
32end
33
34function signing.verify_signature(file, sigfile)
35 local gpg, err = get_gpg()
36 if not gpg then
37 return nil, err
38 end
39
40 if fs.execute(gpg, "--verify", sigfile, file) then
41 return true
42 else
43 return nil, "GPG returned a verification error"
44 end
45
46end
47
48return signing
diff --git a/src/luarocks/signing.tl b/src/luarocks/signing.tl
new file mode 100644
index 00000000..114be6c8
--- /dev/null
+++ b/src/luarocks/signing.tl
@@ -0,0 +1,48 @@
1local signing = {}
2
3local cfg = require("luarocks.core.cfg")
4local fs = require("luarocks.fs")
5
6local function get_gpg(): string, string
7 local vars = cfg.variables
8 local gpg = vars.GPG --? string from line 30
9 local gpg_ok, err = fs.is_tool_available(gpg, "gpg")
10 if not gpg_ok then
11 return nil, err
12 end
13 return gpg
14end
15
16function signing.signature_url(url: string): string
17 return url .. ".asc"
18end
19
20function signing.sign_file(file: string): string, string
21 local gpg, err = get_gpg()
22 if not gpg then
23 return nil, err
24 end
25
26 local sigfile = file .. ".asc"
27 if fs.execute(gpg, "--armor", "--output", sigfile, "--detach-sign", file) then
28 return sigfile
29 else
30 return nil, "failed running " .. gpg .. " to sign " .. file
31 end
32end
33
34function signing.verify_signature(file: string, sigfile: string): boolean, string
35 local gpg, err = get_gpg()
36 if not gpg then
37 return nil, err
38 end
39
40 if fs.execute(gpg, "--verify", sigfile, file) then
41 return true
42 else
43 return nil, "GPG returned a verification error"
44 end
45
46end
47
48return signing
diff --git a/src/luarocks/util.lua b/src/luarocks/util.lua
index cca7aa85..165cb8fa 100644
--- a/src/luarocks/util.lua
+++ b/src/luarocks/util.lua
@@ -63,7 +63,7 @@ local scheduled_functions = {}
63 63
64 64
65function util.schedule_function(f, ...) 65function util.schedule_function(f, ...)
66 local pack = table.pack or function(...) return { n = select("#", ...), ... } end --TEST 66 local pack = table.pack or function(...) return { n = select("#", ...), ... } end --! FOR TESTS TO PASS
67 67
68 local item = { fn = f, args = pack(...) } 68 local item = { fn = f, args = pack(...) }
69 table.insert(scheduled_functions, item) 69 table.insert(scheduled_functions, item)