@did-btcr2/cli 0.16.0 → 0.18.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 -8
- package/dist/.tsbuildinfo +1 -1
- package/dist/cjs/index.js +640 -128
- package/dist/esm/src/cli.js +2 -1
- package/dist/esm/src/cli.js.map +1 -1
- package/dist/esm/src/commands/create.js +4 -0
- package/dist/esm/src/commands/create.js.map +1 -1
- package/dist/esm/src/commands/deactivate.js +2 -0
- package/dist/esm/src/commands/deactivate.js.map +1 -1
- package/dist/esm/src/commands/index.js +1 -0
- package/dist/esm/src/commands/index.js.map +1 -1
- package/dist/esm/src/commands/init.js +89 -40
- package/dist/esm/src/commands/init.js.map +1 -1
- package/dist/esm/src/commands/keystore.js +126 -8
- package/dist/esm/src/commands/keystore.js.map +1 -1
- package/dist/esm/src/commands/quickstart.js +158 -0
- package/dist/esm/src/commands/quickstart.js.map +1 -0
- package/dist/esm/src/commands/update.js +2 -0
- package/dist/esm/src/commands/update.js.map +1 -1
- package/dist/esm/src/config.js +93 -6
- package/dist/esm/src/config.js.map +1 -1
- package/dist/esm/src/hints.js +54 -0
- package/dist/esm/src/hints.js.map +1 -0
- package/dist/esm/src/keystore/file-key-store.js +48 -0
- package/dist/esm/src/keystore/file-key-store.js.map +1 -1
- package/dist/esm/src/keystore/passphrase.js +13 -0
- package/dist/esm/src/keystore/passphrase.js.map +1 -1
- package/dist/esm/src/keystore/session.js +250 -0
- package/dist/esm/src/keystore/session.js.map +1 -0
- package/dist/esm/src/paths.js +12 -0
- package/dist/esm/src/paths.js.map +1 -1
- package/dist/esm/src/types.js.map +1 -1
- package/dist/types/src/cli.d.ts.map +1 -1
- package/dist/types/src/commands/create.d.ts.map +1 -1
- package/dist/types/src/commands/deactivate.d.ts.map +1 -1
- package/dist/types/src/commands/index.d.ts +1 -0
- package/dist/types/src/commands/index.d.ts.map +1 -1
- package/dist/types/src/commands/init.d.ts +52 -5
- package/dist/types/src/commands/init.d.ts.map +1 -1
- package/dist/types/src/commands/keystore.d.ts +41 -4
- package/dist/types/src/commands/keystore.d.ts.map +1 -1
- package/dist/types/src/commands/quickstart.d.ts +12 -0
- package/dist/types/src/commands/quickstart.d.ts.map +1 -0
- package/dist/types/src/commands/update.d.ts.map +1 -1
- package/dist/types/src/config.d.ts +35 -0
- package/dist/types/src/config.d.ts.map +1 -1
- package/dist/types/src/hints.d.ts +24 -0
- package/dist/types/src/hints.d.ts.map +1 -0
- package/dist/types/src/keystore/file-key-store.d.ts +16 -0
- package/dist/types/src/keystore/file-key-store.d.ts.map +1 -1
- package/dist/types/src/keystore/passphrase.d.ts +10 -0
- package/dist/types/src/keystore/passphrase.d.ts.map +1 -1
- package/dist/types/src/keystore/session.d.ts +105 -0
- package/dist/types/src/keystore/session.d.ts.map +1 -0
- package/dist/types/src/paths.d.ts +10 -0
- package/dist/types/src/paths.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +32 -0
- package/dist/types/src/types.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/cli.ts +2 -0
- package/src/commands/create.ts +4 -0
- package/src/commands/deactivate.ts +2 -0
- package/src/commands/index.ts +1 -0
- package/src/commands/init.ts +148 -50
- package/src/commands/keystore.ts +183 -9
- package/src/commands/quickstart.ts +209 -0
- package/src/commands/update.ts +2 -0
- package/src/config.ts +103 -6
- package/src/hints.ts +51 -0
- package/src/keystore/file-key-store.ts +43 -0
- package/src/keystore/passphrase.ts +23 -0
- package/src/keystore/session.ts +303 -0
- package/src/paths.ts +13 -0
- package/src/types.ts +16 -2
package/dist/esm/src/cli.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DidMethodError } from '@did-btcr2/common';
|
|
2
2
|
import { Command, CommanderError } from 'commander';
|
|
3
|
-
import { registerCompletionCommand, registerConfigCommand, registerCreateCommand, registerDeactivateCommand, registerInitCommand, registerKeyCommand, registerKeystoreCommand, registerProfileCommand, registerResolveCommand, registerUpdateCommand, } from './commands/index.js';
|
|
3
|
+
import { registerCompletionCommand, registerConfigCommand, registerCreateCommand, registerDeactivateCommand, registerInitCommand, registerKeyCommand, registerKeystoreCommand, registerProfileCommand, registerQuickstartCommand, registerResolveCommand, registerUpdateCommand, } from './commands/index.js';
|
|
4
4
|
import { defaultApiFactory, keystoreApiFactory, resolveOutputFormat } from './config.js';
|
|
5
5
|
import { VERSION } from './version.js';
|
|
6
6
|
/**
|
|
@@ -57,6 +57,7 @@ export class DidBtcr2Cli {
|
|
|
57
57
|
opts.output = resolveOutputFormat({ output: opts.output, config: opts.config, home: opts.home });
|
|
58
58
|
});
|
|
59
59
|
registerInitCommand(this.program, globals);
|
|
60
|
+
registerQuickstartCommand(this.program, globals);
|
|
60
61
|
registerCreateCommand(this.program, factory, keystoreFactory, globals);
|
|
61
62
|
registerResolveCommand(this.program, factory, globals);
|
|
62
63
|
registerUpdateCommand(this.program, keystoreFactory, globals);
|
package/dist/esm/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { bytesToHex, hexToBytes } from '@noble/hashes/utils.js';
|
|
2
2
|
import { assertKeystoreAllowedForNetwork, profileNetworkMismatch, resolveDefaultNetwork } from '../config.js';
|
|
3
3
|
import { CLIError } from '../error.js';
|
|
4
|
+
import { printCreateFundingHint } from '../hints.js';
|
|
4
5
|
import { resolveKeyRef } from '../keystore/resolve-key-ref.js';
|
|
5
6
|
import { formatResult } from '../output.js';
|
|
6
7
|
import { SUPPORTED_NETWORKS } from '../types.js';
|
|
@@ -83,6 +84,7 @@ export function registerCreateCommand(program, factory, keystoreFactory, globals
|
|
|
83
84
|
const genesisBytes = parseGenesisBytes(options.bytes, 'k');
|
|
84
85
|
const did = factory().createDid('deterministic', genesisBytes, { network });
|
|
85
86
|
print({ action: 'create', data: did });
|
|
87
|
+
printCreateFundingHint(g, network, did);
|
|
86
88
|
return;
|
|
87
89
|
}
|
|
88
90
|
// Existing key: read its public key from the keystore (no passphrase prompt).
|
|
@@ -92,6 +94,7 @@ export function registerCreateCommand(program, factory, keystoreFactory, globals
|
|
|
92
94
|
const publicKey = api.kms.getPublicKey(keyId);
|
|
93
95
|
const did = api.createDid('deterministic', publicKey, { network });
|
|
94
96
|
print({ action: 'create', data: did, keyId, publicKey: bytesToHex(publicKey) }, `Using stored key ${keyId}.`);
|
|
97
|
+
printCreateFundingHint(g, network, did);
|
|
95
98
|
return;
|
|
96
99
|
}
|
|
97
100
|
// Generate: mint a fresh key, persist it, and set it active (passphrase prompt).
|
|
@@ -101,6 +104,7 @@ export function registerCreateCommand(program, factory, keystoreFactory, globals
|
|
|
101
104
|
const { did, keyId } = api.generateDid({ network, setActive: true });
|
|
102
105
|
const publicKey = bytesToHex(api.kms.getPublicKey(keyId));
|
|
103
106
|
print({ action: 'create', data: did, keyId, publicKey }, `Generated and stored key ${keyId} (now the active key).`);
|
|
107
|
+
printCreateFundingHint(g, network, did);
|
|
104
108
|
});
|
|
105
109
|
}
|
|
106
110
|
/** Builds the keystore- and config-resolution overrides from the global flags. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/create.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { KeyManagerSigner } from '@did-btcr2/key-manager';
|
|
2
2
|
import { assertKeystoreAllowedForNetwork, deriveNetwork, resolveBroadcastOptions, resolveSigningKeyRef } from '../config.js';
|
|
3
3
|
import { CLIError } from '../error.js';
|
|
4
|
+
import { printWatchHint } from '../hints.js';
|
|
4
5
|
import { resolveKeyRef } from '../keystore/resolve-key-ref.js';
|
|
5
6
|
import { formatResult } from '../output.js';
|
|
6
7
|
/** The JSON Patch that marks a DID document as permanently deactivated. */
|
|
@@ -67,6 +68,7 @@ export function registerDeactivateCommand(program, factory, globals) {
|
|
|
67
68
|
...(broadcastOptions ? { broadcastOptions } : {}),
|
|
68
69
|
});
|
|
69
70
|
console.log(formatResult({ action: 'deactivate', data }, globals()));
|
|
71
|
+
printWatchHint(globals(), network, data.txid);
|
|
70
72
|
});
|
|
71
73
|
}
|
|
72
74
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deactivate.js","sourceRoot":"","sources":["../../../../src/commands/deactivate.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"deactivate.js","sourceRoot":"","sources":["../../../../src/commands/deactivate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { registerInitCommand } from './init.js';
|
|
2
|
+
export { registerQuickstartCommand } from './quickstart.js';
|
|
2
3
|
export { registerCreateCommand } from './create.js';
|
|
3
4
|
export { registerResolveCommand } from './resolve.js';
|
|
4
5
|
export { registerUpdateCommand } from './update.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1,62 +1,111 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
|
-
import { defaultConfigPath, resolveKeystorePath, writeDefaultConfigFile } from '../config.js';
|
|
2
|
+
import { assertSupportedNetwork, defaultConfigPath, persistDefaultNetwork, resolveKeystorePath, writeDefaultConfigFile, } from '../config.js';
|
|
3
3
|
import { ensureDir } from '../keystore/atomic.js';
|
|
4
4
|
import { initKeystore, keystoreSummary } from '../keystore/file-key-store.js';
|
|
5
5
|
import { acquirePassphrase } from '../keystore/passphrase.js';
|
|
6
|
+
import { clearSession } from '../keystore/session.js';
|
|
6
7
|
import { formatResult } from '../output.js';
|
|
7
|
-
import { resolveHome } from '../paths.js';
|
|
8
|
+
import { defaultSessionPath, resolveHome } from '../paths.js';
|
|
9
|
+
/**
|
|
10
|
+
* The shared scaffolding step behind `btcr2 init` and `btcr2 quickstart` (ADR
|
|
11
|
+
* 079/080/083): create the home, a default config if none exists, and establish
|
|
12
|
+
* the keystore if none exists (encrypted by default, `--dev` for unencrypted).
|
|
13
|
+
* Idempotent: existing files are left untouched, and `--force` re-scaffolds only
|
|
14
|
+
* the regenerable config, never the keystore. Records `defaults.network` via
|
|
15
|
+
* {@link persistDefaultNetwork}. Returns the resolved paths, network, protection,
|
|
16
|
+
* and (when asked) the establish-time passphrase for session seeding.
|
|
17
|
+
*/
|
|
18
|
+
export function runInit(g, options = {}) {
|
|
19
|
+
const home = resolveHome(g);
|
|
20
|
+
const configPath = g.config ?? defaultConfigPath(g);
|
|
21
|
+
const keystorePath = resolveKeystorePath(g);
|
|
22
|
+
ensureDir(home, 0o700);
|
|
23
|
+
const created = [];
|
|
24
|
+
// The config is regenerable, so --force may re-scaffold it.
|
|
25
|
+
if (!existsSync(configPath) || options.force) {
|
|
26
|
+
writeDefaultConfigFile(configPath);
|
|
27
|
+
created.push('config');
|
|
28
|
+
}
|
|
29
|
+
// The keystore holds unrecoverable secret keys, so init never overwrites an
|
|
30
|
+
// existing one, even with --force: re-establishing a keystore is the explicit,
|
|
31
|
+
// deliberate `keystore init --force`. init only establishes when none exists.
|
|
32
|
+
const keystoreExists = existsSync(keystorePath);
|
|
33
|
+
if (keystoreExists && options.force && !g.quiet) {
|
|
34
|
+
process.stderr.write(`note: a keystore already exists at ${keystorePath} and was left intact. `
|
|
35
|
+
+ 'To re-establish it (discarding its keys), run "btcr2 keystore init --force".\n');
|
|
36
|
+
}
|
|
37
|
+
let establishedPassphrase;
|
|
38
|
+
if (!keystoreExists) {
|
|
39
|
+
if (options.dev && !g.quiet) {
|
|
40
|
+
process.stderr.write('warning: establishing an UNENCRYPTED dev keystore. Keys are stored in plaintext. '
|
|
41
|
+
+ 'Use it only for disposable testnet material; mainnet operations will be refused.\n');
|
|
42
|
+
}
|
|
43
|
+
initKeystore(keystorePath, {
|
|
44
|
+
protection: options.dev ? 'none' : 'passphrase',
|
|
45
|
+
getPassphrase: (opts) => {
|
|
46
|
+
const passphrase = acquirePassphrase({
|
|
47
|
+
passphraseFile: g.passphraseFile,
|
|
48
|
+
confirm: opts?.confirm,
|
|
49
|
+
prompt: 'New keystore passphrase: ',
|
|
50
|
+
});
|
|
51
|
+
// Capture only a fresh ENCRYPTED establishment, for session seeding.
|
|
52
|
+
if (options.captureEstablishedPassphrase && !options.dev)
|
|
53
|
+
establishedPassphrase = passphrase;
|
|
54
|
+
return passphrase;
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
// A freshly established keystore mints a new verifier (or none, for --dev), so
|
|
58
|
+
// any cached session holds a passphrase for a keystore that no longer exists.
|
|
59
|
+
// Drop it, matching `keystore init` / `change-passphrase` (ADR 081).
|
|
60
|
+
clearSession(defaultSessionPath(g));
|
|
61
|
+
created.push('keystore');
|
|
62
|
+
}
|
|
63
|
+
// Record the network as defaults.network idempotently (ADR 083): an explicit
|
|
64
|
+
// -n always writes; a merely-defaulted network writes only when the raw config
|
|
65
|
+
// has none yet, so a re-run never clobbers an operator's earlier choice.
|
|
66
|
+
const { network } = persistDefaultNetwork(configPath, {
|
|
67
|
+
explicit: options.network,
|
|
68
|
+
fallback: options.fallbackNetwork,
|
|
69
|
+
overrides: g,
|
|
70
|
+
});
|
|
71
|
+
const protection = keystoreSummary(keystorePath).protection;
|
|
72
|
+
return { home, config: configPath, keystore: keystorePath, network, created, protection, establishedPassphrase };
|
|
73
|
+
}
|
|
8
74
|
/**
|
|
9
75
|
* Registers the top-level `btcr2 init`: the one-command entry point that creates
|
|
10
76
|
* the btcr2 home (ADR 079), writes a default config if none exists, and
|
|
11
77
|
* establishes the keystore if none exists (encrypted with a confirmed passphrase
|
|
12
|
-
* by default, or `--dev` for an unencrypted testnet keystore).
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
78
|
+
* by default, or `--dev` for an unencrypted testnet keystore). `-n/--network`
|
|
79
|
+
* records `defaults.network` so later commands can drop `-n` (ADR 083).
|
|
80
|
+
* Idempotent: existing files are left untouched unless `--force` is given.
|
|
81
|
+
* Establishing the passphrase here, up front and confirmed, is what keeps the
|
|
82
|
+
* first `key generate` off the accidental-first-seal path (ADR 080).
|
|
16
83
|
*/
|
|
17
84
|
export function registerInitCommand(program, globals) {
|
|
18
85
|
const print = (result) => console.log(formatResult(result, globals()));
|
|
19
86
|
program
|
|
20
87
|
.command('init')
|
|
21
88
|
.description('Set up the btcr2 home: create the directory, a default config, and establish the keystore.')
|
|
89
|
+
.option('-n, --network <network>', 'Bitcoin network to record as defaults.network <bitcoin|testnet3|testnet4|signet|mutinynet|regtest>')
|
|
22
90
|
.option('--dev', 'Establish an UNENCRYPTED dev keystore: plaintext keys, no passphrase. Testnet only.', false)
|
|
23
|
-
.option('--force', 'Re-create the config
|
|
91
|
+
.option('--force', 'Re-create the config even if it already exists (never the keystore).', false)
|
|
24
92
|
.action((options) => {
|
|
25
93
|
const g = globals();
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
// keystore when none exists.
|
|
40
|
-
const keystoreExists = existsSync(keystorePath);
|
|
41
|
-
if (keystoreExists && options.force && !g.quiet) {
|
|
42
|
-
process.stderr.write(`note: a keystore already exists at ${keystorePath} and was left intact. `
|
|
43
|
-
+ 'To re-establish it (discarding its keys), run "btcr2 keystore init --force".\n');
|
|
44
|
-
}
|
|
45
|
-
if (!keystoreExists) {
|
|
46
|
-
if (options.dev && !g.quiet) {
|
|
47
|
-
process.stderr.write('warning: establishing an UNENCRYPTED dev keystore. Keys are stored in plaintext. '
|
|
48
|
-
+ 'Use it only for disposable testnet material; mainnet operations will be refused.\n');
|
|
49
|
-
}
|
|
50
|
-
initKeystore(keystorePath, {
|
|
51
|
-
protection: options.dev ? 'none' : 'passphrase',
|
|
52
|
-
getPassphrase: (opts) => acquirePassphrase({ passphraseFile: g.passphraseFile, confirm: opts?.confirm, prompt: 'New keystore passphrase: ' }),
|
|
53
|
-
});
|
|
54
|
-
created.push('keystore');
|
|
55
|
-
}
|
|
56
|
-
const protection = keystoreSummary(keystorePath).protection;
|
|
57
|
-
print({ action: 'init', data: { home, config: configPath, keystore: keystorePath, created, protection } });
|
|
94
|
+
const network = options.network ? assertSupportedNetwork(options.network) : undefined;
|
|
95
|
+
const result = runInit(g, { dev: options.dev, force: options.force, network });
|
|
96
|
+
print({
|
|
97
|
+
action: 'init',
|
|
98
|
+
data: {
|
|
99
|
+
home: result.home,
|
|
100
|
+
config: result.config,
|
|
101
|
+
keystore: result.keystore,
|
|
102
|
+
network: result.network,
|
|
103
|
+
created: result.created,
|
|
104
|
+
protection: result.protection,
|
|
105
|
+
},
|
|
106
|
+
});
|
|
58
107
|
if (!g.quiet && g.output !== 'json') {
|
|
59
|
-
process.stderr.write(`btcr2 home ready at ${home}. Next: btcr2 key generate --set-active\n`);
|
|
108
|
+
process.stderr.write(`btcr2 home ready at ${result.home} on ${result.network}. Next: btcr2 key generate --set-active\n`);
|
|
60
109
|
}
|
|
61
110
|
});
|
|
62
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
|
-
import { resolveKeystorePath } from '../config.js';
|
|
2
|
+
import { resolveDefaultNetwork, resolveKeystorePath } from '../config.js';
|
|
3
3
|
import { CLIError } from '../error.js';
|
|
4
|
-
import { changeKeystorePassphrase, initKeystore, keystoreSummary } from '../keystore/file-key-store.js';
|
|
4
|
+
import { changeKeystorePassphrase, initKeystore, keystoreSummary, keystoreVerifierId, verifyKeystorePassphrase, } from '../keystore/file-key-store.js';
|
|
5
5
|
import { acquirePassphrase } from '../keystore/passphrase.js';
|
|
6
|
+
import { clearSession, DEFAULT_SESSION_TTL_MS, ENV_KEYSTORE_TTL, MAX_SESSION_TTL_MS, parseTtlToMs, readSessionStatus, writeSession, } from '../keystore/session.js';
|
|
6
7
|
import { formatResult } from '../output.js';
|
|
8
|
+
import { defaultSessionPath } from '../paths.js';
|
|
9
|
+
import { blankToUndef } from '../types.js';
|
|
7
10
|
/**
|
|
8
11
|
* Registers the `keystore` command group: establish, inspect, and re-key the
|
|
9
|
-
* encrypted keystore (ADR 080)
|
|
10
|
-
*
|
|
11
|
-
* re-sealing during
|
|
12
|
+
* encrypted keystore (ADR 080), plus the session unlock agent (ADR 081). These
|
|
13
|
+
* operate on the keystore and session files directly (no Bitcoin connection or
|
|
14
|
+
* KeyManager) and never decrypt a key except when re-sealing during
|
|
15
|
+
* `change-passphrase`.
|
|
12
16
|
*/
|
|
13
17
|
export function registerKeystoreCommand(program, globals) {
|
|
14
|
-
const keystore = program.command('keystore').description('Establish, inspect,
|
|
18
|
+
const keystore = program.command('keystore').description('Establish, inspect, re-key, and unlock the keystore.');
|
|
15
19
|
const print = (result) => console.log(formatResult(result, globals()));
|
|
16
20
|
keystore
|
|
17
21
|
.command('init')
|
|
@@ -39,21 +43,26 @@ export function registerKeystoreCommand(program, globals) {
|
|
|
39
43
|
protection: options.dev ? 'none' : 'passphrase',
|
|
40
44
|
getPassphrase: (opts) => acquirePassphrase({ passphraseFile: g.passphraseFile, confirm: opts?.confirm, prompt: 'New keystore passphrase: ' }),
|
|
41
45
|
});
|
|
46
|
+
// A re-established keystore mints a new verifier (or none, for --dev), so any
|
|
47
|
+
// cached session now holds a passphrase for a keystore that no longer exists.
|
|
48
|
+
// Drop it rather than leave a stale plaintext passphrase behind (ADR 081).
|
|
49
|
+
clearSession(defaultSessionPath(g));
|
|
42
50
|
print({ action: 'keystore-init', data: { path, protection: options.dev ? 'dev' : 'encrypted' } });
|
|
43
51
|
});
|
|
44
52
|
keystore
|
|
45
53
|
.command('status')
|
|
46
|
-
.description('Show the keystore path, protection mode, and
|
|
54
|
+
.description('Show the keystore path, protection mode, key count, and session state. Never decrypts or prompts.')
|
|
47
55
|
.action(() => {
|
|
48
56
|
const g = globals();
|
|
49
57
|
// Diagnostic command: report status even when the config is malformed,
|
|
50
58
|
// rather than crashing on the config you ran this to inspect.
|
|
51
59
|
const path = resolveKeystorePath(g, { lenient: true });
|
|
52
60
|
const summary = keystoreSummary(path);
|
|
61
|
+
const session = readSessionStatus(defaultSessionPath(g), path, keystoreVerifierId(path));
|
|
53
62
|
if (summary.protection === 'dev' && !g.quiet && g.output !== 'json') {
|
|
54
63
|
process.stderr.write('warning: this is an UNENCRYPTED dev keystore; keys are stored in plaintext.\n');
|
|
55
64
|
}
|
|
56
|
-
print({ action: 'keystore-status', data: { path, ...summary } });
|
|
65
|
+
print({ action: 'keystore-status', data: { path, ...summary, session } });
|
|
57
66
|
});
|
|
58
67
|
keystore
|
|
59
68
|
.command('change-passphrase')
|
|
@@ -75,7 +84,116 @@ export function registerKeystoreCommand(program, globals) {
|
|
|
75
84
|
const oldPassphrase = acquirePassphrase({ passphraseFile: g.passphraseFile, prompt: 'Current keystore passphrase: ' });
|
|
76
85
|
const newPassphrase = acquirePassphrase({ forcePrompt: true, confirm: true, prompt: 'New keystore passphrase: ' });
|
|
77
86
|
const rekeyed = changeKeystorePassphrase(path, oldPassphrase, newPassphrase);
|
|
87
|
+
// The rotated verifier already invalidates a cached session by fingerprint,
|
|
88
|
+
// but the session file still holds the OLD passphrase in plaintext; delete it.
|
|
89
|
+
clearSession(defaultSessionPath(g));
|
|
78
90
|
print({ action: 'keystore-change-passphrase', data: { path, rekeyed } });
|
|
79
91
|
});
|
|
92
|
+
keystore
|
|
93
|
+
.command('unlock')
|
|
94
|
+
.description('Cache the keystore passphrase for a session so later commands do not re-prompt (ADR 081).')
|
|
95
|
+
.option('--ttl <duration>', `Session lifetime: bare seconds or an s/m/h suffix (default 1h, max 24h). Also $${ENV_KEYSTORE_TTL}.`)
|
|
96
|
+
.option('--allow-mainnet', 'Permit unlocking when the active network is mainnet (bitcoin); this suspends per-use passphrase auth for the session.', false)
|
|
97
|
+
.action((options) => {
|
|
98
|
+
const g = globals();
|
|
99
|
+
const path = resolveKeystorePath(g);
|
|
100
|
+
const ttlMs = resolveSessionTtl(options.ttl);
|
|
101
|
+
// The op network for the mainnet gate is the configured default here; the
|
|
102
|
+
// session records `allowMainnet` and the authoritative check happens at
|
|
103
|
+
// consumption, where a `bitcoin` operation (network derived from the DID) is
|
|
104
|
+
// withheld from a session that lacks it.
|
|
105
|
+
const session = unlockSession({
|
|
106
|
+
g,
|
|
107
|
+
keystorePath: path,
|
|
108
|
+
network: resolveDefaultNetwork(g),
|
|
109
|
+
allowMainnet: !!options.allowMainnet,
|
|
110
|
+
ttlMs,
|
|
111
|
+
});
|
|
112
|
+
print({ action: 'keystore-unlock', data: { keystore: path, expiresAt: session.expiresAt, ttlSeconds: session.ttlSeconds } });
|
|
113
|
+
});
|
|
114
|
+
keystore
|
|
115
|
+
.command('lock')
|
|
116
|
+
.description('Revoke the cached session so later commands prompt for the passphrase again (ADR 081).')
|
|
117
|
+
.action(() => {
|
|
118
|
+
const g = globals();
|
|
119
|
+
// Resolve the session from the home only (defaultSessionPath never reads the
|
|
120
|
+
// config), so lock revokes even under a malformed config.
|
|
121
|
+
const sessionPath = defaultSessionPath(g);
|
|
122
|
+
const cleared = clearSession(sessionPath);
|
|
123
|
+
print({ action: 'keystore-lock', data: { path: sessionPath, cleared } });
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* The shared unlock step behind `keystore unlock` and `quickstart --unlock` (ADR
|
|
128
|
+
* 081/083): validate the keystore, enforce the mainnet gate against the passed
|
|
129
|
+
* `network`, acquire (or reuse) and verify the passphrase, and write the session.
|
|
130
|
+
* Refuses an absent, dev, or unestablished keystore. A wrong passphrase writes no
|
|
131
|
+
* session file. Returns the written {@link SessionFile}. The op network is passed
|
|
132
|
+
* in rather than re-derived so the mainnet gate is order-independent even when a
|
|
133
|
+
* caller has just written `defaults.network`.
|
|
134
|
+
*/
|
|
135
|
+
export function unlockSession(input) {
|
|
136
|
+
const { g, keystorePath: path, network, allowMainnet, ttlMs } = input;
|
|
137
|
+
const summary = keystoreSummary(path);
|
|
138
|
+
if (summary.protection === 'absent') {
|
|
139
|
+
throw new CLIError(`No keystore at ${path}. Run "btcr2 init" or "btcr2 keystore init" first.`, 'INVALID_ARGUMENT_ERROR', { path });
|
|
140
|
+
}
|
|
141
|
+
if (summary.protection === 'dev') {
|
|
142
|
+
throw new CLIError(`The keystore at ${path} is an unencrypted dev keystore; it has no passphrase to cache, so no unlock is needed.`, 'INVALID_ARGUMENT_ERROR', { path });
|
|
143
|
+
}
|
|
144
|
+
if (!summary.established) {
|
|
145
|
+
throw new CLIError(`The keystore at ${path} has no passphrase established yet. `
|
|
146
|
+
+ 'Establish one with "btcr2 keystore init" or the first "btcr2 key generate".', 'INVALID_ARGUMENT_ERROR', { path });
|
|
147
|
+
}
|
|
148
|
+
// An unlocked encrypted keystore signs prompt-free for the whole TTL, silently
|
|
149
|
+
// removing per-use passphrase auth. Refuse a bitcoin context unless allowed; the
|
|
150
|
+
// authoritative per-use check still happens at consumption from the session's
|
|
151
|
+
// recorded `allowMainnet` (ADR 081).
|
|
152
|
+
if (!allowMainnet && network === 'bitcoin') {
|
|
153
|
+
throw new CLIError('Refusing to unlock for a mainnet (bitcoin) context: caching the passphrase suspends per-use '
|
|
154
|
+
+ 'authentication for the session. Pass --allow-mainnet to override, or keep signing mainnet '
|
|
155
|
+
+ 'updates with a per-use passphrase prompt.', 'MAINNET_UNLOCK_REFUSED_ERROR', { path });
|
|
156
|
+
}
|
|
157
|
+
// Acquire the passphrase directly (env / file / prompt) with NO session
|
|
158
|
+
// consultation and NO confirm, or reuse a caller-provided one, then verify it
|
|
159
|
+
// against the keystore verifier before caching. A wrong passphrase writes no
|
|
160
|
+
// session file.
|
|
161
|
+
const passphrase = input.passphrase ?? acquirePassphrase({ passphraseFile: g.passphraseFile, prompt: 'Keystore passphrase: ' });
|
|
162
|
+
if (!verifyKeystorePassphrase(path, passphrase)) {
|
|
163
|
+
throw new CLIError(`Incorrect passphrase for the keystore at ${path}; no session was created.`, 'DECRYPT_ERROR', { path });
|
|
164
|
+
}
|
|
165
|
+
const verifierId = keystoreVerifierId(path);
|
|
166
|
+
if (!verifierId) {
|
|
167
|
+
// An established keystore always carries a verifier; defensive guard.
|
|
168
|
+
throw new CLIError(`The keystore at ${path} has no verifier to bind a session to.`, 'INVALID_ARGUMENT_ERROR', { path });
|
|
169
|
+
}
|
|
170
|
+
return writeSession(defaultSessionPath(g), {
|
|
171
|
+
keystorePath: path,
|
|
172
|
+
verifierId,
|
|
173
|
+
passphrase,
|
|
174
|
+
ttlMs,
|
|
175
|
+
allowMainnet,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Resolves the session TTL in milliseconds from the `--ttl` flag, then
|
|
180
|
+
* `$BTCR2_KEYSTORE_TTL`, then the one-hour default. Rejects a non-positive,
|
|
181
|
+
* malformed, or over-24h value with a {@link CLIError} that names the actual
|
|
182
|
+
* source (the flag or the env var) so the operator fixes the right input.
|
|
183
|
+
*/
|
|
184
|
+
export function resolveSessionTtl(flag) {
|
|
185
|
+
const fromFlag = blankToUndef(flag);
|
|
186
|
+
const raw = fromFlag ?? blankToUndef(process.env[ENV_KEYSTORE_TTL]);
|
|
187
|
+
if (raw === undefined)
|
|
188
|
+
return DEFAULT_SESSION_TTL_MS;
|
|
189
|
+
const source = fromFlag !== undefined ? '--ttl' : `$${ENV_KEYSTORE_TTL}`;
|
|
190
|
+
const ms = parseTtlToMs(raw);
|
|
191
|
+
if (ms === undefined || ms <= 0) {
|
|
192
|
+
throw new CLIError(`Invalid ${source} "${raw}": expected seconds or a value with an s/m/h suffix, e.g. 3600, 45m, or 2h.`, 'INVALID_ARGUMENT_ERROR', { value: raw, source });
|
|
193
|
+
}
|
|
194
|
+
if (ms > MAX_SESSION_TTL_MS) {
|
|
195
|
+
throw new CLIError(`${source} "${raw}" exceeds the 24h maximum for a cached passphrase.`, 'INVALID_ARGUMENT_ERROR', { value: raw, source });
|
|
196
|
+
}
|
|
197
|
+
return ms;
|
|
80
198
|
}
|
|
81
199
|
//# sourceMappingURL=keystore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keystore.js","sourceRoot":"","sources":["../../../../src/commands/keystore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"keystore.js","sourceRoot":"","sources":["../../../../src/commands/keystore.ts"],"names":[],"mappings":"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"}
|