signify-ts 0.2.0 → 0.3.0-dev.e31e78d

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.
Files changed (129) hide show
  1. package/README.md +104 -34
  2. package/dist/exports.d.ts +40 -40
  3. package/dist/exports.js +40 -0
  4. package/dist/index.d.ts +2 -3
  5. package/dist/index.js +3 -8
  6. package/dist/keri/app/aiding.d.ts +54 -18
  7. package/{src/keri/app/aiding.ts → dist/keri/app/aiding.js} +130 -236
  8. package/dist/keri/app/clienting.d.ts +59 -22
  9. package/{src/keri/app/clienting.ts → dist/keri/app/clienting.js} +146 -235
  10. package/dist/keri/app/contacting.d.ts +30 -23
  11. package/{src/keri/app/contacting.ts → dist/keri/app/contacting.js} +26 -63
  12. package/dist/keri/app/controller.d.ts +49 -6
  13. package/{src/keri/app/controller.ts → dist/keri/app/controller.js} +80 -186
  14. package/dist/keri/app/coring.d.ts +134 -25
  15. package/{src/keri/app/coring.ts → dist/keri/app/coring.js} +83 -56
  16. package/dist/keri/app/credentialing.d.ts +191 -67
  17. package/dist/keri/app/credentialing.js +540 -0
  18. package/dist/keri/app/delegating.d.ts +18 -0
  19. package/dist/keri/app/delegating.js +24 -0
  20. package/dist/keri/app/escrowing.d.ts +5 -3
  21. package/{src/keri/app/escrowing.ts → dist/keri/app/escrowing.js} +3 -9
  22. package/dist/keri/app/exchanging.d.ts +243 -11
  23. package/dist/keri/app/exchanging.js +242 -0
  24. package/dist/keri/app/grouping.d.ts +11 -9
  25. package/{src/keri/app/grouping.ts → dist/keri/app/grouping.js} +10 -29
  26. package/dist/keri/app/habery.d.ts +2 -2
  27. package/dist/keri/app/habery.js +117 -0
  28. package/dist/keri/app/notifying.d.ts +2 -2
  29. package/{src/keri/app/notifying.ts → dist/keri/app/notifying.js} +7 -17
  30. package/dist/keri/core/authing.d.ts +2 -2
  31. package/{src/keri/core/authing.ts → dist/keri/core/authing.js} +26 -42
  32. package/dist/keri/core/base64.d.ts +2 -0
  33. package/dist/keri/core/base64.js +16 -0
  34. package/dist/keri/core/bexter.d.ts +1 -1
  35. package/{src/keri/core/bexter.ts → dist/keri/core/bexter.js} +18 -32
  36. package/dist/keri/core/cigar.d.ts +2 -2
  37. package/dist/keri/core/cigar.js +13 -0
  38. package/dist/keri/core/cipher.d.ts +1 -1
  39. package/{src/keri/core/cipher.ts → dist/keri/core/cipher.js} +10 -19
  40. package/dist/keri/core/core.d.ts +117 -9
  41. package/dist/keri/core/core.js +385 -0
  42. package/dist/keri/core/counter.d.ts +2 -2
  43. package/dist/keri/core/counter.js +221 -0
  44. package/dist/keri/core/decrypter.d.ts +4 -4
  45. package/{src/keri/core/decrypter.ts → dist/keri/core/decrypter.js} +23 -40
  46. package/dist/keri/core/diger.d.ts +3 -3
  47. package/{src/keri/core/diger.ts → dist/keri/core/diger.js} +18 -33
  48. package/dist/keri/core/encrypter.d.ts +2 -2
  49. package/{src/keri/core/encrypter.ts → dist/keri/core/encrypter.js} +18 -38
  50. package/dist/keri/core/eventing.d.ts +6 -6
  51. package/dist/keri/core/eventing.js +383 -0
  52. package/dist/keri/core/httping.d.ts +11 -4
  53. package/{src/keri/core/httping.ts → dist/keri/core/httping.js} +36 -101
  54. package/dist/keri/core/indexer.d.ts +1 -1
  55. package/dist/keri/core/indexer.js +407 -0
  56. package/dist/keri/core/keeping.d.ts +113 -46
  57. package/dist/keri/core/keeping.js +347 -0
  58. package/{src/keri/core/kering.ts → dist/keri/core/kering.js} +1 -3
  59. package/dist/keri/core/keyState.d.ts +98 -0
  60. package/dist/keri/core/manager.d.ts +147 -12
  61. package/dist/keri/core/manager.js +880 -0
  62. package/dist/keri/core/matter.d.ts +1 -1
  63. package/dist/keri/core/matter.js +460 -0
  64. package/dist/keri/core/number.d.ts +2 -2
  65. package/{src/keri/core/number.ts → dist/keri/core/number.js} +26 -32
  66. package/dist/keri/core/pather.d.ts +2 -2
  67. package/{src/keri/core/pather.ts → dist/keri/core/pather.js} +12 -27
  68. package/dist/keri/core/prefixer.d.ts +10 -10
  69. package/dist/keri/core/prefixer.js +182 -0
  70. package/dist/keri/core/saider.d.ts +2 -12
  71. package/dist/keri/core/saider.js +107 -0
  72. package/dist/keri/core/salter.d.ts +44 -9
  73. package/dist/keri/core/salter.js +110 -0
  74. package/dist/keri/core/seqner.d.ts +1 -1
  75. package/{src/keri/core/seqner.ts → dist/keri/core/seqner.js} +20 -21
  76. package/dist/keri/core/serder.d.ts +25 -12
  77. package/dist/keri/core/serder.js +133 -0
  78. package/dist/keri/core/siger.d.ts +2 -2
  79. package/{src/keri/core/siger.ts → dist/keri/core/siger.js} +4 -14
  80. package/dist/keri/core/signer.d.ts +4 -4
  81. package/dist/keri/core/signer.js +84 -0
  82. package/{src/keri/core/tholder.ts → dist/keri/core/tholder.js} +69 -94
  83. package/dist/keri/core/utils.d.ts +1 -1
  84. package/{src/keri/core/utils.ts → dist/keri/core/utils.js} +30 -60
  85. package/dist/keri/core/vdring.d.ts +2 -2
  86. package/dist/keri/core/vdring.js +61 -0
  87. package/dist/keri/core/verfer.d.ts +2 -6
  88. package/dist/keri/core/verfer.js +37 -0
  89. package/dist/keri/end/ending.d.ts +10 -8
  90. package/dist/keri/end/ending.js +136 -0
  91. package/{src/ready.ts → dist/ready.js} +1 -2
  92. package/dist/types/keria-api-schema.d.ts +1158 -0
  93. package/dist/types/keria-api-schema.js +34 -0
  94. package/package.json +53 -52
  95. package/dist/math.d.ts +0 -1
  96. package/dist/signify-ts.cjs +0 -7835
  97. package/dist/signify-ts.cjs.development.js +0 -9501
  98. package/dist/signify-ts.cjs.development.js.map +0 -1
  99. package/dist/signify-ts.cjs.map +0 -7
  100. package/dist/signify-ts.cjs.production.min.js +0 -2
  101. package/dist/signify-ts.cjs.production.min.js.map +0 -1
  102. package/dist/signify-ts.esm.js +0 -9345
  103. package/dist/signify-ts.esm.js.map +0 -1
  104. package/dist/signify-ts.mjs +0 -7811
  105. package/dist/signify-ts.mjs.map +0 -7
  106. package/src/buffer-polyfill.ts +0 -5
  107. package/src/exports.ts +0 -44
  108. package/src/index.ts +0 -4
  109. package/src/keri/app/credentialing.ts +0 -820
  110. package/src/keri/app/exchanging.ts +0 -220
  111. package/src/keri/app/habery.ts +0 -185
  112. package/src/keri/core/cigar.ts +0 -18
  113. package/src/keri/core/core.ts +0 -326
  114. package/src/keri/core/counter.ts +0 -273
  115. package/src/keri/core/eventing.ts +0 -581
  116. package/src/keri/core/indexer.ts +0 -509
  117. package/src/keri/core/keeping.ts +0 -684
  118. package/src/keri/core/manager.ts +0 -1183
  119. package/src/keri/core/matter.ts +0 -521
  120. package/src/keri/core/prefixer.ts +0 -233
  121. package/src/keri/core/saider.ts +0 -186
  122. package/src/keri/core/salter.ts +0 -120
  123. package/src/keri/core/serder.ts +0 -163
  124. package/src/keri/core/signer.ts +0 -133
  125. package/src/keri/core/vdring.ts +0 -94
  126. package/src/keri/core/verfer.ts +0 -47
  127. package/src/keri/end/ending.ts +0 -170
  128. package/src/math.ts +0 -3
  129. /package/dist/{buffer-polyfill.d.ts → keri/core/keyState.js} +0 -0
@@ -1,133 +0,0 @@
1
- import { EmptyMaterialError } from './kering';
2
-
3
- export {};
4
- import libsodium from 'libsodium-wrappers-sumo';
5
- import { Matter } from './matter';
6
- import { MtrDex } from './matter';
7
- import { Verfer } from './verfer';
8
- import { Cigar } from './cigar';
9
- import { Siger } from './siger';
10
- import { IdrDex } from './indexer';
11
- import { Buffer } from 'buffer';
12
-
13
- /**
14
- * @description Signer is Matter subclass with method to create signature of serialization
15
- * It will use .raw as signing (private) key seed
16
- * .code as cipher suite for signing and new property .verfer whose property
17
- * .raw is public key for signing.
18
- * If not provided .verfer is generated from private key seed using .code
19
- as cipher suite for creating key-pair.
20
- */
21
- interface SignerArgs {
22
- raw?: Uint8Array | undefined;
23
- code?: string;
24
- qb64b?: Uint8Array | undefined;
25
- qb64?: string;
26
- qb2?: Uint8Array | undefined;
27
- transferable?: boolean;
28
- }
29
-
30
- export class Signer extends Matter {
31
- private readonly _sign: Function;
32
- private readonly _verfer: Verfer;
33
-
34
- constructor({
35
- raw,
36
- code = MtrDex.Ed25519_Seed,
37
- qb64,
38
- qb64b,
39
- qb2,
40
- transferable = true,
41
- }: SignerArgs) {
42
- try {
43
- super({ raw, code, qb64, qb64b, qb2 });
44
- } catch (e) {
45
- if (e instanceof EmptyMaterialError) {
46
- if (code == MtrDex.Ed25519_Seed) {
47
- const raw = libsodium.randombytes_buf(
48
- libsodium.crypto_sign_SEEDBYTES
49
- );
50
- super({ raw, code, qb64, qb64b, qb2 });
51
- } else {
52
- throw new Error(`Unsupported signer code = ${code}.`);
53
- }
54
- } else {
55
- throw e;
56
- }
57
- }
58
- let verfer;
59
- if (this.code == MtrDex.Ed25519_Seed) {
60
- this._sign = this._ed25519;
61
- const keypair = libsodium.crypto_sign_seed_keypair(this.raw);
62
- verfer = new Verfer({
63
- raw: keypair.publicKey,
64
- code: transferable ? MtrDex.Ed25519 : MtrDex.Ed25519N,
65
- });
66
- } else {
67
- throw new Error(`Unsupported signer code = ${this.code}.`);
68
- }
69
-
70
- this._verfer = verfer;
71
- }
72
-
73
- /**
74
- * @description Property verfer:
75
- Returns Verfer instance
76
- Assumes ._verfer is correctly assigned
77
- */
78
- get verfer(): Verfer {
79
- return this._verfer;
80
- }
81
-
82
- sign(
83
- ser: Uint8Array,
84
- index: number | null = null,
85
- only: boolean = false,
86
- ondex: number | undefined = undefined
87
- ): Siger | Cigar {
88
- return this._sign(ser, this.raw, this.verfer, index, only, ondex);
89
- }
90
-
91
- _ed25519(
92
- ser: Uint8Array,
93
- seed: Uint8Array,
94
- verfer: Verfer,
95
- index: number | null,
96
- only: boolean = false,
97
- ondex: number | undefined
98
- ) {
99
- const sig = libsodium.crypto_sign_detached(
100
- ser,
101
- Buffer.concat([seed, verfer.raw])
102
- );
103
-
104
- if (index == null) {
105
- return new Cigar({ raw: sig, code: MtrDex.Ed25519_Sig }, verfer);
106
- } else {
107
- let code;
108
- if (only) {
109
- ondex = undefined;
110
- if (index <= 63) {
111
- code = IdrDex.Ed25519_Crt_Sig;
112
- } else {
113
- code = IdrDex.Ed25519_Big_Crt_Sig;
114
- }
115
- } else {
116
- if (ondex == undefined) {
117
- ondex = index;
118
- }
119
-
120
- if (ondex == index && index <= 63)
121
- // both same and small
122
- code = IdrDex.Ed25519_Sig; // use small both same
123
- // otherwise big or both not same so use big both
124
- else code = IdrDex.Ed25519_Big_Sig; // use use big both
125
- }
126
-
127
- return new Siger(
128
- { raw: sig, code: code, index: index, ondex: ondex },
129
- verfer
130
- );
131
- }
132
- }
133
- }
@@ -1,94 +0,0 @@
1
- import { randomNonce } from '../app/coring';
2
- import { TraitDex } from '../app/habery';
3
- import {
4
- Serials,
5
- Versionage,
6
- Version,
7
- Ident,
8
- versify,
9
- Ilks,
10
- } from '../core/core';
11
- import { ample } from './eventing';
12
- import { MtrDex } from './matter';
13
- import { Prefixer } from './prefixer';
14
- import { Serder } from './serder';
15
-
16
- namespace vdr {
17
- export interface VDRInceptArgs {
18
- pre: string;
19
- toad?: number | string;
20
- nonce?: string;
21
- baks?: string[];
22
- cnfg?: string[];
23
- version?: Version;
24
- kind?: Serials;
25
- code?: string;
26
- }
27
-
28
- export function incept({
29
- pre,
30
- toad,
31
- nonce = randomNonce(),
32
- baks = [],
33
- cnfg = [],
34
- version = Versionage,
35
- kind = Serials.JSON,
36
- code = MtrDex.Blake3_256,
37
- }: VDRInceptArgs): Serder {
38
- const vs = versify(Ident.KERI, version, kind, 0);
39
- const isn = 0;
40
- const ilk = Ilks.vcp;
41
-
42
- if (cnfg.includes(TraitDex.NoBackers) && baks.length > 0) {
43
- throw new Error(
44
- `${baks.length} backers specified for NB vcp, 0 allowed`
45
- );
46
- }
47
-
48
- if (new Set(baks).size < baks.length) {
49
- throw new Error(`Invalid baks ${baks} has duplicates`);
50
- }
51
-
52
- let _toad: number;
53
- if (toad === undefined) {
54
- if (baks.length === 0) {
55
- _toad = 0;
56
- } else {
57
- _toad = ample(baks.length);
58
- }
59
- } else {
60
- _toad = +toad;
61
- }
62
-
63
- if (baks.length > 0) {
64
- if (_toad < 1 || _toad > baks.length) {
65
- throw new Error(`Invalid toad ${_toad} for baks in ${baks}`);
66
- }
67
- } else {
68
- if (_toad != 0) {
69
- throw new Error(`Invalid toad ${_toad} for no baks`);
70
- }
71
- }
72
-
73
- const ked = {
74
- v: vs,
75
- t: ilk,
76
- d: '',
77
- i: '',
78
- ii: pre,
79
- s: '' + isn,
80
- c: cnfg,
81
- bt: _toad.toString(16),
82
- b: baks,
83
- n: nonce,
84
- };
85
-
86
- const prefixer = new Prefixer({ code }, ked);
87
- ked.i = prefixer.qb64;
88
- ked.d = prefixer.qb64;
89
-
90
- return new Serder(ked);
91
- }
92
- }
93
-
94
- export { vdr };
@@ -1,47 +0,0 @@
1
- export {};
2
- import libsodium from 'libsodium-wrappers-sumo';
3
- import { Matter, MatterArgs, MtrDex } from './matter';
4
- import secp256r1 from 'ecdsa-secp256r1';
5
-
6
- /**
7
- * @description Verfer :sublclass of Matter,helps to verify signature of serialization
8
- * using .raw as verifier key and .code as signature cypher suite
9
- */
10
- export class Verfer extends Matter {
11
- private readonly _verify: (sig: any, ser: any, key: any) => boolean;
12
- constructor({ raw, code, qb64, qb64b, qb2 }: MatterArgs) {
13
- super({ raw, code, qb64, qb64b, qb2 });
14
-
15
- if (Array.from([MtrDex.Ed25519N, MtrDex.Ed25519]).includes(this.code)) {
16
- this._verify = this._ed25519;
17
- } else if (
18
- Array.from([MtrDex.ECDSA_256r1N, MtrDex.ECDSA_256r1]).includes(
19
- this.code
20
- )
21
- ) {
22
- this._verify = this._secp256r1;
23
- } else {
24
- throw new Error(`Unsupported code = ${this.code} for verifier.`);
25
- }
26
- }
27
-
28
- verify(sig: any, ser: any) {
29
- return this._verify(sig, ser, this.raw);
30
- }
31
-
32
- _ed25519(sig: any, ser: any, key: any) {
33
- try {
34
- return libsodium.crypto_sign_verify_detached(sig, ser, key);
35
- } catch (error) {
36
- throw new Error(error as string);
37
- }
38
- }
39
- _secp256r1(sig: any, ser: any, key: any) {
40
- try {
41
- const publicKey = secp256r1.fromCompressedPublicKey(key);
42
- return publicKey.verify(ser, sig);
43
- } catch (error) {
44
- throw new Error(error as string);
45
- }
46
- }
47
- }
@@ -1,170 +0,0 @@
1
- import { Siger } from '../core/siger';
2
- import { Cigar } from '../core/cigar';
3
-
4
- export const FALSY = [false, 0, '?0', 'no', 'false', 'False', 'off'];
5
- export const TRUTHY = [true, 1, '?1', 'yes', 'true', 'True', 'on'];
6
-
7
- export class Signage {
8
- constructor(
9
- markers: any,
10
- indexed?: boolean,
11
- signer?: string,
12
- ordinal?: string,
13
- digest?: string,
14
- kind?: string
15
- ) {
16
- this.markers = markers;
17
- this.indexed = indexed;
18
- this.signer = signer;
19
- this.ordinal = ordinal;
20
- this.digest = digest;
21
- this.kind = kind;
22
- }
23
- public markers: any;
24
- public indexed: boolean | undefined = false;
25
- public signer: string | undefined;
26
- public ordinal: string | undefined;
27
- public digest: string | undefined;
28
- public kind: string | undefined;
29
- }
30
-
31
- export function signature(signages: Array<Signage>): Headers {
32
- const values = new Array<string>();
33
-
34
- for (const signage of signages) {
35
- let markers: Array<Siger | Cigar>;
36
- let indexed = signage.indexed;
37
- const signer = signage.signer;
38
- const ordinal = signage.ordinal;
39
- const digest = signage.digest;
40
- const kind = signage.kind;
41
- let tags: Array<string>;
42
-
43
- if (signage.markers instanceof Map) {
44
- tags = Array.from(signage.markers.keys());
45
- markers = Array.from(signage.markers.values());
46
- } else {
47
- markers = signage.markers as Array<Siger | Cigar>;
48
- tags = new Array<string>();
49
- }
50
-
51
- if (indexed == undefined) {
52
- indexed = markers[0] instanceof Siger;
53
- }
54
-
55
- const items = new Array<string>();
56
- const tag = 'indexed';
57
-
58
- let val = indexed ? '?1' : '?0';
59
- items.push(`${tag}="${val}"`);
60
-
61
- if (signer != undefined) {
62
- items.push(`signer="${signer}"`);
63
- }
64
- if (ordinal != undefined) {
65
- items.push(`ordinal="${ordinal}"`);
66
- }
67
- if (digest != undefined) {
68
- items.push(`digest="${digest}"`);
69
- }
70
- if (kind != undefined) {
71
- items.push(`kind="${kind}"`);
72
- }
73
-
74
- markers.forEach((marker, idx) => {
75
- let tag: string;
76
- if (tags != undefined && tags.length > idx) {
77
- tag = tags[idx];
78
- } else if (marker instanceof Siger) {
79
- if (!indexed)
80
- throw new Error(
81
- `Indexed signature marker ${marker} when indexed False.`
82
- );
83
-
84
- tag = marker.index.toString();
85
- } else {
86
- // Must be a Cigar
87
- if (indexed)
88
- throw new Error(
89
- `Unindexed signature marker ${marker} when indexed True.`
90
- );
91
- tag = marker.verfer!.qb64;
92
- }
93
-
94
- val = marker.qb64;
95
- items.push(`${tag}="${val}"`);
96
- });
97
-
98
- values.push(items.join(';'));
99
- }
100
-
101
- return new Headers([['Signature', values.join(',')]]);
102
- }
103
-
104
- export function designature(value: string) {
105
- const values = value.replace(' ', '').split(',');
106
-
107
- const signages = new Array<Signage>();
108
- values.forEach((val) => {
109
- const dict = new Map<string, string>();
110
- val.split(';').forEach((v) => {
111
- const splits = v.split('=', 2);
112
- dict.set(splits[0], splits[1].replaceAll('"', ''));
113
- });
114
-
115
- if (!dict.has('indexed')) {
116
- throw new Error(
117
- 'Missing indexed field in Signature header signage.'
118
- );
119
- }
120
- const item = dict.get('indexed')!;
121
- const indexed = !FALSY.includes(item);
122
- dict.delete('indexed');
123
-
124
- let signer;
125
- if (dict.has('signer')) {
126
- signer = dict.get('signer') as string;
127
- dict.delete('signer');
128
- }
129
-
130
- let ordinal;
131
- if (dict.has('ordinal')) {
132
- ordinal = dict.get('ordinal') as string;
133
- dict.delete('ordinal');
134
- }
135
-
136
- let digest;
137
- if (dict.has('digest')) {
138
- digest = dict.get('digest') as string;
139
- dict.delete('digest');
140
- }
141
-
142
- let kind;
143
- if (dict.has('kind')) {
144
- kind = dict.get('kind') as string;
145
- dict.delete('kind');
146
- } else {
147
- kind = 'CESR';
148
- }
149
-
150
- let markers: Map<string, string | Siger | Cigar>;
151
- if (kind == 'CESR') {
152
- markers = new Map<string, Siger | Cigar>();
153
- dict.forEach((val, key) => {
154
- if (indexed) {
155
- markers.set(key, new Siger({ qb64: val as string }));
156
- } else {
157
- markers.set(key, new Cigar({ qb64: val as string }));
158
- }
159
- });
160
- } else {
161
- markers = dict;
162
- }
163
-
164
- signages.push(
165
- new Signage(markers, indexed, signer, ordinal, digest, kind)
166
- );
167
- });
168
-
169
- return signages;
170
- }
package/src/math.ts DELETED
@@ -1,3 +0,0 @@
1
- import { create, all } from 'mathjs';
2
- const config = {};
3
- export const math = create(all, config);