@prosopo/keyring 2.9.60 → 2.9.62
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/.turbo/turbo-build$colon$cjs.log +21 -19
- package/.turbo/turbo-build$colon$tsc.log +11 -11
- package/.turbo/turbo-build.log +23 -20
- package/CHANGELOG.md +18 -0
- package/dist/_virtual/_rolldown/runtime.js +3 -0
- package/dist/accounts/getPair.js +28 -38
- package/dist/accounts/getPair.test.d.ts +2 -0
- package/dist/accounts/getPair.test.d.ts.map +1 -0
- package/dist/accounts/getPair.test.js +86 -0
- package/dist/accounts/getPair.test.js.map +1 -0
- package/dist/accounts/index.js +1 -7
- package/dist/accounts/mnemonic.js +17 -13
- package/dist/accounts/mnemonic.test.d.ts +2 -0
- package/dist/accounts/mnemonic.test.d.ts.map +1 -0
- package/dist/accounts/mnemonic.test.js +64 -0
- package/dist/accounts/mnemonic.test.js.map +1 -0
- package/dist/accounts/testAccounts.js +36 -42
- package/dist/accounts/testAccounts.test.d.ts +2 -0
- package/dist/accounts/testAccounts.test.d.ts.map +1 -0
- package/dist/accounts/testAccounts.test.js +66 -0
- package/dist/accounts/testAccounts.test.js.map +1 -0
- package/dist/cjs/accounts/getPair.cjs +30 -40
- package/dist/cjs/accounts/index.cjs +8 -10
- package/dist/cjs/accounts/mnemonic.cjs +19 -14
- package/dist/cjs/accounts/testAccounts.cjs +36 -41
- package/dist/cjs/index.cjs +15 -18
- package/dist/cjs/keyring/index.cjs +5 -7
- package/dist/cjs/keyring/keyring.cjs +257 -266
- package/dist/cjs/keyring/pairs.cjs +23 -27
- package/dist/cjs/pair/decode.cjs +31 -29
- package/dist/cjs/pair/defaults.cjs +28 -28
- package/dist/cjs/pair/encode.cjs +14 -15
- package/dist/cjs/pair/index.cjs +191 -167
- package/dist/cjs/pair/toJson.cjs +8 -11
- package/dist/index.js +4 -15
- package/dist/keyring/index.js +2 -6
- package/dist/keyring/keyring.js +254 -265
- package/dist/keyring/keyring.test.d.ts +2 -0
- package/dist/keyring/keyring.test.d.ts.map +1 -0
- package/dist/keyring/keyring.test.js +239 -0
- package/dist/keyring/keyring.test.js.map +1 -0
- package/dist/keyring/pairs.js +22 -26
- package/dist/keyring/pairs.test.d.ts +2 -0
- package/dist/keyring/pairs.test.d.ts.map +1 -0
- package/dist/keyring/pairs.test.js +84 -0
- package/dist/keyring/pairs.test.js.map +1 -0
- package/dist/keyring/testing.test.d.ts +2 -0
- package/dist/keyring/testing.test.d.ts.map +1 -0
- package/dist/keyring/testing.test.js +97 -0
- package/dist/keyring/testing.test.js.map +1 -0
- package/dist/keyring.test-d.d.ts +2 -0
- package/dist/keyring.test-d.d.ts.map +1 -0
- package/dist/keyring.test-d.js +66 -0
- package/dist/keyring.test-d.js.map +1 -0
- package/dist/pair/decode.js +29 -29
- package/dist/pair/decode.spec.js +1 -1
- package/dist/pair/decode.spec.js.map +1 -1
- package/dist/pair/defaults.js +29 -30
- package/dist/pair/encode.js +14 -15
- package/dist/pair/encode.spec.js +1 -1
- package/dist/pair/encode.spec.js.map +1 -1
- package/dist/pair/index.js +188 -165
- package/dist/pair/nobody.test.d.ts +2 -0
- package/dist/pair/nobody.test.d.ts.map +1 -0
- package/dist/pair/nobody.test.js +77 -0
- package/dist/pair/nobody.test.js.map +1 -0
- package/dist/pair/toJson.js +8 -11
- package/dist/pair/toJson.spec.js +1 -1
- package/dist/pair/toJson.spec.js.map +1 -1
- package/package.json +8 -8
- package/src/accounts/getPair.test.ts +142 -0
- package/src/accounts/mnemonic.test.ts +103 -0
- package/src/accounts/testAccounts.test.ts +100 -0
- package/src/keyring/keyring.test.ts +373 -0
- package/src/keyring/pairs.test.ts +133 -0
- package/src/keyring/testing.test.ts +146 -0
- package/src/keyring.test-d.ts +134 -0
- package/src/pair/decode.spec.ts +3 -1
- package/src/pair/encode.spec.ts +9 -3
- package/src/pair/nobody.test.ts +127 -0
- package/src/pair/toJson.spec.ts +18 -12
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/keyring@2.9.
|
|
2
|
+
> @prosopo/keyring@2.9.62 build:cjs
|
|
3
3
|
> NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
|
|
4
4
|
|
|
5
5
|
ViteCommonJSConfig: .
|
|
@@ -23,23 +23,25 @@ ViteCommonJSConfig: .
|
|
|
23
23
|
'@prosopo/util-crypto'
|
|
24
24
|
]
|
|
25
25
|
}
|
|
26
|
-
[
|
|
26
|
+
[33mThe plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the [1mresolve.tsconfigPaths[22m option. You can remove the plugin and set [1mresolve.tsconfigPaths: true[22m in your Vite config instead.[39m
|
|
27
|
+
[36mvite v8.1.5 [32mbuilding ssr environment for production...[36m[39m
|
|
27
28
|
Bundle build started
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
[32m✓[39m 13 modules transformed.
|
|
29
|
+
[2K
|
|
30
|
+
✓ 14 modules transformed.
|
|
31
31
|
rendering chunks...
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
32
|
+
computing gzip size...
|
|
33
|
+
dist/cjs/keyring/index.cjs 0.22 kB │ gzip: 0.11 kB
|
|
34
|
+
dist/cjs/pair/toJson.cjs 0.40 kB │ gzip: 0.25 kB
|
|
35
|
+
dist/cjs/pair/defaults.cjs 0.45 kB │ gzip: 0.25 kB
|
|
36
|
+
dist/cjs/accounts/index.cjs 0.47 kB │ gzip: 0.17 kB
|
|
37
|
+
dist/cjs/keyring/pairs.cjs 0.86 kB │ gzip: 0.38 kB
|
|
38
|
+
dist/cjs/index.cjs 0.91 kB │ gzip: 0.31 kB
|
|
39
|
+
dist/cjs/pair/encode.cjs 0.91 kB │ gzip: 0.44 kB
|
|
40
|
+
dist/cjs/accounts/mnemonic.cjs 0.95 kB │ gzip: 0.38 kB
|
|
41
|
+
dist/cjs/accounts/testAccounts.cjs 1.31 kB │ gzip: 0.63 kB
|
|
42
|
+
dist/cjs/accounts/getPair.cjs 1.41 kB │ gzip: 0.60 kB
|
|
43
|
+
dist/cjs/pair/decode.cjs 1.77 kB │ gzip: 0.70 kB
|
|
44
|
+
dist/cjs/pair/index.cjs 7.26 kB │ gzip: 2.12 kB
|
|
45
|
+
dist/cjs/keyring/keyring.cjs 11.14 kB │ gzip: 3.05 kB
|
|
46
|
+
|
|
47
|
+
[32m✓ built in 59ms[39m
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/keyring@2.9.
|
|
2
|
+
> @prosopo/keyring@2.9.62 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
11:40:45 PM - Projects in this build:
|
|
6
6
|
* ../../dev/config/tsconfig.json
|
|
7
7
|
* ../locale/tsconfig.json
|
|
8
8
|
* ../util/tsconfig.json
|
|
@@ -12,21 +12,21 @@
|
|
|
12
12
|
* ../common/tsconfig.json
|
|
13
13
|
* tsconfig.json
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
11:40:45 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
11:40:45 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
11:40:45 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
11:40:45 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
11:40:45 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
11:40:45 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/procaptcha/api.ts' is older than output '../types/tsconfig.tsbuildinfo'
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
11:40:45 PM - Project '../common/tsconfig.json' is up to date because newest input '../common/src/error.ts' is older than output '../common/tsconfig.tsbuildinfo'
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
11:40:45 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
11:40:45 PM - Building project '/home/runner/work/captcha/captcha/packages/keyring/tsconfig.json'...
|
|
32
32
|
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/keyring@2.9.
|
|
2
|
+
> @prosopo/keyring@2.9.62 build
|
|
3
3
|
> npm run build:cross-env -- --mode ${NODE_ENV:-development}
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
> @prosopo/keyring@2.9.
|
|
6
|
+
> @prosopo/keyring@2.9.62 build:cross-env
|
|
7
7
|
> vite build --config vite.esm.config.ts --mode production
|
|
8
8
|
|
|
9
9
|
ViteEsmConfig: .
|
|
@@ -27,23 +27,26 @@ ViteEsmConfig: .
|
|
|
27
27
|
'@prosopo/util-crypto'
|
|
28
28
|
]
|
|
29
29
|
}
|
|
30
|
-
[
|
|
30
|
+
[33mThe plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the [1mresolve.tsconfigPaths[22m option. You can remove the plugin and set [1mresolve.tsconfigPaths: true[22m in your Vite config instead.[39m
|
|
31
|
+
[36mvite v8.1.5 [32mbuilding ssr environment for production...[36m[39m
|
|
31
32
|
Bundle build started
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
[32m✓[39m 13 modules transformed.
|
|
33
|
+
[2K
|
|
34
|
+
✓ 14 modules transformed.
|
|
35
35
|
rendering chunks...
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
36
|
+
computing gzip size...
|
|
37
|
+
dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
|
|
38
|
+
dist/keyring/index.js 0.12 kB │ gzip: 0.09 kB
|
|
39
|
+
dist/accounts/index.js 0.28 kB │ gzip: 0.14 kB
|
|
40
|
+
dist/pair/toJson.js 0.34 kB │ gzip: 0.22 kB
|
|
41
|
+
dist/pair/defaults.js 0.42 kB │ gzip: 0.25 kB
|
|
42
|
+
dist/index.js 0.54 kB │ gzip: 0.23 kB
|
|
43
|
+
dist/keyring/pairs.js 0.71 kB │ gzip: 0.36 kB
|
|
44
|
+
dist/pair/encode.js 0.77 kB │ gzip: 0.41 kB
|
|
45
|
+
dist/accounts/mnemonic.js 0.84 kB │ gzip: 0.36 kB
|
|
46
|
+
dist/accounts/testAccounts.js 1.14 kB │ gzip: 0.60 kB
|
|
47
|
+
dist/accounts/getPair.js 1.24 kB │ gzip: 0.56 kB
|
|
48
|
+
dist/pair/decode.js 1.48 kB │ gzip: 0.66 kB
|
|
49
|
+
dist/pair/index.js 6.96 kB │ gzip: 2.09 kB
|
|
50
|
+
dist/keyring/keyring.js 10.74 kB │ gzip: 2.99 kB
|
|
51
|
+
|
|
52
|
+
[32m✓ built in 71ms[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @prosopo/keyring
|
|
2
2
|
|
|
3
|
+
## 2.9.62
|
|
4
|
+
### Patch Changes
|
|
5
|
+
|
|
6
|
+
- 71a5952: Add unit and type tests for the keyring: pair encode/decode, mnemonic handling, account derivation, the testing keyring and the nobody pair. No behaviour changes.
|
|
7
|
+
|
|
8
|
+
## 2.9.61
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- e14fce6: chore(deps): bump vite to 6.4.3 and mongoose to 8.24.1, and adjust types for the mongoose 8.24 Document/ObjectId changes
|
|
12
|
+
- Updated dependencies [2c47bb7]
|
|
13
|
+
- Updated dependencies [0e1171c]
|
|
14
|
+
- Updated dependencies [103318c]
|
|
15
|
+
- Updated dependencies [270a8d8]
|
|
16
|
+
- Updated dependencies [e14fce6]
|
|
17
|
+
- @prosopo/util@3.3.5
|
|
18
|
+
- @prosopo/types@4.10.0
|
|
19
|
+
- @prosopo/common@3.1.48
|
|
20
|
+
|
|
3
21
|
## 2.9.60
|
|
4
22
|
### Patch Changes
|
|
5
23
|
|
package/dist/accounts/getPair.js
CHANGED
|
@@ -1,43 +1,33 @@
|
|
|
1
|
+
import { Keyring } from "../keyring/keyring.js";
|
|
2
|
+
import { mnemonicValidate } from "@prosopo/util-crypto";
|
|
1
3
|
import { hexToU8a } from "@polkadot/util/hex";
|
|
2
4
|
import { isHex } from "@polkadot/util/is";
|
|
3
5
|
import { ProsopoEnvError } from "@prosopo/common";
|
|
4
|
-
|
|
5
|
-
import { Keyring } from "../keyring/keyring.js";
|
|
6
|
+
//#region src/accounts/getPair.ts
|
|
6
7
|
function getPair(secret, account, pairType, ss58Format) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
} catch (e) {
|
|
31
|
-
throw new ProsopoEnvError("GENERAL.MISSING_SECRET_KEY", {
|
|
32
|
-
context: { error: e }
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
} else if (typeof secret === "object") {
|
|
36
|
-
return keyring.addFromJson(secret);
|
|
37
|
-
} else {
|
|
38
|
-
throw new ProsopoEnvError("GENERAL.MISSING_SECRET_KEY");
|
|
39
|
-
}
|
|
8
|
+
pairType = pairType || "sr25519";
|
|
9
|
+
ss58Format = ss58Format || 42;
|
|
10
|
+
const keyring = new Keyring({
|
|
11
|
+
type: pairType,
|
|
12
|
+
ss58Format
|
|
13
|
+
});
|
|
14
|
+
if (!secret && account) return keyring.addFromAddress(account);
|
|
15
|
+
if (secret && typeof secret === "string") {
|
|
16
|
+
if (mnemonicValidate(secret)) return keyring.addFromMnemonic(secret);
|
|
17
|
+
if (isHex(secret)) return keyring.addFromSeed(hexToU8a(secret));
|
|
18
|
+
if (secret.includes("//")) return keyring.addFromUri(secret);
|
|
19
|
+
try {
|
|
20
|
+
const json = JSON.parse(secret);
|
|
21
|
+
const { encoding: { content } } = json;
|
|
22
|
+
return new Keyring({
|
|
23
|
+
type: content[1],
|
|
24
|
+
ss58Format
|
|
25
|
+
}).addFromJson(json);
|
|
26
|
+
} catch (e) {
|
|
27
|
+
throw new ProsopoEnvError("GENERAL.MISSING_SECRET_KEY", { context: { error: e } });
|
|
28
|
+
}
|
|
29
|
+
} else if (typeof secret === "object") return keyring.addFromJson(secret);
|
|
30
|
+
else throw new ProsopoEnvError("GENERAL.MISSING_SECRET_KEY");
|
|
40
31
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
};
|
|
32
|
+
//#endregion
|
|
33
|
+
export { getPair };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPair.test.d.ts","sourceRoot":"","sources":["../../src/accounts/getPair.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { u8aToHex } from "@polkadot/util";
|
|
2
|
+
import { encodeAddress, sr25519FromSeed } from "@prosopo/util-crypto";
|
|
3
|
+
import { describe, expect, it } from "vitest";
|
|
4
|
+
import { DEV_PHRASE, Keyring } from "../keyring/index.js";
|
|
5
|
+
import { getPair } from "./getPair.js";
|
|
6
|
+
const SEED_32 = new Uint8Array(32).fill(7);
|
|
7
|
+
const SEED_HEX = u8aToHex(SEED_32);
|
|
8
|
+
const ALICE_PUBLIC = "0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d";
|
|
9
|
+
const pairJson = (overrides = {}) => ({
|
|
10
|
+
address: encodeAddress(new Uint8Array(32).fill(8), 42),
|
|
11
|
+
encoded: "0x00",
|
|
12
|
+
encoding: { content: ["pkcs8", "sr25519"], type: ["none"], version: "3" },
|
|
13
|
+
meta: {},
|
|
14
|
+
...overrides,
|
|
15
|
+
});
|
|
16
|
+
const SLOW = { timeout: 60000 };
|
|
17
|
+
describe("getPair secret handling", SLOW, () => {
|
|
18
|
+
it("derives from a mnemonic", () => {
|
|
19
|
+
expect(getPair(DEV_PHRASE).address).toBe(new Keyring({ ss58Format: 42 }).addFromMnemonic(DEV_PHRASE).address);
|
|
20
|
+
});
|
|
21
|
+
it("derives from a hex seed", () => {
|
|
22
|
+
expect(u8aToHex(getPair(SEED_HEX).publicKey)).toBe(u8aToHex(sr25519FromSeed(SEED_32).publicKey));
|
|
23
|
+
});
|
|
24
|
+
it("derives from a suri with a hard derivation path", () => {
|
|
25
|
+
expect(u8aToHex(getPair(`${DEV_PHRASE}//Alice`).publicKey)).toBe(ALICE_PUBLIC);
|
|
26
|
+
});
|
|
27
|
+
it("prefers the mnemonic branch over the suri branch", () => {
|
|
28
|
+
const suri = `${DEV_PHRASE}//1`;
|
|
29
|
+
expect(getPair(suri).address).not.toBe(getPair(DEV_PHRASE).address);
|
|
30
|
+
});
|
|
31
|
+
it("parses a JSON string, taking the crypto type from its encoding", () => {
|
|
32
|
+
const pair = getPair(JSON.stringify(pairJson()));
|
|
33
|
+
expect(pair.type).toBe("sr25519");
|
|
34
|
+
expect(u8aToHex(pair.publicKey)).toBe(u8aToHex(new Uint8Array(32).fill(8)));
|
|
35
|
+
});
|
|
36
|
+
it("accepts a JSON object directly", () => {
|
|
37
|
+
expect(getPair(pairJson()).type).toBe("sr25519");
|
|
38
|
+
});
|
|
39
|
+
it("reports a missing secret when the string is neither key nor JSON", () => {
|
|
40
|
+
expect(() => getPair("this is not a secret")).toThrow();
|
|
41
|
+
});
|
|
42
|
+
it("reports a missing secret for JSON without an encoding block", () => {
|
|
43
|
+
expect(() => getPair('{"address":"x"}')).toThrow();
|
|
44
|
+
});
|
|
45
|
+
it("throws when neither a secret nor an account is given", () => {
|
|
46
|
+
expect(() => getPair()).toThrow();
|
|
47
|
+
});
|
|
48
|
+
it("throws when the secret is an empty string and no account is given", () => {
|
|
49
|
+
expect(() => getPair("")).toThrow();
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe("getPair account handling", SLOW, () => {
|
|
53
|
+
it("builds a watch-only pair from an address when no secret is given", () => {
|
|
54
|
+
const address = getPair(DEV_PHRASE).address;
|
|
55
|
+
const watchOnly = getPair(undefined, address);
|
|
56
|
+
expect(watchOnly.address).toBe(address);
|
|
57
|
+
expect(watchOnly.isLocked).toBe(true);
|
|
58
|
+
});
|
|
59
|
+
it("accepts a raw public key as the account", () => {
|
|
60
|
+
const pair = getPair(DEV_PHRASE);
|
|
61
|
+
expect(getPair(undefined, pair.publicKey).address).toBe(pair.address);
|
|
62
|
+
});
|
|
63
|
+
it("ignores the account once a secret is supplied", () => {
|
|
64
|
+
const other = getPair(`${DEV_PHRASE}//other`).address;
|
|
65
|
+
expect(getPair(DEV_PHRASE, other).address).toBe(getPair(DEV_PHRASE).address);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
describe("getPair defaults", SLOW, () => {
|
|
69
|
+
it("defaults to sr25519 and ss58 format 42", () => {
|
|
70
|
+
const pair = getPair(DEV_PHRASE);
|
|
71
|
+
expect(pair.type).toBe("sr25519");
|
|
72
|
+
expect(pair.address).toBe(encodeAddress(pair.publicKey, 42));
|
|
73
|
+
});
|
|
74
|
+
it("honours an explicit ss58 format", () => {
|
|
75
|
+
const pair = getPair(DEV_PHRASE, undefined, "sr25519", 2);
|
|
76
|
+
expect(pair.address).toBe(encodeAddress(pair.publicKey, 2));
|
|
77
|
+
});
|
|
78
|
+
it("rejects a pair type the keyring does not support", () => {
|
|
79
|
+
expect(() => getPair(DEV_PHRASE, undefined, "ed25519")).toThrow("Expected a keyring type of either 'sr25519'");
|
|
80
|
+
});
|
|
81
|
+
it("treats ss58 format 0 as unset, because it is falsy", () => {
|
|
82
|
+
const pair = getPair(DEV_PHRASE, undefined, "sr25519", 0);
|
|
83
|
+
expect(pair.address).toBe(encodeAddress(pair.publicKey, 42));
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=getPair.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPair.test.js","sourceRoot":"","sources":["../../src/accounts/getPair.test.ts"],"names":[],"mappings":"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"}
|
package/dist/accounts/index.js
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
import { generateMiniSecret, generateMnemonic } from "./mnemonic.js";
|
|
2
2
|
import { getPair } from "./getPair.js";
|
|
3
3
|
import { getDefaultProviders, getDefaultSiteKeys } from "./testAccounts.js";
|
|
4
|
-
export {
|
|
5
|
-
generateMiniSecret,
|
|
6
|
-
generateMnemonic,
|
|
7
|
-
getDefaultProviders,
|
|
8
|
-
getDefaultSiteKeys,
|
|
9
|
-
getPair
|
|
10
|
-
};
|
|
4
|
+
export { generateMiniSecret, generateMnemonic, getDefaultProviders, getDefaultSiteKeys, getPair };
|
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
import { mnemonicGenerate, mnemonicToMiniSecret } from "@prosopo/util-crypto";
|
|
2
1
|
import { Keyring } from "../keyring/keyring.js";
|
|
2
|
+
import { mnemonicGenerate, mnemonicToMiniSecret } from "@prosopo/util-crypto";
|
|
3
|
+
//#region src/accounts/mnemonic.ts
|
|
4
|
+
/** Generate a mnemonic, returning the mnemonic and associated address
|
|
5
|
+
* @param keyring
|
|
6
|
+
* @param pairType
|
|
7
|
+
*/
|
|
3
8
|
async function generateMnemonic(keyring, pairType) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const mnemonic = mnemonicGenerate();
|
|
8
|
-
const account = keyring.addFromMnemonic(mnemonic);
|
|
9
|
-
return [mnemonic, account.address];
|
|
9
|
+
if (!keyring) keyring = new Keyring({ type: pairType || "sr25519" });
|
|
10
|
+
const mnemonic = mnemonicGenerate();
|
|
11
|
+
return [mnemonic, keyring.addFromMnemonic(mnemonic).address];
|
|
10
12
|
}
|
|
13
|
+
/** Generate a secret, returning the secret and associated address
|
|
14
|
+
* @param keyring
|
|
15
|
+
* @param pairType
|
|
16
|
+
*/
|
|
11
17
|
async function generateMiniSecret(keyring, pairType) {
|
|
12
|
-
|
|
13
|
-
|
|
18
|
+
const [mnemonic, address] = await generateMnemonic(keyring, pairType);
|
|
19
|
+
return [mnemonicToMiniSecret(mnemonic), address];
|
|
14
20
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
generateMnemonic
|
|
18
|
-
};
|
|
21
|
+
//#endregion
|
|
22
|
+
export { generateMiniSecret, generateMnemonic };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mnemonic.test.d.ts","sourceRoot":"","sources":["../../src/accounts/mnemonic.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { u8aToHex } from "@polkadot/util";
|
|
2
|
+
import { mnemonicToMiniSecret, mnemonicValidate, sr25519FromSeed, } from "@prosopo/util-crypto";
|
|
3
|
+
import { describe, expect, it } from "vitest";
|
|
4
|
+
import { Keyring } from "../keyring/index.js";
|
|
5
|
+
import { generateMiniSecret, generateMnemonic } from "./mnemonic.js";
|
|
6
|
+
const SLOW = { timeout: 60000 };
|
|
7
|
+
describe("generateMnemonic", SLOW, () => {
|
|
8
|
+
it("returns a valid twelve word mnemonic and its address", async () => {
|
|
9
|
+
const [mnemonic, address] = await generateMnemonic();
|
|
10
|
+
expect(mnemonic.split(" ")).toHaveLength(12);
|
|
11
|
+
expect(mnemonicValidate(mnemonic)).toBe(true);
|
|
12
|
+
expect(address).toBe(new Keyring().addFromMnemonic(mnemonic).address);
|
|
13
|
+
});
|
|
14
|
+
it("generates a fresh mnemonic each call", async () => {
|
|
15
|
+
const [first] = await generateMnemonic();
|
|
16
|
+
const [second] = await generateMnemonic();
|
|
17
|
+
expect(second).not.toBe(first);
|
|
18
|
+
});
|
|
19
|
+
it("adds the account to a keyring it is given", async () => {
|
|
20
|
+
const keyring = new Keyring();
|
|
21
|
+
const [, address] = await generateMnemonic(keyring);
|
|
22
|
+
expect(keyring.getPairs()).toHaveLength(1);
|
|
23
|
+
expect(keyring.getPair(address).address).toBe(address);
|
|
24
|
+
});
|
|
25
|
+
it("uses a fresh keyring when none is passed, leaving no shared state", async () => {
|
|
26
|
+
const keyring = new Keyring();
|
|
27
|
+
await generateMnemonic();
|
|
28
|
+
expect(keyring.getPairs()).toEqual([]);
|
|
29
|
+
});
|
|
30
|
+
it("honours the requested pair type when it creates the keyring", async () => {
|
|
31
|
+
const [, address] = await generateMnemonic(undefined, "sr25519");
|
|
32
|
+
expect(typeof address).toBe("string");
|
|
33
|
+
await expect(generateMnemonic(undefined, "ed25519")).rejects.toThrow("Expected a keyring type of either 'sr25519'");
|
|
34
|
+
});
|
|
35
|
+
it("ignores the pair type when a keyring is supplied", async () => {
|
|
36
|
+
const keyring = new Keyring({ type: "sr25519" });
|
|
37
|
+
await expect(generateMnemonic(keyring, "ed25519")).resolves.toBeDefined();
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
describe("generateMiniSecret", SLOW, () => {
|
|
41
|
+
it("returns the 32 byte mini secret for the generated mnemonic", async () => {
|
|
42
|
+
const keyring = new Keyring();
|
|
43
|
+
const [secret, address] = await generateMiniSecret(keyring);
|
|
44
|
+
expect(secret).toHaveLength(32);
|
|
45
|
+
expect(u8aToHex(sr25519FromSeed(secret).publicKey)).toBe(u8aToHex(keyring.getPair(address).publicKey));
|
|
46
|
+
});
|
|
47
|
+
it("derives the secret from the same mnemonic it registered", async () => {
|
|
48
|
+
const keyring = new Keyring();
|
|
49
|
+
const [secret] = await generateMiniSecret(keyring);
|
|
50
|
+
const registered = keyring.getPairs()[0];
|
|
51
|
+
expect(registered).toBeDefined();
|
|
52
|
+
expect(u8aToHex(secret)).not.toBe(u8aToHex(new Uint8Array(32)));
|
|
53
|
+
});
|
|
54
|
+
it("agrees with mnemonicToMiniSecret for a known phrase", async () => {
|
|
55
|
+
const phrase = "bottom drive obey lake curtain smoke basket hold race lonely fit walk";
|
|
56
|
+
expect(u8aToHex(mnemonicToMiniSecret(phrase))).toHaveLength(66);
|
|
57
|
+
});
|
|
58
|
+
it("generates a fresh secret each call", async () => {
|
|
59
|
+
const [first] = await generateMiniSecret();
|
|
60
|
+
const [second] = await generateMiniSecret();
|
|
61
|
+
expect(u8aToHex(second)).not.toBe(u8aToHex(first));
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
//# sourceMappingURL=mnemonic.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mnemonic.test.js","sourceRoot":"","sources":["../../src/accounts/mnemonic.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,47 +1,41 @@
|
|
|
1
|
-
import { CaptchaType, ClientSettingsSchema } from "@prosopo/types";
|
|
2
|
-
import "../keyring/index.js";
|
|
3
|
-
import { getPair } from "./getPair.js";
|
|
4
1
|
import { DEV_PHRASE } from "../keyring/keyring.js";
|
|
2
|
+
import { getPair } from "./getPair.js";
|
|
3
|
+
import { CaptchaType, ClientSettingsSchema } from "@prosopo/types";
|
|
4
|
+
//#region src/accounts/testAccounts.ts
|
|
5
5
|
function getDefaultSiteKeys() {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
6
|
+
const captchaTypes = [
|
|
7
|
+
CaptchaType.image,
|
|
8
|
+
CaptchaType.pow,
|
|
9
|
+
CaptchaType.frictionless,
|
|
10
|
+
CaptchaType.puzzle
|
|
11
|
+
];
|
|
12
|
+
const sites = [];
|
|
13
|
+
for (const captchaType of captchaTypes) {
|
|
14
|
+
const secret = `${DEV_PHRASE}//${captchaType}`;
|
|
15
|
+
const pair = getPair(secret);
|
|
16
|
+
sites.push({
|
|
17
|
+
pair,
|
|
18
|
+
address: pair.address,
|
|
19
|
+
secret,
|
|
20
|
+
settings: ClientSettingsSchema.parse({
|
|
21
|
+
captchaType,
|
|
22
|
+
domains: ["localhost"],
|
|
23
|
+
imageMaxRounds: 2,
|
|
24
|
+
frictionlessThreshold: .8
|
|
25
|
+
})
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return sites;
|
|
29
29
|
}
|
|
30
30
|
function getDefaultProviders() {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
datasetFile: "./dev/data/captchas.json",
|
|
40
|
-
captchaDatasetId: "0x3e067b8f6aeae82fdbe2b2557b9c2d90aaabff241df651bf0f36667d2ab0018d"
|
|
41
|
-
}
|
|
42
|
-
];
|
|
31
|
+
const pair = getPair("puppy cream effort carbon despair leg pyramid cotton endorse immense drill peasant");
|
|
32
|
+
return [{
|
|
33
|
+
url: "https://localhost:9229",
|
|
34
|
+
pair,
|
|
35
|
+
address: pair.address,
|
|
36
|
+
datasetFile: "./dev/data/captchas.json",
|
|
37
|
+
captchaDatasetId: "0x3e067b8f6aeae82fdbe2b2557b9c2d90aaabff241df651bf0f36667d2ab0018d"
|
|
38
|
+
}];
|
|
43
39
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
getDefaultSiteKeys
|
|
47
|
-
};
|
|
40
|
+
//#endregion
|
|
41
|
+
export { getDefaultProviders, getDefaultSiteKeys };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testAccounts.test.d.ts","sourceRoot":"","sources":["../../src/accounts/testAccounts.test.ts"],"names":[],"mappings":""}
|