strongroomd 0.1.0-x86_64-linux-musl

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 71d5d049cacd0fca58013199f714faa4761bc4a68d62602efe2a757ef8812921
4
+ data.tar.gz: c023d44a71cb89df555cf482b5e7c4509d69f82c0d2474ab18e08a29af17ce12
5
+ SHA512:
6
+ metadata.gz: 940df31d237e669e01dacbccc744623a48bfaf9df53371575283b42f4ba6a0e3a1d7435ffc34af86f1e17aab7e7854495b853650421546b33544bb23e28f4ebb
7
+ data.tar.gz: af43b9fc875bdef037e3dd52825d3c7898850832f36fe96f6e5ce9534b77f2a5f5da6c6784997376b1bb95e51e3045961d2cc46d177f616e0f0e6b742232dfbc
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
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Strongroomd
4
+ VERSION = "0.1.0" # x-release-please-version
5
+ end
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "strongroomd/version"
4
+ require_relative "strongroomd/binary"
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "0.1.0",
3
+ "platform": "x86_64-linux-musl",
4
+ "target": "x86_64-unknown-linux-musl",
5
+ "sha256": {
6
+ "strongroomd": "d4a5fdbee540484cdd5cb92131ec7ee88a6d0bc507da7d52e61afa908a966843",
7
+ "strongroom-admin": "aba519a1e28385612723d0d98a673b184a231484dd41764e3d59a994354aec1b"
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: x86_64-linux-musl
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/x86_64-linux-musl/bin/strongroom-admin
61
+ - vendor/x86_64-linux-musl/bin/strongroomd
62
+ - vendor/x86_64-linux-musl/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: []