revault_api 0.1.0-aarch64-linux → 0.3.12-aarch64-linux

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2d880e754be5480c6279cf84d892323e67e4255a627ce98450fb5a121687835d
4
- data.tar.gz: 198bdb505793856ef0de283a749a684c229d58c1c52ef10e59a2c2737e25ab6a
3
+ metadata.gz: 3efa85e4f6c3a302809824e0d2bf3917170197aaf19d3b114ce0a4d255941700
4
+ data.tar.gz: 4b269c717259473dfb57bfdef584956307a3bdeebcef77b161a0b584124e2945
5
5
  SHA512:
6
- metadata.gz: 36a0cef1e88cc0f63999f099787a4b41fbf6ac7d34510afa729c708e91d08368fdc8e8701ddb0188a0f3499caec2ba5bc3df25f726320ff9d05b8ccb61df8dab
7
- data.tar.gz: 8a7845af64a1a49562d6d409a1ec529bffcc5b1182c8af88d91f50ab585bd2b97c971425d20bbe54367e181815efd1d97e3b46fd75298ad8629575f13fcd470c
6
+ metadata.gz: 3c098655bb4c721e80751addd38e5be933885faf080cb1a7a03452d47962e6f00ce78587e3dfde79ffe610a6bba8b61f1ccb54f56659c601c5a867d100764fa8
7
+ data.tar.gz: bd955113153f2c8b64d63070bb5a1c01aeda16e7b5b5305c2fac389fdf989f574bc499bd74d49f235ad9a0d86b63b3b9065e7262cc6ac441388f75c618ffc351
data/LICENSE CHANGED
@@ -1,8 +1,8 @@
1
- reVault Source Available License 1.0
1
+ Dvault Source Available License 1.0
2
2
 
3
3
  Copyright (c) 2021 OnePub IP Pty Ltd
4
4
 
5
- This license applies to the reVault software and associated documentation files
5
+ This license applies to the dvault software and associated documentation files
6
6
  (the "Software").
7
7
 
8
8
  1. Grant of Rights
data/README.md ADDED
@@ -0,0 +1,419 @@
1
+ # reVault / Lockbox
2
+
3
+ reVault creates portable archives that are secure and compressed.
4
+
5
+ The reVault archives are called 'Lockboxes'.
6
+
7
+ You can think of a Lockbox as a zip file on steriods.
8
+
9
+ A Lockbox can be used to store:
10
+ * files
11
+ * directories
12
+ * symlinks
13
+ * file/directory permissions
14
+ * variables
15
+ * forms (collection of variables)
16
+
17
+
18
+ A lockbox is encrypted, compressed and signed using modern encryption and compress
19
+ techniques.
20
+
21
+ reVault is designed to be simple and safe to use, avoiding overly complex
22
+ terminology.
23
+
24
+ reVault works on Linux, Windows and MacOS.
25
+
26
+ reVault ships as a:
27
+ * cli
28
+ * apis
29
+ * libraries for multiple languages
30
+
31
+
32
+
33
+ - `revault_cli`, a CLI for everyday use.
34
+ - `revault_lockbox_api`, for creating lockboxes.
35
+ - `revault_vault_api`, for creating and managing vaults.
36
+
37
+ Terminology is explicit:
38
+
39
+ - A **lockbox** is a portable archive and uses the `.lbox` extension.
40
+ - A **key** is used to lock and unlock lockboxes. Keys are more secure than passwords.
41
+ - A **vault** is where we store information about lockboxes such as the keys
42
+ used to open and close a lockbox. The vault also holds a contact list which helps us share
43
+ lockboxes with other people.
44
+
45
+
46
+ > **Pre-release:** the Rust implementation is currently alpha software. The
47
+ > archive format and public APIs may change between releases. Do not use it as
48
+ > the only copy of important data, and keep vault backups and profile recovery
49
+ > material offline.
50
+
51
+ ## Installation
52
+
53
+ The best way to start with reVault is to install the CLI tooling.
54
+
55
+
56
+ ### crates.io
57
+ The easist way to install the reVault CLI is from crates.io
58
+
59
+ ```
60
+ cargo install revault_cli
61
+ ```
62
+
63
+
64
+ ### repo
65
+
66
+ You can also install the CLI by cloning the github repo.
67
+
68
+ ```bash
69
+ git clone https://github.com/onepub-dev/reVault.git
70
+ cd reVault/rust
71
+ cargo xtask install-cli
72
+ ```
73
+
74
+ # Initialise your vault
75
+
76
+ In order to create a lockbox you must first initialise your Vault.
77
+
78
+ When you install the reVault CLI, Cargo installs both `lockbox` app and its alias `lbx` into `~/.cargo/bin`.
79
+ Ensure that directory is on your `PATH`.
80
+
81
+ To initialise your vault run:
82
+
83
+ ```bash
84
+ lbx vault init
85
+ ```
86
+ The init command will create the keys need to create/open and close lockboxes.
87
+ The keys are stored in your reVault vault.
88
+
89
+ The init command will also dump those keys to the terminal. You need to backup those
90
+ keys safely.
91
+ * If you loose the keys you will not be able to access any lockbox - there is no way to recover from this!!!
92
+ * If some else gets access to those keys then they have access to all of your lockboxes.
93
+
94
+
95
+ ## CLI Quick Start
96
+
97
+ Create a lockbox for the default vault profile: (recommended)
98
+
99
+ ```bash
100
+ lockbox secrets.lbox create
101
+ ```
102
+
103
+ For a lockbox protected by a passphrase instead of a vault profile:
104
+
105
+ This form is less secure than using a profile.
106
+
107
+ ```bash
108
+ lockbox secrets.lbox create --password
109
+ ```
110
+
111
+ Open it for normal commands:
112
+
113
+ ```bash
114
+ lockbox secrets.lbox open
115
+ ```
116
+
117
+ ### Persistent directory mirrors
118
+
119
+ A mirror project records a one-way relationship between a host directory and
120
+ an exclusively managed directory inside the lockbox. The project definition,
121
+ including its include and exclude rules, is encrypted inside the lockbox and
122
+ travels with it.
123
+
124
+ ```bash
125
+ lbx secrets.lbox mirror source create --from ./src --to /projects/source
126
+ lbx secrets.lbox mirror source rule add exclude target/** '*.tmp'
127
+ lbx secrets.lbox mirror source status
128
+ lbx secrets.lbox mirror source update
129
+ ```
130
+
131
+ `status` previews the complete plan; `update` recalculates and applies it.
132
+ Multiple projects can coexist when their destination directories do not
133
+ overlap. See the [CLI guide](docs/cli_how_to.md#mirror-a-host-directory-safely)
134
+ for ownership, deletion, rule, and safety details.
135
+
136
+ The open is cached in a per-user in-memory agent which will automatically close
137
+ it after about 30mins. Lock it when you are done:
138
+
139
+ ```bash
140
+ lockbox secrets.lbox close
141
+ ```
142
+
143
+ Add files:
144
+
145
+ ```bash
146
+ lockbox secrets.lbox add --recursive ./project --to project/
147
+ lockbox secrets.lbox add ./generated.env --to secrets/prod.env
148
+ ```
149
+
150
+ List and extract:
151
+
152
+ ```bash
153
+ lockbox secrets.lbox list /
154
+ lockbox secrets.lbox list '/project/**/*.rs'
155
+ lockbox secrets.lbox extract /project/README.md ./out/README.md
156
+ ```
157
+
158
+ See [docs/cli_how_to.md](docs/cli_how_to.md) for command-focused examples.
159
+
160
+ ## Profiles And Sharing
161
+
162
+ Create another local profile:
163
+
164
+ ```bash
165
+ lockbox vault profile create laptop
166
+ ```
167
+
168
+ Create an independent encrypted vault with a fresh profile and register that
169
+ profile's public key as a contact in the current vault:
170
+
171
+ ```bash
172
+ lbx vault beget production
173
+ # Creates production.vault.lbx with profile:production.
174
+ # Saves only the public key locally as contact:production.
175
+
176
+ lbx access grant shared.lbox contact:production
177
+ ```
178
+
179
+ Use `--output` to choose the new vault path, `--contact-name` to avoid a local
180
+ contact-name collision, or `--no-contact` to leave the current vault unchanged.
181
+ `beget` never grants lockbox access automatically and never copies private
182
+ material from the current vault.
183
+
184
+ List profiles and export a public key:
185
+
186
+ ```bash
187
+ lockbox vault profile list
188
+ lockbox vault profile export ./laptop.pub --name laptop
189
+ ```
190
+
191
+ Import a contact public key after independently verifying its fingerprint:
192
+
193
+ ```bash
194
+ lockbox vault contact import alice ./alice.pub \
195
+ --fingerprint <fingerprint> \
196
+ --fingerprint-channel phone-call-to-owner
197
+ ```
198
+
199
+ Create a lockbox for a recipient:
200
+
201
+ ```bash
202
+ lockbox shared.lbox create --for alice
203
+ ```
204
+
205
+ Grant or revoke access on an existing lockbox:
206
+
207
+ ```bash
208
+ lockbox shared.lbox access grant alice
209
+ lockbox shared.lbox access list
210
+ lockbox shared.lbox access revoke alice
211
+ ```
212
+
213
+ Exporting a private key is supported for backup and migration, but treat the
214
+ output as a secret:
215
+
216
+ ```bash
217
+ lockbox vault profile backup ./default.profile-backup
218
+ ```
219
+
220
+ Private vault keys are stored inside the local vault as secret variable records,
221
+ not as normal files in the vault lockbox. See the CLI help and
222
+ [CLI how-to](docs/cli_how_to.md) for vault backup and profile recovery.
223
+
224
+ ## Variables
225
+
226
+ Variables are encrypted metadata, not files. They do not appear in file
227
+ listings and are loaded only when variable commands or APIs request them. The
228
+ canonical command is `variable`; `variables` and `var` remain compatibility
229
+ aliases.
230
+
231
+ Plain variables are for values that are useful configuration but not high-value
232
+ secrets:
233
+
234
+ ```bash
235
+ lockbox secrets.lbox variable set DATABASE_URL --value 'postgres://localhost/app'
236
+ lockbox secrets.lbox variable set DATABASE_URL='postgres://localhost/app'
237
+ lockbox secrets.lbox variable get DATABASE_URL
238
+ ```
239
+
240
+ With a session-default lockbox, assignment syntax is also supported:
241
+
242
+ ```bash
243
+ lockbox variable set DATABASE_URL='postgres://localhost/app'
244
+ lockbox variable set DATABASE_URL 'postgres://localhost/app'
245
+ ```
246
+
247
+ Secret variables are for passwords, API tokens, signing keys, and similar
248
+ material. They use secure-memory handling in the variable path and must be provided
249
+ through an explicit source:
250
+
251
+ ```bash
252
+ lockbox secrets.lbox variable set --secret API_TOKEN --interactive
253
+ lockbox secrets.lbox variable set --secret API_TOKEN --file ./api-token.txt
254
+ lockbox secrets.lbox variable set --secret API_TOKEN --stdin
255
+ lockbox secrets.lbox variable set --secret API_TOKEN --from-env API_TOKEN
256
+ ```
257
+
258
+ Avoid passing secrets as command-line arguments. Shell history and process
259
+ inspection can expose argv. Prefer `--interactive`, `--stdin`, `--file`, or
260
+ `--from-env`.
261
+
262
+ Sensitivity is chosen when a variable is created. Updating the value preserves
263
+ that sensitivity. To change plain to secret, or secret to plain, delete and
264
+ recreate the variable.
265
+
266
+ ## Avoiding Leaks
267
+
268
+ Use these defaults unless you have a specific reason not to:
269
+
270
+ - Use `lockbox open` and the local agent instead of repeatedly passing
271
+ passwords or private keys.
272
+ - Use secret variables for credentials and tokens.
273
+ - Do not store secrets as normal files when variable semantics are appropriate.
274
+ - Do not pass secret values on the command line.
275
+ - Keep private key exports offline, short-lived, and permission-restricted.
276
+ - Prefer recipient keys over shared passwords for team access.
277
+ - Run `lockbox secrets.lbox close` when an open should no longer be cached.
278
+ - Use `lockbox secrets.lbox visualize` for diagnostics; it intentionally avoids
279
+ printing file paths, file contents, variable names, or variable values.
280
+
281
+
282
+ Lockbox protects data inside the container. It cannot protect a secret after you
283
+ write it to a normal terminal, shell history, clipboard, exported file, build
284
+ log, or process environment controlled by other tooling.
285
+
286
+ ## Key Server, Topology, and Replication
287
+
288
+ `revault_key_server` is a short-lived rendezvous service for sharing candidate
289
+ contact public keys. A publisher uploads a payload, verifies their email, and
290
+ shares the resulting publish code with the recipient. The recipient uses that
291
+ code to receive the candidate key, then verifies its fingerprint independently
292
+ before trusting it. The server does not establish profile trust and is not a
293
+ store for private keys.
294
+
295
+ ### Single server
296
+
297
+ A first deployment uses one server with `server_id = 0`. Publish codes include
298
+ that server id as their first digit, followed by a random code body. Using a
299
+ self-routing code from the start keeps pending publishes compatible if the
300
+ deployment later gains standby servers.
301
+
302
+ ### Topology servers
303
+
304
+ Servers publish a topology document containing the known server URLs and the
305
+ primary/failover route for each publish-code owner id. Clients use it as follows:
306
+
307
+ - For a publish, discover the cluster through a topology endpoint, select a
308
+ key-server member, and keep that choice sticky locally.
309
+ - For receive and delete, read the publish code's first digit, contact that
310
+ owner id's primary server, then use only its configured failovers.
311
+ - Do not fail over after a rate-limit response; hopping servers must not bypass
312
+ abuse controls.
313
+
314
+ DNS can provide normal host resolution, but it is not the routing mechanism.
315
+ Round-robin DNS alone can send a receive request to a server that does not own
316
+ the corresponding publish code.
317
+
318
+ ### Replication and failover
319
+
320
+ Each server is authoritative for the codes carrying its own server id. It sends
321
+ signed state events—published payloads, receive counts, payload lifecycle
322
+ tombstones, and rate-limit blocks—to configured standby peers through the separate
323
+ `/v1/replicate` endpoint. Events carry an origin server id, epoch, and sequence
324
+ number, so standbys apply duplicates idempotently and never replicate received
325
+ peer events again.
326
+
327
+ Replication does not make the cluster hot/hot. A standby keeps replica state
328
+ but serves an owner's payloads only after an operator explicitly promotes it for
329
+ that owner id. This avoids two servers consuming a single-use publish at the
330
+ same time during a network partition. See the [key-server deployment guide](https://github.com/onepub-dev/reVault/blob/master/rust/revault_key_server/README.md), [configuration reference](https://github.com/onepub-dev/reVault/blob/master/rust/revault_key_server/KEY_SERVER_CONFIG.md), and [redundancy design](https://github.com/onepub-dev/reVault/blob/master/rust/revault_key_server/REDUNDANCY.md) for the deployment and recovery procedures.
331
+
332
+ ## Rust Library
333
+
334
+ Use `revault_lockbox_api` when you need the portable storage engine:
335
+
336
+ ```rust
337
+ use revault_lockbox_api::{Lockbox, LockboxOpen, LockboxPath, LockboxProtection, SecretVec};
338
+ use std::path::Path;
339
+
340
+ let key = SecretVec::try_from_slice(b"correct horse battery staple")?;
341
+ let signing_key = revault_lockbox_api::OwnerSigningKeyPair::generate()?;
342
+ let mut lockbox = Lockbox::create_file(
343
+ Path::new("secrets.lbox"),
344
+ LockboxProtection::ContentKey(key.try_clone()?),
345
+ &signing_key,
346
+ )?;
347
+
348
+ lockbox.add_file(&LockboxPath::new("/docs/a.txt")?, b"alpha", false)?;
349
+ lockbox.add_file(&LockboxPath::new("/docs/b.txt")?, b"bravo", false)?;
350
+ lockbox.commit()?;
351
+
352
+ let reopened = Lockbox::open(
353
+ Path::new("secrets.lbox"),
354
+ LockboxOpen::ContentKey(&key),
355
+ )?;
356
+ let file = reopened.get_file(&LockboxPath::new("/docs/a.txt")?)?;
357
+ ```
358
+
359
+ Use `revault_vault_api` for native applications that want the local vault and
360
+ open-cache behavior:
361
+
362
+ ```rust
363
+ use revault_vault_api::{local_vault, SecretString};
364
+
365
+ let vault = local_vault();
366
+ let password = SecretString::try_from_bytes(b"pw".to_vec())?;
367
+
368
+ vault.create_lockbox_with_password("secrets.lbox", &password)?;
369
+
370
+ let lockbox = vault.open_lockbox_with_password("secrets.lbox", &password)?;
371
+ let mut lockbox = lockbox;
372
+ lockbox.add_file_from_path("notes.txt", &revault_lockbox_api::LockboxPath::new("/notes.txt")?)?;
373
+ lockbox.commit()?;
374
+ ```
375
+
376
+ ## Documentation
377
+
378
+ - [reVault manual](https://docs.revault.onepub.dev/): installation, concepts,
379
+ CLI workflows, language APIs, and operational guidance.
380
+ - [CLI how-to](docs/cli_how_to.md): command examples.
381
+ - [CI/CD with reVault](docs/ci_cd.md): proposed bootstrap and ephemeral CI
382
+ workflow for encrypted deployment secrets.
383
+ - [Lockbox Session Agent](docs/lockbox_session_agent.md): local open cache
384
+ lifecycle, protocol, and security model.
385
+ - [Archive format](rust/revault_lockbox_api/ARCHIVE_FORMAT.md): lockbox archive details and page
386
+ layout.
387
+ - [Rust development](docs/rust_development.md): build, test, and API docs.
388
+ - [Dependency review](rust/docs/dependency_review.md): dependency and security
389
+ review notes.
390
+
391
+ ## Development
392
+
393
+ Run the Rust checks:
394
+
395
+ ```bash
396
+ cd rust
397
+ cargo fmt --all
398
+ cargo check --workspace --all-targets --all-features
399
+ cargo test --workspace
400
+ cargo clippy --workspace --all-targets --all-features -- -D warnings
401
+ ```
402
+
403
+ Generate Rust API docs:
404
+
405
+ ```bash
406
+ cd rust
407
+ cargo xtask generate-api-docs
408
+ ```
409
+
410
+ ## License
411
+
412
+ Dvault Source Available License 1.0 - see [LICENSE](LICENSE).
413
+
414
+ The source remains available for inspection, modification, and redistribution.
415
+ Derivative works must publish their corresponding source code in a publicly
416
+ accessible repository such as GitHub or a similar service. The license also
417
+ restricts third parties from offering dvault, modified dvault, or substantially
418
+ similar dvault-derived functionality as a hosted, managed, or
419
+ network-accessible service without a separate written license.
metadata CHANGED
@@ -1,48 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: revault_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.12
5
5
  platform: aarch64-linux
6
6
  authors:
7
7
  - OnePub
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-07-16 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: google-protobuf
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '3.25'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '3.25'
11
+ date: 2026-08-26 00:00:00.000000000 Z
12
+ dependencies: []
27
13
  description: Complete class-based reVault lockbox and vault API
28
14
  email:
15
+ - bsutton@onepub.dev
29
16
  executables: []
30
17
  extensions: []
31
18
  extra_rdoc_files: []
32
19
  files:
33
20
  - LICENSE
34
- - generated/revault_bindings_pb.rb
35
- - lib/revault/binding_operations.rb
36
- - lib/revault/native_library.rb
37
- - lib/revault/vault.rb
38
- - native/linux-aarch64-gnu/librevault_api.so
39
- - native/linux-aarch64-gnu/librevault_ruby_shim.so
40
- - native/revault_ruby_shim.c
41
- - revault_api.rb
42
- homepage: https://github.com/onepub-dev/reVault
21
+ - README.md
22
+ homepage: https://docs.revault.onepub.dev/
43
23
  licenses:
44
24
  - Nonstandard
45
- metadata: {}
25
+ metadata:
26
+ bug_tracker_uri: https://github.com/onepub-dev/reVault/issues
27
+ changelog_uri: https://github.com/onepub-dev/reVault/blob/main/bindings/CHANGELOG.md
28
+ documentation_uri: https://docs.revault.onepub.dev/
29
+ source_code_uri: https://github.com/onepub-dev/reVault/tree/main/bindings/ruby
46
30
  post_install_message:
47
31
  rdoc_options: []
48
32
  require_paths: