signify-ts 0.2.1 → 0.3.0-rc2

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 (128) 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 +34 -14
  7. package/{src/keri/app/aiding.ts → dist/keri/app/aiding.js} +104 -235
  8. package/dist/keri/app/clienting.d.ts +57 -22
  9. package/{src/keri/app/clienting.ts → dist/keri/app/clienting.js} +145 -234
  10. package/dist/keri/app/contacting.d.ts +33 -21
  11. package/{src/keri/app/contacting.ts → dist/keri/app/contacting.js} +25 -62
  12. package/dist/keri/app/controller.d.ts +49 -6
  13. package/{src/keri/app/controller.ts → dist/keri/app/controller.js} +79 -185
  14. package/dist/keri/app/coring.d.ts +30 -8
  15. package/{src/keri/app/coring.ts → dist/keri/app/coring.js} +62 -51
  16. package/dist/keri/app/credentialing.d.ts +183 -65
  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 +1 -1
  21. package/{src/keri/app/escrowing.ts → dist/keri/app/escrowing.js} +2 -8
  22. package/dist/keri/app/exchanging.d.ts +7 -6
  23. package/{src/keri/app/exchanging.ts → dist/keri/app/exchanging.js} +33 -110
  24. package/dist/keri/app/grouping.d.ts +2 -2
  25. package/{src/keri/app/grouping.ts → dist/keri/app/grouping.js} +6 -25
  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 +4 -4
  51. package/{src/keri/core/eventing.ts → dist/keri/core/eventing.js} +134 -321
  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 +98 -46
  57. package/dist/keri/core/keeping.js +365 -0
  58. package/{src/keri/core/kering.ts → dist/keri/core/kering.js} +1 -3
  59. package/dist/keri/core/keyState.d.ts +85 -0
  60. package/dist/keri/core/keyState.js +1 -0
  61. package/dist/keri/core/manager.d.ts +147 -12
  62. package/dist/keri/core/manager.js +880 -0
  63. package/dist/keri/core/matter.d.ts +1 -1
  64. package/dist/keri/core/matter.js +460 -0
  65. package/dist/keri/core/number.d.ts +1 -1
  66. package/{src/keri/core/number.ts → dist/keri/core/number.js} +21 -30
  67. package/dist/keri/core/pather.d.ts +2 -2
  68. package/{src/keri/core/pather.ts → dist/keri/core/pather.js} +12 -27
  69. package/dist/keri/core/prefixer.d.ts +10 -10
  70. package/dist/keri/core/prefixer.js +182 -0
  71. package/dist/keri/core/saider.d.ts +2 -12
  72. package/dist/keri/core/saider.js +107 -0
  73. package/dist/keri/core/salter.d.ts +45 -3
  74. package/dist/keri/core/salter.js +117 -0
  75. package/dist/keri/core/seqner.d.ts +1 -1
  76. package/{src/keri/core/seqner.ts → dist/keri/core/seqner.js} +20 -21
  77. package/dist/keri/core/serder.d.ts +25 -12
  78. package/dist/keri/core/serder.js +133 -0
  79. package/dist/keri/core/siger.d.ts +2 -2
  80. package/{src/keri/core/siger.ts → dist/keri/core/siger.js} +4 -14
  81. package/dist/keri/core/signer.d.ts +4 -4
  82. package/dist/keri/core/signer.js +84 -0
  83. package/{src/keri/core/tholder.ts → dist/keri/core/tholder.js} +69 -94
  84. package/dist/keri/core/utils.d.ts +1 -1
  85. package/{src/keri/core/utils.ts → dist/keri/core/utils.js} +30 -60
  86. package/dist/keri/core/vdring.d.ts +2 -2
  87. package/dist/keri/core/vdring.js +61 -0
  88. package/dist/keri/core/verfer.d.ts +2 -6
  89. package/dist/keri/core/verfer.js +37 -0
  90. package/dist/keri/end/ending.d.ts +10 -8
  91. package/dist/keri/end/ending.js +136 -0
  92. package/{src/ready.ts → dist/ready.js} +1 -2
  93. package/dist/types/keria-api-schema.d.ts +304 -0
  94. package/dist/types/keria-api-schema.js +2 -0
  95. package/package.json +53 -50
  96. package/dist/buffer-polyfill.d.ts +0 -1
  97. package/dist/math.d.ts +0 -1
  98. package/dist/signify-ts.cjs +0 -7842
  99. package/dist/signify-ts.cjs.development.js +0 -9501
  100. package/dist/signify-ts.cjs.development.js.map +0 -1
  101. package/dist/signify-ts.cjs.map +0 -7
  102. package/dist/signify-ts.cjs.production.min.js +0 -2
  103. package/dist/signify-ts.cjs.production.min.js.map +0 -1
  104. package/dist/signify-ts.esm.js +0 -9345
  105. package/dist/signify-ts.esm.js.map +0 -1
  106. package/dist/signify-ts.mjs +0 -7818
  107. package/dist/signify-ts.mjs.map +0 -7
  108. package/src/buffer-polyfill.ts +0 -5
  109. package/src/exports.ts +0 -44
  110. package/src/index.ts +0 -4
  111. package/src/keri/app/credentialing.ts +0 -841
  112. package/src/keri/app/habery.ts +0 -185
  113. package/src/keri/core/cigar.ts +0 -18
  114. package/src/keri/core/core.ts +0 -326
  115. package/src/keri/core/counter.ts +0 -273
  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
@@ -1,233 +0,0 @@
1
- import { Matter, MatterArgs, MtrDex } from './matter';
2
- import { EmptyMaterialError } from './kering';
3
- import { Dict, Ilks } from './core';
4
- import { sizeify } from './serder';
5
- import { Verfer } from './verfer';
6
-
7
- import { blake3 } from '@noble/hashes/blake3';
8
-
9
- const Dummy: string = '#';
10
-
11
- export class Prefixer extends Matter {
12
- private readonly _derive: Function | undefined;
13
- private readonly _verify: Function | undefined;
14
-
15
- constructor({ raw, code, qb64b, qb64, qb2 }: MatterArgs, ked?: Dict<any>) {
16
- try {
17
- super({ raw, code, qb64b, qb64, qb2 });
18
- } catch (e) {
19
- if (e instanceof EmptyMaterialError) {
20
- if (ked == undefined || (code == undefined && !('i' in ked))) {
21
- throw e;
22
- }
23
-
24
- if (code == undefined) {
25
- super({ qb64: ked['i'], code: code });
26
- code = this.code;
27
- }
28
-
29
- let _derive;
30
- if (code == MtrDex.Ed25519N) {
31
- _derive = Prefixer._derive_ed25519N;
32
- } else if (code == MtrDex.Ed25519) {
33
- _derive = Prefixer._derive_ed25519;
34
- } else if (code == MtrDex.Blake3_256) {
35
- _derive = Prefixer._derive_blake3_256;
36
- } else {
37
- throw new Error(`Unsupported code = ${code} for prefixer.`);
38
- }
39
-
40
- [raw, code] = _derive(ked);
41
- super({ raw: raw, code: code });
42
- this._derive = _derive;
43
- } else {
44
- throw e;
45
- }
46
- }
47
-
48
- if (this.code == MtrDex.Ed25519N) {
49
- this._verify = this._verify_ed25519N;
50
- } else if (this.code == MtrDex.Ed25519) {
51
- this._verify = this._verify_ed25519;
52
- } else if (this.code == MtrDex.Blake3_256) {
53
- this._verify = this._verify_blake3_256;
54
- } else {
55
- throw new Error(`Unsupported code = ${code} for prefixer.`);
56
- }
57
- }
58
-
59
- derive(ked: Dict<any>): [Uint8Array, string] {
60
- if (ked['i'] != Ilks.icp) {
61
- throw new Error(
62
- `Non-incepting ilk ${ked['i']} for prefix derivation`
63
- );
64
- }
65
- return this._derive!(ked);
66
- }
67
-
68
- verify(ked: Dict<any>, prefixed: boolean = false): boolean {
69
- if (ked['i'] != Ilks.icp) {
70
- throw new Error(
71
- `Non-incepting ilk ${ked['i']} for prefix derivation`
72
- );
73
- }
74
- return this._verify!(ked, this.qb64, prefixed);
75
- }
76
-
77
- static _derive_ed25519N(ked: Dict<any>): [Uint8Array, string] {
78
- let verfer;
79
- const keys = ked['k'];
80
- if (keys.length != 1) {
81
- throw new Error(
82
- `Basic derivation needs at most 1 key got ${keys.length} keys instead`
83
- );
84
- }
85
- try {
86
- verfer = new Verfer({ qb64: keys[0] });
87
- } catch (e) {
88
- throw new Error(`Error extracting public key = ${e}`);
89
- }
90
-
91
- if (!(verfer.code in [MtrDex.Ed25519N])) {
92
- throw new Error(`Mismatch derivation code = ${verfer.code}`);
93
- }
94
-
95
- const next = 'n' in ked ? ked['n'] : [];
96
- if (verfer.code == MtrDex.Ed25519N && next.length > 0) {
97
- throw new Error(
98
- `Non-empty nxt = ${next} for non-transferable code = ${verfer.code}`
99
- );
100
- }
101
-
102
- const backers = 'b' in ked ? ked['b'] : [];
103
- if (verfer.code == MtrDex.Ed25519N && backers.length > 0) {
104
- throw new Error(
105
- `Non-empty b =${backers} for non-transferable code = ${verfer.code}`
106
- );
107
- }
108
-
109
- const anchor = 'a' in ked ? ked['a'] : [];
110
- if (verfer.code == MtrDex.Ed25519N && anchor.length > 0) {
111
- throw new Error(
112
- `Non-empty a = ${verfer.code} for non-transferable code = ${verfer.code}`
113
- );
114
- }
115
-
116
- return [verfer.raw, verfer.code];
117
- }
118
-
119
- static _derive_ed25519(ked: Dict<any>): [Uint8Array, string] {
120
- let verfer;
121
- const keys = ked['k'];
122
- if (keys.length != 1) {
123
- throw new Error(
124
- `Basic derivation needs at most 1 key got ${keys.length} keys instead`
125
- );
126
- }
127
-
128
- try {
129
- verfer = new Verfer({ qb64: keys[0] });
130
- } catch (e) {
131
- throw new Error(`Error extracting public key = ${e}`);
132
- }
133
-
134
- if (verfer.code in [MtrDex.Ed25519]) {
135
- throw new Error(`Mismatch derivation code = ${verfer.code}`);
136
- }
137
-
138
- return [verfer.raw, verfer.code];
139
- }
140
-
141
- static _derive_blake3_256(ked: Dict<any>): [Uint8Array, string] {
142
- const kd = ked;
143
- const ilk = ked['t'];
144
- if (![Ilks.icp, Ilks.dip, Ilks.vcp, Ilks.dip].includes(ilk)) {
145
- throw new Error(`Invalid ilk = ${ilk} to derive pre.`);
146
- }
147
-
148
- kd['i'] = ''.padStart(Matter.Sizes.get(MtrDex.Blake3_256)!.fs!, Dummy);
149
- kd['d'] = ked['i'];
150
- const [raw] = sizeify(ked);
151
- const dig = Buffer.from(
152
- blake3.create({ dkLen: 32 }).update(raw).digest()
153
- );
154
- return [dig, MtrDex.Blake3_256];
155
- }
156
-
157
- _verify_ed25519N(
158
- ked: Dict<any>,
159
- pre: string,
160
- prefixed: boolean = false
161
- ): boolean {
162
- try {
163
- const keys = ked['k'];
164
- if (keys.length != 1) {
165
- return false;
166
- }
167
-
168
- if (keys[0] != pre) {
169
- return false;
170
- }
171
-
172
- if (prefixed && ked['i'] != pre) {
173
- return false;
174
- }
175
-
176
- const next = 'n' in ked ? ked['n'] : [];
177
- if (next.length > 0) {
178
- // must be empty
179
- return false;
180
- }
181
- } catch (e) {
182
- return false;
183
- }
184
-
185
- return true;
186
- }
187
-
188
- _verify_ed25519(
189
- ked: Dict<any>,
190
- pre: string,
191
- prefixed: boolean = false
192
- ): boolean {
193
- try {
194
- const keys = ked['k'];
195
- if (keys.length != 1) {
196
- return false;
197
- }
198
-
199
- if (keys[0] != pre) {
200
- return false;
201
- }
202
-
203
- if (prefixed && ked['i'] != pre) {
204
- return false;
205
- }
206
- } catch (e) {
207
- return false;
208
- }
209
-
210
- return true;
211
- }
212
-
213
- _verify_blake3_256(
214
- ked: Dict<any>,
215
- pre: string,
216
- prefixed: boolean = false
217
- ): boolean {
218
- try {
219
- const [raw] = Prefixer._derive_blake3_256(ked);
220
- const crymat = new Matter({ raw: raw, code: MtrDex.Blake3_256 });
221
- if (crymat.qb64 != pre) {
222
- return false;
223
- }
224
-
225
- if (prefixed && ked['i'] != pre) {
226
- return false;
227
- }
228
- } catch (e) {
229
- return false;
230
- }
231
- return true;
232
- }
233
- }
@@ -1,186 +0,0 @@
1
- import { DigiDex, Matter, MatterArgs, MtrDex } from './matter';
2
- import { deversify, Dict, Serials } from './core';
3
- import { EmptyMaterialError } from './kering';
4
- import { dumps, sizeify } from './serder';
5
-
6
- import { blake3 } from '@noble/hashes/blake3';
7
-
8
- const Dummy = '#';
9
-
10
- export enum Ids {
11
- d = 'd',
12
- }
13
-
14
- class Digestage {
15
- public klas: any = undefined;
16
- public size: number | undefined = 0;
17
- public length: number | undefined = 0;
18
- constructor(klas: any, size?: number, length?: number) {
19
- this.klas = klas;
20
- this.size = size;
21
- this.length = length;
22
- }
23
- }
24
-
25
- export class Saider extends Matter {
26
- static Digests = new Map<string, Digestage>([
27
- [
28
- MtrDex.Blake3_256,
29
- new Digestage(Saider._derive_blake3_256, undefined, undefined),
30
- ],
31
- ]);
32
-
33
- constructor(
34
- { raw, code, qb64b, qb64, qb2 }: MatterArgs,
35
- sad?: Dict<any>,
36
- kind?: Serials,
37
- label: string = Ids.d
38
- ) {
39
- try {
40
- super({ raw, code, qb64b, qb64, qb2 });
41
- } catch (e) {
42
- if (e instanceof EmptyMaterialError) {
43
- if (sad == undefined || !(label in sad)) {
44
- throw e;
45
- }
46
-
47
- if (code == undefined) {
48
- if (sad[label] != '') {
49
- super({ qb64: sad[label], code: code });
50
- code = this.code;
51
- } else {
52
- code = MtrDex.Blake3_256;
53
- }
54
- }
55
-
56
- if (!DigiDex.has(code)) {
57
- throw new Error(`Unsupported digest code = ${code}`);
58
- }
59
-
60
- [raw] = Saider._derive({ ...sad }, code, kind, label);
61
- super({ raw: raw, code: code });
62
- } else {
63
- throw e;
64
- }
65
- }
66
-
67
- if (!this.digestive) {
68
- throw new Error(`Unsupported digest code = ${this.code}.`);
69
- }
70
- }
71
-
72
- static _derive_blake3_256(
73
- ser: Uint8Array,
74
- _digest_size: number,
75
- _length: number
76
- ) {
77
- return Buffer.from(blake3.create({ dkLen: 32 }).update(ser).digest());
78
- }
79
-
80
- private static _derive(
81
- sad: Dict<any>,
82
- code: string,
83
- kind: Serials | undefined,
84
- label: string
85
- ): [Uint8Array, Dict<any>] {
86
- if (!DigiDex.has(code) || !Saider.Digests.has(code)) {
87
- throw new Error(`Unsupported digest code = ${code}.`);
88
- }
89
-
90
- sad = { ...sad };
91
- sad[label] = ''.padStart(Matter.Sizes.get(code)!.fs!, Dummy);
92
- if ('v' in sad) {
93
- [, , kind, sad] = sizeify(sad, kind);
94
- }
95
-
96
- const ser = { ...sad };
97
-
98
- const digestage = Saider.Digests.get(code);
99
-
100
- const cpa = Saider._serialze(ser, kind);
101
- const args: any[] = [];
102
- if (digestage!.size != undefined) {
103
- args.push(digestage!.size);
104
- }
105
-
106
- if (digestage!.length != undefined) {
107
- args.push(digestage!.length);
108
- }
109
-
110
- return [digestage!.klas(cpa, ...args), sad];
111
- }
112
-
113
- public derive(
114
- sad: Dict<any>,
115
- code: string,
116
- kind: Serials | undefined,
117
- label: string
118
- ): [Uint8Array, Dict<any>] {
119
- code = code != undefined ? code : this.code;
120
- return Saider._derive(sad, code, kind, label);
121
- }
122
-
123
- public verify(
124
- sad: Dict<any>,
125
- prefixed: boolean = false,
126
- versioned: boolean = false,
127
- kind?: Serials,
128
- label: string = Ids.d
129
- ): boolean {
130
- try {
131
- const [raw, dsad] = Saider._derive(sad, this.code, kind, label);
132
- const saider = new Saider({ raw: raw, code: this.code });
133
- if (this.qb64 != saider.qb64) {
134
- return false;
135
- }
136
-
137
- if ('v' in sad && versioned) {
138
- if (sad['v'] != dsad['v']) {
139
- return false;
140
- }
141
- }
142
-
143
- if (prefixed && sad[label] != this.qb64) {
144
- return false;
145
- }
146
- } catch (e) {
147
- return false;
148
- }
149
-
150
- return true;
151
- }
152
-
153
- private static _serialze(sad: Dict<any>, kind?: Serials): string {
154
- let knd = Serials.JSON;
155
- if ('v' in sad) {
156
- [, knd] = deversify(sad['v']);
157
- }
158
-
159
- if (kind == undefined) {
160
- kind = knd;
161
- }
162
-
163
- return dumps(sad, kind);
164
- }
165
-
166
- public static saidify(
167
- sad: Dict<any>,
168
- code: string = MtrDex.Blake3_256,
169
- kind: Serials = Serials.JSON,
170
- label: string = Ids.d
171
- ): [Saider, Dict<any>] {
172
- if (!(label in sad)) {
173
- throw new Error(`Missing id field labeled=${label} in sad.`);
174
- }
175
- let raw;
176
- [raw, sad] = Saider._derive(sad, code, kind, label);
177
- const saider = new Saider(
178
- { raw: raw, code: code },
179
- undefined,
180
- kind,
181
- label
182
- );
183
- sad[label] = saider.qb64;
184
- return [saider, sad];
185
- }
186
- }
@@ -1,120 +0,0 @@
1
- import { Signer } from './signer';
2
-
3
- import { Matter, MtrDex } from './matter';
4
- import { EmptyMaterialError } from './kering';
5
- import libsodium from 'libsodium-wrappers-sumo';
6
-
7
- export enum Tier {
8
- low = 'low',
9
- med = 'med',
10
- high = 'high',
11
- }
12
-
13
- interface SalterArgs {
14
- raw?: Uint8Array | undefined;
15
- code?: string;
16
- tier?: Tier;
17
- qb64b?: Uint8Array | undefined;
18
- qb64?: string;
19
- qb2?: Uint8Array | undefined;
20
- }
21
- export class Salter extends Matter {
22
- private readonly _tier: Tier | null;
23
-
24
- constructor({
25
- raw,
26
- code = MtrDex.Salt_128,
27
- tier = Tier.low,
28
- qb64,
29
- qb64b,
30
- qb2,
31
- }: SalterArgs) {
32
- try {
33
- super({ raw, code, qb64, qb64b, qb2 });
34
- } catch (e) {
35
- if (e instanceof EmptyMaterialError) {
36
- if (code == MtrDex.Salt_128) {
37
- const salt = libsodium.randombytes_buf(
38
- libsodium.crypto_pwhash_SALTBYTES
39
- );
40
- super({ raw: salt, code: code });
41
- } else {
42
- throw new Error(
43
- 'invalid code for Salter, only Salt_128 accepted'
44
- );
45
- }
46
- } else {
47
- throw e;
48
- }
49
- }
50
-
51
- if (this.code != MtrDex.Salt_128) {
52
- throw new Error('invalid code for Salter, only Salt_128 accepted');
53
- }
54
-
55
- this._tier = tier !== null ? tier : Tier.low;
56
- }
57
-
58
- private stretch(
59
- size: number = 32,
60
- path: string = '',
61
- tier: Tier | null = null,
62
- temp: boolean = false
63
- ): Uint8Array {
64
- tier = tier == null ? this.tier : tier;
65
-
66
- let opslimit: number, memlimit: number;
67
-
68
- // Harcoded values based on keripy
69
- if (temp) {
70
- opslimit = 1; //libsodium.crypto_pwhash_OPSLIMIT_MIN
71
- memlimit = 8192; //libsodium.crypto_pwhash_MEMLIMIT_MIN
72
- } else {
73
- switch (tier) {
74
- case Tier.low:
75
- opslimit = 2; //libsodium.crypto_pwhash_OPSLIMIT_INTERACTIVE
76
- memlimit = 67108864; //libsodium.crypto_pwhash_MEMLIMIT_INTERACTIVE
77
- break;
78
- case Tier.med:
79
- opslimit = 3; //libsodium.crypto_pwhash_OPSLIMIT_MODERATE
80
- memlimit = 268435456; //libsodium.crypto_pwhash_MEMLIMIT_MODERATE
81
- break;
82
- case Tier.high:
83
- opslimit = 4; //libsodium.crypto_pwhash_OPSLIMIT_SENSITIVE
84
- memlimit = 1073741824; //libsodium.crypto_pwhash_MEMLIMIT_SENSITIVE
85
- break;
86
- default:
87
- throw new Error(`Unsupported security tier = ${tier}.`);
88
- }
89
- }
90
-
91
- return libsodium.crypto_pwhash(
92
- size,
93
- path,
94
- this.raw,
95
- opslimit,
96
- memlimit,
97
- libsodium.crypto_pwhash_ALG_ARGON2ID13
98
- );
99
- }
100
-
101
- signer(
102
- code: string = MtrDex.Ed25519_Seed,
103
- transferable: boolean = true,
104
- path: string = '',
105
- tier: Tier | null = null,
106
- temp: boolean = false
107
- ): Signer {
108
- const seed = this.stretch(Matter._rawSize(code), path, tier, temp);
109
-
110
- return new Signer({
111
- raw: seed,
112
- code: code,
113
- transferable: transferable,
114
- });
115
- }
116
-
117
- get tier(): Tier | null {
118
- return this._tier;
119
- }
120
- }
@@ -1,163 +0,0 @@
1
- import { MtrDex } from './matter';
2
- import {
3
- deversify,
4
- Dict,
5
- Ident,
6
- Serials,
7
- versify,
8
- Version,
9
- Versionage,
10
- } from './core';
11
- import { Verfer } from './verfer';
12
- import { Diger } from './diger';
13
- import { CesrNumber } from './number';
14
-
15
- export class Serder {
16
- private _kind: Serials;
17
- private _raw: string = '';
18
- private _ked: Dict<any> = {};
19
- private _ident: Ident = Ident.KERI;
20
- private _size: number = 0;
21
- private _version: Version = Versionage;
22
- private readonly _code: string;
23
-
24
- constructor(
25
- ked: Dict<any>,
26
- kind: Serials = Serials.JSON,
27
- code: string = MtrDex.Blake3_256
28
- ) {
29
- this._code = code;
30
- this._kind = kind;
31
- this.ked = ked;
32
- }
33
-
34
- set ked(ked: Dict<any>) {
35
- const [raw, ident, kind, kd, version] = this._exhale(ked, this._kind);
36
- const size = raw.length;
37
- this._raw = raw;
38
- this._ident = ident;
39
- this._ked = kd;
40
- this._kind = kind;
41
- this._size = size;
42
- this._version = version;
43
- }
44
-
45
- get pre(): string {
46
- return this._ked['i'];
47
- }
48
-
49
- get ked(): Dict<any> {
50
- return this._ked;
51
- }
52
-
53
- get code(): string {
54
- return this._code;
55
- }
56
-
57
- get raw(): string {
58
- return this._raw;
59
- }
60
-
61
- get sner(): CesrNumber {
62
- return new CesrNumber({}, this.ked['s']);
63
- }
64
-
65
- get sn(): number {
66
- return this.sner.num;
67
- }
68
-
69
- get kind(): Serials {
70
- return this._kind;
71
- }
72
-
73
- private _exhale(
74
- ked: Dict<any>,
75
- kind: Serials
76
- ): [string, Ident, Serials, Dict<any>, Version] {
77
- return sizeify(ked, kind);
78
- }
79
-
80
- get ident(): Ident {
81
- return this._ident;
82
- }
83
-
84
- get size(): number {
85
- return this._size;
86
- }
87
-
88
- get version(): Version {
89
- return this._version;
90
- }
91
- get verfers(): Verfer[] {
92
- let keys: any = [];
93
- if ('k' in this._ked) {
94
- // establishment event
95
- keys = this._ked['k'];
96
- } else {
97
- // non-establishment event
98
- keys = [];
99
- }
100
- // create a new Verfer for each key
101
- const verfers = [];
102
- for (const key of keys) {
103
- verfers.push(new Verfer({ qb64: key }));
104
- }
105
- return verfers;
106
- }
107
-
108
- get digers(): Diger[] {
109
- let keys: any = [];
110
- if ('n' in this._ked) {
111
- // establishment event
112
- keys = this._ked['n'];
113
- } else {
114
- // non-establishment event
115
- keys = [];
116
- }
117
- // create a new Verfer for each key
118
- const digers = [];
119
- for (const key of keys) {
120
- digers.push(new Diger({ qb64: key }));
121
- }
122
- return digers;
123
- }
124
-
125
- pretty() {
126
- return JSON.stringify(this._ked, undefined, 2);
127
- }
128
- }
129
-
130
- export function dumps(ked: Object, kind: Serials.JSON): string {
131
- if (kind == Serials.JSON) {
132
- return JSON.stringify(ked);
133
- } else {
134
- throw new Error('unsupported event encoding');
135
- }
136
- }
137
-
138
- export function sizeify(
139
- ked: Dict<any>,
140
- kind?: Serials
141
- ): [string, Ident, Serials, Dict<any>, Version] {
142
- if (!('v' in ked)) {
143
- throw new Error('Missing or empty version string');
144
- }
145
-
146
- const [ident, knd, version] = deversify(ked['v'] as string);
147
- if (version != Versionage) {
148
- throw new Error(`unsupported version ${version.toString()}`);
149
- }
150
-
151
- if (kind == undefined) {
152
- kind = knd;
153
- }
154
-
155
- let raw = dumps(ked, kind);
156
- const size = raw.length;
157
-
158
- ked['v'] = versify(ident, version, kind, size);
159
-
160
- raw = dumps(ked, kind);
161
-
162
- return [raw, ident, kind, ked, version];
163
- }