strongroomd 0.1.0-arm64-darwin
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +28 -0
- data/README.md +54 -0
- data/exe/strongroom-admin +12 -0
- data/exe/strongroomd +12 -0
- data/lib/strongroomd/binary.rb +79 -0
- data/lib/strongroomd/version.rb +5 -0
- data/lib/strongroomd.rb +4 -0
- data/vendor/arm64-darwin/bin/strongroom-admin +0 -0
- data/vendor/arm64-darwin/bin/strongroomd +0 -0
- data/vendor/arm64-darwin/manifest.json +9 -0
- metadata +89 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: abff7fc72ae6260382d25cce26ec4b21995ba1f3601202cf621bf30e68b1764a
|
|
4
|
+
data.tar.gz: cc3746e7198e54c7c023fadca8766c24a8835cbe78f2e360cd250f9bc080be32
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: eeb568a32a1b10cf8bfe3402c0b3e3067f538a6103e5ef4ff21cf1b880ef2cc436d2bf812c768a0aee20690e3568be395b172f02659c91e6cf7a2381da8dfcb3
|
|
7
|
+
data.tar.gz: 841716d2a310bdcf26607c4cd459483d6a3eef800f0c422ec280e8771dc2d229d631063f6849aeab93616f2935991d2f4841b40034e1fdc38bb043ef3d5d6b8c
|
data/LICENSE
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026, Seuros
|
|
4
|
+
|
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
|
7
|
+
|
|
8
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
9
|
+
list of conditions and the following disclaimer.
|
|
10
|
+
|
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
12
|
+
this list of conditions and the following disclaimer in the documentation
|
|
13
|
+
and/or other materials provided with the distribution.
|
|
14
|
+
|
|
15
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
16
|
+
contributors may be used to endorse or promote products derived from
|
|
17
|
+
this software without specific prior written permission.
|
|
18
|
+
|
|
19
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
20
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
21
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
22
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
23
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
24
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
25
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
26
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
27
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
28
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
data/README.md
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# strongroomd — prebuilt daemon binaries
|
|
2
|
+
|
|
3
|
+
Prebuilt [`strongroomd`](https://github.com/seuros/strongroom), a Postgres-first
|
|
4
|
+
authentication kernel that acts as your application's security coprocessor, and
|
|
5
|
+
its `strongroom-admin` operator CLI. For the Rails adapter, see
|
|
6
|
+
[`strongroom-rails`](https://rubygems.org/gems/strongroom-rails); it carries no
|
|
7
|
+
binary and does not depend on this gem.
|
|
8
|
+
|
|
9
|
+
> **Status: pre-production.** Strongroom has not been audited and is not approved
|
|
10
|
+
> for production traffic or real credential imports.
|
|
11
|
+
|
|
12
|
+
```ruby
|
|
13
|
+
gem "strongroomd"
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
bundle exec strongroom-admin migrate
|
|
18
|
+
bundle exec strongroomd
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Platforms
|
|
22
|
+
|
|
23
|
+
Platform gems exist for `x86_64-linux-gnu`, `aarch64-linux-gnu`,
|
|
24
|
+
`x86_64-linux-musl`, `aarch64-linux-musl`, `arm64-darwin` and `x86_64-darwin`.
|
|
25
|
+
Each carries `vendor/<platform>/bin/strongroomd`, `strongroom-admin` and a
|
|
26
|
+
`manifest.json` with the version, platform and SHA-256 of each binary. Both
|
|
27
|
+
launchers refuse a binary whose digest, version or platform does not match.
|
|
28
|
+
|
|
29
|
+
If `Gemfile.lock` lists only the `ruby` platform, add the deployment's, for
|
|
30
|
+
example `bundle lock --add-platform x86_64-linux-gnu`.
|
|
31
|
+
|
|
32
|
+
## Your own build
|
|
33
|
+
|
|
34
|
+
The platformless (`ruby`) gem carries only the launchers. Point them at a build
|
|
35
|
+
of your own with `STRONGROOM_BINARY` and `STRONGROOM_ADMIN_BINARY`; each must
|
|
36
|
+
report exactly this gem's version (`strongroomd --version`). There is no PATH
|
|
37
|
+
lookup and no download.
|
|
38
|
+
|
|
39
|
+
`Strongroomd::Binary.path("strongroomd")` returns the verified path, for process
|
|
40
|
+
supervisors.
|
|
41
|
+
|
|
42
|
+
## Versions
|
|
43
|
+
|
|
44
|
+
This gem shares its version with the Rust crates (`cargo install strongroomd`)
|
|
45
|
+
and is released from the same `v<version>` tag.
|
|
46
|
+
|
|
47
|
+
## Development
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
bundle exec rake test
|
|
51
|
+
rake gem:ruby # pkg/strongroomd-<version>.gem, launchers only
|
|
52
|
+
rake gem:native # pkg/strongroomd-<version>-<platform>.gem for this host (needs Rust)
|
|
53
|
+
rake gems:push # pull the v<version> GitHub release, verify it, push every gem to RubyGems
|
|
54
|
+
```
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require "strongroomd"
|
|
5
|
+
|
|
6
|
+
begin
|
|
7
|
+
path = Strongroomd::Binary.path("strongroom-admin")
|
|
8
|
+
exec([path, "strongroom-admin"], *ARGV)
|
|
9
|
+
rescue Strongroomd::BinaryError, SystemCallError => error
|
|
10
|
+
warn error.message
|
|
11
|
+
exit 1
|
|
12
|
+
end
|
data/exe/strongroomd
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require "strongroomd"
|
|
5
|
+
|
|
6
|
+
begin
|
|
7
|
+
path = Strongroomd::Binary.path("strongroomd")
|
|
8
|
+
exec([path, "strongroomd"], *ARGV)
|
|
9
|
+
rescue Strongroomd::BinaryError, SystemCallError => error
|
|
10
|
+
warn error.message
|
|
11
|
+
exit 1
|
|
12
|
+
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "digest"
|
|
4
|
+
require "json"
|
|
5
|
+
require "open3"
|
|
6
|
+
|
|
7
|
+
require_relative "version"
|
|
8
|
+
|
|
9
|
+
module Strongroomd
|
|
10
|
+
class Error < StandardError; end
|
|
11
|
+
class BinaryError < Error; end
|
|
12
|
+
|
|
13
|
+
# Locates the executables bundled in this platform gem. Never downloads a binary
|
|
14
|
+
# or selects an unrelated one from PATH.
|
|
15
|
+
module Binary
|
|
16
|
+
ROOT = File.expand_path("../..", __dir__)
|
|
17
|
+
OVERRIDES = {"strongroomd" => "STRONGROOM_BINARY", "strongroom-admin" => "STRONGROOM_ADMIN_BINARY"}.freeze
|
|
18
|
+
NAMES = OVERRIDES.keys.freeze
|
|
19
|
+
|
|
20
|
+
module_function
|
|
21
|
+
|
|
22
|
+
def platform(local = Gem::Platform.local)
|
|
23
|
+
case local.os
|
|
24
|
+
when "darwin"
|
|
25
|
+
cpu = %w[arm64 aarch64].include?(local.cpu) ? "arm64" : local.cpu
|
|
26
|
+
"#{cpu}-darwin"
|
|
27
|
+
when "linux"
|
|
28
|
+
cpu = %w[arm64 aarch64].include?(local.cpu) ? "aarch64" : local.cpu
|
|
29
|
+
"#{cpu}-linux-#{(local.version == "musl") ? "musl" : "gnu"}"
|
|
30
|
+
else
|
|
31
|
+
raise BinaryError, "unsupported Strongroom platform: #{local}"
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# The executable to run: the explicit override when its variable is set,
|
|
36
|
+
# otherwise the bundled one.
|
|
37
|
+
def path(name = "strongroomd", env: ENV, root: ROOT)
|
|
38
|
+
variable = OVERRIDES.fetch(name) { raise BinaryError, "unknown Strongroom executable: #{name}" }
|
|
39
|
+
return override(name, variable, env.fetch(variable)) if env.key?(variable)
|
|
40
|
+
|
|
41
|
+
bundled(name, root: root)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Accepts an override only when it reports exactly this gem's version.
|
|
45
|
+
def override(name, variable, value)
|
|
46
|
+
candidate = File.expand_path(value)
|
|
47
|
+
executable!(candidate, variable)
|
|
48
|
+
output, status = Open3.capture2e(candidate, "--version")
|
|
49
|
+
expected = "#{name} #{Strongroomd::VERSION}"
|
|
50
|
+
raise BinaryError, "#{variable} must be #{expected}" unless status.success? && output.strip == expected
|
|
51
|
+
|
|
52
|
+
candidate
|
|
53
|
+
rescue SystemCallError
|
|
54
|
+
raise BinaryError, "#{variable} must be #{name} #{Strongroomd::VERSION}"
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# The vendored executable, after checking it against the gem's release manifest.
|
|
58
|
+
def bundled(name, root: ROOT, platform: self.platform)
|
|
59
|
+
directory = File.join(root, "vendor", platform)
|
|
60
|
+
candidate = File.join(directory, "bin", name)
|
|
61
|
+
executable!(candidate, OVERRIDES.fetch(name))
|
|
62
|
+
manifest = JSON.parse(File.read(File.join(directory, "manifest.json")))
|
|
63
|
+
digests = manifest["sha256"]
|
|
64
|
+
unless manifest["version"] == Strongroomd::VERSION && manifest["platform"] == platform &&
|
|
65
|
+
digests.is_a?(Hash) && digests[name] == Digest::SHA256.file(candidate).hexdigest
|
|
66
|
+
raise BinaryError, "bundled #{name} does not match its release manifest"
|
|
67
|
+
end
|
|
68
|
+
candidate
|
|
69
|
+
rescue SystemCallError, JSON::ParserError
|
|
70
|
+
raise BinaryError, "missing or invalid Strongroom binary manifest; reinstall the platform gem"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def executable!(candidate, variable)
|
|
74
|
+
return if File.file?(candidate) && File.executable?(candidate)
|
|
75
|
+
|
|
76
|
+
raise BinaryError, "no executable at #{candidate}; install the platform gem or set #{variable}"
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
data/lib/strongroomd.rb
ADDED
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.1.0",
|
|
3
|
+
"platform": "arm64-darwin",
|
|
4
|
+
"target": "aarch64-apple-darwin",
|
|
5
|
+
"sha256": {
|
|
6
|
+
"strongroomd": "5d98fec2c1bfef5f08332f510a0e8247e24222c1c0cbc63a80586f490c548dc1",
|
|
7
|
+
"strongroom-admin": "f5b219faf47f317e8f274e4098df5af31b517b691ac4e24322013e4a6cba7f9b"
|
|
8
|
+
}
|
|
9
|
+
}
|
metadata
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: strongroomd
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: arm64-darwin
|
|
6
|
+
authors:
|
|
7
|
+
- Seuros
|
|
8
|
+
bindir: exe
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: minitest
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '6.0'
|
|
19
|
+
type: :development
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - "~>"
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '6.0'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: rake
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '13.0'
|
|
33
|
+
type: :development
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '13.0'
|
|
40
|
+
description: Prebuilt binaries of strongroomd, a Postgres-first authentication kernel
|
|
41
|
+
that acts as the application's security coprocessor, and its strongroom-admin CLI.
|
|
42
|
+
Each platform gem bundles both executables with a SHA-256 manifest the launchers
|
|
43
|
+
check before running them; the platformless gem runs only an explicitly configured
|
|
44
|
+
binary of the same version. Pair it with strongroom-rails.
|
|
45
|
+
email:
|
|
46
|
+
- terminale@gmail.com
|
|
47
|
+
executables:
|
|
48
|
+
- strongroom-admin
|
|
49
|
+
- strongroomd
|
|
50
|
+
extensions: []
|
|
51
|
+
extra_rdoc_files: []
|
|
52
|
+
files:
|
|
53
|
+
- LICENSE
|
|
54
|
+
- README.md
|
|
55
|
+
- exe/strongroom-admin
|
|
56
|
+
- exe/strongroomd
|
|
57
|
+
- lib/strongroomd.rb
|
|
58
|
+
- lib/strongroomd/binary.rb
|
|
59
|
+
- lib/strongroomd/version.rb
|
|
60
|
+
- vendor/arm64-darwin/bin/strongroom-admin
|
|
61
|
+
- vendor/arm64-darwin/bin/strongroomd
|
|
62
|
+
- vendor/arm64-darwin/manifest.json
|
|
63
|
+
homepage: https://github.com/seuros/strongroom
|
|
64
|
+
licenses:
|
|
65
|
+
- BSD-3-Clause
|
|
66
|
+
metadata:
|
|
67
|
+
homepage_uri: https://github.com/seuros/strongroom
|
|
68
|
+
source_code_uri: https://github.com/seuros/strongroom/tree/master/gems/strongroomd
|
|
69
|
+
changelog_uri: https://github.com/seuros/strongroom/blob/master/CHANGELOG.md
|
|
70
|
+
bug_tracker_uri: https://github.com/seuros/strongroom/issues
|
|
71
|
+
rubygems_mfa_required: 'true'
|
|
72
|
+
rdoc_options: []
|
|
73
|
+
require_paths:
|
|
74
|
+
- lib
|
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
76
|
+
requirements:
|
|
77
|
+
- - ">="
|
|
78
|
+
- !ruby/object:Gem::Version
|
|
79
|
+
version: '4.0'
|
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
|
+
requirements:
|
|
82
|
+
- - ">="
|
|
83
|
+
- !ruby/object:Gem::Version
|
|
84
|
+
version: '0'
|
|
85
|
+
requirements: []
|
|
86
|
+
rubygems_version: 4.0.20
|
|
87
|
+
specification_version: 4
|
|
88
|
+
summary: The strongroomd authentication daemon and strongroom-admin CLI, prebuilt
|
|
89
|
+
test_files: []
|