sefy-cli 0.2.0 → 0.3.1
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.
- package/README.md +35 -0
- package/package.json +43 -43
package/README.md
CHANGED
|
@@ -134,6 +134,34 @@ pass --i-know-this-writes-plaintext to go ahead
|
|
|
134
134
|
|
|
135
135
|
Full command reference: **[lacodda.github.io/sefy](https://lacodda.github.io/sefy/)**.
|
|
136
136
|
|
|
137
|
+
## Transports
|
|
138
|
+
|
|
139
|
+
Carrying a vault to another machine is the job of a **plugin**: any executable
|
|
140
|
+
named `sefy-plugin-*`, found in sefy's data directory or on `PATH`. sefy knows
|
|
141
|
+
nothing about git, FTP or any cloud drive - it asks a plugin what it can do and
|
|
142
|
+
what happened.
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
$ sefy plugin list
|
|
146
|
+
ftp 0.2.1 push
|
|
147
|
+
future 9.0.0 unusable: it speaks protocol 99 and this build speaks 1
|
|
148
|
+
github 0.1.0 pull, push
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
A transport is handed the **path of the sealed file** and nothing else - no
|
|
152
|
+
master password, no key, no item. What it carries is what anyone would find on
|
|
153
|
+
your disk: a blob it cannot read. That is also why a plugin cannot merge; it
|
|
154
|
+
fetches the other copy to a file, and `sefy merge` folds the two together where
|
|
155
|
+
both sides can actually be read.
|
|
156
|
+
|
|
157
|
+
Broken plugins are listed with the reason rather than skipped: an omitted line
|
|
158
|
+
would look exactly like a plugin that was never installed.
|
|
159
|
+
|
|
160
|
+
The protocol is small enough to implement in a shell script - manifest on
|
|
161
|
+
`--manifest`, one JSON request on stdin for `run`. Writing one:
|
|
162
|
+
[plugin reference](https://lacodda.github.io/sefy/reference/plugin/) ·
|
|
163
|
+
[ADR-0002](https://github.com/lacodda/sefy/blob/main/docs/adr/0002-plugin-protocol.md).
|
|
164
|
+
|
|
137
165
|
## How it works
|
|
138
166
|
|
|
139
167
|
- The master password is stretched into a key with **Argon2id**.
|
|
@@ -164,6 +192,8 @@ macOS / Linux:
|
|
|
164
192
|
curl -fsSL https://raw.githubusercontent.com/lacodda/sefy/main/tools/install.sh | sh
|
|
165
193
|
```
|
|
166
194
|
|
|
195
|
+
On Windows use the PowerShell line above: `install.sh` carries the macOS and Linux builds only, and run from Git Bash it stops with a pointer back here.
|
|
196
|
+
|
|
167
197
|
**cargo** - `cargo install sefy`
|
|
168
198
|
|
|
169
199
|
**npm** - `npm install -g sefy-cli`
|
|
@@ -190,6 +220,11 @@ The database inside the ciphertext is versioned separately, and it does move:
|
|
|
190
220
|
from 0.1.x opens, is migrated on the way in, and is still readable by 0.1.x
|
|
191
221
|
afterwards - the file on disk did not change shape.
|
|
192
222
|
|
|
223
|
+
The **plugin protocol is at version 1** as of 0.3.0. Optional fields may be
|
|
224
|
+
added to the manifest without breaking a plugin that predates them; changing
|
|
225
|
+
what an existing field means would arrive as version 2, with both accepted for a
|
|
226
|
+
time.
|
|
227
|
+
|
|
193
228
|
Released versions and what landed in each: [CHANGELOG on the Releases page](https://github.com/lacodda/sefy/releases).
|
|
194
229
|
|
|
195
230
|
## Building
|
package/package.json
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "sefy-cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"sefy": {
|
|
5
|
-
"binary": "v0.
|
|
6
|
-
},
|
|
7
|
-
"description": "An inconspicuous encrypted store for notes, credentials and files",
|
|
8
|
-
"license": "MIT",
|
|
9
|
-
"author": "Kirill Lakhtachev <lahtachev@gmail.com> (https://lacodda.com)",
|
|
10
|
-
"homepage": "https://lacodda.github.io/sefy/",
|
|
11
|
-
"repository": {
|
|
12
|
-
"type": "git",
|
|
13
|
-
"url": "git+https://github.com/lacodda/sefy.git"
|
|
14
|
-
},
|
|
15
|
-
"keywords": [
|
|
16
|
-
"cli",
|
|
17
|
-
"secrets",
|
|
18
|
-
"password-manager",
|
|
19
|
-
"encryption",
|
|
20
|
-
"vault"
|
|
21
|
-
],
|
|
22
|
-
"bin": {
|
|
23
|
-
"sefy": "run.js"
|
|
24
|
-
},
|
|
25
|
-
"files": [
|
|
26
|
-
"download.js",
|
|
27
|
-
"install.js",
|
|
28
|
-
"run.js",
|
|
29
|
-
"README.md"
|
|
30
|
-
],
|
|
31
|
-
"scripts": {
|
|
32
|
-
"prepack": "node -e \"require('fs').copyFileSync('../README.md','README.md')\"",
|
|
33
|
-
"postinstall": "node install.js"
|
|
34
|
-
},
|
|
35
|
-
"os": [
|
|
36
|
-
"win32",
|
|
37
|
-
"darwin",
|
|
38
|
-
"linux"
|
|
39
|
-
],
|
|
40
|
-
"engines": {
|
|
41
|
-
"node": ">=18"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "sefy-cli",
|
|
3
|
+
"version": "0.3.1",
|
|
4
|
+
"sefy": {
|
|
5
|
+
"binary": "v0.3.1"
|
|
6
|
+
},
|
|
7
|
+
"description": "An inconspicuous encrypted store for notes, credentials and files",
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"author": "Kirill Lakhtachev <lahtachev@gmail.com> (https://lacodda.com)",
|
|
10
|
+
"homepage": "https://lacodda.github.io/sefy/",
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "git+https://github.com/lacodda/sefy.git"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"cli",
|
|
17
|
+
"secrets",
|
|
18
|
+
"password-manager",
|
|
19
|
+
"encryption",
|
|
20
|
+
"vault"
|
|
21
|
+
],
|
|
22
|
+
"bin": {
|
|
23
|
+
"sefy": "run.js"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"download.js",
|
|
27
|
+
"install.js",
|
|
28
|
+
"run.js",
|
|
29
|
+
"README.md"
|
|
30
|
+
],
|
|
31
|
+
"scripts": {
|
|
32
|
+
"prepack": "node -e \"require('fs').copyFileSync('../README.md','README.md')\"",
|
|
33
|
+
"postinstall": "node install.js"
|
|
34
|
+
},
|
|
35
|
+
"os": [
|
|
36
|
+
"win32",
|
|
37
|
+
"darwin",
|
|
38
|
+
"linux"
|
|
39
|
+
],
|
|
40
|
+
"engines": {
|
|
41
|
+
"node": ">=18"
|
|
42
|
+
}
|
|
43
|
+
}
|