cesr-ts 0.4.0 → 0.6.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/esm/src/adapters/async-iterable.js +8 -0
- package/esm/src/adapters/effection.js +6 -0
- package/esm/src/annotate/annotator.js +12 -0
- package/esm/src/annotate/cli.js +12 -0
- package/esm/src/annotate/comments.js +5 -1
- package/esm/src/annotate/denot.js +6 -0
- package/esm/src/annotate/render.js +15 -3
- package/esm/src/core/bytes.js +9 -0
- package/esm/src/core/errors.js +3 -0
- package/esm/src/core/parser-engine.js +1 -1
- package/esm/src/core/parser-frame-parser.js +22 -18
- package/esm/src/core/vocabulary.js +47 -0
- package/esm/src/index.js +5 -0
- package/esm/src/parser/attachment-parser.js +4 -0
- package/esm/src/parser/cold-start.js +6 -0
- package/esm/src/parser/group-dispatch.js +2 -2
- package/esm/src/primitives/aggor.js +374 -30
- package/esm/src/primitives/bexter.js +2 -3
- package/esm/src/primitives/blinder.js +6 -0
- package/esm/src/primitives/byte-like.js +19 -0
- package/esm/src/primitives/cigar.js +17 -3
- package/esm/src/primitives/cipher.js +91 -6
- package/esm/src/primitives/codex.js +39 -6
- package/esm/src/primitives/compactor.js +307 -3
- package/esm/src/primitives/counter.js +6 -2
- package/esm/src/primitives/dater.js +1 -2
- package/esm/src/primitives/decimer.js +7 -11
- package/esm/src/primitives/decrypter.js +123 -7
- package/esm/src/primitives/diger.js +57 -3
- package/esm/src/primitives/disclosure.js +300 -0
- package/esm/src/primitives/encrypter.js +130 -7
- package/esm/src/primitives/hydrate.js +49 -0
- package/esm/src/primitives/ilker.js +2 -3
- package/esm/src/primitives/indexer.js +21 -4
- package/esm/src/primitives/labeler.js +1 -2
- package/esm/src/primitives/mapper.js +612 -35
- package/esm/src/primitives/matter.js +133 -3
- package/esm/src/primitives/mediar.js +6 -0
- package/esm/src/primitives/noncer.js +2 -3
- package/esm/src/primitives/number.js +1 -2
- package/esm/src/primitives/pather.js +102 -5
- package/esm/src/primitives/prefixer.js +1 -2
- package/esm/src/primitives/primitive.js +14 -0
- package/esm/src/primitives/registry.js +2 -0
- package/esm/src/primitives/saider.js +80 -3
- package/esm/src/primitives/salter.js +96 -2
- package/esm/src/primitives/sealed-box.js +41 -0
- package/esm/src/primitives/seqner.js +1 -2
- package/esm/src/primitives/siger.js +58 -3
- package/esm/src/primitives/signer.js +243 -9
- package/esm/src/primitives/streamer.js +28 -0
- package/esm/src/primitives/structing.js +727 -0
- package/esm/src/primitives/structor.js +20 -0
- package/esm/src/primitives/tagger.js +1 -2
- package/esm/src/primitives/texter.js +1 -2
- package/esm/src/primitives/tholder.js +552 -10
- package/esm/src/primitives/traitor.js +2 -3
- package/esm/src/primitives/verfer.js +50 -6
- package/esm/src/primitives/verser.js +16 -6
- package/esm/src/router/router-stub.js +1 -0
- package/esm/src/serder/native.js +1326 -0
- package/esm/src/serder/serder.js +1558 -59
- package/esm/src/serder/serdery.js +92 -7
- package/esm/src/serder/smell.js +26 -1
- package/esm/src/tables/codex-utils.js +2 -0
- package/esm/src/tables/counter-codex.js +2 -0
- package/esm/src/tables/counter-groups.js +6 -0
- package/esm/src/tables/versions.js +4 -0
- package/esm/src/version.js +5 -2
- package/package.json +5 -2
- package/types/src/adapters/async-iterable.d.ts +8 -0
- package/types/src/adapters/async-iterable.d.ts.map +1 -1
- package/types/src/adapters/effection.d.ts +7 -0
- package/types/src/adapters/effection.d.ts.map +1 -1
- package/types/src/annotate/annotator.d.ts +12 -0
- package/types/src/annotate/annotator.d.ts.map +1 -1
- package/types/src/annotate/cli.d.ts +13 -0
- package/types/src/annotate/cli.d.ts.map +1 -1
- package/types/src/annotate/comments.d.ts +4 -0
- package/types/src/annotate/comments.d.ts.map +1 -1
- package/types/src/annotate/denot.d.ts +6 -0
- package/types/src/annotate/denot.d.ts.map +1 -1
- package/types/src/annotate/render.d.ts.map +1 -1
- package/types/src/annotate/types.d.ts +2 -0
- package/types/src/annotate/types.d.ts.map +1 -1
- package/types/src/bench/parser-benchmark.d.ts +3 -0
- package/types/src/bench/parser-benchmark.d.ts.map +1 -1
- package/types/src/core/bytes.d.ts +9 -0
- package/types/src/core/bytes.d.ts.map +1 -1
- package/types/src/core/errors.d.ts +3 -0
- package/types/src/core/errors.d.ts.map +1 -1
- package/types/src/core/parser-engine.d.ts +4 -0
- package/types/src/core/parser-engine.d.ts.map +1 -1
- package/types/src/core/parser-frame-parser.d.ts.map +1 -1
- package/types/src/core/types.d.ts +2 -0
- package/types/src/core/types.d.ts.map +1 -1
- package/types/src/core/vocabulary.d.ts +48 -0
- package/types/src/core/vocabulary.d.ts.map +1 -0
- package/types/src/index.d.ts +5 -0
- package/types/src/index.d.ts.map +1 -1
- package/types/src/parser/attachment-parser.d.ts +4 -0
- package/types/src/parser/attachment-parser.d.ts.map +1 -1
- package/types/src/parser/cold-start.d.ts +6 -0
- package/types/src/parser/cold-start.d.ts.map +1 -1
- package/types/src/parser/group-dispatch.d.ts.map +1 -1
- package/types/src/primitives/aggor.d.ts +100 -13
- package/types/src/primitives/aggor.d.ts.map +1 -1
- package/types/src/primitives/bexter.d.ts.map +1 -1
- package/types/src/primitives/blinder.d.ts +6 -0
- package/types/src/primitives/blinder.d.ts.map +1 -1
- package/types/src/primitives/byte-like.d.ts +7 -0
- package/types/src/primitives/byte-like.d.ts.map +1 -0
- package/types/src/primitives/cigar.d.ts +11 -1
- package/types/src/primitives/cigar.d.ts.map +1 -1
- package/types/src/primitives/cipher.d.ts +73 -2
- package/types/src/primitives/cipher.d.ts.map +1 -1
- package/types/src/primitives/codex.d.ts +34 -4
- package/types/src/primitives/codex.d.ts.map +1 -1
- package/types/src/primitives/compactor.d.ts +94 -2
- package/types/src/primitives/compactor.d.ts.map +1 -1
- package/types/src/primitives/counter.d.ts.map +1 -1
- package/types/src/primitives/dater.d.ts.map +1 -1
- package/types/src/primitives/decimer.d.ts.map +1 -1
- package/types/src/primitives/decrypter.d.ts +64 -3
- package/types/src/primitives/decrypter.d.ts.map +1 -1
- package/types/src/primitives/diger.d.ts +16 -0
- package/types/src/primitives/diger.d.ts.map +1 -1
- package/types/src/primitives/disclosure.d.ts +201 -0
- package/types/src/primitives/disclosure.d.ts.map +1 -0
- package/types/src/primitives/encrypter.d.ts +66 -4
- package/types/src/primitives/encrypter.d.ts.map +1 -1
- package/types/src/primitives/hydrate.d.ts +20 -0
- package/types/src/primitives/hydrate.d.ts.map +1 -0
- package/types/src/primitives/ilker.d.ts.map +1 -1
- package/types/src/primitives/indexer.d.ts.map +1 -1
- package/types/src/primitives/labeler.d.ts.map +1 -1
- package/types/src/primitives/mapper.d.ts +132 -11
- package/types/src/primitives/mapper.d.ts.map +1 -1
- package/types/src/primitives/matter.d.ts +33 -1
- package/types/src/primitives/matter.d.ts.map +1 -1
- package/types/src/primitives/mediar.d.ts +6 -0
- package/types/src/primitives/mediar.d.ts.map +1 -1
- package/types/src/primitives/noncer.d.ts.map +1 -1
- package/types/src/primitives/number.d.ts.map +1 -1
- package/types/src/primitives/pather.d.ts +21 -0
- package/types/src/primitives/pather.d.ts.map +1 -1
- package/types/src/primitives/prefixer.d.ts.map +1 -1
- package/types/src/primitives/primitive.d.ts +26 -0
- package/types/src/primitives/primitive.d.ts.map +1 -1
- package/types/src/primitives/registry.d.ts +3 -0
- package/types/src/primitives/registry.d.ts.map +1 -1
- package/types/src/primitives/saider.d.ts +41 -0
- package/types/src/primitives/saider.d.ts.map +1 -1
- package/types/src/primitives/salter.d.ts +56 -1
- package/types/src/primitives/salter.d.ts.map +1 -1
- package/types/src/primitives/sealed-box.d.ts +29 -0
- package/types/src/primitives/sealed-box.d.ts.map +1 -0
- package/types/src/primitives/seqner.d.ts.map +1 -1
- package/types/src/primitives/siger.d.ts +14 -0
- package/types/src/primitives/siger.d.ts.map +1 -1
- package/types/src/primitives/signer.d.ts +80 -4
- package/types/src/primitives/signer.d.ts.map +1 -1
- package/types/src/primitives/streamer.d.ts +31 -0
- package/types/src/primitives/streamer.d.ts.map +1 -0
- package/types/src/primitives/structing.d.ts +4114 -0
- package/types/src/primitives/structing.d.ts.map +1 -0
- package/types/src/primitives/structor.d.ts +6 -0
- package/types/src/primitives/structor.d.ts.map +1 -1
- package/types/src/primitives/tagger.d.ts.map +1 -1
- package/types/src/primitives/texter.d.ts.map +1 -1
- package/types/src/primitives/tholder.d.ts +150 -5
- package/types/src/primitives/tholder.d.ts.map +1 -1
- package/types/src/primitives/traitor.d.ts.map +1 -1
- package/types/src/primitives/unknown.d.ts +1 -0
- package/types/src/primitives/unknown.d.ts.map +1 -1
- package/types/src/primitives/verfer.d.ts +12 -0
- package/types/src/primitives/verfer.d.ts.map +1 -1
- package/types/src/primitives/verser.d.ts +14 -3
- package/types/src/primitives/verser.d.ts.map +1 -1
- package/types/src/router/router-stub.d.ts +3 -0
- package/types/src/router/router-stub.d.ts.map +1 -1
- package/types/src/serder/native.d.ts +115 -0
- package/types/src/serder/native.d.ts.map +1 -0
- package/types/src/serder/serder.d.ts +187 -9
- package/types/src/serder/serder.d.ts.map +1 -1
- package/types/src/serder/serdery.d.ts +42 -0
- package/types/src/serder/serdery.d.ts.map +1 -1
- package/types/src/serder/smell.d.ts +22 -0
- package/types/src/serder/smell.d.ts.map +1 -1
- package/types/src/tables/codex-utils.d.ts +3 -0
- package/types/src/tables/codex-utils.d.ts.map +1 -1
- package/types/src/tables/counter-codex.d.ts +4 -0
- package/types/src/tables/counter-codex.d.ts.map +1 -1
- package/types/src/tables/counter-groups.d.ts +6 -0
- package/types/src/tables/counter-groups.d.ts.map +1 -1
- package/types/src/tables/counter.tables.generated.d.ts.map +1 -1
- package/types/src/tables/indexer.codex.generated.d.ts.map +1 -1
- package/types/src/tables/matter.codex.generated.d.ts.map +1 -1
- package/types/src/tables/table-types.d.ts +6 -0
- package/types/src/tables/table-types.d.ts.map +1 -1
- package/types/src/tables/versions.d.ts +6 -0
- package/types/src/tables/versions.d.ts.map +1 -1
- package/types/src/version.d.ts +5 -2
- package/types/src/version.d.ts.map +1 -1
|
@@ -1,26 +1,70 @@
|
|
|
1
|
+
import { ed25519 } from "@noble/curves/ed25519";
|
|
2
|
+
import { p256 } from "@noble/curves/nist";
|
|
3
|
+
import { secp256k1 } from "@noble/curves/secp256k1";
|
|
1
4
|
import { UnknownCodeError } from "../core/errors.js";
|
|
2
|
-
import { matterCodexName, VERFER_CODES } from "./codex.js";
|
|
5
|
+
import { matterCodexName, MtrDex, VERFER_CODES } from "./codex.js";
|
|
3
6
|
import { Matter, parseMatter } from "./matter.js";
|
|
4
7
|
/**
|
|
5
8
|
* Verification-key primitive.
|
|
6
9
|
*
|
|
7
10
|
* KERIpy substance: `Verfer` wraps public verification key material and
|
|
8
11
|
* constrains accepted derivation codes to verifier key families.
|
|
12
|
+
*
|
|
13
|
+
* Responsibility split:
|
|
14
|
+
* - `Matter` owns derivation-code semantics such as transferability
|
|
15
|
+
* - `Verfer` owns suite-dispatched signature verification
|
|
9
16
|
*/
|
|
10
17
|
export class Verfer extends Matter {
|
|
11
18
|
constructor(init) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
19
|
+
super(init);
|
|
20
|
+
Object.defineProperty(this, "_verifyRaw", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
configurable: true,
|
|
23
|
+
writable: true,
|
|
24
|
+
value: void 0
|
|
25
|
+
});
|
|
26
|
+
Verfer.assertSupportedCode(this.code);
|
|
27
|
+
this._verifyRaw = Verfer.bindSuite(this.code, this.raw);
|
|
17
28
|
}
|
|
29
|
+
/** Raw public verification key bytes used by suite-specific verify paths. */
|
|
18
30
|
get key() {
|
|
19
31
|
return this.raw;
|
|
20
32
|
}
|
|
33
|
+
/** Human-oriented generated codex member name for diagnostics and tooling. */
|
|
21
34
|
get algorithm() {
|
|
22
35
|
return matterCodexName(this.code) ?? "UnknownKey";
|
|
23
36
|
}
|
|
37
|
+
/** Verify one raw signature against one serialized message via this verifier's suite code. */
|
|
38
|
+
verify(sig, ser) {
|
|
39
|
+
return this._verifyRaw(sig, ser);
|
|
40
|
+
}
|
|
41
|
+
static assertSupportedCode(code) {
|
|
42
|
+
if (!VERFER_CODES.has(code)) {
|
|
43
|
+
throw new UnknownCodeError(`Expected verification key code, got ${code}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/** Bind one KERIpy-style verifier suite at construction time. */
|
|
47
|
+
static bindSuite(code, key) {
|
|
48
|
+
switch (code) {
|
|
49
|
+
case MtrDex.Ed25519:
|
|
50
|
+
case MtrDex.Ed25519N:
|
|
51
|
+
return (sig, ser) => ed25519.verify(sig, ser, key);
|
|
52
|
+
case MtrDex.ECDSA_256k1:
|
|
53
|
+
case MtrDex.ECDSA_256k1N:
|
|
54
|
+
return (sig, ser) => secp256k1.verify(sig, ser, key, {
|
|
55
|
+
format: "compact",
|
|
56
|
+
lowS: false,
|
|
57
|
+
prehash: true,
|
|
58
|
+
});
|
|
59
|
+
case MtrDex.ECDSA_256r1:
|
|
60
|
+
case MtrDex.ECDSA_256r1N:
|
|
61
|
+
return (sig, ser) => p256.verify(sig, ser, key, {
|
|
62
|
+
format: "compact",
|
|
63
|
+
lowS: false,
|
|
64
|
+
prehash: true,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
24
68
|
}
|
|
25
69
|
/** Parse and hydrate `Verfer` from txt/qb2 bytes. */
|
|
26
70
|
export function parseVerfer(input, cold) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { b64ToInt } from "../core/bytes.js";
|
|
2
2
|
import { DeserializeError, UnknownCodeError } from "../core/errors.js";
|
|
3
3
|
import { VERSER_CODES, VERSER_PROTOCOLS } from "./codex.js";
|
|
4
|
-
import {
|
|
4
|
+
import { parseMatter } from "./matter.js";
|
|
5
5
|
import { Tagger } from "./tagger.js";
|
|
6
6
|
/** Decode 3-char CESR version token (`Mmm`) into major/minor version tuple. */
|
|
7
7
|
function parseVersion(text) {
|
|
@@ -21,13 +21,13 @@ function parseVersion(text) {
|
|
|
21
21
|
* Compact version primitive for protocol/genus version metadata.
|
|
22
22
|
*
|
|
23
23
|
* KERIpy semantics: payload tag is `proto + pvrsn (+ gvrsn optional)` where
|
|
24
|
-
* proto is `KERI|ACDC`,
|
|
25
|
-
*
|
|
24
|
+
* proto is usually `KERI|ACDC`, but KERIpy also permits auxiliary four-char
|
|
25
|
+
* tags such as `OCSR` used by typed-digest seal families. `pvrsn` is always
|
|
26
|
+
* present, and `gvrsn` is present only for 10-char tags.
|
|
26
27
|
*/
|
|
27
28
|
export class Verser extends Tagger {
|
|
28
29
|
constructor(init) {
|
|
29
|
-
|
|
30
|
-
super(tagger);
|
|
30
|
+
super(init);
|
|
31
31
|
if (!VERSER_CODES.has(this.code)) {
|
|
32
32
|
throw new UnknownCodeError(`Expected verser code (Y/0O), got ${this.code}`);
|
|
33
33
|
}
|
|
@@ -42,7 +42,17 @@ export class Verser extends Tagger {
|
|
|
42
42
|
if (body.length === 10)
|
|
43
43
|
parseVersion(body.slice(7, 10));
|
|
44
44
|
}
|
|
45
|
-
/**
|
|
45
|
+
/**
|
|
46
|
+
* Four-character verser namespace extracted from tag payload.
|
|
47
|
+
*
|
|
48
|
+
* Maintainer note:
|
|
49
|
+
* - native message bodies still only use the protocol literals from
|
|
50
|
+
* `tables/versions.ts`
|
|
51
|
+
* - KERIpy also permits auxiliary four-char tags such as `OCSR` for
|
|
52
|
+
* typed-digest seals, so this accessor may carry a value outside the
|
|
53
|
+
* nominal protocol union even though the broader codebase still treats
|
|
54
|
+
* top-level message bodies as `KERI|ACDC`
|
|
55
|
+
*/
|
|
46
56
|
get proto() {
|
|
47
57
|
return this.tag.slice(0, 4);
|
|
48
58
|
}
|