sefy-cli 0.2.0 → 0.3.0
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 +33 -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**.
|
|
@@ -190,6 +218,11 @@ The database inside the ciphertext is versioned separately, and it does move:
|
|
|
190
218
|
from 0.1.x opens, is migrated on the way in, and is still readable by 0.1.x
|
|
191
219
|
afterwards - the file on disk did not change shape.
|
|
192
220
|
|
|
221
|
+
The **plugin protocol is at version 1** as of 0.3.0. Optional fields may be
|
|
222
|
+
added to the manifest without breaking a plugin that predates them; changing
|
|
223
|
+
what an existing field means would arrive as version 2, with both accepted for a
|
|
224
|
+
time.
|
|
225
|
+
|
|
193
226
|
Released versions and what landed in each: [CHANGELOG on the Releases page](https://github.com/lacodda/sefy/releases).
|
|
194
227
|
|
|
195
228
|
## 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.0",
|
|
4
|
+
"sefy": {
|
|
5
|
+
"binary": "v0.3.0"
|
|
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
|
+
}
|