@owlmeans/did 0.1.18-rc.44 → 0.1.18-rc.46
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 +2 -2
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/did/SKILL.md +1 -1
- package/build/consts.local.d.ts +2 -0
- package/build/consts.local.d.ts.map +1 -0
- package/build/consts.local.js +2 -0
- package/build/consts.local.js.map +1 -0
- package/build/i18n.js +17 -17
- package/build/i18n.js.map +1 -1
- package/build/model.d.ts.map +1 -1
- package/build/model.js +4 -4
- package/build/model.js.map +1 -1
- package/build/plugins/ed25519owl.js +5 -5
- package/build/plugins/ed25519owl.js.map +1 -1
- package/build/utils/index.d.ts +2 -0
- package/build/utils/index.d.ts.map +1 -1
- package/build/utils/index.js.map +1 -1
- package/build/utils/key.d.ts.map +1 -1
- package/build/utils/key.js +2 -2
- package/build/utils/key.js.map +1 -1
- package/build/utils/mnemonic/types.d.ts +13 -0
- package/build/utils/mnemonic/types.d.ts.map +1 -0
- package/build/utils/mnemonic/types.js +2 -0
- package/build/utils/mnemonic/types.js.map +1 -0
- package/build/utils/mnemonic.d.ts +3 -5
- package/build/utils/mnemonic.d.ts.map +1 -1
- package/build/utils/mnemonic.js +15 -11
- package/build/utils/mnemonic.js.map +1 -1
- package/build/utils/types.d.ts +11 -0
- package/build/utils/types.d.ts.map +1 -0
- package/build/utils/types.js +2 -0
- package/build/utils/types.js.map +1 -0
- package/build/utils.d.ts +3 -4
- package/build/utils.d.ts.map +1 -1
- package/build/utils.js +25 -21
- package/build/utils.js.map +1 -1
- package/build/wallet.d.ts.map +1 -1
- package/build/wallet.js +8 -8
- package/build/wallet.js.map +1 -1
- package/package.json +11 -10
- package/src/consts.local.ts +1 -0
- package/src/i18n.ts +18 -17
- package/src/model.ts +4 -4
- package/src/plugins/ed25519owl.ts +5 -5
- package/src/utils/index.ts +2 -0
- package/src/utils/key.ts +3 -3
- package/src/utils/mnemonic/types.ts +13 -0
- package/src/utils/mnemonic.ts +21 -14
- package/src/utils/types.ts +11 -0
- package/src/utils.ts +32 -26
- package/src/wallet.ts +9 -9
- package/tests/mnemonic.spec.d.ts +2 -0
- package/tests/mnemonic.spec.d.ts.map +1 -0
- package/tests/mnemonic.spec.js +27 -0
- package/tests/mnemonic.spec.js.map +1 -0
- package/tests/mnemonic.spec.ts +31 -0
- package/tsconfig.json +1 -1
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ Hierarchical deterministic (HD) wallet and DID document management for OwlMeans
|
|
|
12
12
|
## Installation
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
bun add @owlmeans/did@^0.1.18-rc.
|
|
15
|
+
bun add @owlmeans/did@^0.1.18-rc.46
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
## Usage
|
|
@@ -65,7 +65,7 @@ This package ships embedded agent skills under `agent-meta/`. After installing y
|
|
|
65
65
|
your project's skill store (`.agents/skills/`):
|
|
66
66
|
|
|
67
67
|
```sh
|
|
68
|
-
npx @owlmeans/agent-skills@^0.1.18-rc.
|
|
68
|
+
npx @owlmeans/agent-skills@^0.1.18-rc.49
|
|
69
69
|
```
|
|
70
70
|
|
|
71
71
|
The embedded files are version-matched to this package release. Do not edit them
|
package/agent-meta/manifest.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@owlmeans/did",
|
|
4
|
-
"version": "0.1.18-rc.
|
|
5
|
-
"generatedAt": "2026-10-
|
|
4
|
+
"version": "0.1.18-rc.46",
|
|
5
|
+
"generatedAt": "2026-10-05T21:03:06.419Z",
|
|
6
6
|
"canonicalRepo": "https://github.com/owlmeans/common",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
@@ -8,7 +8,7 @@ user-invocable: false
|
|
|
8
8
|
# @owlmeans/did
|
|
9
9
|
|
|
10
10
|
**Layer:** Core
|
|
11
|
-
**Install:** `"@owlmeans/did": "^0.1.18-rc.
|
|
11
|
+
**Install:** `"@owlmeans/did": "^0.1.18-rc.46"` in `dependencies`
|
|
12
12
|
|
|
13
13
|
This package adds a **derivable** key type on top of `@owlmeans/basic-keys` and a wallet that stores
|
|
14
14
|
keys derived from one mnemonic seed. Importing it registers the `owlmk` key type into the shared
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.local.d.ts","sourceRoot":"","sources":["../src/consts.local.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,UAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.local.js","sourceRoot":"","sources":["../src/consts.local.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,CAAA"}
|
package/build/i18n.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { addI18nLib } from '@owlmeans/i18n';
|
|
2
1
|
import en from './i18n/en.json' with { type: 'json' };
|
|
3
2
|
import pl from './i18n/pl.json' with { type: 'json' };
|
|
4
3
|
import ru from './i18n/ru.json' with { type: 'json' };
|
|
@@ -15,20 +14,21 @@ import walletUk from './i18n/wallet-uk.json' with { type: 'json' };
|
|
|
15
14
|
import walletEs from './i18n/wallet-es.json' with { type: 'json' };
|
|
16
15
|
import walletDe from './i18n/wallet-de.json' with { type: 'json' };
|
|
17
16
|
import walletFr from './i18n/wallet-fr.json' with { type: 'json' };
|
|
18
|
-
|
|
19
|
-
addI18nLib('
|
|
20
|
-
addI18nLib('
|
|
21
|
-
addI18nLib('
|
|
22
|
-
addI18nLib('
|
|
23
|
-
addI18nLib('
|
|
24
|
-
addI18nLib('
|
|
25
|
-
addI18nLib('
|
|
26
|
-
addI18nLib('
|
|
27
|
-
addI18nLib('
|
|
28
|
-
addI18nLib('
|
|
29
|
-
addI18nLib('
|
|
30
|
-
addI18nLib('
|
|
31
|
-
addI18nLib('
|
|
32
|
-
addI18nLib('
|
|
33
|
-
addI18nLib('
|
|
17
|
+
import { i18nHelper } from '@owlmeans/i18n';
|
|
18
|
+
i18nHelper.addI18nLib('en', 'keys', en, { ns: 'did' });
|
|
19
|
+
i18nHelper.addI18nLib('pl', 'keys', pl, { ns: 'did' });
|
|
20
|
+
i18nHelper.addI18nLib('ru', 'keys', ru, { ns: 'did' });
|
|
21
|
+
i18nHelper.addI18nLib('be', 'keys', be, { ns: 'did' });
|
|
22
|
+
i18nHelper.addI18nLib('uk', 'keys', uk, { ns: 'did' });
|
|
23
|
+
i18nHelper.addI18nLib('es', 'keys', es, { ns: 'did' });
|
|
24
|
+
i18nHelper.addI18nLib('de', 'keys', de, { ns: 'did' });
|
|
25
|
+
i18nHelper.addI18nLib('fr', 'keys', fr, { ns: 'did' });
|
|
26
|
+
i18nHelper.addI18nLib('en', 'wallet', walletEn, { ns: 'did' });
|
|
27
|
+
i18nHelper.addI18nLib('pl', 'wallet', walletPl, { ns: 'did' });
|
|
28
|
+
i18nHelper.addI18nLib('ru', 'wallet', walletRu, { ns: 'did' });
|
|
29
|
+
i18nHelper.addI18nLib('be', 'wallet', walletBe, { ns: 'did' });
|
|
30
|
+
i18nHelper.addI18nLib('uk', 'wallet', walletUk, { ns: 'did' });
|
|
31
|
+
i18nHelper.addI18nLib('es', 'wallet', walletEs, { ns: 'did' });
|
|
32
|
+
i18nHelper.addI18nLib('de', 'wallet', walletDe, { ns: 'did' });
|
|
33
|
+
i18nHelper.addI18nLib('fr', 'wallet', walletFr, { ns: 'did' });
|
|
34
34
|
//# sourceMappingURL=i18n.js.map
|
package/build/i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
|
package/build/model.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAM7C,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAM7C,eAAO,MAAM,eAAe,WAAY,OAAO,GAAG,MAAM,KAAG,WA4C1D,CAAA"}
|
package/build/model.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { makeKeyPairModel, plugins } from '@owlmeans/basic-keys';
|
|
2
2
|
import { DIDKeyError } from './errors.js';
|
|
3
|
-
import {
|
|
3
|
+
import { keyUtils } from '@owlmeans/basic-keys/utils';
|
|
4
4
|
import { base64 } from '@scure/base';
|
|
5
5
|
import { KP_SEP, MAX_DEPTH } from './consts.js';
|
|
6
|
-
export const makeDidKeyModel = input => {
|
|
6
|
+
export const makeDidKeyModel = (input) => {
|
|
7
7
|
if (typeof input == 'string') {
|
|
8
8
|
const plugin = plugins[input];
|
|
9
9
|
if (plugin != null && (plugin.fromSeed == null || plugin.derive == null)) {
|
|
@@ -15,7 +15,7 @@ export const makeDidKeyModel = input => {
|
|
|
15
15
|
if (model.keyPair == null) {
|
|
16
16
|
throw new DIDKeyError('no:keypair');
|
|
17
17
|
}
|
|
18
|
-
assertType(model.keyPair?.type);
|
|
18
|
+
keyUtils.assertType(model.keyPair?.type);
|
|
19
19
|
if (model.keyPair.privateKey == null) {
|
|
20
20
|
throw new DIDKeyError('no:pk');
|
|
21
21
|
}
|
|
@@ -27,7 +27,7 @@ export const makeDidKeyModel = input => {
|
|
|
27
27
|
if (item == null) {
|
|
28
28
|
throw new DIDKeyError('no:path');
|
|
29
29
|
}
|
|
30
|
-
const newKey = [model.keyPair.type, base64.encode(plugins[model.keyPair.type].derive(prepareKey(model.keyPair.privateKey), item))].join(':');
|
|
30
|
+
const newKey = [model.keyPair.type, base64.encode(plugins[model.keyPair.type].derive(keyUtils.prepareKey(model.keyPair.privateKey), item))].join(':');
|
|
31
31
|
const derived = makeDidKeyModel(newKey);
|
|
32
32
|
if (derived.keyPair == null) {
|
|
33
33
|
throw new DIDKeyError('derived:missgenerated');
|
package/build/model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAgB,MAAM,sBAAsB,CAAA;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAgB,MAAM,sBAAsB,CAAA;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE/C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAwB,EAAe,EAAE;IACvE,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,WAAW,CAAC,iBAAiB,KAAK,EAAE,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAgB,gBAAgB,CAAC,KAAK,CAAgB,CAAA;IAEjE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE;QACpB,IAAI,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,IAAI,WAAW,CAAC,YAAY,CAAC,CAAA;QACrC,CAAC;QACD,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACxC,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;YACrC,MAAM,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;QAChC,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC,CAAA;QAE5E,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,WAAW,CAAC,UAAU,CAAC,CAAA;QACnC,CAAC;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAC1B,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,WAAW,CAAC,SAAS,CAAC,CAAA;QAClC,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAC/C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CACzF,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAEZ,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;QACvC,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,WAAW,CAAC,uBAAuB,CAAC,CAAA;QAChD,CAAC;QACD,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAA;QAC3B,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,aAAa,EAAE,CAAA;QAE9C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IACxE,CAAC,CAAA;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { ed25519 } from '@noble/curves/ed25519';
|
|
1
|
+
import { ed25519 } from '@noble/curves/ed25519.js';
|
|
2
2
|
import { KEY_OWL } from '../consts.js';
|
|
3
3
|
import { base58, utf8 } from '@scure/base';
|
|
4
|
-
import { concatBytes, randomBytes } from '@noble/hashes/utils';
|
|
5
|
-
import { hmac } from '@noble/hashes/hmac';
|
|
6
|
-
import { sha512 } from '@noble/hashes/
|
|
7
|
-
import { keccak_256 } from '@noble/hashes/sha3';
|
|
4
|
+
import { concatBytes, randomBytes } from '@noble/hashes/utils.js';
|
|
5
|
+
import { hmac } from '@noble/hashes/hmac.js';
|
|
6
|
+
import { sha512 } from '@noble/hashes/sha2.js';
|
|
7
|
+
import { keccak_256 } from '@noble/hashes/sha3.js';
|
|
8
8
|
export const ed25519owlPluginBuilder = (type = KEY_OWL) => {
|
|
9
9
|
const key = {
|
|
10
10
|
type: type,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ed25519owl.js","sourceRoot":"","sources":["../../src/plugins/ed25519owl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ed25519owl.js","sourceRoot":"","sources":["../../src/plugins/ed25519owl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAElD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAI,GAAW,OAAO,EAAa,EAAE;IAC3E,MAAM,GAAG,GAAc;QACrB,IAAI,EAAE,IAAI;QAEV,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,QAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAE5C,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CACnB,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAE7E,QAAQ,EAAE,CAAC,IAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;QAErE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEvD,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC;QAEtE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAErD,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QAEnE,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,qBAAqB,CAAC,CAAA,CAAC,CAAC;QAEpE,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,qBAAqB,CAAC,CAAA,CAAC,CAAC;KACrE,CAAA;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA"}
|
package/build/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,mBAAmB,YAAY,CAAA;AAC/B,mBAAmB,qBAAqB,CAAA;AACxC,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA"}
|
package/build/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAGA,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA"}
|
package/build/utils/key.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key.d.ts","sourceRoot":"","sources":["../../src/utils/key.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C,eAAO,MAAM,UAAU,SAAU,MAAM,GAAG,UAAU,SAAQ,MAAM,
|
|
1
|
+
{"version":3,"file":"key.d.ts","sourceRoot":"","sources":["../../src/utils/key.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C,eAAO,MAAM,UAAU,SAAU,MAAM,GAAG,UAAU,SAAQ,MAAM,KAAa,UAoB9E,CAAA"}
|
package/build/utils/key.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { keyUtils } from '@owlmeans/basic-keys/utils';
|
|
2
2
|
import { KEY_OWL } from '../consts.js';
|
|
3
3
|
import { base64 } from '@scure/base';
|
|
4
4
|
import { plugins } from '../plugins/index.js';
|
|
@@ -7,7 +7,7 @@ export const produceKey = (seed, type = KEY_OWL) => {
|
|
|
7
7
|
if (typeof seed === 'string') {
|
|
8
8
|
seed = base64.decode(seed);
|
|
9
9
|
}
|
|
10
|
-
assertType(type);
|
|
10
|
+
keyUtils.assertType(type);
|
|
11
11
|
if (plugins[type].fromSeed == null) {
|
|
12
12
|
throw new DIDKeyError(`non-derivable:${type}`);
|
|
13
13
|
}
|
package/build/utils/key.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key.js","sourceRoot":"","sources":["../../src/utils/key.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"key.js","sourceRoot":"","sources":["../../src/utils/key.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG1C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAyB,EAAE,IAAI,GAAW,OAAO,EAAc,EAAE;IAC1F,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;IACD,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAEzB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,WAAW,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAA;IAChD,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IACpD,MAAM,OAAO,GAAe;QAC1B,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;QACrC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;QACnC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC1C,IAAI;KACL,CAAA;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { MnemonicOptions } from '../../types.js';
|
|
2
|
+
/** BIP-39 mnemonics: generation and the seed and entropy derived from them. */
|
|
3
|
+
export interface MnemonicHelper {
|
|
4
|
+
/** A new mnemonic of `opts.size` words (12–24, default 18). @throws {SyntaxError} outside that range */
|
|
5
|
+
generateMnemonic: (opts?: MnemonicOptions) => string;
|
|
6
|
+
/** The BIP-39 seed of a mnemonic, base64. */
|
|
7
|
+
toSeed: (mnemonic: string) => string;
|
|
8
|
+
/** The BIP-39 seed of a mnemonic, hex. */
|
|
9
|
+
toEntropy: (mnemonic: string) => string;
|
|
10
|
+
/** The mnemonic of hex entropy. */
|
|
11
|
+
toMnemonic: (seed: string) => string;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/mnemonic/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD,+EAA+E;AAC/E,MAAM,WAAW,cAAc;IAC7B,wGAAwG;IACxG,gBAAgB,EAAE,CAAC,IAAI,CAAC,EAAE,eAAe,KAAK,MAAM,CAAA;IACpD,6CAA6C;IAC7C,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IACpC,0CAA0C;IAC1C,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;IACvC,mCAAmC;IACnC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CACrC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/utils/mnemonic/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const toEntropy: (mnemonic: string) => string;
|
|
5
|
-
export declare const toMnemonic: (seed: string) => string;
|
|
1
|
+
import type { MnemonicHelper } from './mnemonic/types.js';
|
|
2
|
+
export declare const createMnemonicHelper: () => MnemonicHelper;
|
|
3
|
+
export declare const mnemonicHelper: MnemonicHelper;
|
|
6
4
|
//# sourceMappingURL=mnemonic.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mnemonic.d.ts","sourceRoot":"","sources":["../../src/utils/mnemonic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mnemonic.d.ts","sourceRoot":"","sources":["../../src/utils/mnemonic.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,eAAO,MAAM,oBAAoB,QAAO,cAsBvC,CAAA;AAED,eAAO,MAAM,cAAc,gBAAyB,CAAA"}
|
package/build/utils/mnemonic.js
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { generateMnemonic as generate, mnemonicToSeedSync, entropyToMnemonic } from '@scure/bip39';
|
|
2
2
|
import { hex, base64 } from '@scure/base';
|
|
3
|
-
import { wordlist } from '@scure/bip39/wordlists/english';
|
|
4
|
-
export const
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
import { wordlist } from '@scure/bip39/wordlists/english.js';
|
|
4
|
+
export const createMnemonicHelper = () => {
|
|
5
|
+
const generateMnemonic = (opts) => {
|
|
6
|
+
const size = opts?.size ?? 18;
|
|
7
|
+
if (size < 12 || size > 24) {
|
|
8
|
+
throw new SyntaxError('Mnemonic size should be between 12 and 24');
|
|
9
|
+
}
|
|
10
|
+
const strength = Math.round(256 * size / 24);
|
|
11
|
+
return generate(wordlist, strength + (32 - strength % 32));
|
|
12
|
+
};
|
|
13
|
+
const toSeed = (mnemonic) => base64.encode(mnemonicToSeedSync(mnemonic));
|
|
14
|
+
const toEntropy = (mnemonic) => hex.encode(mnemonicToSeedSync(mnemonic));
|
|
15
|
+
const toMnemonic = (seed) => entropyToMnemonic(hex.decode(seed), wordlist);
|
|
16
|
+
return { generateMnemonic, toSeed, toEntropy, toMnemonic };
|
|
11
17
|
};
|
|
12
|
-
export const
|
|
13
|
-
export const toEntropy = (mnemonic) => hex.encode(mnemonicToSeedSync(mnemonic));
|
|
14
|
-
export const toMnemonic = (seed) => entropyToMnemonic(hex.decode(seed), wordlist);
|
|
18
|
+
export const mnemonicHelper = createMnemonicHelper();
|
|
15
19
|
//# sourceMappingURL=mnemonic.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mnemonic.js","sourceRoot":"","sources":["../../src/utils/mnemonic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,IAAI,QAAQ,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAClG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"mnemonic.js","sourceRoot":"","sources":["../../src/utils/mnemonic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,IAAI,QAAQ,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAClG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAA;AAG5D,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAmB,EAAE;IACvD,MAAM,gBAAgB,GAAG,CAAC,IAAsB,EAAU,EAAE;QAC1D,MAAM,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,EAAE,CAAA;QAE7B,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,WAAW,CAAC,2CAA2C,CAAC,CAAA;QACpE,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAA;QAC5C,OAAO,QAAQ,CAAC,QAAe,EAAE,QAAQ,GAAG,CAAC,EAAE,GAAG,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAA;IACnE,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,CAAC,QAAgB,EAAU,EAAE,CAC1C,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAA;IAE7C,MAAM,SAAS,GAAG,CAAC,QAAgB,EAAU,EAAE,CAC7C,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAA;IAE1C,MAAM,UAAU,GAAG,CAAC,IAAY,EAAU,EAAE,CAC1C,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,QAAe,CAAC,CAAA;IAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;AAC5D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { KeyMeta } from '../types.js';
|
|
2
|
+
/** Wallet key paths composed from key metadata. */
|
|
3
|
+
export interface KeyPathUtils {
|
|
4
|
+
/** Join path items with the key-path separator; an array item is joined with the prefix one. */
|
|
5
|
+
toPath: (...args: (string | string[])[]) => string;
|
|
6
|
+
/** The derivation path of a key described by its metadata: service, entity, profile. */
|
|
7
|
+
mataToPath: (meta: Partial<KeyMeta>) => string;
|
|
8
|
+
/** Whether a key's metadata carries every field the needle asks for (`name` is ignored). */
|
|
9
|
+
matchMeta: (haystack: KeyMeta, needle: Partial<KeyMeta>) => boolean;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,mDAAmD;AACnD,MAAM,WAAW,YAAY;IAC3B,gGAAgG;IAChG,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAAE,KAAK,MAAM,CAAA;IAClD,wFAAwF;IACxF,UAAU,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,MAAM,CAAA;IAC9C,4FAA4F;IAC5F,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAA;CACpE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":""}
|
package/build/utils.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const matchMeta: (haystack: KeyMeta, needle: Partial<KeyMeta>) => boolean;
|
|
1
|
+
import type { KeyPathUtils } from './utils/types.js';
|
|
2
|
+
export declare const createKeyPathUtils: () => KeyPathUtils;
|
|
3
|
+
export declare const keyPathUtils: KeyPathUtils;
|
|
5
4
|
//# sourceMappingURL=utils.d.ts.map
|
package/build/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD,eAAO,MAAM,kBAAkB,QAAO,YAgCrC,CAAA;AAED,eAAO,MAAM,YAAY,cAAuB,CAAA"}
|
package/build/utils.js
CHANGED
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
import { ENTITY_PREFIX, KP_SEP, PREFIX_SEP, PROFILE_PREFIX, SERVICE_PREFIX } from './consts.js';
|
|
2
|
-
|
|
3
|
-
export const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
items
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
2
|
+
import { skipFields } from './consts.local.js';
|
|
3
|
+
export const createKeyPathUtils = () => {
|
|
4
|
+
const toPath = (...args) => args.map(arg => Array.isArray(arg) ? arg.join(PREFIX_SEP) : arg).join(KP_SEP);
|
|
5
|
+
const mataToPath = (meta) => {
|
|
6
|
+
const { scopes, id, entityId } = meta;
|
|
7
|
+
const items = [];
|
|
8
|
+
if (scopes != null && scopes.length === 1) {
|
|
9
|
+
items.push([SERVICE_PREFIX, scopes[0]]);
|
|
10
|
+
}
|
|
11
|
+
if (entityId != null) {
|
|
12
|
+
items.push([ENTITY_PREFIX, entityId]);
|
|
13
|
+
}
|
|
14
|
+
if (id != null) {
|
|
15
|
+
items.push([PROFILE_PREFIX, id]);
|
|
16
|
+
}
|
|
17
|
+
return toPath(...items);
|
|
18
|
+
};
|
|
19
|
+
const matchMeta = (haystack, needle) => Object.entries(needle).every(([key, value]) => skipFields.includes(key)
|
|
20
|
+
|| (haystack[key] != null
|
|
21
|
+
&& (Array.isArray(value)
|
|
22
|
+
? Array.isArray(haystack[key])
|
|
23
|
+
&& value.every(value => haystack[key].includes(value))
|
|
24
|
+
: haystack[key] === value)));
|
|
25
|
+
return { toPath, mataToPath, matchMeta };
|
|
16
26
|
};
|
|
17
|
-
const
|
|
18
|
-
export const matchMeta = (haystack, needle) => Object.entries(needle).every(([key, value]) => skipFields.includes(key)
|
|
19
|
-
|| (haystack[key] != null
|
|
20
|
-
&& (Array.isArray(value)
|
|
21
|
-
? Array.isArray(haystack[key])
|
|
22
|
-
&& value.every(value => haystack[key].includes(value))
|
|
23
|
-
: haystack[key] === value)));
|
|
27
|
+
export const keyPathUtils = createKeyPathUtils();
|
|
24
28
|
//# sourceMappingURL=utils.js.map
|
package/build/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE/F,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAG9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAiB,EAAE;IACnD,MAAM,MAAM,GAAG,CAAC,GAAG,IAA2B,EAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CACjE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CACvD,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAEd,MAAM,UAAU,GAAG,CAAC,IAAsB,EAAU,EAAE;QACpD,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QACrC,MAAM,KAAK,GAA0B,EAAE,CAAA;QACvC,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACzC,CAAC;QACD,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAA;QACvC,CAAC;QACD,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAA;QAClC,CAAC;QAED,OAAO,MAAM,CAAC,GAAG,KAAK,CAAC,CAAA;IACzB,CAAC,CAAA;IAED,MAAM,SAAS,GAAG,CAAC,QAAiB,EAAE,MAAwB,EAAW,EAAE,CACzE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAC5C,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;WACrB,CAAC,QAAQ,CAAC,GAA4B,CAAC,IAAI,IAAI;eAC7C,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACtB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAA4B,CAAC,CAAC;uBACpD,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAE,QAAQ,CAAC,GAA4B,CAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC9F,CAAC,CAAC,QAAQ,CAAC,GAA4B,CAAC,KAAK,KAAK,CAAC,CACtD,CAAC,CAAA;IAEN,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAA"}
|
package/build/wallet.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAe,QAAQ,EAAE,SAAS,EAAyC,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAS/H,eAAO,MAAM,UAAU,UAAiB,QAAQ,SAAS,oBAAoB,
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAe,QAAQ,EAAE,SAAS,EAAyC,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAS/H,eAAO,MAAM,UAAU,UAAiB,QAAQ,SAAS,oBAAoB,KAAG,OAAO,CAAC,SAAS,CA4KhG,CAAA"}
|
package/build/wallet.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { DIDInitializationError, DIDKeyError, DIDWalletError } from './errors.js';
|
|
2
|
-
import { generateMnemonic, toEntropy, toMnemonic, toSeed } from './utils/mnemonic.js';
|
|
3
2
|
import { KEY_OWL, MASTER } from './consts.js';
|
|
4
3
|
import { plugins } from './plugins/index.js';
|
|
5
4
|
import { ed25519owlPluginBuilder } from './plugins/ed25519owl.js';
|
|
6
5
|
import { produceKey } from './utils/key.js';
|
|
7
6
|
import { makeDidKeyModel } from './model.js';
|
|
8
|
-
import {
|
|
7
|
+
import { keyPathUtils } from './utils.js';
|
|
8
|
+
import { mnemonicHelper } from './utils/mnemonic.js';
|
|
9
9
|
export const makeWallet = async (store, opts) => {
|
|
10
10
|
if (await store.master.load(MASTER) == null) {
|
|
11
11
|
if (!opts?.force && !opts?.allowEmpty) {
|
|
@@ -21,10 +21,10 @@ export const makeWallet = async (store, opts) => {
|
|
|
21
21
|
const wallet = {
|
|
22
22
|
store,
|
|
23
23
|
generate: async (opts) => {
|
|
24
|
-
const mnemonic = generateMnemonic(opts);
|
|
24
|
+
const mnemonic = mnemonicHelper.generateMnemonic(opts);
|
|
25
25
|
const seed = {
|
|
26
|
-
entropy: toEntropy(mnemonic),
|
|
27
|
-
seed: toSeed(mnemonic)
|
|
26
|
+
entropy: mnemonicHelper.toEntropy(mnemonic),
|
|
27
|
+
seed: mnemonicHelper.toSeed(mnemonic)
|
|
28
28
|
};
|
|
29
29
|
const master = produceKey(seed.seed, type);
|
|
30
30
|
await store.master.save({ id: MASTER, ...master, ...seed });
|
|
@@ -37,7 +37,7 @@ export const makeWallet = async (store, opts) => {
|
|
|
37
37
|
}
|
|
38
38
|
return false;
|
|
39
39
|
}
|
|
40
|
-
return toMnemonic(master.seed);
|
|
40
|
+
return mnemonicHelper.toMnemonic(master.seed);
|
|
41
41
|
},
|
|
42
42
|
master: async () => makeDidKeyModel(await store.master.get(MASTER)),
|
|
43
43
|
add: async (key, meta) => {
|
|
@@ -78,14 +78,14 @@ export const makeWallet = async (store, opts) => {
|
|
|
78
78
|
find: async (meta) => {
|
|
79
79
|
const where = Object.fromEntries(Object.entries(meta).filter(([_, v]) => typeof v !== 'boolean'));
|
|
80
80
|
const result = await store.meta.list(where);
|
|
81
|
-
const keys = await Promise.all(result.items.filter(item => matchMeta(item, meta))
|
|
81
|
+
const keys = await Promise.all(result.items.filter(item => keyPathUtils.matchMeta(item, meta))
|
|
82
82
|
.map(async (meta) => store.keys.get(meta.id)));
|
|
83
83
|
return keys.map(key => makeDidKeyModel(key));
|
|
84
84
|
},
|
|
85
85
|
provide: async (meta) => {
|
|
86
86
|
const found = await wallet.find(meta);
|
|
87
87
|
if (found.length === 0) {
|
|
88
|
-
const path = mataToPath(meta);
|
|
88
|
+
const path = keyPathUtils.mataToPath(meta);
|
|
89
89
|
const master = await wallet.master();
|
|
90
90
|
const key = master.derive(path);
|
|
91
91
|
if (meta.name == null) {
|
package/build/wallet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAGjF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@owlmeans/did",
|
|
3
|
-
"version": "0.1.18-rc.
|
|
3
|
+
"version": "0.1.18-rc.46",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "tsc -b",
|
|
8
|
+
"test": "bun test ./tests",
|
|
8
9
|
"dev": "sleep 153 && nodemon -e ts,tsx,json --watch src --exec \"tsc -p ./tsconfig.json\"",
|
|
9
10
|
"watch": "tsc -b -w --preserveWatchOutput --pretty"
|
|
10
11
|
},
|
|
@@ -21,15 +22,15 @@
|
|
|
21
22
|
}
|
|
22
23
|
},
|
|
23
24
|
"dependencies": {
|
|
24
|
-
"@noble/curves": "^
|
|
25
|
-
"@noble/hashes": "^
|
|
26
|
-
"@owlmeans/auth": "^0.1.18-rc.
|
|
27
|
-
"@owlmeans/basic-keys": "^0.1.18-rc.
|
|
28
|
-
"@owlmeans/error": "^0.1.18-rc.
|
|
29
|
-
"@owlmeans/i18n": "^0.1.18-rc.
|
|
30
|
-
"@owlmeans/resource": "^0.1.18-rc.
|
|
31
|
-
"@scure/base": "^2.
|
|
32
|
-
"@scure/bip39": "^
|
|
25
|
+
"@noble/curves": "^2.4.0",
|
|
26
|
+
"@noble/hashes": "^2.4.0",
|
|
27
|
+
"@owlmeans/auth": "^0.1.18-rc.40",
|
|
28
|
+
"@owlmeans/basic-keys": "^0.1.18-rc.48",
|
|
29
|
+
"@owlmeans/error": "^0.1.18-rc.38",
|
|
30
|
+
"@owlmeans/i18n": "^0.1.18-rc.39",
|
|
31
|
+
"@owlmeans/resource": "^0.1.18-rc.40",
|
|
32
|
+
"@scure/base": "^2.4.0",
|
|
33
|
+
"@scure/bip39": "^2.4.0"
|
|
33
34
|
},
|
|
34
35
|
"devDependencies": {
|
|
35
36
|
"@owlmeans/dep-config": "workspace:*",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const skipFields = ['name']
|
package/src/i18n.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
2
|
|
|
3
3
|
import en from './i18n/en.json' with { type: 'json' }
|
|
4
4
|
import pl from './i18n/pl.json' with { type: 'json' }
|
|
@@ -17,21 +17,22 @@ import walletUk from './i18n/wallet-uk.json' with { type: 'json' }
|
|
|
17
17
|
import walletEs from './i18n/wallet-es.json' with { type: 'json' }
|
|
18
18
|
import walletDe from './i18n/wallet-de.json' with { type: 'json' }
|
|
19
19
|
import walletFr from './i18n/wallet-fr.json' with { type: 'json' }
|
|
20
|
+
import { i18nHelper } from '@owlmeans/i18n'
|
|
20
21
|
|
|
21
|
-
addI18nLib('en', 'keys', en, { ns: 'did' })
|
|
22
|
-
addI18nLib('pl', 'keys', pl, { ns: 'did' })
|
|
23
|
-
addI18nLib('ru', 'keys', ru, { ns: 'did' })
|
|
24
|
-
addI18nLib('be', 'keys', be, { ns: 'did' })
|
|
25
|
-
addI18nLib('uk', 'keys', uk, { ns: 'did' })
|
|
26
|
-
addI18nLib('es', 'keys', es, { ns: 'did' })
|
|
27
|
-
addI18nLib('de', 'keys', de, { ns: 'did' })
|
|
28
|
-
addI18nLib('fr', 'keys', fr, { ns: 'did' })
|
|
22
|
+
i18nHelper.addI18nLib('en', 'keys', en, { ns: 'did' })
|
|
23
|
+
i18nHelper.addI18nLib('pl', 'keys', pl, { ns: 'did' })
|
|
24
|
+
i18nHelper.addI18nLib('ru', 'keys', ru, { ns: 'did' })
|
|
25
|
+
i18nHelper.addI18nLib('be', 'keys', be, { ns: 'did' })
|
|
26
|
+
i18nHelper.addI18nLib('uk', 'keys', uk, { ns: 'did' })
|
|
27
|
+
i18nHelper.addI18nLib('es', 'keys', es, { ns: 'did' })
|
|
28
|
+
i18nHelper.addI18nLib('de', 'keys', de, { ns: 'did' })
|
|
29
|
+
i18nHelper.addI18nLib('fr', 'keys', fr, { ns: 'did' })
|
|
29
30
|
|
|
30
|
-
addI18nLib('en', 'wallet', walletEn, { ns: 'did' })
|
|
31
|
-
addI18nLib('pl', 'wallet', walletPl, { ns: 'did' })
|
|
32
|
-
addI18nLib('ru', 'wallet', walletRu, { ns: 'did' })
|
|
33
|
-
addI18nLib('be', 'wallet', walletBe, { ns: 'did' })
|
|
34
|
-
addI18nLib('uk', 'wallet', walletUk, { ns: 'did' })
|
|
35
|
-
addI18nLib('es', 'wallet', walletEs, { ns: 'did' })
|
|
36
|
-
addI18nLib('de', 'wallet', walletDe, { ns: 'did' })
|
|
37
|
-
addI18nLib('fr', 'wallet', walletFr, { ns: 'did' })
|
|
31
|
+
i18nHelper.addI18nLib('en', 'wallet', walletEn, { ns: 'did' })
|
|
32
|
+
i18nHelper.addI18nLib('pl', 'wallet', walletPl, { ns: 'did' })
|
|
33
|
+
i18nHelper.addI18nLib('ru', 'wallet', walletRu, { ns: 'did' })
|
|
34
|
+
i18nHelper.addI18nLib('be', 'wallet', walletBe, { ns: 'did' })
|
|
35
|
+
i18nHelper.addI18nLib('uk', 'wallet', walletUk, { ns: 'did' })
|
|
36
|
+
i18nHelper.addI18nLib('es', 'wallet', walletEs, { ns: 'did' })
|
|
37
|
+
i18nHelper.addI18nLib('de', 'wallet', walletDe, { ns: 'did' })
|
|
38
|
+
i18nHelper.addI18nLib('fr', 'wallet', walletFr, { ns: 'did' })
|
package/src/model.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { makeKeyPairModel, plugins, type KeyPair } from '@owlmeans/basic-keys'
|
|
2
2
|
import type { DIDKeyModel } from './types.js'
|
|
3
3
|
import { DIDKeyError } from './errors.js'
|
|
4
|
-
import {
|
|
4
|
+
import { keyUtils } from '@owlmeans/basic-keys/utils'
|
|
5
5
|
import { base64 } from '@scure/base'
|
|
6
6
|
import { KP_SEP, MAX_DEPTH } from './consts.js'
|
|
7
7
|
|
|
8
|
-
export const makeDidKeyModel
|
|
8
|
+
export const makeDidKeyModel = (input?: KeyPair | string): DIDKeyModel => {
|
|
9
9
|
if (typeof input == 'string') {
|
|
10
10
|
const plugin = plugins[input]
|
|
11
11
|
if (plugin != null && (plugin.fromSeed == null || plugin.derive == null)) {
|
|
@@ -18,7 +18,7 @@ export const makeDidKeyModel: (input?: KeyPair | string) => DIDKeyModel = input
|
|
|
18
18
|
if (model.keyPair == null) {
|
|
19
19
|
throw new DIDKeyError('no:keypair')
|
|
20
20
|
}
|
|
21
|
-
assertType(model.keyPair?.type)
|
|
21
|
+
keyUtils.assertType(model.keyPair?.type)
|
|
22
22
|
if (model.keyPair.privateKey == null) {
|
|
23
23
|
throw new DIDKeyError('no:pk')
|
|
24
24
|
}
|
|
@@ -35,7 +35,7 @@ export const makeDidKeyModel: (input?: KeyPair | string) => DIDKeyModel = input
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
const newKey = [model.keyPair.type, base64.encode(
|
|
38
|
-
plugins[model.keyPair.type].derive!(prepareKey(model.keyPair.privateKey), item)
|
|
38
|
+
plugins[model.keyPair.type].derive!(keyUtils.prepareKey(model.keyPair.privateKey), item)
|
|
39
39
|
)].join(':')
|
|
40
40
|
|
|
41
41
|
const derived = makeDidKeyModel(newKey)
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { ed25519 } from '@noble/curves/ed25519'
|
|
1
|
+
import { ed25519 } from '@noble/curves/ed25519.js'
|
|
2
2
|
import type { KeyPlugin } from '@owlmeans/basic-keys/plugins'
|
|
3
3
|
import { KEY_OWL } from '../consts.js'
|
|
4
4
|
import { base58, utf8 } from '@scure/base'
|
|
5
|
-
import { concatBytes, randomBytes } from '@noble/hashes/utils'
|
|
6
|
-
import { hmac } from '@noble/hashes/hmac'
|
|
7
|
-
import { sha512 } from '@noble/hashes/
|
|
8
|
-
import { keccak_256 } from '@noble/hashes/sha3'
|
|
5
|
+
import { concatBytes, randomBytes } from '@noble/hashes/utils.js'
|
|
6
|
+
import { hmac } from '@noble/hashes/hmac.js'
|
|
7
|
+
import { sha512 } from '@noble/hashes/sha2.js'
|
|
8
|
+
import { keccak_256 } from '@noble/hashes/sha3.js'
|
|
9
9
|
|
|
10
10
|
export const ed25519owlPluginBuilder = (type: string = KEY_OWL): KeyPlugin => {
|
|
11
11
|
const key: KeyPlugin = {
|
package/src/utils/index.ts
CHANGED
package/src/utils/key.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
|
|
2
|
-
import {
|
|
2
|
+
import { keyUtils } from '@owlmeans/basic-keys/utils'
|
|
3
3
|
import { KEY_OWL } from '../consts.js'
|
|
4
4
|
import { base64 } from '@scure/base'
|
|
5
5
|
import { plugins } from '../plugins/index.js'
|
|
6
6
|
import { DIDKeyError } from '../errors.js'
|
|
7
7
|
import type { DIDKeyPair } from '../types.js'
|
|
8
8
|
|
|
9
|
-
export const produceKey = (seed: string | Uint8Array, type: string = KEY_OWL) => {
|
|
9
|
+
export const produceKey = (seed: string | Uint8Array, type: string = KEY_OWL): DIDKeyPair => {
|
|
10
10
|
if (typeof seed === 'string') {
|
|
11
11
|
seed = base64.decode(seed)
|
|
12
12
|
}
|
|
13
|
-
assertType(type)
|
|
13
|
+
keyUtils.assertType(type)
|
|
14
14
|
|
|
15
15
|
if (plugins[type].fromSeed == null) {
|
|
16
16
|
throw new DIDKeyError(`non-derivable:${type}`)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { MnemonicOptions } from '../../types.js'
|
|
2
|
+
|
|
3
|
+
/** BIP-39 mnemonics: generation and the seed and entropy derived from them. */
|
|
4
|
+
export interface MnemonicHelper {
|
|
5
|
+
/** A new mnemonic of `opts.size` words (12–24, default 18). @throws {SyntaxError} outside that range */
|
|
6
|
+
generateMnemonic: (opts?: MnemonicOptions) => string
|
|
7
|
+
/** The BIP-39 seed of a mnemonic, base64. */
|
|
8
|
+
toSeed: (mnemonic: string) => string
|
|
9
|
+
/** The BIP-39 seed of a mnemonic, hex. */
|
|
10
|
+
toEntropy: (mnemonic: string) => string
|
|
11
|
+
/** The mnemonic of hex entropy. */
|
|
12
|
+
toMnemonic: (seed: string) => string
|
|
13
|
+
}
|
package/src/utils/mnemonic.ts
CHANGED
|
@@ -1,24 +1,31 @@
|
|
|
1
1
|
import type { MnemonicOptions } from '../types.js'
|
|
2
2
|
import { generateMnemonic as generate, mnemonicToSeedSync, entropyToMnemonic } from '@scure/bip39'
|
|
3
3
|
import { hex, base64 } from '@scure/base'
|
|
4
|
-
import { wordlist } from '@scure/bip39/wordlists/english'
|
|
4
|
+
import { wordlist } from '@scure/bip39/wordlists/english.js'
|
|
5
|
+
import type { MnemonicHelper } from './mnemonic/types.js'
|
|
5
6
|
|
|
6
|
-
export const
|
|
7
|
-
const
|
|
7
|
+
export const createMnemonicHelper = (): MnemonicHelper => {
|
|
8
|
+
const generateMnemonic = (opts?: MnemonicOptions): string => {
|
|
9
|
+
const size = opts?.size ?? 18
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
if (size < 12 || size > 24) {
|
|
12
|
+
throw new SyntaxError('Mnemonic size should be between 12 and 24')
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const strength = Math.round(256 * size / 24)
|
|
16
|
+
return generate(wordlist as any, strength + (32 - strength % 32))
|
|
11
17
|
}
|
|
12
18
|
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
}
|
|
19
|
+
const toSeed = (mnemonic: string): string =>
|
|
20
|
+
base64.encode(mnemonicToSeedSync(mnemonic))
|
|
16
21
|
|
|
17
|
-
|
|
18
|
-
|
|
22
|
+
const toEntropy = (mnemonic: string): string =>
|
|
23
|
+
hex.encode(mnemonicToSeedSync(mnemonic))
|
|
19
24
|
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
const toMnemonic = (seed: string): string =>
|
|
26
|
+
entropyToMnemonic(hex.decode(seed), wordlist as any)
|
|
27
|
+
|
|
28
|
+
return { generateMnemonic, toSeed, toEntropy, toMnemonic }
|
|
29
|
+
}
|
|
22
30
|
|
|
23
|
-
export const
|
|
24
|
-
entropyToMnemonic(hex.decode(seed), wordlist as any)
|
|
31
|
+
export const mnemonicHelper = createMnemonicHelper()
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { KeyMeta } from '../types.js'
|
|
2
|
+
|
|
3
|
+
/** Wallet key paths composed from key metadata. */
|
|
4
|
+
export interface KeyPathUtils {
|
|
5
|
+
/** Join path items with the key-path separator; an array item is joined with the prefix one. */
|
|
6
|
+
toPath: (...args: (string | string[])[]) => string
|
|
7
|
+
/** The derivation path of a key described by its metadata: service, entity, profile. */
|
|
8
|
+
mataToPath: (meta: Partial<KeyMeta>) => string
|
|
9
|
+
/** Whether a key's metadata carries every field the needle asks for (`name` is ignored). */
|
|
10
|
+
matchMeta: (haystack: KeyMeta, needle: Partial<KeyMeta>) => boolean
|
|
11
|
+
}
|
package/src/utils.ts
CHANGED
|
@@ -1,34 +1,40 @@
|
|
|
1
1
|
import { ENTITY_PREFIX, KP_SEP, PREFIX_SEP, PROFILE_PREFIX, SERVICE_PREFIX } from './consts.js'
|
|
2
2
|
import type { KeyMeta } from './types.js'
|
|
3
|
+
import { skipFields } from './consts.local.js'
|
|
4
|
+
import type { KeyPathUtils } from './utils/types.js'
|
|
3
5
|
|
|
4
|
-
export const
|
|
5
|
-
|
|
6
|
-
).join(
|
|
6
|
+
export const createKeyPathUtils = (): KeyPathUtils => {
|
|
7
|
+
const toPath = (...args: (string | string[])[]): string => args.map(
|
|
8
|
+
arg => Array.isArray(arg) ? arg.join(PREFIX_SEP) : arg
|
|
9
|
+
).join(KP_SEP)
|
|
7
10
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
const mataToPath = (meta: Partial<KeyMeta>): string => {
|
|
12
|
+
const { scopes, id, entityId } = meta
|
|
13
|
+
const items: (string | string[])[] = []
|
|
14
|
+
if (scopes != null && scopes.length === 1) {
|
|
15
|
+
items.push([SERVICE_PREFIX, scopes[0]])
|
|
16
|
+
}
|
|
17
|
+
if (entityId != null) {
|
|
18
|
+
items.push([ENTITY_PREFIX, entityId])
|
|
19
|
+
}
|
|
20
|
+
if (id != null) {
|
|
21
|
+
items.push([PROFILE_PREFIX, id])
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return toPath(...items)
|
|
19
25
|
}
|
|
20
26
|
|
|
21
|
-
|
|
22
|
-
|
|
27
|
+
const matchMeta = (haystack: KeyMeta, needle: Partial<KeyMeta>): boolean =>
|
|
28
|
+
Object.entries(needle).every(([key, value]) =>
|
|
29
|
+
skipFields.includes(key)
|
|
30
|
+
|| (haystack[key as keyof typeof haystack] != null
|
|
31
|
+
&& (Array.isArray(value)
|
|
32
|
+
? Array.isArray(haystack[key as keyof typeof haystack])
|
|
33
|
+
&& value.every(value => (haystack[key as keyof typeof haystack] as unknown[]).includes(value))
|
|
34
|
+
: haystack[key as keyof typeof haystack] === value)
|
|
35
|
+
))
|
|
23
36
|
|
|
24
|
-
|
|
37
|
+
return { toPath, mataToPath, matchMeta }
|
|
38
|
+
}
|
|
25
39
|
|
|
26
|
-
export const
|
|
27
|
-
Object.entries(needle).every(([key, value]) =>
|
|
28
|
-
skipFields.includes(key)
|
|
29
|
-
|| (haystack[key as keyof typeof haystack] != null
|
|
30
|
-
&& (Array.isArray(value)
|
|
31
|
-
? Array.isArray(haystack[key as keyof typeof haystack])
|
|
32
|
-
&& value.every(value => (haystack[key as keyof typeof haystack] as unknown[]).includes(value))
|
|
33
|
-
: haystack[key as keyof typeof haystack] === value)
|
|
34
|
-
))
|
|
40
|
+
export const keyPathUtils = createKeyPathUtils()
|
package/src/wallet.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { DIDInitializationError, DIDKeyError, DIDWalletError } from './errors.js'
|
|
2
2
|
import type { Criteria } from '@owlmeans/resource'
|
|
3
3
|
import type { DIDKeyModel, DIDStore, DIDWallet, KeyMeta, KeyMetaRecord, KeyPairRecord, MakeDIDWalletOptions } from './types.js'
|
|
4
|
-
import { generateMnemonic, toEntropy, toMnemonic, toSeed } from './utils/mnemonic.js'
|
|
5
4
|
import { KEY_OWL, MASTER } from './consts.js'
|
|
6
5
|
import { plugins } from './plugins/index.js'
|
|
7
6
|
import { ed25519owlPluginBuilder } from './plugins/ed25519owl.js'
|
|
8
7
|
import { produceKey } from './utils/key.js'
|
|
9
8
|
import { makeDidKeyModel } from './model.js'
|
|
10
|
-
import {
|
|
9
|
+
import { keyPathUtils } from './utils.js'
|
|
10
|
+
import { mnemonicHelper } from './utils/mnemonic.js'
|
|
11
11
|
|
|
12
|
-
export const makeWallet = async (store: DIDStore, opts?: MakeDIDWalletOptions) => {
|
|
12
|
+
export const makeWallet = async (store: DIDStore, opts?: MakeDIDWalletOptions): Promise<DIDWallet> => {
|
|
13
13
|
if (await store.master.load(MASTER) == null) {
|
|
14
14
|
if (!opts?.force && !opts?.allowEmpty) {
|
|
15
15
|
throw new DIDInitializationError('master')
|
|
@@ -27,11 +27,11 @@ export const makeWallet = async (store: DIDStore, opts?: MakeDIDWalletOptions) =
|
|
|
27
27
|
store,
|
|
28
28
|
|
|
29
29
|
generate: async opts => {
|
|
30
|
-
const mnemonic = generateMnemonic(opts)
|
|
30
|
+
const mnemonic = mnemonicHelper.generateMnemonic(opts)
|
|
31
31
|
|
|
32
32
|
const seed = {
|
|
33
|
-
entropy: toEntropy(mnemonic),
|
|
34
|
-
seed: toSeed(mnemonic)
|
|
33
|
+
entropy: mnemonicHelper.toEntropy(mnemonic),
|
|
34
|
+
seed: mnemonicHelper.toSeed(mnemonic)
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
const master = produceKey(seed.seed, type)
|
|
@@ -47,7 +47,7 @@ export const makeWallet = async (store: DIDStore, opts?: MakeDIDWalletOptions) =
|
|
|
47
47
|
return false
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
return toMnemonic(master.seed)
|
|
50
|
+
return mnemonicHelper.toMnemonic(master.seed)
|
|
51
51
|
},
|
|
52
52
|
|
|
53
53
|
master: async () => makeDidKeyModel(await store.master.get(MASTER)),
|
|
@@ -100,7 +100,7 @@ export const makeWallet = async (store: DIDStore, opts?: MakeDIDWalletOptions) =
|
|
|
100
100
|
)
|
|
101
101
|
const result = await store.meta.list(where)
|
|
102
102
|
|
|
103
|
-
const keys = await Promise.all(result.items.filter(item => matchMeta(item, meta))
|
|
103
|
+
const keys = await Promise.all(result.items.filter(item => keyPathUtils.matchMeta(item, meta))
|
|
104
104
|
.map(async meta => store.keys.get(meta.id)))
|
|
105
105
|
|
|
106
106
|
return keys.map(key => makeDidKeyModel(key))
|
|
@@ -109,7 +109,7 @@ export const makeWallet = async (store: DIDStore, opts?: MakeDIDWalletOptions) =
|
|
|
109
109
|
provide: async meta => {
|
|
110
110
|
const found = await wallet.find(meta)
|
|
111
111
|
if (found.length === 0) {
|
|
112
|
-
const path = mataToPath(meta)
|
|
112
|
+
const path = keyPathUtils.mataToPath(meta)
|
|
113
113
|
const master = await wallet.master()
|
|
114
114
|
const key = master.derive(path)
|
|
115
115
|
if (meta.name == null) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mnemonic.spec.d.ts","sourceRoot":"","sources":["mnemonic.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { describe, expect, test } from 'bun:test';
|
|
2
|
+
import { wordlist } from '@scure/bip39/wordlists/english.js';
|
|
3
|
+
import { mnemonicHelper } from '../src/utils/mnemonic.js';
|
|
4
|
+
/**
|
|
5
|
+
* Answers computed with @scure/bip39 1.6 before the v2 line: the seed of the all-`abandon` test mnemonic is
|
|
6
|
+
* the published BIP-39 vector, so a changed derivation fails here rather than as a different DID.
|
|
7
|
+
*/
|
|
8
|
+
const MNEMONIC = 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about';
|
|
9
|
+
const SEED_HEX = '5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc19a5ac40b389cd370d086206dec8aa6c43daea6690f20ad3d8d48b2d2ce9e38e4';
|
|
10
|
+
describe('@owlmeans/did — mnemonic derivation', () => {
|
|
11
|
+
test('the seed of the BIP-39 test mnemonic is the published vector', () => {
|
|
12
|
+
expect(mnemonicHelper.toEntropy(MNEMONIC)).toBe(SEED_HEX);
|
|
13
|
+
expect(Buffer.from(mnemonicHelper.toSeed(MNEMONIC), 'base64').toString('hex')).toBe(SEED_HEX);
|
|
14
|
+
});
|
|
15
|
+
test('entropy turns back into the mnemonic it came from', () => {
|
|
16
|
+
expect(mnemonicHelper.toMnemonic('00000000000000000000000000000000')).toBe(MNEMONIC);
|
|
17
|
+
});
|
|
18
|
+
test('a generated mnemonic is a valid BIP-39 length and made of words of the list', () => {
|
|
19
|
+
const words = mnemonicHelper.generateMnemonic({ size: 12 }).split(' ');
|
|
20
|
+
expect([12, 15, 18, 21, 24]).toContain(words.length);
|
|
21
|
+
expect(words.every(word => wordlist.includes(word))).toBe(true);
|
|
22
|
+
});
|
|
23
|
+
test('sizes outside 12–24 are refused', () => {
|
|
24
|
+
expect(() => mnemonicHelper.generateMnemonic({ size: 8 })).toThrow();
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=mnemonic.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mnemonic.spec.js","sourceRoot":"","sources":["mnemonic.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEzD;;;GAGG;AACH,MAAM,QAAQ,GAAG,+FAA+F,CAAA;AAChH,MAAM,QAAQ,GAAG,kIAAkI,CAAA;AAEnJ,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,IAAI,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACxE,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACzD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC/F,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,kCAAkC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtF,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACvF,MAAM,KAAK,GAAG,cAAc,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACtE,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACpD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;IACtE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { describe, expect, test } from 'bun:test'
|
|
2
|
+
import { wordlist } from '@scure/bip39/wordlists/english.js'
|
|
3
|
+
import { mnemonicHelper } from '../src/utils/mnemonic.js'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Answers computed with @scure/bip39 1.6 before the v2 line: the seed of the all-`abandon` test mnemonic is
|
|
7
|
+
* the published BIP-39 vector, so a changed derivation fails here rather than as a different DID.
|
|
8
|
+
*/
|
|
9
|
+
const MNEMONIC = 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about'
|
|
10
|
+
const SEED_HEX = '5eb00bbddcf069084889a8ab9155568165f5c453ccb85e70811aaed6f6da5fc19a5ac40b389cd370d086206dec8aa6c43daea6690f20ad3d8d48b2d2ce9e38e4'
|
|
11
|
+
|
|
12
|
+
describe('@owlmeans/did — mnemonic derivation', () => {
|
|
13
|
+
test('the seed of the BIP-39 test mnemonic is the published vector', () => {
|
|
14
|
+
expect(mnemonicHelper.toEntropy(MNEMONIC)).toBe(SEED_HEX)
|
|
15
|
+
expect(Buffer.from(mnemonicHelper.toSeed(MNEMONIC), 'base64').toString('hex')).toBe(SEED_HEX)
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
test('entropy turns back into the mnemonic it came from', () => {
|
|
19
|
+
expect(mnemonicHelper.toMnemonic('00000000000000000000000000000000')).toBe(MNEMONIC)
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
test('a generated mnemonic is a valid BIP-39 length and made of words of the list', () => {
|
|
23
|
+
const words = mnemonicHelper.generateMnemonic({ size: 12 }).split(' ')
|
|
24
|
+
expect([12, 15, 18, 21, 24]).toContain(words.length)
|
|
25
|
+
expect(words.every(word => wordlist.includes(word))).toBe(true)
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
test('sizes outside 12–24 are refused', () => {
|
|
29
|
+
expect(() => mnemonicHelper.generateMnemonic({ size: 8 })).toThrow()
|
|
30
|
+
})
|
|
31
|
+
})
|
package/tsconfig.json
CHANGED