diff options
| author | V1K1NGbg <victor@ilchev.com> | 2024-07-28 00:47:36 +0300 |
|---|---|---|
| committer | V1K1NGbg <victor@ilchev.com> | 2024-08-05 20:49:17 +0300 |
| commit | 6ba46976d477ecbe09c44ee14a451cd014d2fd0b (patch) | |
| tree | cd27f05c4bdf6cff94ffc5c8902d4201b2f1379f /src | |
| parent | 6ebbf9abeccc119078eadf8bf0a9d5341a7d327b (diff) | |
| download | luarocks-6ba46976d477ecbe09c44ee14a451cd014d2fd0b.tar.gz luarocks-6ba46976d477ecbe09c44ee14a451cd014d2fd0b.tar.bz2 luarocks-6ba46976d477ecbe09c44ee14a451cd014d2fd0b.zip | |
signing
Diffstat (limited to 'src')
| -rw-r--r-- | src/luarocks/core/cfg.d.tl | 1 | ||||
| -rw-r--r-- | src/luarocks/fs.d.tl | 3 | ||||
| -rw-r--r-- | src/luarocks/signing-original.lua | 48 | ||||
| -rw-r--r-- | src/luarocks/signing.tl | 48 | ||||
| -rw-r--r-- | src/luarocks/util.lua | 2 |
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} |
| 64 | end | 65 | end |
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 | ||
| 17 | end | 20 | end |
| 18 | 21 | ||
| 19 | return fs | 22 | return 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 @@ | |||
| 1 | local signing = {} | ||
| 2 | |||
| 3 | local cfg = require("luarocks.core.cfg") | ||
| 4 | local fs = require("luarocks.fs") | ||
| 5 | |||
| 6 | local 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 | ||
| 14 | end | ||
| 15 | |||
| 16 | function signing.signature_url(url) | ||
| 17 | return url .. ".asc" | ||
| 18 | end | ||
| 19 | |||
| 20 | function 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 | ||
| 32 | end | ||
| 33 | |||
| 34 | function 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 | |||
| 46 | end | ||
| 47 | |||
| 48 | return 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 @@ | |||
| 1 | local signing = {} | ||
| 2 | |||
| 3 | local cfg = require("luarocks.core.cfg") | ||
| 4 | local fs = require("luarocks.fs") | ||
| 5 | |||
| 6 | local 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 | ||
| 14 | end | ||
| 15 | |||
| 16 | function signing.signature_url(url: string): string | ||
| 17 | return url .. ".asc" | ||
| 18 | end | ||
| 19 | |||
| 20 | function 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 | ||
| 32 | end | ||
| 33 | |||
| 34 | function 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 | |||
| 46 | end | ||
| 47 | |||
| 48 | return 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 | ||
| 65 | function util.schedule_function(f, ...) | 65 | function 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) |
