signify-ts 0.1.0 → 0.1.1

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 (64) hide show
  1. package/README.md +48 -1
  2. package/dist/index.d.ts +3 -1
  3. package/dist/keri/app/accountant.d.ts +10 -0
  4. package/dist/keri/app/apping.d.ts +1 -0
  5. package/dist/keri/app/client.d.ts +7 -0
  6. package/dist/keri/app/habery.d.ts +47 -0
  7. package/dist/keri/app/signify.d.ts +6 -0
  8. package/dist/keri/core/authing.d.ts +9 -0
  9. package/dist/keri/core/cigar.d.ts +3 -3
  10. package/dist/keri/core/core.d.ts +19 -34
  11. package/dist/keri/core/counter.d.ts +43 -0
  12. package/dist/keri/core/eventing.d.ts +21 -0
  13. package/dist/keri/core/httping.d.ts +34 -0
  14. package/dist/keri/core/manager.d.ts +38 -17
  15. package/dist/keri/core/matter.d.ts +23 -1
  16. package/dist/keri/core/number.d.ts +6 -0
  17. package/dist/keri/core/prefixer.d.ts +15 -0
  18. package/dist/keri/core/saider.d.ts +23 -0
  19. package/dist/keri/core/salter.d.ts +23 -0
  20. package/dist/keri/core/serder.d.ts +23 -0
  21. package/dist/keri/core/siger.d.ts +1 -1
  22. package/dist/keri/core/signer.d.ts +2 -2
  23. package/dist/keri/core/tholder.d.ts +14 -0
  24. package/dist/keri/core/utils.d.ts +2 -1
  25. package/dist/keri/core/verfer.d.ts +12 -0
  26. package/dist/keri/end/ending.d.ts +13 -0
  27. package/dist/signify-ts.cjs.development.js +3380 -5
  28. package/dist/signify-ts.cjs.development.js.map +1 -1
  29. package/dist/signify-ts.cjs.production.min.js +1 -1
  30. package/dist/signify-ts.cjs.production.min.js.map +1 -1
  31. package/dist/signify-ts.esm.js +3365 -5
  32. package/dist/signify-ts.esm.js.map +1 -1
  33. package/package.json +4 -2
  34. package/src/index.ts +5 -6
  35. package/src/keri/app/accountant.ts +35 -0
  36. package/src/keri/app/apping.ts +12 -0
  37. package/src/keri/app/client.ts +30 -0
  38. package/src/keri/app/habery.ts +152 -0
  39. package/src/keri/app/signify.ts +12 -0
  40. package/src/keri/app/tsconfig.json +100 -0
  41. package/src/keri/core/authing.ts +129 -0
  42. package/src/keri/core/cigar.ts +4 -4
  43. package/src/keri/core/core.ts +53 -43
  44. package/src/keri/core/counter.ts +207 -0
  45. package/src/keri/core/diger.ts +5 -5
  46. package/src/keri/core/eventing.ts +219 -0
  47. package/src/keri/core/httping.ts +163 -0
  48. package/src/keri/core/indexer.ts +2 -1
  49. package/src/keri/core/keeping.ts +0 -1
  50. package/src/keri/core/manager.ts +238 -90
  51. package/src/keri/core/matter.ts +46 -11
  52. package/src/keri/core/number.ts +21 -0
  53. package/src/keri/core/prefixer.ts +212 -0
  54. package/src/keri/core/saider.ts +158 -0
  55. package/src/keri/core/salter.ts +9 -5
  56. package/src/keri/core/serder.ts +99 -0
  57. package/src/keri/core/siger.ts +2 -2
  58. package/src/keri/core/signer.ts +4 -3
  59. package/src/keri/core/tholder.ts +52 -0
  60. package/src/keri/core/tsconfig.json +2 -2
  61. package/src/keri/core/utils.ts +10 -6
  62. package/src/keri/core/verfer.ts +6 -5
  63. package/src/keri/end/ending.ts +160 -0
  64. package/src/keri/end/tsconfig.json +100 -0
@@ -1,9 +1,3369 @@
1
- var sum = function sum(a, b) {
2
- if ('development' === process.env.NODE_ENV) {
3
- console.log('boop');
1
+ import libsodium from 'libsodium-wrappers-sumo';
2
+ import { TextEncoder, TextDecoder } from 'util';
3
+ import Base64 from 'urlsafe-base64';
4
+ import { Buffer } from 'buffer';
5
+ import { createHash } from 'blake3';
6
+
7
+ function _defineProperties(target, props) {
8
+ for (var i = 0; i < props.length; i++) {
9
+ var descriptor = props[i];
10
+ descriptor.enumerable = descriptor.enumerable || false;
11
+ descriptor.configurable = true;
12
+ if ("value" in descriptor) descriptor.writable = true;
13
+ Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
14
+ }
15
+ }
16
+ function _createClass(Constructor, protoProps, staticProps) {
17
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
18
+ if (staticProps) _defineProperties(Constructor, staticProps);
19
+ Object.defineProperty(Constructor, "prototype", {
20
+ writable: false
21
+ });
22
+ return Constructor;
23
+ }
24
+ function _extends() {
25
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
26
+ for (var i = 1; i < arguments.length; i++) {
27
+ var source = arguments[i];
28
+ for (var key in source) {
29
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
30
+ target[key] = source[key];
31
+ }
32
+ }
33
+ }
34
+ return target;
35
+ };
36
+ return _extends.apply(this, arguments);
37
+ }
38
+ function _inheritsLoose(subClass, superClass) {
39
+ subClass.prototype = Object.create(superClass.prototype);
40
+ subClass.prototype.constructor = subClass;
41
+ _setPrototypeOf(subClass, superClass);
42
+ }
43
+ function _setPrototypeOf(o, p) {
44
+ _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
45
+ o.__proto__ = p;
46
+ return o;
47
+ };
48
+ return _setPrototypeOf(o, p);
49
+ }
50
+ function _isNativeReflectConstruct() {
51
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
52
+ if (Reflect.construct.sham) return false;
53
+ if (typeof Proxy === "function") return true;
54
+ try {
55
+ Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
56
+ return true;
57
+ } catch (e) {
58
+ return false;
59
+ }
60
+ }
61
+ function _construct(Parent, args, Class) {
62
+ if (_isNativeReflectConstruct()) {
63
+ _construct = Reflect.construct.bind();
64
+ } else {
65
+ _construct = function _construct(Parent, args, Class) {
66
+ var a = [null];
67
+ a.push.apply(a, args);
68
+ var Constructor = Function.bind.apply(Parent, a);
69
+ var instance = new Constructor();
70
+ if (Class) _setPrototypeOf(instance, Class.prototype);
71
+ return instance;
72
+ };
73
+ }
74
+ return _construct.apply(null, arguments);
75
+ }
76
+ function _assertThisInitialized(self) {
77
+ if (self === void 0) {
78
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
79
+ }
80
+ return self;
81
+ }
82
+ function _unsupportedIterableToArray(o, minLen) {
83
+ if (!o) return;
84
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
85
+ var n = Object.prototype.toString.call(o).slice(8, -1);
86
+ if (n === "Object" && o.constructor) n = o.constructor.name;
87
+ if (n === "Map" || n === "Set") return Array.from(o);
88
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
89
+ }
90
+ function _arrayLikeToArray(arr, len) {
91
+ if (len == null || len > arr.length) len = arr.length;
92
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
93
+ return arr2;
94
+ }
95
+ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
96
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
97
+ if (it) return (it = it.call(o)).next.bind(it);
98
+ if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
99
+ if (it) o = it;
100
+ var i = 0;
101
+ return function () {
102
+ if (i >= o.length) return {
103
+ done: true
104
+ };
105
+ return {
106
+ done: false,
107
+ value: o[i++]
108
+ };
109
+ };
110
+ }
111
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
112
+ }
113
+ function _toPrimitive(input, hint) {
114
+ if (typeof input !== "object" || input === null) return input;
115
+ var prim = input[Symbol.toPrimitive];
116
+ if (prim !== undefined) {
117
+ var res = prim.call(input, hint || "default");
118
+ if (typeof res !== "object") return res;
119
+ throw new TypeError("@@toPrimitive must return a primitive value.");
120
+ }
121
+ return (hint === "string" ? String : Number)(input);
122
+ }
123
+ function _toPropertyKey(arg) {
124
+ var key = _toPrimitive(arg, "string");
125
+ return typeof key === "symbol" ? key : String(key);
126
+ }
127
+
128
+ var EmptyMaterialError = /*#__PURE__*/function () {
129
+ function EmptyMaterialError(err) {
130
+ this._err = new Error(err);
131
+ }
132
+ _createClass(EmptyMaterialError, [{
133
+ key: "err",
134
+ get: function get() {
135
+ return this._err;
136
+ }
137
+ }]);
138
+ return EmptyMaterialError;
139
+ }();
140
+
141
+ var Serials;
142
+ (function (Serials) {
143
+ Serials["JSON"] = "JSON";
144
+ })(Serials || (Serials = {}));
145
+ var Ident;
146
+ (function (Ident) {
147
+ Ident["KERI"] = "KERI";
148
+ })(Ident || (Ident = {}));
149
+ var Version = function Version(major, minor) {
150
+ if (major === void 0) {
151
+ major = 1;
152
+ }
153
+ if (minor === void 0) {
154
+ minor = 0;
155
+ }
156
+ this.major = major;
157
+ this.minor = minor;
158
+ };
159
+ var Versionage = /*#__PURE__*/new Version();
160
+ var Ilks = {
161
+ icp: 'icp',
162
+ rot: 'rot',
163
+ ixn: 'ixn',
164
+ dip: 'dip',
165
+ drt: 'drt',
166
+ rct: 'rct',
167
+ vrc: 'vrc'
168
+ };
169
+ var encoder = /*#__PURE__*/new TextEncoder();
170
+ var decoder = /*#__PURE__*/new TextDecoder();
171
+ // const version_pattern = 'KERI(?P<major>[0-9a-f])(?P<minor>[0-9a-f])
172
+ // (?P<kind>[A-Z]{4})(?P<size>[0-9a-f]{6})'
173
+ // const version_pattern1 = `KERI\(\?P<major>\[0\-9a\-f\]\)\(\?P<minor>\[0\-9a\-f\]\)\
174
+ // (\?P<kind>\[A\-Z\]\{4\}\)\(\?P<size>\[0\-9a\-f\]\{6\}\)_`
175
+ var VEREX = 'KERI([0-9a-f])([0-9a-f])([A-Z]{4})([0-9a-f]{6})_';
176
+ // Regex pattern matching
177
+ /**
178
+ * @description This function is use to deversify the version
179
+ * Here we will use regex to to validate and extract serialization kind,size and version
180
+ * @param {string} versionString version string
181
+ * @return {Object} contaning kind of serialization like cbor,json,mgpk
182
+ * version = version of object ,size = raw size integer
183
+ */
184
+ function deversify(versionString) {
185
+ var kind;
186
+ var size;
187
+ var version = Versionage;
188
+ // we need to identify how to match the buffers pattern ,like we do regex matching for strings
189
+ var re = new RegExp(VEREX);
190
+ var match = re.exec(versionString);
191
+ if (match) {
192
+ var _ref = [+match[1], +match[2], match[3], match[4]];
193
+ version.major = _ref[0];
194
+ version.minor = _ref[1];
195
+ kind = _ref[2];
196
+ size = _ref[3];
197
+ if (!Object.values(Serials).includes(kind)) {
198
+ throw new Error("Invalid serialization kind = " + kind);
199
+ }
200
+ var ta = kind;
201
+ kind = Serials[ta];
202
+ return [kind, version, size];
203
+ }
204
+ throw new Error("Invalid version string = " + versionString);
205
+ }
206
+ function versify(ident, version, kind, size) {
207
+ if (ident === void 0) {
208
+ ident = Ident.KERI;
209
+ }
210
+ if (kind === void 0) {
211
+ kind = Serials.JSON;
212
+ }
213
+ if (size === void 0) {
214
+ size = 0;
215
+ }
216
+ version = version == undefined ? Versionage : version;
217
+ return "" + ident + version.major.toString(16) + version.minor.toString() + kind + size.toString(16).padStart(6, '0') + "_";
218
+ }
219
+ var B64ChrByIdx = /*#__PURE__*/new Map([[0, 'A'], [1, 'B'], [2, 'C'], [3, 'D'], [4, 'E'], [5, 'F'], [6, 'G'], [7, 'H'], [8, 'I'], [9, 'J'], [10, 'K'], [11, 'L'], [12, 'M'], [13, 'N'], [14, 'O'], [15, 'P'], [16, 'Q'], [17, 'R'], [18, 'S'], [19, 'T'], [20, 'U'], [21, 'V'], [22, 'W'], [23, 'X'], [24, 'Y'], [25, 'Z'], [26, 'a'], [27, 'b'], [28, 'c'], [29, 'd'], [30, 'e'], [31, 'f'], [32, 'g'], [33, 'h'], [34, 'i'], [35, 'j'], [36, 'k'], [37, 'l'], [38, 'm'], [39, 'n'], [40, 'o'], [41, 'p'], [42, 'q'], [43, 'r'], [44, 's'], [45, 't'], [46, 'u'], [47, 'v'], [48, 'w'], [49, 'x'], [50, 'y'], [51, 'z'], [52, '0'], [53, '1'], [54, '2'], [55, '3'], [56, '4'], [57, '5'], [58, '6'], [59, '7'], [60, '8'], [61, '9'], [62, '-'], [63, '_']]);
220
+ var B64IdxByChr = /*#__PURE__*/new Map( /*#__PURE__*/Array.from(B64ChrByIdx, function (entry) {
221
+ return [entry[1], entry[0]];
222
+ }));
223
+ function intToB64(i, l) {
224
+ if (l === void 0) {
225
+ l = 1;
226
+ }
227
+ var out = "";
228
+ while (l != 0) {
229
+ out = B64ChrByIdx.get(i % 64) + out;
230
+ i = Math.floor(i / 64);
231
+ if (i == 0) {
232
+ break;
233
+ }
234
+ }
235
+ var x = l - out.length;
236
+ for (var _i = 0; _i < x; _i++) {
237
+ out = "A" + out;
238
+ }
239
+ return out;
240
+ }
241
+ function b64ToInt(s) {
242
+ if (s.length == 0) {
243
+ throw new Error("Empty string, conversion undefined.");
244
+ }
245
+ var i = 0;
246
+ var rev = [].concat(s).reverse();
247
+ rev.forEach(function (c, e) {
248
+ i |= B64IdxByChr.get(c) << e * 6;
249
+ });
250
+ return i;
251
+ }
252
+ function b(s) {
253
+ return encoder.encode(s);
254
+ }
255
+ function d(u) {
256
+ return decoder.decode(u);
257
+ }
258
+ function readInt(array) {
259
+ var value = 0;
260
+ for (var i = 0; i < array.length; i++) {
261
+ value = value * 256 + array[i];
262
+ }
263
+ return value;
264
+ }
265
+
266
+ var Codex = /*#__PURE__*/function () {
267
+ function Codex() {}
268
+ var _proto = Codex.prototype;
269
+ _proto.has = function has(prop) {
270
+ var m = new Map(Array.from(Object.entries(this), function (v) {
271
+ return [v[1], v[0]];
272
+ }));
273
+ return m.has(prop);
274
+ };
275
+ return Codex;
276
+ }();
277
+ var MatterCodex = /*#__PURE__*/function (_Codex) {
278
+ _inheritsLoose(MatterCodex, _Codex);
279
+ function MatterCodex() {
280
+ var _this;
281
+ _this = _Codex.apply(this, arguments) || this;
282
+ _this.Ed25519_Seed = 'A'; // Ed25519 256 bit random seed for private key
283
+ _this.Ed25519N = 'B'; // Ed25519 verification key non-transferable, basic derivation.
284
+ _this.X25519 = 'C'; // X25519 public encryption key, converted from Ed25519 or Ed25519N.
285
+ _this.Ed25519 = 'D'; // Ed25519 verification key basic derivation
286
+ _this.Blake3_256 = 'E'; // Blake3 256 bit digest self-addressing derivation.
287
+ _this.X25519_Private = 'O'; // X25519 private decryption key converted from Ed25519
288
+ _this.X25519_Cipher_Seed = 'P'; // X25519 124 char b64 Cipher of 44 char qb64 Seed
289
+ _this.X25519_Cipher_Salt = '1AAH'; // X25519 100 char b64 Cipher of 24 char qb64 Salt
290
+ _this.Salt_128 = '0A'; // 128 bit random salt or 128 bit number (see Huge)
291
+ _this.Ed25519_Sig = '0B'; // Ed25519 signature.
292
+ return _this;
293
+ }
294
+ return MatterCodex;
295
+ }(Codex);
296
+ var MtrDex = /*#__PURE__*/new MatterCodex();
297
+ var NonTransCodex = /*#__PURE__*/function (_Codex2) {
298
+ _inheritsLoose(NonTransCodex, _Codex2);
299
+ function NonTransCodex() {
300
+ var _this2;
301
+ _this2 = _Codex2.apply(this, arguments) || this;
302
+ _this2.Ed25519N = 'B'; // Ed25519 verification key non-transferable, basic derivation.
303
+ _this2.ECDSA_256k1N = '1AAA'; // ECDSA secp256k1 verification key non-transferable, basic derivation.
304
+ _this2.Ed448N = '1AAC'; // Ed448 non-transferable prefix public signing verification key. Basic derivation.
305
+ return _this2;
306
+ }
307
+ return NonTransCodex;
308
+ }(Codex);
309
+ var NonTransDex = /*#__PURE__*/new NonTransCodex();
310
+ var DigiCodex = /*#__PURE__*/function (_Codex3) {
311
+ _inheritsLoose(DigiCodex, _Codex3);
312
+ function DigiCodex() {
313
+ var _this3;
314
+ _this3 = _Codex3.apply(this, arguments) || this;
315
+ _this3.Blake3_256 = 'E'; // Blake3 256 bit digest self-addressing derivation.
316
+ _this3.Blake2b_256 = 'F'; // Blake2b 256 bit digest self-addressing derivation.
317
+ _this3.Blake2s_256 = 'G'; // Blake2s 256 bit digest self-addressing derivation.
318
+ _this3.SHA3_256 = 'H'; // SHA3 256 bit digest self-addressing derivation.
319
+ _this3.SHA2_256 = 'I'; // SHA2 256 bit digest self-addressing derivation.
320
+ _this3.Blake3_512 = '0D'; // Blake3 512 bit digest self-addressing derivation.
321
+ _this3.Blake2b_512 = '0E'; // Blake2b 512 bit digest self-addressing derivation.
322
+ _this3.SHA3_512 = '0F'; // SHA3 512 bit digest self-addressing derivation.
323
+ _this3.SHA2_512 = '0G'; // SHA2 512 bit digest self-addressing derivation.
324
+ return _this3;
325
+ }
326
+ return DigiCodex;
327
+ }(Codex);
328
+ var DigiDex = /*#__PURE__*/new DigiCodex();
329
+ var Sizage = function Sizage(hs, ss, fs, ls) {
330
+ this.hs = hs;
331
+ this.ss = ss;
332
+ this.fs = fs;
333
+ this.ls = ls;
334
+ };
335
+ var Matter = /*#__PURE__*/function () {
336
+ function Matter(_ref) {
337
+ var raw = _ref.raw,
338
+ _ref$code = _ref.code,
339
+ code = _ref$code === void 0 ? MtrDex.Ed25519N : _ref$code,
340
+ qb64b = _ref.qb64b,
341
+ qb64 = _ref.qb64,
342
+ qb2 = _ref.qb2;
343
+ this._code = "";
344
+ this._size = -1;
345
+ this._raw = new Uint8Array(0);
346
+ var size = -1;
347
+ if (raw != undefined) {
348
+ if (code.length == 0) {
349
+ throw new Error("Improper initialization need either (raw and code) or qb64b or qb64 or qb2.");
350
+ }
351
+ // Add support for variable size codes here if needed, this code only works for stable size codes
352
+ var sizage = Matter.Sizes.get(code);
353
+ if (sizage.fs == -1) {
354
+ // invalid
355
+ throw new Error("Unsupported variable size code=" + code);
356
+ }
357
+ var rize = Matter._rawSize(code);
358
+ raw = raw.slice(0, rize); // copy only exact size from raw stream
359
+ if (raw.length != rize) {
360
+ // forbids shorter
361
+ throw new Error("Not enougth raw bytes for code=" + code + " expected " + rize + " got " + raw.length + ".");
362
+ }
363
+ this._code = code; // hard value part of code
364
+ this._size = size; // soft value part of code in int
365
+ this._raw = raw; // crypto ops require bytes not bytearray
366
+ } else if (qb64 !== undefined) {
367
+ this._exfil(qb64);
368
+ } else if (qb64b !== undefined) {
369
+ var _qb = d(qb64b);
370
+ this._exfil(_qb);
371
+ } else if (qb2 !== undefined) {
372
+ this._bexfil(qb2);
373
+ } else {
374
+ throw new EmptyMaterialError("EmptyMaterialError");
375
+ }
376
+ }
377
+ Matter._rawSize = function _rawSize(code) {
378
+ var sizage = this.Sizes.get(code); // get sizes
379
+ var cs = sizage.hs + sizage.ss; // both hard + soft code size
380
+ if (sizage.fs === -1) {
381
+ throw Error("Non-fixed raw size code " + code + ".");
382
+ }
383
+ return Math.floor((sizage.fs - cs) * 3 / 4) - sizage.ls;
384
+ };
385
+ Matter._leadSize = function _leadSize(code) {
386
+ var sizage = this.Sizes.get(code);
387
+ return sizage.ls;
388
+ };
389
+ var _proto2 = Matter.prototype;
390
+ _proto2._infil = function _infil() {
391
+ var code = this.code;
392
+ var raw = this.raw;
393
+ var ps = (3 - raw.length % 3) % 3; // pad size chars or lead size bytes
394
+ var sizage = Matter.Sizes.get(code);
395
+ if (sizage.fs === -1) {
396
+ // Variable size code, NOT SUPPORTED
397
+ throw new Error("Variable sized codes not supported... yet");
398
+ } else {
399
+ var both = code;
400
+ var cs = both.length;
401
+ if (cs % 4 != ps - sizage.ls) {
402
+ // adjusted pad given lead bytes
403
+ throw new Error("Invalid code=" + both + " for converted raw pad size=" + ps + ", " + raw.length + ".");
404
+ }
405
+ // prepad, convert, and replace upfront
406
+ // when fixed and ls != 0 then cs % 4 is zero and ps==ls
407
+ // otherwise fixed and ls == 0 then cs % 4 == ps
408
+ var bytes = new Uint8Array(ps + raw.length);
409
+ for (var i = 0; i < ps; i++) {
410
+ bytes[i] = 0;
411
+ }
412
+ for (var _i = 0; _i < raw.length; _i++) {
413
+ var odx = _i + ps;
414
+ bytes[odx] = raw[_i];
415
+ }
416
+ return both + Base64.encode(Buffer.from(bytes)).slice(cs % 4);
417
+ }
418
+ };
419
+ _proto2._exfil = function _exfil(qb64) {
420
+ if (qb64.length == 0) {
421
+ throw new Error("Empty Material");
422
+ }
423
+ var first = qb64[0];
424
+ if (!Array.from(Matter.Hards.keys()).includes(first)) {
425
+ throw new Error("Unexpected code " + first);
426
+ }
427
+ var hs = Matter.Hards.get(first);
428
+ if (qb64.length < hs) {
429
+ throw new Error("Shortage Error");
430
+ }
431
+ var hard = qb64.slice(0, hs);
432
+ if (!Array.from(Matter.Sizes.keys()).includes(hard)) {
433
+ throw new Error("Unsupported code " + hard);
434
+ }
435
+ var sizage = Matter.Sizes.get(hard);
436
+ var cs = sizage.hs + sizage.ss;
437
+ var size = -1;
438
+ if (sizage.fs == -1) {
439
+ // Variable size code, Not supported
440
+ throw new Error("Variable size codes not supported yet");
441
+ } else {
442
+ size = sizage.fs;
443
+ }
444
+ if (qb64.length < sizage.fs) {
445
+ throw new Error("Need " + (sizage.fs - qb64.length) + " more chars.");
446
+ }
447
+ qb64 = qb64.slice(0, sizage.fs);
448
+ var ps = cs % 4;
449
+ var pbs = 2 * (ps == 0 ? sizage.ls : ps);
450
+ var raw;
451
+ if (ps != 0) {
452
+ var base = new Array(ps + 1).join('A') + qb64.slice(cs);
453
+ var paw = Base64.decode(base); // decode base to leave prepadded raw
454
+ var pi = readInt(paw.subarray(0, ps)); // prepad as int
455
+ if (pi & Math.pow(2, pbs) - 1) {
456
+ // masked pad bits non-zero
457
+ throw new Error("Non zeroed prepad bits = {pi & (2 ** pbs - 1 ):<06b} in {qb64b[cs:cs+1]}.");
458
+ }
459
+ raw = paw.subarray(ps); // strip off ps prepad paw bytes
460
+ } else {
461
+ var _base = qb64.slice(cs);
462
+ var _paw = Base64.decode(_base);
463
+ var li = readInt(_paw.subarray(0, sizage.ls));
464
+ if (li != 0) {
465
+ if (li == 1) {
466
+ throw new Error("Non zeroed lead byte = 0x{li:02x}.");
467
+ } else {
468
+ throw new Error("Non zeroed lead bytes = 0x{li:04x}");
469
+ }
470
+ }
471
+ raw = _paw.subarray(sizage.ls);
472
+ }
473
+ this._code = hard; // hard only
474
+ this._size = size;
475
+ this._raw = Uint8Array.from(raw); // ensure bytes so immutable and for crypto ops
476
+ };
477
+ _proto2._bexfil = function _bexfil(qb2) {
478
+ throw new Error("qb2 not yet supported: " + qb2);
479
+ };
480
+ _createClass(Matter, [{
481
+ key: "code",
482
+ get: function get() {
483
+ return this._code;
484
+ }
485
+ }, {
486
+ key: "size",
487
+ get: function get() {
488
+ return this._size;
489
+ }
490
+ }, {
491
+ key: "raw",
492
+ get: function get() {
493
+ return this._raw;
494
+ }
495
+ }, {
496
+ key: "qb64",
497
+ get: function get() {
498
+ return this._infil();
499
+ }
500
+ }, {
501
+ key: "qb64b",
502
+ get: function get() {
503
+ return b(this.qb64);
504
+ }
505
+ }, {
506
+ key: "transferable",
507
+ get: function get() {
508
+ return !NonTransDex.has(this.code);
509
+ }
510
+ }, {
511
+ key: "digestive",
512
+ get: function get() {
513
+ return DigiDex.has(this.code);
514
+ }
515
+ }, {
516
+ key: "both",
517
+ get: function get() {
518
+ var sizage = Matter.Sizes.get(this.code);
519
+ return "" + this.code + intToB64(this.size, sizage.ls);
520
+ }
521
+ }]);
522
+ return Matter;
523
+ }();
524
+ Matter.Sizes = /*#__PURE__*/new Map( /*#__PURE__*/Object.entries({
525
+ 'A': /*#__PURE__*/new Sizage(1, 0, 44, 0),
526
+ 'B': /*#__PURE__*/new Sizage(1, 0, 44, 0),
527
+ 'C': /*#__PURE__*/new Sizage(1, 0, 44, 0),
528
+ 'D': /*#__PURE__*/new Sizage(1, 0, 44, 0),
529
+ 'E': /*#__PURE__*/new Sizage(1, 0, 44, 0),
530
+ 'O': /*#__PURE__*/new Sizage(1, 0, 44, 0),
531
+ 'P': /*#__PURE__*/new Sizage(1, 0, 124, 0),
532
+ "0A": /*#__PURE__*/new Sizage(2, 0, 24, 0),
533
+ '0B': /*#__PURE__*/new Sizage(2, 0, 88, 0),
534
+ '1AAH': /*#__PURE__*/new Sizage(4, 0, 100, 0)
535
+ }));
536
+ Matter.Hards = /*#__PURE__*/new Map([['A', 1], ['B', 1], ['C', 1], ['D', 1], ['E', 1], ['F', 1], ['G', 1], ['H', 1], ['I', 1], ['J', 1], ['K', 1], ['L', 1], ['M', 1], ['N', 1], ['O', 1], ['P', 1], ['Q', 1], ['R', 1], ['S', 1], ['T', 1], ['U', 1], ['V', 1], ['W', 1], ['X', 1], ['Y', 1], ['Z', 1], ['a', 1], ['b', 1], ['c', 1], ['d', 1], ['e', 1], ['f', 1], ['g', 1], ['h', 1], ['i', 1], ['j', 1], ['k', 1], ['l', 1], ['m', 1], ['n', 1], ['o', 1], ['p', 1], ['q', 1], ['r', 1], ['s', 1], ['t', 1], ['u', 1], ['v', 1], ['w', 1], ['x', 1], ['y', 1], ['z', 1], ['0', 2], ['1', 4], ['2', 4], ['3', 4], ['4', 2], ['5', 2], ['6', 2], ['7', 4], ['8', 4], ['9', 4]]);
537
+
538
+ /**
539
+ * @description Verfer :sublclass of Matter,helps to verify signature of serialization
540
+ * using .raw as verifier key and .code as signature cypher suite
541
+ */
542
+ var Verfer = /*#__PURE__*/function (_Matter) {
543
+ _inheritsLoose(Verfer, _Matter);
544
+ function Verfer(_ref) {
545
+ var _this;
546
+ var raw = _ref.raw,
547
+ code = _ref.code,
548
+ qb64 = _ref.qb64,
549
+ qb64b = _ref.qb64b,
550
+ qb2 = _ref.qb2;
551
+ _this = _Matter.call(this, {
552
+ raw: raw,
553
+ code: code,
554
+ qb64: qb64,
555
+ qb64b: qb64b,
556
+ qb2: qb2
557
+ }) || this;
558
+ if (Array.from([MtrDex.Ed25519N, MtrDex.Ed25519]).includes(_this.code)) {
559
+ _this._verify = _this._ed25519;
560
+ } else {
561
+ throw new Error("Unsupported code = " + _this.code + " for verifier.");
562
+ }
563
+ return _this;
564
+ }
565
+ var _proto = Verfer.prototype;
566
+ _proto.verify = function verify(sig, ser) {
567
+ return this._verify(sig, ser, this.raw);
568
+ };
569
+ _proto._ed25519 = function _ed25519(sig, ser, key) {
570
+ try {
571
+ return libsodium.crypto_sign_verify_detached(sig, ser, key);
572
+ } catch (error) {
573
+ throw new Error(error);
574
+ }
575
+ };
576
+ return Verfer;
577
+ }(Matter);
578
+
579
+ var Cigar = /*#__PURE__*/function (_Matter) {
580
+ _inheritsLoose(Cigar, _Matter);
581
+ function Cigar(_ref, verfer) {
582
+ var _this;
583
+ var raw = _ref.raw,
584
+ code = _ref.code,
585
+ qb64 = _ref.qb64,
586
+ qb64b = _ref.qb64b,
587
+ qb2 = _ref.qb2;
588
+ _this = _Matter.call(this, {
589
+ raw: raw,
590
+ code: code,
591
+ qb64: qb64,
592
+ qb64b: qb64b,
593
+ qb2: qb2
594
+ }) || this;
595
+ _this._verfer = verfer;
596
+ return _this;
597
+ }
598
+ _createClass(Cigar, [{
599
+ key: "verfer",
600
+ get: function get() {
601
+ return this._verfer;
602
+ },
603
+ set: function set(verfer) {
604
+ this._verfer = verfer;
605
+ }
606
+ }]);
607
+ return Cigar;
608
+ }(Matter);
609
+
610
+ var IndexerCodex = function IndexerCodex() {
611
+ this.Ed25519_Sig = 'A'; // Ed25519 sig appears same in both lists if any.
612
+ this.Ed25519_Crt_Sig = 'B'; // Ed25519 sig appears in current list only.
613
+ this.ECDSA_256k1_Sig = 'C'; // ECDSA secp256k1 sig appears same in both lists if any.
614
+ this.ECDSA_256k1_Crt_Sig = 'D'; // ECDSA secp256k1 sig appears in current list.
615
+ this.Ed448_Sig = '0A'; // Ed448 signature appears in both lists.
616
+ this.Ed448_Crt_Sig = '0B'; // Ed448 signature appears in current list only.
617
+ this.Ed25519_Big_Sig = '2A'; // Ed25519 sig appears in both lists.
618
+ this.Ed25519_Big_Crt_Sig = '2B'; // Ed25519 sig appears in current list only.
619
+ this.ECDSA_256k1_Big_Sig = '2C'; // ECDSA secp256k1 sig appears in both lists.
620
+ this.ECDSA_256k1_Big_Crt_Sig = '2D'; // ECDSA secp256k1 sig appears in current list only.
621
+ this.Ed448_Big_Sig = '3A'; // Ed448 signature appears in both lists.
622
+ this.Ed448_Big_Crt_Sig = '3B'; // Ed448 signature appears in current list only.
623
+ };
624
+
625
+ var IdrDex = /*#__PURE__*/new IndexerCodex();
626
+ var IndexedSigCodex = /*#__PURE__*/function () {
627
+ function IndexedSigCodex() {
628
+ this.Ed25519_Sig = 'A'; // Ed25519 sig appears same in both lists if any.
629
+ this.Ed25519_Crt_Sig = 'B'; // Ed25519 sig appears in current list only.
630
+ this.ECDSA_256k1_Sig = 'C'; // ECDSA secp256k1 sig appears same in both lists if any.
631
+ this.ECDSA_256k1_Crt_Sig = 'D'; // ECDSA secp256k1 sig appears in current list.
632
+ this.Ed448_Sig = '0A'; // Ed448 signature appears in both lists.
633
+ this.Ed448_Crt_Sig = '0B'; // Ed448 signature appears in current list only.
634
+ this.Ed25519_Big_Sig = '2A'; // Ed25519 sig appears in both lists.
635
+ this.Ed25519_Big_Crt_Sig = '2B'; // Ed25519 sig appears in current list only.
636
+ this.ECDSA_256k1_Big_Sig = '2C'; // ECDSA secp256k1 sig appears in both lists.
637
+ this.ECDSA_256k1_Big_Crt_Sig = '2D'; // ECDSA secp256k1 sig appears in current list only.
638
+ this.Ed448_Big_Sig = '3A'; // Ed448 signature appears in both lists.
639
+ this.Ed448_Big_Crt_Sig = '3B'; // Ed448 signature appears in current list only.
640
+ }
641
+ var _proto = IndexedSigCodex.prototype;
642
+ _proto.has = function has(prop) {
643
+ var m = new Map(Array.from(Object.entries(this), function (v) {
644
+ return [v[1], v[0]];
645
+ }));
646
+ return m.has(prop);
647
+ };
648
+ return IndexedSigCodex;
649
+ }();
650
+ var IdxSigDex = /*#__PURE__*/new IndexedSigCodex();
651
+ var IndexedCurrentSigCodex = /*#__PURE__*/function () {
652
+ function IndexedCurrentSigCodex() {
653
+ this.Ed25519_Crt_Sig = 'B'; // Ed25519 sig appears in current list only.
654
+ this.ECDSA_256k1_Crt_Sig = 'D'; // ECDSA secp256k1 sig appears in current list only.
655
+ this.Ed448_Crt_Sig = '0B'; // Ed448 signature appears in current list only.
656
+ this.Ed25519_Big_Crt_Sig = '2B'; // Ed25519 sig appears in current list only.
657
+ this.ECDSA_256k1_Big_Crt_Sig = '2D'; // ECDSA secp256k1 sig appears in current list only.
658
+ this.Ed448_Big_Crt_Sig = '3B'; // Ed448 signature appears in current list only.
659
+ }
660
+ var _proto2 = IndexedCurrentSigCodex.prototype;
661
+ _proto2.has = function has(prop) {
662
+ var m = new Map(Array.from(Object.entries(this), function (v) {
663
+ return [v[1], v[0]];
664
+ }));
665
+ return m.has(prop);
666
+ };
667
+ return IndexedCurrentSigCodex;
668
+ }();
669
+ var IdxCrtSigDex = /*#__PURE__*/new IndexedCurrentSigCodex();
670
+ var IndexedBothSigCodex = /*#__PURE__*/function () {
671
+ function IndexedBothSigCodex() {
672
+ this.Ed25519_Sig = 'A'; // Ed25519 sig appears same in both lists if any.
673
+ this.ECDSA_256k1_Sig = 'C'; // ECDSA secp256k1 sig appears same in both lists if any.
674
+ this.Ed448_Sig = '0A'; // Ed448 signature appears in both lists.
675
+ this.Ed25519_Big_Sig = '2A'; // Ed25519 sig appears in both listsy.
676
+ this.ECDSA_256k1_Big_Sig = '2C'; // ECDSA secp256k1 sig appears in both lists.
677
+ this.Ed448_Big_Sig = '3A'; // Ed448 signature appears in both lists.
4
678
  }
5
- return a + b;
679
+ var _proto3 = IndexedBothSigCodex.prototype;
680
+ _proto3.has = function has(prop) {
681
+ var m = new Map(Array.from(Object.entries(this), function (v) {
682
+ return [v[1], v[0]];
683
+ }));
684
+ return m.has(prop);
685
+ };
686
+ return IndexedBothSigCodex;
687
+ }();
688
+ var IdxBthSigDex = /*#__PURE__*/new IndexedBothSigCodex();
689
+ var Xizage = function Xizage(hs, ss, os, fs, ls) {
690
+ this.hs = hs;
691
+ this.ss = ss;
692
+ this.os = os;
693
+ this.fs = fs;
694
+ this.ls = ls;
6
695
  };
696
+ var Indexer = /*#__PURE__*/function () {
697
+ function Indexer(_ref) {
698
+ var _ref$raw = _ref.raw,
699
+ raw = _ref$raw === void 0 ? undefined : _ref$raw,
700
+ _ref$code = _ref.code,
701
+ code = _ref$code === void 0 ? IdrDex.Ed25519_Sig : _ref$code,
702
+ _ref$index = _ref.index,
703
+ index = _ref$index === void 0 ? 0 : _ref$index,
704
+ _ref$ondex = _ref.ondex,
705
+ ondex = _ref$ondex === void 0 ? undefined : _ref$ondex,
706
+ _ref$qb64b = _ref.qb64b,
707
+ qb64b = _ref$qb64b === void 0 ? undefined : _ref$qb64b,
708
+ _ref$qb = _ref.qb64,
709
+ qb64 = _ref$qb === void 0 ? undefined : _ref$qb,
710
+ _ref$qb2 = _ref.qb2,
711
+ qb2 = _ref$qb2 === void 0 ? undefined : _ref$qb2;
712
+ this.Codex = IdrDex;
713
+ this._code = "";
714
+ this._index = -1;
715
+ this._raw = new Uint8Array(0);
716
+ if (raw != undefined) {
717
+ if (code == undefined) {
718
+ throw new EmptyMaterialError("Improper initialization need either (raw and code) or qb64b or qb64 or qb2.");
719
+ }
720
+ if (!Indexer.Sizes.has(code)) {
721
+ throw new Error("Unsupported code=" + code + ".");
722
+ }
723
+ var xizage = Indexer.Sizes.get(code);
724
+ var os = xizage.os;
725
+ var fs = xizage.fs;
726
+ var cs = xizage.hs + xizage.ss;
727
+ var ms = xizage.ss - xizage.os;
728
+ if (!Number.isInteger(index) || index < 0 || index > Math.pow(64, ms) - 1) {
729
+ throw new Error("Invalid index=" + index + " for code=" + code + ".");
730
+ }
731
+ if (ondex != undefined && xizage.os != 0 && !(ondex >= 0 && ondex <= Math.pow(64, os) - 1)) {
732
+ throw new Error("Invalid ondex=" + ondex + " for code=" + code + ".");
733
+ }
734
+ if (IdxCrtSigDex.has(code) && ondex != undefined) {
735
+ throw new Error("Non None ondex=" + ondex + " for code=" + code + ".");
736
+ }
737
+ if (IdxBthSigDex.has(code)) {
738
+ if (ondex == undefined) {
739
+ ondex = index;
740
+ } else {
741
+ if (ondex != index && os == 0) {
742
+ throw new Error("Non matching ondex=" + ondex + " and index=" + index + " for code=" + code + ".");
743
+ }
744
+ }
745
+ }
746
+ if (fs == undefined) {
747
+ throw new Error("variable length unsupported");
748
+ }
749
+ // TODO: Don't support this code
750
+ // if not fs: # compute fs from index
751
+ // if cs % 4:
752
+ // raise InvalidCodeSizeError(f"Whole code size not multiple of 4 for "
753
+ // f"variable length material. cs={cs}.")
754
+ // if os != 0:
755
+ // raise InvalidCodeSizeError(f"Non-zero other index size for "
756
+ // f"variable length material. os={os}.")
757
+ // fs = (index * 4) + cs
758
+ var rawsize = Math.floor((fs - cs) * 3 / 4);
759
+ raw = raw.slice(0, rawsize);
760
+ if (raw.length != rawsize) {
761
+ throw new Error("Not enougth raw bytes for code=" + code + " and index=" + index + " ,expected " + rawsize + " got " + raw.length + ".");
762
+ }
763
+ this._code = code;
764
+ this._index = index;
765
+ this._ondex = ondex;
766
+ this._raw = raw;
767
+ } else if (qb64b != undefined) {
768
+ var _qb = d(qb64b);
769
+ this._exfil(_qb);
770
+ } else if (qb64 != undefined) {
771
+ this._exfil(qb64);
772
+ } else if (qb2 != undefined) {
773
+ this._bexfil(qb2);
774
+ } else {
775
+ throw new EmptyMaterialError("Improper initialization need either (raw and code and index) or qb64b or qb64 or qb2.");
776
+ }
777
+ }
778
+ var _proto4 = Indexer.prototype;
779
+ _proto4._bexfil = function _bexfil(qb2) {
780
+ throw new Error("qb2 not yet supported: " + qb2);
781
+ };
782
+ Indexer._rawSize = function _rawSize(code) {
783
+ var xizage = Indexer.Sizes.get(code);
784
+ return Math.floor(xizage.fs - (xizage.hs + xizage.ss) * 3 / 4);
785
+ };
786
+ _proto4._infil = function _infil() {
787
+ var code = this.code;
788
+ var index = this.index;
789
+ var ondex = this.ondex;
790
+ var raw = this.raw;
791
+ var ps = (3 - raw.length % 3) % 3;
792
+ var xizage = Indexer.Sizes.get(code);
793
+ var cs = xizage.hs + xizage.ss;
794
+ var ms = xizage.ss - xizage.os;
795
+ // TODO: don't support this code
796
+ // if not fs: # compute fs from index
797
+ // if cs % 4:
798
+ // raise InvalidCodeSizeError(f"Whole code size not multiple of 4 for "
799
+ // f"variable length material. cs={cs}.")
800
+ // if os != 0:
801
+ // raise InvalidCodeSizeError(f"Non-zero other index size for "
802
+ // f"variable length material. os={os}.")
803
+ // fs = (index * 4) + cs
804
+ if (index < 0 || index > Math.pow(64, ms) - 1) {
805
+ throw new Error("Invalid index=" + index + " for code=" + code + ".");
806
+ }
807
+ if (ondex != undefined && xizage.os != 0 && !(ondex >= 0 && ondex <= Math.pow(64, xizage.os) - 1)) {
808
+ throw new Error("Invalid ondex=" + ondex + " for os=" + xizage.os + " and code=" + code + ".");
809
+ }
810
+ var both = "" + code + intToB64(index, ms) + intToB64(ondex == undefined ? 0 : ondex, xizage.os);
811
+ if (both.length != cs) {
812
+ throw new Error("Mismatch code size = " + cs + " with table = " + both.length + ".");
813
+ }
814
+ if (cs % 4 != ps - xizage.ls) {
815
+ throw new Error("Invalid code=" + both + " for converted raw pad size=" + ps + ".");
816
+ }
817
+ var bytes = new Uint8Array(ps + raw.length);
818
+ for (var i = 0; i < ps; i++) {
819
+ bytes[i] = 0;
820
+ }
821
+ for (var _i = 0; _i < raw.length; _i++) {
822
+ var odx = _i + ps;
823
+ bytes[odx] = raw[_i];
824
+ }
825
+ var full = both + Base64.encode(Buffer.from(bytes)).slice(ps - xizage.ls);
826
+ if (full.length != xizage.fs) {
827
+ throw new Error("Invalid code=" + both + " for raw size=" + raw.length + ".");
828
+ }
829
+ return full;
830
+ };
831
+ _proto4._exfil = function _exfil(qb64) {
832
+ if (qb64.length == 0) {
833
+ throw new Error("Empty Material");
834
+ }
835
+ var first = qb64[0];
836
+ if (!Array.from(Indexer.Hards.keys()).includes(first)) {
837
+ throw new Error("Unexpected code " + first);
838
+ }
839
+ var hs = Indexer.Hards.get(first);
840
+ if (qb64.length < hs) {
841
+ throw new Error("Need " + (hs - qb64.length) + " more characters.");
842
+ }
843
+ var hard = qb64.slice(0, hs);
844
+ if (!Array.from(Indexer.Sizes.keys()).includes(hard)) {
845
+ throw new Error("Unsupported code " + hard);
846
+ }
847
+ var xizage = Indexer.Sizes.get(hard);
848
+ var cs = xizage.hs + xizage.ss; // both hard + soft code size
849
+ var ms = xizage.ss - xizage.os;
850
+ if (qb64.length < cs) {
851
+ throw new Error("Need " + (cs - qb64.length) + " more characters.");
852
+ }
853
+ var sindex = qb64.slice(hs, hs + ms);
854
+ var index = b64ToInt(sindex);
855
+ var sondex = qb64.slice(hs + ms, hs + ms + xizage.os);
856
+ var ondex;
857
+ if (IdxCrtSigDex.has(hard)) {
858
+ ondex = xizage.os != 0 ? b64ToInt(sondex) : undefined;
859
+ if (ondex != 0 && ondex != undefined) {
860
+ throw new Error("Invalid ondex=" + ondex + " for code=" + hard + ".");
861
+ } else {
862
+ ondex = undefined;
863
+ }
864
+ } else {
865
+ ondex = xizage.os != 0 ? b64ToInt(sondex) : index;
866
+ }
867
+ if (xizage.fs == undefined) {
868
+ throw new Error("variable length not supported");
869
+ }
870
+ // TODO: support variable length
871
+ // if not fs: # compute fs from index which means variable length
872
+ // if cs % 4:
873
+ // raise ValidationError(f"Whole code size not multiple of 4 for "
874
+ // f"variable length material. cs={cs}.")
875
+ // if os != 0:
876
+ // raise ValidationError(f"Non-zero other index size for "
877
+ // f"variable length material. os={os}.")
878
+ // fs = (index * 4) + cs
879
+ if (qb64.length < xizage.fs) {
880
+ throw new Error("Need " + (xizage.fs - qb64.length) + " more chars.");
881
+ }
882
+ qb64 = qb64.slice(0, xizage.fs);
883
+ var ps = cs % 4;
884
+ var pbs = 2 * ps != 0 ? ps : xizage.ls;
885
+ var raw;
886
+ if (ps != 0) {
887
+ var base = new Array(ps + 1).join('A') + qb64.slice(cs);
888
+ var paw = Base64.decode(base); // decode base to leave prepadded raw
889
+ var pi = readInt(paw.slice(0, ps)); // prepad as int
890
+ if (pi & Math.pow(2, pbs) - 1) {
891
+ // masked pad bits non-zero
892
+ throw new Error("Non zeroed prepad bits = {pi & (2 ** pbs - 1 ):<06b} in {qb64b[cs:cs+1]}.");
893
+ }
894
+ raw = paw.slice(ps); // strip off ps prepad paw bytes
895
+ } else {
896
+ var _base = qb64.slice(cs);
897
+ var _paw = Base64.decode(_base);
898
+ var li = readInt(_paw.slice(0, xizage.ls));
899
+ if (li != 0) {
900
+ if (li == 1) {
901
+ throw new Error("Non zeroed lead byte = 0x{li:02x}.");
902
+ } else {
903
+ throw new Error("Non zeroed lead bytes = 0x{li:04x}");
904
+ }
905
+ }
906
+ raw = _paw.slice(xizage.ls);
907
+ }
908
+ if (raw.length != Math.floor((qb64.length - cs) * 3 / 4)) {
909
+ throw new Error("Improperly qualified material = " + qb64);
910
+ }
911
+ this._code = hard;
912
+ this._index = index;
913
+ this._ondex = ondex;
914
+ this._raw = new Uint8Array(raw); // must be bytes for crpto opts and immutable not bytearray
915
+ };
916
+ _createClass(Indexer, [{
917
+ key: "code",
918
+ get: function get() {
919
+ return this._code;
920
+ }
921
+ }, {
922
+ key: "raw",
923
+ get: function get() {
924
+ return this._raw;
925
+ }
926
+ }, {
927
+ key: "index",
928
+ get: function get() {
929
+ return this._index;
930
+ }
931
+ }, {
932
+ key: "ondex",
933
+ get: function get() {
934
+ return this._ondex;
935
+ }
936
+ }, {
937
+ key: "qb64",
938
+ get: function get() {
939
+ return this._infil();
940
+ }
941
+ }, {
942
+ key: "qb64b",
943
+ get: function get() {
944
+ return b(this.qb64);
945
+ }
946
+ }]);
947
+ return Indexer;
948
+ }();
949
+ Indexer.Hards = /*#__PURE__*/new Map([['A', 1], ['B', 1], ['C', 1], ['D', 1], ['E', 1], ['F', 1], ['G', 1], ['H', 1], ['I', 1], ['J', 1], ['K', 1], ['L', 1], ['M', 1], ['N', 1], ['O', 1], ['P', 1], ['Q', 1], ['R', 1], ['S', 1], ['T', 1], ['U', 1], ['V', 1], ['W', 1], ['X', 1], ['Y', 1], ['Z', 1], ['a', 1], ['b', 1], ['c', 1], ['d', 1], ['e', 1], ['f', 1], ['g', 1], ['h', 1], ['i', 1], ['j', 1], ['k', 1], ['l', 1], ['m', 1], ['n', 1], ['o', 1], ['p', 1], ['q', 1], ['r', 1], ['s', 1], ['t', 1], ['u', 1], ['v', 1], ['w', 1], ['x', 1], ['y', 1], ['z', 1], ['0', 2], ['1', 2], ['2', 2], ['3', 2], ['4', 2]]);
950
+ Indexer.Sizes = /*#__PURE__*/new Map( /*#__PURE__*/Object.entries({
951
+ 'A': /*#__PURE__*/new Xizage(1, 1, 0, 88, 0),
952
+ 'B': /*#__PURE__*/new Xizage(1, 1, 0, 88, 0),
953
+ 'C': /*#__PURE__*/new Xizage(1, 1, 0, 88, 0),
954
+ 'D': /*#__PURE__*/new Xizage(1, 1, 0, 88, 0),
955
+ '0A': /*#__PURE__*/new Xizage(2, 2, 1, 156, 0),
956
+ '0B': /*#__PURE__*/new Xizage(2, 2, 1, 156, 0),
957
+ '2A': /*#__PURE__*/new Xizage(2, 4, 2, 92, 0),
958
+ '2B': /*#__PURE__*/new Xizage(2, 4, 2, 92, 0),
959
+ '2C': /*#__PURE__*/new Xizage(2, 4, 2, 92, 0),
960
+ '2D': /*#__PURE__*/new Xizage(2, 4, 2, 92, 0),
961
+ '3A': /*#__PURE__*/new Xizage(2, 6, 3, 160, 0),
962
+ '3B': /*#__PURE__*/new Xizage(2, 6, 3, 160, 0),
963
+ '0z': /*#__PURE__*/new Xizage(2, 2, 0, undefined, 0),
964
+ '1z': /*#__PURE__*/new Xizage(2, 2, 1, 76, 1),
965
+ '4z': /*#__PURE__*/new Xizage(2, 6, 3, 80, 1)
966
+ }));
967
+
968
+ /**
969
+ Siger is subclass of Indexer, indexed signature material,
970
+ Adds .verfer property which is instance of Verfer that provides
971
+ associated signature verifier.
972
+
973
+ See Indexer for inherited attributes and properties:
974
+
975
+ Attributes:
976
+
977
+ Properties:
978
+ .verfer is Verfer object instance
979
+
980
+ Methods:
981
+ **/
982
+ var Siger = /*#__PURE__*/function (_Indexer) {
983
+ _inheritsLoose(Siger, _Indexer);
984
+ function Siger(_ref, verfer) {
985
+ var _this;
986
+ var raw = _ref.raw,
987
+ code = _ref.code,
988
+ index = _ref.index,
989
+ ondex = _ref.ondex,
990
+ qb64 = _ref.qb64,
991
+ qb64b = _ref.qb64b,
992
+ qb2 = _ref.qb2;
993
+ _this = _Indexer.call(this, {
994
+ raw: raw,
995
+ code: code,
996
+ index: index,
997
+ ondex: ondex,
998
+ qb64: qb64,
999
+ qb64b: qb64b,
1000
+ qb2: qb2
1001
+ }) || this;
1002
+ if (!IdxSigDex.has(_this.code)) {
1003
+ throw new Error("Invalid code = " + _this.code + " for Siger.");
1004
+ }
1005
+ _this._verfer = verfer;
1006
+ return _this;
1007
+ }
1008
+ _createClass(Siger, [{
1009
+ key: "verfer",
1010
+ get: function get() {
1011
+ return this._verfer;
1012
+ },
1013
+ set: function set(verfer) {
1014
+ this._verfer = verfer;
1015
+ }
1016
+ }]);
1017
+ return Siger;
1018
+ }(Indexer);
1019
+
1020
+ var Signer = /*#__PURE__*/function (_Matter) {
1021
+ _inheritsLoose(Signer, _Matter);
1022
+ function Signer(_ref) {
1023
+ var _this;
1024
+ var raw = _ref.raw,
1025
+ _ref$code = _ref.code,
1026
+ code = _ref$code === void 0 ? MtrDex.Ed25519_Seed : _ref$code,
1027
+ qb64 = _ref.qb64,
1028
+ qb64b = _ref.qb64b,
1029
+ qb2 = _ref.qb2,
1030
+ _ref$transferable = _ref.transferable,
1031
+ transferable = _ref$transferable === void 0 ? true : _ref$transferable;
1032
+ try {
1033
+ _this = _Matter.call(this, {
1034
+ raw: raw,
1035
+ code: code,
1036
+ qb64: qb64,
1037
+ qb64b: qb64b,
1038
+ qb2: qb2
1039
+ }) || this;
1040
+ } catch (e) {
1041
+ if (e instanceof EmptyMaterialError) {
1042
+ if (code == MtrDex.Ed25519_Seed) {
1043
+ var _raw = libsodium.randombytes_buf(libsodium.crypto_sign_SEEDBYTES);
1044
+ _this = _Matter.call(this, {
1045
+ raw: _raw,
1046
+ code: code,
1047
+ qb64: qb64,
1048
+ qb64b: qb64b,
1049
+ qb2: qb2
1050
+ }) || this;
1051
+ } else {
1052
+ throw new Error("Unsupported signer code = " + code + ".");
1053
+ }
1054
+ } else {
1055
+ throw e;
1056
+ }
1057
+ }
1058
+ var verfer;
1059
+ if (_this.code == MtrDex.Ed25519_Seed) {
1060
+ _this._sign = _this._ed25519;
1061
+ var keypair = libsodium.crypto_sign_seed_keypair(_this.raw);
1062
+ verfer = new Verfer({
1063
+ raw: keypair.publicKey,
1064
+ code: transferable ? MtrDex.Ed25519 : MtrDex.Ed25519N
1065
+ });
1066
+ } else {
1067
+ throw new Error("Unsupported signer code = " + _this.code + ".");
1068
+ }
1069
+ _this._verfer = verfer;
1070
+ return _assertThisInitialized(_this);
1071
+ }
1072
+ /**
1073
+ * @description Property verfer:
1074
+ Returns Verfer instance
1075
+ Assumes ._verfer is correctly assigned
1076
+ */
1077
+ var _proto = Signer.prototype;
1078
+ _proto.sign = function sign(ser, index, only, ondex) {
1079
+ if (index === void 0) {
1080
+ index = null;
1081
+ }
1082
+ if (only === void 0) {
1083
+ only = false;
1084
+ }
1085
+ if (ondex === void 0) {
1086
+ ondex = undefined;
1087
+ }
1088
+ return this._sign(ser, this.raw, this.verfer, index, only, ondex);
1089
+ };
1090
+ _proto._ed25519 = function _ed25519(ser, seed, verfer, index, only, ondex) {
1091
+ if (only === void 0) {
1092
+ only = false;
1093
+ }
1094
+ var sig = libsodium.crypto_sign_detached(ser, Buffer.concat([seed, verfer.raw]));
1095
+ if (index == null) {
1096
+ return new Cigar({
1097
+ raw: sig,
1098
+ code: MtrDex.Ed25519_Sig
1099
+ }, verfer);
1100
+ } else {
1101
+ var code;
1102
+ if (only) {
1103
+ ondex = undefined;
1104
+ if (index <= 63) {
1105
+ code = IdrDex.Ed25519_Crt_Sig;
1106
+ } else {
1107
+ code = IdrDex.Ed25519_Big_Crt_Sig;
1108
+ }
1109
+ } else {
1110
+ if (ondex == undefined) {
1111
+ ondex = index;
1112
+ }
1113
+ if (ondex == index && index <= 63)
1114
+ // both same and small
1115
+ code = IdrDex.Ed25519_Sig; // use small both same
1116
+ else
1117
+ // otherwise big or both not same so use big both
1118
+ code = IdrDex.Ed25519_Big_Sig; // use use big both
1119
+ }
1120
+
1121
+ return new Siger({
1122
+ raw: sig,
1123
+ code: code,
1124
+ index: index,
1125
+ ondex: ondex
1126
+ }, verfer);
1127
+ }
1128
+ };
1129
+ _createClass(Signer, [{
1130
+ key: "verfer",
1131
+ get: function get() {
1132
+ return this._verfer;
1133
+ }
1134
+ }]);
1135
+ return Signer;
1136
+ }(Matter);
1137
+
1138
+ var Salter = /*#__PURE__*/function (_Matter) {
1139
+ _inheritsLoose(Salter, _Matter);
1140
+ function Salter(_ref) {
1141
+ var _this;
1142
+ var raw = _ref.raw,
1143
+ _ref$code = _ref.code,
1144
+ code = _ref$code === void 0 ? MtrDex.Salt_128 : _ref$code,
1145
+ _ref$tier = _ref.tier,
1146
+ tier = _ref$tier === void 0 ? "low" : _ref$tier,
1147
+ qb64 = _ref.qb64,
1148
+ qb64b = _ref.qb64b,
1149
+ qb2 = _ref.qb2;
1150
+ try {
1151
+ _this = _Matter.call(this, {
1152
+ raw: raw,
1153
+ code: code,
1154
+ qb64: qb64,
1155
+ qb64b: qb64b,
1156
+ qb2: qb2
1157
+ }) || this;
1158
+ } catch (e) {
1159
+ if (e instanceof EmptyMaterialError) {
1160
+ if (code == MtrDex.Salt_128) {
1161
+ var salt = libsodium.randombytes_buf(libsodium.crypto_pwhash_SALTBYTES);
1162
+ _this = _Matter.call(this, {
1163
+ raw: salt,
1164
+ code: code
1165
+ }) || this;
1166
+ } else {
1167
+ throw new Error("invalid code for Salter, only Salt_128 accepted");
1168
+ }
1169
+ } else {
1170
+ throw e;
1171
+ }
1172
+ }
1173
+ if (_this.code != MtrDex.Salt_128) {
1174
+ throw new Error("invalid code for Salter, only Salt_128 accepted");
1175
+ }
1176
+ _this._tier = tier !== null ? tier : "low" /* low */;
1177
+ return _assertThisInitialized(_this);
1178
+ }
1179
+ var _proto = Salter.prototype;
1180
+ _proto.stretch = function stretch(size, path, tier, temp) {
1181
+ if (size === void 0) {
1182
+ size = 32;
1183
+ }
1184
+ if (path === void 0) {
1185
+ path = "";
1186
+ }
1187
+ if (tier === void 0) {
1188
+ tier = null;
1189
+ }
1190
+ if (temp === void 0) {
1191
+ temp = false;
1192
+ }
1193
+ tier = tier == null ? this.tier : tier;
1194
+ var opslimit, memlimit;
1195
+ if (temp) {
1196
+ opslimit = libsodium.crypto_pwhash_OPSLIMIT_MIN;
1197
+ memlimit = libsodium.crypto_pwhash_MEMLIMIT_MIN;
1198
+ } else {
1199
+ switch (tier) {
1200
+ case "low" /* low */:
1201
+ opslimit = libsodium.crypto_pwhash_OPSLIMIT_INTERACTIVE;
1202
+ memlimit = libsodium.crypto_pwhash_MEMLIMIT_INTERACTIVE;
1203
+ break;
1204
+ case "med" /* med */:
1205
+ opslimit = libsodium.crypto_pwhash_OPSLIMIT_MODERATE;
1206
+ memlimit = libsodium.crypto_pwhash_MEMLIMIT_MODERATE;
1207
+ break;
1208
+ case "high" /* high */:
1209
+ opslimit = libsodium.crypto_pwhash_OPSLIMIT_SENSITIVE;
1210
+ memlimit = libsodium.crypto_pwhash_MEMLIMIT_SENSITIVE;
1211
+ break;
1212
+ default:
1213
+ throw new Error("Unsupported security tier = " + tier + ".");
1214
+ }
1215
+ }
1216
+ return libsodium.crypto_pwhash(size, path, this.raw, opslimit, memlimit, libsodium.crypto_pwhash_ALG_DEFAULT);
1217
+ };
1218
+ _proto.signer = function signer(code, transferable, path, tier, temp) {
1219
+ if (code === void 0) {
1220
+ code = MtrDex.Ed25519_Seed;
1221
+ }
1222
+ if (transferable === void 0) {
1223
+ transferable = true;
1224
+ }
1225
+ if (path === void 0) {
1226
+ path = "";
1227
+ }
1228
+ if (tier === void 0) {
1229
+ tier = null;
1230
+ }
1231
+ if (temp === void 0) {
1232
+ temp = false;
1233
+ }
1234
+ var seed = this.stretch(Matter._rawSize(code), path, tier, temp);
1235
+ return new Signer({
1236
+ raw: seed,
1237
+ code: code,
1238
+ transferable: transferable
1239
+ });
1240
+ };
1241
+ _createClass(Salter, [{
1242
+ key: "tier",
1243
+ get: function get() {
1244
+ return this._tier;
1245
+ }
1246
+ }]);
1247
+ return Salter;
1248
+ }(Matter);
1249
+
1250
+ var Decrypter = /*#__PURE__*/function (_Matter) {
1251
+ _inheritsLoose(Decrypter, _Matter);
1252
+ function Decrypter(_ref, seed) {
1253
+ var _this;
1254
+ var raw = _ref.raw,
1255
+ _ref$code = _ref.code,
1256
+ code = _ref$code === void 0 ? MtrDex.X25519_Private : _ref$code,
1257
+ qb64 = _ref.qb64,
1258
+ qb64b = _ref.qb64b,
1259
+ qb2 = _ref.qb2;
1260
+ if (seed === void 0) {
1261
+ seed = undefined;
1262
+ }
1263
+ try {
1264
+ _this = _Matter.call(this, {
1265
+ raw: raw,
1266
+ code: code,
1267
+ qb64: qb64,
1268
+ qb64b: qb64b,
1269
+ qb2: qb2
1270
+ }) || this;
1271
+ } catch (e) {
1272
+ if (e instanceof EmptyMaterialError) {
1273
+ if (seed != undefined) {
1274
+ var signer = new Signer({
1275
+ qb64b: seed
1276
+ });
1277
+ if (signer.code != MtrDex.Ed25519_Seed) {
1278
+ throw new Error("Unsupported signing seed derivation code " + signer.code);
1279
+ }
1280
+ var sigkey = new Uint8Array(signer.raw.length + signer.verfer.raw.length);
1281
+ sigkey.set(signer.raw);
1282
+ sigkey.set(signer.verfer.raw, signer.raw.length);
1283
+ raw = libsodium.crypto_sign_ed25519_sk_to_curve25519(sigkey);
1284
+ _this = _Matter.call(this, {
1285
+ raw: raw,
1286
+ code: code,
1287
+ qb64: qb64,
1288
+ qb64b: qb64b,
1289
+ qb2: qb2
1290
+ }) || this;
1291
+ } else {
1292
+ throw e;
1293
+ }
1294
+ } else {
1295
+ throw e;
1296
+ }
1297
+ }
1298
+ if (_this.code == MtrDex.X25519_Private) {
1299
+ _this._decrypt = _this._x25519;
1300
+ } else {
1301
+ throw new Error("Unsupported decrypter code = " + _this.code + ".");
1302
+ }
1303
+ return _assertThisInitialized(_this);
1304
+ }
1305
+ var _proto = Decrypter.prototype;
1306
+ _proto.decrypt = function decrypt(ser, cipher, transferable) {
1307
+ if (ser === void 0) {
1308
+ ser = null;
1309
+ }
1310
+ if (cipher === void 0) {
1311
+ cipher = null;
1312
+ }
1313
+ if (transferable === void 0) {
1314
+ transferable = false;
1315
+ }
1316
+ if (ser == null && cipher == null) {
1317
+ throw new EmptyMaterialError("Neither ser or cipher were provided");
1318
+ }
1319
+ if (ser != null) {
1320
+ cipher = new Cipher({
1321
+ qb64b: ser
1322
+ });
1323
+ }
1324
+ return this._decrypt(cipher, this.raw, transferable);
1325
+ };
1326
+ _proto._x25519 = function _x25519(cipher, prikey, transferable) {
1327
+ if (transferable === void 0) {
1328
+ transferable = false;
1329
+ }
1330
+ var pubkey = libsodium.crypto_scalarmult_base(prikey);
1331
+ var plain = libsodium.crypto_box_seal_open(cipher.raw, pubkey, prikey);
1332
+ if (cipher.code == MtrDex.X25519_Cipher_Salt) {
1333
+ return new Salter({
1334
+ qb64b: plain
1335
+ });
1336
+ } else if (cipher.code == MtrDex.X25519_Cipher_Seed) {
1337
+ return new Signer({
1338
+ qb64b: plain,
1339
+ transferable: transferable
1340
+ });
1341
+ } else {
1342
+ throw new Error("Unsupported cipher text code == " + cipher.code);
1343
+ }
1344
+ };
1345
+ return Decrypter;
1346
+ }(Matter);
1347
+
1348
+ var Cipher = /*#__PURE__*/function (_Matter) {
1349
+ _inheritsLoose(Cipher, _Matter);
1350
+ function Cipher(_ref) {
1351
+ var _this;
1352
+ var raw = _ref.raw,
1353
+ code = _ref.code,
1354
+ qb64 = _ref.qb64,
1355
+ qb64b = _ref.qb64b,
1356
+ qb2 = _ref.qb2;
1357
+ if (raw != undefined && code == undefined) {
1358
+ if (raw.length == Matter._rawSize(MtrDex.X25519_Cipher_Salt)) {
1359
+ code = MtrDex.X25519_Cipher_Salt;
1360
+ } else if (raw.length == Matter._rawSize(MtrDex.X25519_Cipher_Seed)) {
1361
+ code = MtrDex.X25519_Cipher_Salt;
1362
+ }
1363
+ }
1364
+ _this = _Matter.call(this, {
1365
+ raw: raw,
1366
+ code: code,
1367
+ qb64b: qb64b,
1368
+ qb64: qb64,
1369
+ qb2: qb2
1370
+ }) || this;
1371
+ if (!Array.from([MtrDex.X25519_Cipher_Salt, MtrDex.X25519_Cipher_Seed]).includes(_this.code)) {
1372
+ throw new Error("Unsupported Cipher code == " + _this.code);
1373
+ }
1374
+ return _this;
1375
+ }
1376
+ var _proto = Cipher.prototype;
1377
+ _proto.decrypt = function decrypt(prikey, seed) {
1378
+ if (prikey === void 0) {
1379
+ prikey = undefined;
1380
+ }
1381
+ if (seed === void 0) {
1382
+ seed = undefined;
1383
+ }
1384
+ var decrypter = new Decrypter({
1385
+ qb64b: prikey
1386
+ }, seed);
1387
+ return decrypter.decrypt(this.qb64b);
1388
+ };
1389
+ return Cipher;
1390
+ }(Matter);
1391
+
1392
+ function arrayEquals(ar1, ar2) {
1393
+ return ar1.length === ar2.length && ar1.every(function (val, index) {
1394
+ return val === ar2[index];
1395
+ });
1396
+ }
1397
+
1398
+ var Encrypter = /*#__PURE__*/function (_Matter) {
1399
+ _inheritsLoose(Encrypter, _Matter);
1400
+ function Encrypter(_ref, verkey) {
1401
+ var _this;
1402
+ var raw = _ref.raw,
1403
+ _ref$code = _ref.code,
1404
+ code = _ref$code === void 0 ? MtrDex.X25519 : _ref$code,
1405
+ qb64 = _ref.qb64,
1406
+ qb64b = _ref.qb64b,
1407
+ qb2 = _ref.qb2;
1408
+ if (verkey === void 0) {
1409
+ verkey = null;
1410
+ }
1411
+ if (raw == undefined && verkey != null) {
1412
+ var verfer = new Verfer({
1413
+ qb64b: verkey
1414
+ });
1415
+ if (!Array.from([MtrDex.Ed25519N, MtrDex.Ed25519]).includes(verfer.code)) {
1416
+ throw new Error("Unsupported verkey derivation code = " + verfer.code + ".");
1417
+ }
1418
+ raw = libsodium.crypto_sign_ed25519_pk_to_curve25519(verfer.raw);
1419
+ }
1420
+ _this = _Matter.call(this, {
1421
+ raw: raw,
1422
+ code: code,
1423
+ qb64: qb64,
1424
+ qb64b: qb64b,
1425
+ qb2: qb2
1426
+ }) || this;
1427
+ if (_this.code == MtrDex.X25519) {
1428
+ _this._encrypt = _this._x25519;
1429
+ } else {
1430
+ throw new Error("Unsupported encrypter code = " + _this.code + ".");
1431
+ }
1432
+ return _this;
1433
+ }
1434
+ var _proto = Encrypter.prototype;
1435
+ _proto.verifySeed = function verifySeed(seed) {
1436
+ var signer = new Signer({
1437
+ qb64b: seed
1438
+ });
1439
+ var keypair = libsodium.crypto_sign_seed_keypair(signer.raw);
1440
+ var pubkey = libsodium.crypto_sign_ed25519_pk_to_curve25519(keypair.publicKey);
1441
+ return arrayEquals(pubkey, this.raw);
1442
+ };
1443
+ _proto.encrypt = function encrypt(ser, matter) {
1444
+ if (ser === void 0) {
1445
+ ser = null;
1446
+ }
1447
+ if (matter === void 0) {
1448
+ matter = null;
1449
+ }
1450
+ if (ser == null && matter == null) {
1451
+ throw new Error("Neither ser nor matter are provided.");
1452
+ }
1453
+ if (ser != null) {
1454
+ matter = new Matter({
1455
+ qb64b: ser
1456
+ });
1457
+ }
1458
+ var code;
1459
+ if (matter.code == MtrDex.Salt_128) {
1460
+ code = MtrDex.X25519_Cipher_Salt;
1461
+ } else {
1462
+ code = MtrDex.X25519_Cipher_Seed;
1463
+ }
1464
+ return this._encrypt(matter.qb64, this.raw, code);
1465
+ };
1466
+ _proto._x25519 = function _x25519(ser, pubkey, code) {
1467
+ var raw = libsodium.crypto_box_seal(ser, pubkey);
1468
+ return new Cipher({
1469
+ raw: raw,
1470
+ code: code
1471
+ });
1472
+ };
1473
+ return Encrypter;
1474
+ }(Matter);
1475
+
1476
+ /**
1477
+ * @description : Diger is subset of Matter and is used to verify the digest of serialization
1478
+ * It uses .raw : as digest
1479
+ * .code as digest algorithm
1480
+ *
1481
+ */
1482
+ var Diger = /*#__PURE__*/function (_Matter) {
1483
+ _inheritsLoose(Diger, _Matter);
1484
+ // This constructor will assign digest verification function to ._verify
1485
+ function Diger(_ref, ser) {
1486
+ var _this;
1487
+ var raw = _ref.raw,
1488
+ _ref$code = _ref.code,
1489
+ code = _ref$code === void 0 ? MtrDex.Blake3_256 : _ref$code,
1490
+ qb64 = _ref.qb64,
1491
+ qb64b = _ref.qb64b,
1492
+ qb2 = _ref.qb2;
1493
+ if (ser === void 0) {
1494
+ ser = null;
1495
+ }
1496
+ try {
1497
+ _this = _Matter.call(this, {
1498
+ raw: raw,
1499
+ code: code,
1500
+ qb64: qb64,
1501
+ qb64b: qb64b,
1502
+ qb2: qb2
1503
+ }) || this;
1504
+ } catch (error) {
1505
+ if (ser == null) {
1506
+ throw error;
1507
+ }
1508
+ if (code === MtrDex.Blake3_256) {
1509
+ var hasher = createHash();
1510
+ var dig = hasher.update(ser).digest('');
1511
+ _this = _Matter.call(this, {
1512
+ raw: dig,
1513
+ code: code
1514
+ }) || this;
1515
+ } else {
1516
+ throw new Error("Unsupported code = " + code + " for digester.");
1517
+ }
1518
+ }
1519
+ if (code === MtrDex.Blake3_256) {
1520
+ _this._verify = _this.blake3_256;
1521
+ } else {
1522
+ throw new Error("Unsupported code = " + code + " for digester.");
1523
+ }
1524
+ return _assertThisInitialized(_this);
1525
+ }
1526
+ /**
1527
+ *
1528
+ * @param {Uint8Array} ser serialization bytes
1529
+ * @description This method will return true if digest of bytes serialization ser matches .raw
1530
+ * using .raw as reference digest for ._verify digest algorithm determined
1531
+ by .code
1532
+ */
1533
+ var _proto = Diger.prototype;
1534
+ _proto.verify = function verify(ser) {
1535
+ return this._verify(ser, this.raw);
1536
+ };
1537
+ _proto.compare = function compare(ser, dig, diger) {
1538
+ if (dig === void 0) {
1539
+ dig = null;
1540
+ }
1541
+ if (diger === void 0) {
1542
+ diger = null;
1543
+ }
1544
+ if (dig != null) {
1545
+ if (dig.toString() == this.qb64) {
1546
+ return true;
1547
+ }
1548
+ diger = new Diger({
1549
+ qb64b: dig
1550
+ });
1551
+ } else if (diger != null) {
1552
+ if (diger.qb64b == this.qb64b) {
1553
+ return true;
1554
+ }
1555
+ } else {
1556
+ throw new Error("Both dig and diger may not be None.");
1557
+ }
1558
+ if (diger.code == this.code) {
1559
+ return false;
1560
+ }
1561
+ return diger.verify(ser) && this.verify(ser);
1562
+ };
1563
+ _proto.blake3_256 = function blake3_256(ser, dig) {
1564
+ var hasher = createHash();
1565
+ var digest = hasher.update(ser).digest('');
1566
+ return digest.toString() === dig.toString();
1567
+ };
1568
+ return Diger;
1569
+ }(Matter);
1570
+
1571
+ var Algos;
1572
+ (function (Algos) {
1573
+ Algos["randy"] = "randy";
1574
+ Algos["salty"] = "salty";
1575
+ })(Algos || (Algos = {}));
1576
+ var PubLot = function PubLot() {
1577
+ this.pubs = new Array(); // list qb64 public keys.
1578
+ this.ridx = 0; // index of rotation (est event) that uses public key set
1579
+ this.kidx = 0; // index of key in sequence of public keys
1580
+ this.dt = ""; // datetime ISO8601 when key set created
1581
+ };
1582
+ var PreSit = function PreSit() {
1583
+ this.old = new PubLot(); //previous publot
1584
+ this["new"] = new PubLot(); //newly current publot
1585
+ this.nxt = new PubLot(); //next public publot
1586
+ };
1587
+ var PrePrm = function PrePrm() {
1588
+ this.pidx = 0; // prefix index for this keypair sequence
1589
+ this.algo = Algos.salty; // salty default uses indices and salt to create new key pairs
1590
+ this.salt = ''; // empty salt used for salty algo.
1591
+ this.stem = ''; // default unique path stem for salty algo
1592
+ this.tier = ''; // security tier for stretch index salty algo
1593
+ };
1594
+ var PubSet = function PubSet() {
1595
+ this.pubs = new Array(); // list qb64 public keys.
1596
+ };
1597
+ var PubPath = function PubPath() {
1598
+ this.path = "";
1599
+ this.code = "";
1600
+ this.tier = "high" /* high */;
1601
+ this.temp = false;
1602
+ };
1603
+ var Keys = /*#__PURE__*/function () {
1604
+ function Keys(signers, paths) {
1605
+ this._signers = signers;
1606
+ if (paths != undefined) {
1607
+ if (signers.length != paths.length) {
1608
+ throw new Error("If paths are provided, they must be the same length as signers");
1609
+ }
1610
+ }
1611
+ this._paths = paths;
1612
+ }
1613
+ _createClass(Keys, [{
1614
+ key: "paths",
1615
+ get: function get() {
1616
+ return this._paths;
1617
+ }
1618
+ }, {
1619
+ key: "signers",
1620
+ get: function get() {
1621
+ return this._signers;
1622
+ }
1623
+ }]);
1624
+ return Keys;
1625
+ }();
1626
+ var RandyCreator = /*#__PURE__*/function () {
1627
+ function RandyCreator() {}
1628
+ var _proto = RandyCreator.prototype;
1629
+ _proto.create = function create(codes, count, code, transferable) {
1630
+ if (codes === void 0) {
1631
+ codes = undefined;
1632
+ }
1633
+ if (count === void 0) {
1634
+ count = 1;
1635
+ }
1636
+ if (code === void 0) {
1637
+ code = MtrDex.Ed25519_Seed;
1638
+ }
1639
+ if (transferable === void 0) {
1640
+ transferable = true;
1641
+ }
1642
+ var signers = new Array();
1643
+ if (codes == undefined) {
1644
+ codes = new Array(count).fill(code);
1645
+ }
1646
+ codes.forEach(function (code) {
1647
+ signers.push(new Signer({
1648
+ code: code,
1649
+ transferable: transferable
1650
+ }));
1651
+ });
1652
+ return new Keys(signers);
1653
+ };
1654
+ _createClass(RandyCreator, [{
1655
+ key: "salt",
1656
+ get: function get() {
1657
+ return "";
1658
+ }
1659
+ }, {
1660
+ key: "stem",
1661
+ get: function get() {
1662
+ return "";
1663
+ }
1664
+ }, {
1665
+ key: "tier",
1666
+ get: function get() {
1667
+ return "";
1668
+ }
1669
+ }]);
1670
+ return RandyCreator;
1671
+ }();
1672
+ var SaltyCreator = /*#__PURE__*/function () {
1673
+ function SaltyCreator(salt, tier, stem) {
1674
+ if (salt === void 0) {
1675
+ salt = undefined;
1676
+ }
1677
+ if (tier === void 0) {
1678
+ tier = undefined;
1679
+ }
1680
+ if (stem === void 0) {
1681
+ stem = undefined;
1682
+ }
1683
+ this.salter = new Salter({
1684
+ qb64: salt,
1685
+ tier: tier
1686
+ });
1687
+ this._stem = stem == undefined ? "" : stem;
1688
+ }
1689
+ var _proto2 = SaltyCreator.prototype;
1690
+ _proto2.create = function create(codes, count, code, transferable, pidx, ridx, kidx, temp) {
1691
+ var _this = this;
1692
+ if (codes === void 0) {
1693
+ codes = undefined;
1694
+ }
1695
+ if (count === void 0) {
1696
+ count = 1;
1697
+ }
1698
+ if (code === void 0) {
1699
+ code = MtrDex.Ed25519_Seed;
1700
+ }
1701
+ if (transferable === void 0) {
1702
+ transferable = true;
1703
+ }
1704
+ if (pidx === void 0) {
1705
+ pidx = 0;
1706
+ }
1707
+ if (ridx === void 0) {
1708
+ ridx = 0;
1709
+ }
1710
+ if (kidx === void 0) {
1711
+ kidx = 0;
1712
+ }
1713
+ if (temp === void 0) {
1714
+ temp = false;
1715
+ }
1716
+ var signers = new Array();
1717
+ var paths = new Array();
1718
+ if (codes == undefined) {
1719
+ codes = new Array(count).fill(code);
1720
+ }
1721
+ codes.forEach(function (code, idx) {
1722
+ var path = _this.stem + pidx.toString(16) + ridx.toString(16) + (kidx + idx).toString(16);
1723
+ signers.push(_this.salter.signer(code, transferable, path, _this.tier, temp));
1724
+ paths.push(path);
1725
+ });
1726
+ return new Keys(signers, paths);
1727
+ };
1728
+ _createClass(SaltyCreator, [{
1729
+ key: "salt",
1730
+ get: function get() {
1731
+ return this.salter.qb64;
1732
+ }
1733
+ }, {
1734
+ key: "stem",
1735
+ get: function get() {
1736
+ return this._stem;
1737
+ }
1738
+ }, {
1739
+ key: "tier",
1740
+ get: function get() {
1741
+ return this.salter.tier;
1742
+ }
1743
+ }]);
1744
+ return SaltyCreator;
1745
+ }();
1746
+ var Creatory = /*#__PURE__*/function () {
1747
+ function Creatory(algo) {
1748
+ if (algo === void 0) {
1749
+ algo = Algos.salty;
1750
+ }
1751
+ switch (algo) {
1752
+ case Algos.randy:
1753
+ this._make = this._makeRandy;
1754
+ break;
1755
+ case Algos.salty:
1756
+ this._make = this._makeSalty;
1757
+ break;
1758
+ default:
1759
+ throw new Error("unsupported algo=" + algo);
1760
+ }
1761
+ }
1762
+ var _proto3 = Creatory.prototype;
1763
+ _proto3.make = function make() {
1764
+ return this._make.apply(this, arguments);
1765
+ };
1766
+ _proto3._makeRandy = function _makeRandy() {
1767
+ return new RandyCreator();
1768
+ };
1769
+ _proto3._makeSalty = function _makeSalty() {
1770
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
1771
+ args[_key] = arguments[_key];
1772
+ }
1773
+ return _construct(SaltyCreator, args);
1774
+ };
1775
+ return Creatory;
1776
+ }();
1777
+ var Manager = /*#__PURE__*/function () {
1778
+ function Manager(_ref) {
1779
+ var ks = _ref.ks,
1780
+ seed = _ref.seed,
1781
+ aeid = _ref.aeid,
1782
+ pidx = _ref.pidx,
1783
+ algo = _ref.algo,
1784
+ salt = _ref.salt,
1785
+ tier = _ref.tier;
1786
+ this._ks = ks == undefined ? new Keeper() : ks;
1787
+ this._seed = seed;
1788
+ this._encrypter = undefined;
1789
+ this._decrypter = undefined;
1790
+ aeid = aeid == undefined ? undefined : aeid;
1791
+ pidx = pidx == undefined ? 0 : pidx;
1792
+ algo = algo == undefined ? Algos.salty : algo;
1793
+ if (salt == undefined) {
1794
+ salt = new Salter({}).qb64;
1795
+ } else {
1796
+ if (new Salter({
1797
+ qb64: salt
1798
+ }).qb64 != salt) {
1799
+ throw new Error("Invalid qb64 for salt=" + salt + ".");
1800
+ }
1801
+ }
1802
+ tier = tier == undefined ? "low" /* low */ : tier;
1803
+ if (this.pidx == undefined) {
1804
+ this.pidx = pidx;
1805
+ }
1806
+ if (this.algo == undefined) {
1807
+ this.algo = algo;
1808
+ }
1809
+ if (this.salt == undefined) {
1810
+ this.salt = salt;
1811
+ }
1812
+ if (this.tier == undefined) {
1813
+ this.tier = tier;
1814
+ }
1815
+ if (this.aeid == undefined) {
1816
+ this.updateAeid(aeid, this._seed);
1817
+ }
1818
+ }
1819
+ var _proto4 = Manager.prototype;
1820
+ _proto4.updateAeid = function updateAeid(aeid, seed) {
1821
+ if (this.aeid != undefined) {
1822
+ var _this$_encrypter;
1823
+ var _seed = b(this._seed);
1824
+ if (this._seed == undefined || !((_this$_encrypter = this._encrypter) != null && _this$_encrypter.verifySeed(_seed))) {
1825
+ throw new Error("Last seed missing or provided last seed \"\n \"not associated with last aeid=" + this.aeid + ".");
1826
+ }
1827
+ }
1828
+ if (aeid != "" && aeid != undefined) {
1829
+ if (aeid != this.aeid) {
1830
+ this._encrypter = new Encrypter({}, b(aeid));
1831
+ if (seed == undefined || !this._encrypter.verifySeed(b(seed))) {
1832
+ throw new Error("Seed missing or provided seed not associated\"\n \" with provided aeid=" + aeid + ".");
1833
+ }
1834
+ }
1835
+ } else if (this.algo == Algos.randy) {
1836
+ // Unlike KERIpy, we don't support unencrypted secrets
1837
+ throw new Error("Invalid Manager configuration, encryption must be used with Randy key creation.");
1838
+ } else {
1839
+ this._encrypter = undefined;
1840
+ }
1841
+ var salt = this.salt;
1842
+ if (salt != undefined) {
1843
+ this.salt = salt;
1844
+ }
1845
+ if (this._decrypter != undefined) {
1846
+ for (var _iterator = _createForOfIteratorHelperLoose(this.ks.prmsElements()), _step; !(_step = _iterator()).done;) {
1847
+ var _step$value = _step.value,
1848
+ keys = _step$value[0],
1849
+ data = _step$value[1];
1850
+ if (data.salt != undefined) {
1851
+ var salter = this._decrypter.decrypt(b(data.salt));
1852
+ data.salt = this._encrypter == undefined ? salter.qb64 : this._encrypter.encrypt(null, salter);
1853
+ this.ks.pinPrms(keys, data);
1854
+ }
1855
+ }
1856
+ for (var _iterator2 = _createForOfIteratorHelperLoose(this.ks.prisElements(this._decrypter)), _step2; !(_step2 = _iterator2()).done;) {
1857
+ var _step2$value = _step2.value,
1858
+ pubKey = _step2$value[0],
1859
+ signer = _step2$value[1];
1860
+ this.ks.pinPris(pubKey, signer, this._encrypter);
1861
+ }
1862
+ }
1863
+ this.ks.pinGbls("aeid", aeid); // set aeid in db
1864
+ this._seed = seed; // set .seed in memory
1865
+ // update .decrypter
1866
+ this._decrypter = seed != undefined ? new Decrypter({}, b(seed)) : undefined;
1867
+ };
1868
+ _proto4.incept = function incept(_ref2) {
1869
+ var _this2 = this;
1870
+ var _ref2$icodes = _ref2.icodes,
1871
+ icodes = _ref2$icodes === void 0 ? undefined : _ref2$icodes,
1872
+ _ref2$icount = _ref2.icount,
1873
+ icount = _ref2$icount === void 0 ? 1 : _ref2$icount,
1874
+ _ref2$icode = _ref2.icode,
1875
+ icode = _ref2$icode === void 0 ? MtrDex.Ed25519_Seed : _ref2$icode,
1876
+ _ref2$ncodes = _ref2.ncodes,
1877
+ ncodes = _ref2$ncodes === void 0 ? undefined : _ref2$ncodes,
1878
+ _ref2$ncount = _ref2.ncount,
1879
+ ncount = _ref2$ncount === void 0 ? 1 : _ref2$ncount,
1880
+ _ref2$ncode = _ref2.ncode,
1881
+ ncode = _ref2$ncode === void 0 ? MtrDex.Ed25519_Seed : _ref2$ncode,
1882
+ _ref2$dcode = _ref2.dcode,
1883
+ dcode = _ref2$dcode === void 0 ? MtrDex.Blake3_256 : _ref2$dcode,
1884
+ _ref2$algo = _ref2.algo,
1885
+ algo = _ref2$algo === void 0 ? undefined : _ref2$algo,
1886
+ _ref2$salt = _ref2.salt,
1887
+ salt = _ref2$salt === void 0 ? undefined : _ref2$salt,
1888
+ _ref2$stem = _ref2.stem,
1889
+ stem = _ref2$stem === void 0 ? undefined : _ref2$stem,
1890
+ _ref2$tier = _ref2.tier,
1891
+ tier = _ref2$tier === void 0 ? undefined : _ref2$tier,
1892
+ _ref2$rooted = _ref2.rooted,
1893
+ rooted = _ref2$rooted === void 0 ? true : _ref2$rooted,
1894
+ _ref2$transferable = _ref2.transferable,
1895
+ transferable = _ref2$transferable === void 0 ? true : _ref2$transferable,
1896
+ _ref2$temp = _ref2.temp,
1897
+ temp = _ref2$temp === void 0 ? false : _ref2$temp;
1898
+ if (rooted && algo == undefined) {
1899
+ algo = this.algo;
1900
+ }
1901
+ if (rooted && salt == undefined) {
1902
+ salt = this.salt;
1903
+ }
1904
+ if (rooted && tier == undefined) {
1905
+ tier = this.tier;
1906
+ }
1907
+ var pidx = this.pidx;
1908
+ var ridx = 0;
1909
+ var kidx = 0;
1910
+ var creator = new Creatory(algo).make(salt, tier, stem);
1911
+ if (icodes == undefined) {
1912
+ if (icount < 0) {
1913
+ throw new Error("Invalid icount=" + icount + " must be >= 0.");
1914
+ }
1915
+ icodes = new Array(icount).fill(icode);
1916
+ }
1917
+ var ikeys = creator.create(icodes, 0, MtrDex.Ed25519_Seed, transferable, pidx, ridx, kidx, temp);
1918
+ var verfers = Array.from(ikeys.signers, function (signer) {
1919
+ return signer.verfer;
1920
+ });
1921
+ if (ncodes == undefined) {
1922
+ if (ncount < 0) {
1923
+ throw new Error("Invalid ncount=" + ncount + " must be >= 0.");
1924
+ }
1925
+ ncodes = new Array(ncount).fill(ncode);
1926
+ }
1927
+ var nkeys = creator.create(ncodes, 0, MtrDex.Ed25519_Seed, transferable, pidx, ridx + 1, kidx + icodes.length, temp);
1928
+ var digers = Array.from(nkeys.signers, function (signer) {
1929
+ return new Diger({
1930
+ code: dcode
1931
+ }, signer.verfer.qb64b);
1932
+ });
1933
+ var pp = new PrePrm();
1934
+ pp.pidx = pidx;
1935
+ pp.algo = algo;
1936
+ pp.salt = creator.salt.length == 0 || this.encrypter == undefined ? "" : this.encrypter.encrypt(b(creator.salt)).qb64;
1937
+ pp.stem = creator.stem;
1938
+ pp.tier = creator.tier;
1939
+ var dt = new Date().toString();
1940
+ var nw = new PubLot();
1941
+ nw.pubs = Array.from(verfers, function (verfer) {
1942
+ return verfer.qb64;
1943
+ });
1944
+ nw.ridx = ridx;
1945
+ nw.kidx = kidx;
1946
+ nw.dt = dt;
1947
+ var nt = new PubLot();
1948
+ nt.pubs = Array.from(nkeys.signers, function (signer) {
1949
+ return signer.verfer.qb64;
1950
+ });
1951
+ nt.ridx = ridx + 1;
1952
+ nt.kidx = kidx + icodes.length;
1953
+ nt.dt = dt;
1954
+ var ps = new PreSit();
1955
+ ps["new"] = nw;
1956
+ ps.nxt = nt;
1957
+ var pre = verfers[0].qb64;
1958
+ if (!this.ks.putPres(pre, verfers[0].qb64b)) {
1959
+ throw new Error("Already incepted pre=" + pre + ".");
1960
+ }
1961
+ if (!this.ks.putPrms(pre, pp)) {
1962
+ throw new Error("Already incepted prm for pre=" + pre + ".");
1963
+ }
1964
+ this.pidx = pidx + 1;
1965
+ if (!this.ks.putSits(pre, ps)) {
1966
+ throw new Error("Already incepted sit for pre=" + pre + ".");
1967
+ }
1968
+ if (this.encrypter != undefined) {
1969
+ // Only store encrypted keys if we have an encrypter, otherwise regenerate
1970
+ ikeys.signers.forEach(function (signer) {
1971
+ _this2.ks.putPris(signer.verfer.qb64, signer, _this2.encrypter);
1972
+ });
1973
+ nkeys.signers.forEach(function (signer) {
1974
+ _this2.ks.putPris(signer.verfer.qb64, signer, _this2.encrypter);
1975
+ });
1976
+ } else if (this._encrypter == undefined && ikeys.paths != undefined && nkeys.paths != undefined) {
1977
+ ikeys.paths.forEach(function (path, idx) {
1978
+ var signer = ikeys.signers[idx];
1979
+ var ppt = new PubPath();
1980
+ ppt.path = path;
1981
+ ppt.code = icodes[idx];
1982
+ ppt.tier = pp.tier;
1983
+ ppt.temp = temp;
1984
+ _this2.ks.putPths(signer.verfer.qb64, ppt);
1985
+ });
1986
+ nkeys.paths.forEach(function (path, idx) {
1987
+ var signer = nkeys.signers[idx];
1988
+ var ppt = new PubPath();
1989
+ ppt.path = path;
1990
+ ppt.code = ncodes[idx];
1991
+ ppt.tier = pp.tier;
1992
+ ppt.temp = temp;
1993
+ _this2.ks.putPths(signer.verfer.qb64, ppt);
1994
+ });
1995
+ } else {
1996
+ throw new Error("invalid configuration, randy keys without encryption");
1997
+ }
1998
+ var pubSet = new PubSet();
1999
+ pubSet.pubs = ps["new"].pubs;
2000
+ this.ks.putPubs(riKey(pre, ridx), pubSet);
2001
+ var nxtPubSet = new PubSet();
2002
+ nxtPubSet.pubs = ps.nxt.pubs;
2003
+ this.ks.putPubs(riKey(pre, ridx + 1), nxtPubSet);
2004
+ return [verfers, digers];
2005
+ };
2006
+ _proto4.move = function move(old, gnu) {
2007
+ if (old == gnu) {
2008
+ return;
2009
+ }
2010
+ if (this.ks.getPres(old) == undefined) {
2011
+ throw new Error("Nonexistent old pre=" + old + ", nothing to assign.");
2012
+ }
2013
+ if (this.ks.getPres(gnu) != undefined) {
2014
+ throw new Error("Preexistent new pre=" + gnu + " may not clobber.");
2015
+ }
2016
+ var oldprm = this.ks.getPrms(old);
2017
+ if (oldprm == undefined) {
2018
+ throw new Error("Nonexistent old prm for pre=" + old + ", nothing to move.");
2019
+ }
2020
+ if (this.ks.getPrms(gnu) != undefined) {
2021
+ throw new Error("Preexistent new prm for pre=" + gnu + " may not clobber.");
2022
+ }
2023
+ var oldsit = this.ks.getSits(old);
2024
+ if (oldsit == undefined) {
2025
+ throw new Error("Nonexistent old sit for pre=" + old + ", nothing to move.");
2026
+ }
2027
+ if (this.ks.getSits(gnu) != undefined) {
2028
+ throw new Error("Preexistent new sit for pre=" + gnu + " may not clobber.");
2029
+ }
2030
+ if (!this.ks.putPrms(gnu, oldprm)) {
2031
+ throw new Error("Failed moving prm from old pre=" + old + " to new pre=" + gnu + ".");
2032
+ } else {
2033
+ this.ks.remPrms(old);
2034
+ }
2035
+ if (!this.ks.putSits(gnu, oldsit)) {
2036
+ throw new Error("Failed moving sit from old pre=" + old + " to new pre=" + gnu + ".");
2037
+ } else {
2038
+ this.ks.remSits(old);
2039
+ }
2040
+ var i = 0;
2041
+ while (true) {
2042
+ var pl = this.ks.getPubs(riKey(old, i));
2043
+ if (pl == undefined) {
2044
+ break;
2045
+ }
2046
+ if (!this.ks.putPubs(riKey(gnu, i), pl)) {
2047
+ throw new Error("Failed moving pubs at pre=" + old + " ri=" + i + " to new pre=" + gnu);
2048
+ }
2049
+ i = i + 1;
2050
+ }
2051
+ if (!this.ks.pinPres(old, b(gnu))) {
2052
+ throw new Error("Failed assiging new pre=" + gnu + " to old pre=" + old + ".");
2053
+ }
2054
+ if (!this.ks.putPres(gnu, b(gnu))) {
2055
+ throw new Error("Failed assiging new pre=" + gnu + ".");
2056
+ }
2057
+ };
2058
+ _proto4.rotate = function rotate(_ref3) {
2059
+ var _this3 = this;
2060
+ var pre = _ref3.pre,
2061
+ _ref3$ncodes = _ref3.ncodes,
2062
+ ncodes = _ref3$ncodes === void 0 ? undefined : _ref3$ncodes,
2063
+ _ref3$ncount = _ref3.ncount,
2064
+ ncount = _ref3$ncount === void 0 ? 1 : _ref3$ncount,
2065
+ _ref3$ncode = _ref3.ncode,
2066
+ ncode = _ref3$ncode === void 0 ? MtrDex.Ed25519_Seed : _ref3$ncode,
2067
+ _ref3$dcode = _ref3.dcode,
2068
+ dcode = _ref3$dcode === void 0 ? MtrDex.Blake3_256 : _ref3$dcode,
2069
+ _ref3$transferable = _ref3.transferable,
2070
+ transferable = _ref3$transferable === void 0 ? true : _ref3$transferable,
2071
+ _ref3$temp = _ref3.temp,
2072
+ temp = _ref3$temp === void 0 ? false : _ref3$temp,
2073
+ _ref3$erase = _ref3.erase,
2074
+ erase = _ref3$erase === void 0 ? true : _ref3$erase;
2075
+ var pp = this.ks.getPrms(pre);
2076
+ if (pp == undefined) {
2077
+ throw new Error("Attempt to rotate nonexistent pre=" + pre + ".");
2078
+ }
2079
+ var ps = this.ks.getSits(pre);
2080
+ if (ps == undefined) {
2081
+ throw new Error("Attempt to rotate nonexistent pre=" + pre + ".");
2082
+ }
2083
+ if (ps.nxt.pubs == undefined || ps.nxt.pubs.length == 0) {
2084
+ throw new Error("Attempt to rotate nontransferable pre=" + pre + ".");
2085
+ }
2086
+ var old = ps.old;
2087
+ ps.old = ps["new"];
2088
+ ps["new"] = ps.nxt;
2089
+ if (this.aeid != undefined && this.decrypter == undefined) {
2090
+ throw new Error("Unauthorized decryption attempt. Aeid but no decrypter.");
2091
+ }
2092
+ var verfers = new Array();
2093
+ ps["new"].pubs.forEach(function (pub) {
2094
+ if (_this3.decrypter != undefined) {
2095
+ var signer = _this3.ks.getPris(pub, _this3.decrypter);
2096
+ if (signer == undefined) {
2097
+ throw new Error("Missing prikey in db for pubkey=" + pub);
2098
+ }
2099
+ verfers.push(signer.verfer);
2100
+ } else {
2101
+ // Should we regenerate from salt here since this.decryptor is undefined
2102
+ verfers.push(new Verfer({
2103
+ qb64: pub
2104
+ }));
2105
+ }
2106
+ });
2107
+ var salt = pp.salt;
2108
+ if (salt != undefined && salt != "") {
2109
+ // If you provded a Salt for an AID but don't have encryption, pitch a fit
2110
+ if (this.decrypter == undefined) {
2111
+ throw new Error("Invalid configuration: AID salt with no encryption");
2112
+ }
2113
+ salt = this.decrypter.decrypt(b(salt)).qb64;
2114
+ } else {
2115
+ salt = this.salt;
2116
+ }
2117
+ var creator = new Creatory(pp.algo).make(salt, pp.tier, pp.stem);
2118
+ if (ncodes == undefined) {
2119
+ if (ncount < 0) {
2120
+ throw new Error("Invalid count=" + ncount + " must be >= 0");
2121
+ }
2122
+ ncodes = new Array(ncount).fill(ncode);
2123
+ }
2124
+ var pidx = pp.pidx;
2125
+ var ridx = ps["new"].ridx + 1;
2126
+ var kidx = ps.nxt.kidx + ps["new"].pubs.length;
2127
+ var keys = creator.create(ncodes, 0, "", transferable, pidx, ridx, kidx, temp);
2128
+ var digers = Array.from(keys.signers, function (signer) {
2129
+ return new Diger({
2130
+ code: dcode
2131
+ }, signer.verfer.qb64b);
2132
+ });
2133
+ var dt = new Date().toString();
2134
+ ps.nxt = new PubLot();
2135
+ ps.nxt.pubs = Array.from(keys.signers, function (signer) {
2136
+ return signer.verfer.qb64;
2137
+ });
2138
+ ps.nxt.ridx = ridx;
2139
+ ps.nxt.kidx = kidx;
2140
+ ps.nxt.dt = dt;
2141
+ if (!this.ks.pinSits(pre, ps)) {
2142
+ throw new Error("Problem updating pubsit db for pre=" + pre + ".");
2143
+ }
2144
+ if (this.encrypter != undefined) {
2145
+ // Only store encrypted keys if we have an encrypter, otherwise regenerate
2146
+ keys.signers.forEach(function (signer) {
2147
+ _this3.ks.putPris(signer.verfer.qb64, signer, _this3.encrypter);
2148
+ });
2149
+ } else if (this._encrypter == undefined && keys.paths != undefined) {
2150
+ keys.paths.forEach(function (path, idx) {
2151
+ var signer = keys.signers[idx];
2152
+ var ppt = new PubPath();
2153
+ ppt.path = path;
2154
+ ppt.tier = pp.tier;
2155
+ ppt.temp = temp;
2156
+ _this3.ks.putPths(signer.verfer.qb64, ppt);
2157
+ });
2158
+ } else {
2159
+ throw new Error("invalid configuration, randy keys without encryption");
2160
+ }
2161
+ var newPs = new PubSet();
2162
+ newPs.pubs = ps.nxt.pubs;
2163
+ this.ks.putPubs(riKey(pre, ps.nxt.ridx), newPs);
2164
+ if (erase) {
2165
+ old.pubs.forEach(function (pub) {
2166
+ _this3.ks.remPris(pub);
2167
+ });
2168
+ }
2169
+ return [verfers, digers];
2170
+ };
2171
+ _proto4.sign = function sign(_ref4) {
2172
+ var _this4 = this;
2173
+ var ser = _ref4.ser,
2174
+ _ref4$pubs = _ref4.pubs,
2175
+ pubs = _ref4$pubs === void 0 ? undefined : _ref4$pubs,
2176
+ _ref4$verfers = _ref4.verfers,
2177
+ verfers = _ref4$verfers === void 0 ? undefined : _ref4$verfers,
2178
+ _ref4$indexed = _ref4.indexed,
2179
+ indexed = _ref4$indexed === void 0 ? true : _ref4$indexed,
2180
+ _ref4$indices = _ref4.indices,
2181
+ indices = _ref4$indices === void 0 ? undefined : _ref4$indices,
2182
+ _ref4$ondices = _ref4.ondices,
2183
+ ondices = _ref4$ondices === void 0 ? undefined : _ref4$ondices;
2184
+ var signers = new Array();
2185
+ if (pubs == undefined && verfers == undefined) {
2186
+ throw new Error("pubs or verfers required");
2187
+ }
2188
+ if (pubs != undefined) {
2189
+ if (this.aeid != undefined && this.decrypter == undefined) {
2190
+ throw new Error("Unauthorized decryption attempt. Aeid but no decrypter.");
2191
+ }
2192
+ pubs.forEach(function (pub) {
2193
+ //If no decrypter then get SaltyState and regenerate prikey
2194
+ if (_this4.decrypter != undefined) {
2195
+ var signer = _this4.ks.getPris(pub, _this4.decrypter);
2196
+ if (signer == undefined) {
2197
+ throw new Error("Missing prikey in db for pubkey=" + pub);
2198
+ }
2199
+ signers.push(signer);
2200
+ } else {
2201
+ var verfer = new Verfer({
2202
+ qb64: pub
2203
+ });
2204
+ var ppt = _this4.ks.getPths(pub);
2205
+ if (ppt == undefined) {
2206
+ throw new Error("Missing prikey in db for pubkey=" + pub);
2207
+ }
2208
+ var salter = new Salter({
2209
+ qb64: _this4.salt
2210
+ });
2211
+ signers.push(salter.signer(ppt.code, verfer.transferable, ppt.path, ppt.tier, ppt.temp));
2212
+ }
2213
+ });
2214
+ } else {
2215
+ verfers.forEach(function (verfer) {
2216
+ if (_this4.decrypter != undefined) {
2217
+ var signer = _this4.ks.getPris(verfer.qb64, _this4.decrypter);
2218
+ if (signer == undefined) {
2219
+ throw new Error("Missing prikey in db for pubkey=" + verfer.qb64);
2220
+ }
2221
+ signers.push(signer);
2222
+ } else {
2223
+ var ppt = _this4.ks.getPths(verfer.qb64);
2224
+ if (ppt == undefined) {
2225
+ throw new Error("Missing prikey in db for pubkey=" + verfer.qb64);
2226
+ }
2227
+ var salter = new Salter({
2228
+ qb64: _this4.salt
2229
+ });
2230
+ signers.push(salter.signer(ppt.code, verfer.transferable, ppt.path, ppt.tier, ppt.temp));
2231
+ }
2232
+ });
2233
+ }
2234
+ if (indices != undefined && indices.length != signers.length) {
2235
+ throw new Error("Mismatch indices length=" + indices.length + " and resultant signers length=" + signers.length);
2236
+ }
2237
+ if (ondices != undefined && ondices.length != signers.length) {
2238
+ throw new Error("Mismatch ondices length=" + ondices.length + " and resultant signers length=" + signers.length);
2239
+ }
2240
+ if (indexed) {
2241
+ var sigers = new Array();
2242
+ signers.forEach(function (signer, idx) {
2243
+ var i;
2244
+ if (indices != undefined) {
2245
+ i = indices[idx];
2246
+ if (i < 0) {
2247
+ throw new Error("Invalid signing index = " + i + ", not whole number.");
2248
+ }
2249
+ } else {
2250
+ i = idx;
2251
+ }
2252
+ var o;
2253
+ if (ondices != undefined) {
2254
+ o = ondices[idx];
2255
+ if (o <= 0) {
2256
+ throw new Error("Invalid other signing index = {o}, not None or not whole number.");
2257
+ }
2258
+ } else {
2259
+ o = i;
2260
+ }
2261
+ var only = o == undefined;
2262
+ sigers.push(signer.sign(ser, i, only, o));
2263
+ });
2264
+ return sigers;
2265
+ } else {
2266
+ var cigars = new Array();
2267
+ signers.forEach(function (signer) {
2268
+ cigars.push(signer.sign(ser));
2269
+ });
2270
+ return cigars;
2271
+ }
2272
+ };
2273
+ _createClass(Manager, [{
2274
+ key: "ks",
2275
+ get: function get() {
2276
+ return this._ks;
2277
+ }
2278
+ }, {
2279
+ key: "encrypter",
2280
+ get: function get() {
2281
+ return this._encrypter;
2282
+ }
2283
+ }, {
2284
+ key: "decrypter",
2285
+ get: function get() {
2286
+ return this._decrypter;
2287
+ }
2288
+ }, {
2289
+ key: "seed",
2290
+ get: function get() {
2291
+ return this._seed;
2292
+ }
2293
+ }, {
2294
+ key: "aeid",
2295
+ get: function get() {
2296
+ return this.ks.getGbls('aeid');
2297
+ }
2298
+ }, {
2299
+ key: "pidx",
2300
+ get: function get() {
2301
+ var pidx = this.ks.getGbls('pidx');
2302
+ if (pidx != undefined) {
2303
+ return parseInt(pidx, 16);
2304
+ }
2305
+ return undefined;
2306
+ },
2307
+ set: function set(pidx) {
2308
+ this.ks.pinGbls('pidx', pidx.toString(16));
2309
+ }
2310
+ }, {
2311
+ key: "salt",
2312
+ get: function get() {
2313
+ if (this._decrypter == undefined) {
2314
+ return this._salt;
2315
+ } else {
2316
+ var salt = this.ks.getGbls('salt');
2317
+ return this._decrypter.decrypt(b(salt)).qb64;
2318
+ }
2319
+ },
2320
+ set: function set(salt) {
2321
+ if (this._encrypter == undefined) {
2322
+ this._salt = salt;
2323
+ } else {
2324
+ salt = this._encrypter.encrypt(b(salt)).qb64;
2325
+ this.ks.pinGbls('salt', salt);
2326
+ }
2327
+ }
2328
+ }, {
2329
+ key: "tier",
2330
+ get: function get() {
2331
+ return this.ks.getGbls('tier');
2332
+ },
2333
+ set: function set(tier) {
2334
+ this.ks.pinGbls('tier', tier);
2335
+ }
2336
+ }, {
2337
+ key: "algo",
2338
+ get: function get() {
2339
+ var a = this.ks.getGbls('algo');
2340
+ var ta = a;
2341
+ return Algos[ta];
2342
+ },
2343
+ set: function set(algo) {
2344
+ this.ks.pinGbls('algo', algo);
2345
+ }
2346
+ }]);
2347
+ return Manager;
2348
+ }();
2349
+ function riKey(pre, ridx) {
2350
+ return pre + "." + ridx.toString(16).padStart(32, '0');
2351
+ }
2352
+ /*
2353
+ In memory test implementation of Keeper key store
2354
+ */
2355
+ var Keeper = /*#__PURE__*/function () {
2356
+ function Keeper() {
2357
+ this._gbls = new Map();
2358
+ this._pris = new Map();
2359
+ this._pths = new Map();
2360
+ this._pres = new Map();
2361
+ this._prms = new Map();
2362
+ this._sits = new Map();
2363
+ this._pubs = new Map();
2364
+ }
2365
+ var _proto5 = Keeper.prototype;
2366
+ _proto5.getGbls = function getGbls(key) {
2367
+ return this._gbls.get(key);
2368
+ };
2369
+ _proto5.pinGbls = function pinGbls(key, val) {
2370
+ this._gbls.set(key, val);
2371
+ };
2372
+ _proto5.prmsElements = function prmsElements() {
2373
+ var out = new Array();
2374
+ this._prms.forEach(function (value, key) {
2375
+ out.push([key, value]);
2376
+ });
2377
+ return out;
2378
+ };
2379
+ _proto5.getPrms = function getPrms(keys) {
2380
+ return this._prms.get(keys);
2381
+ };
2382
+ _proto5.pinPrms = function pinPrms(keys, data) {
2383
+ this._prms.set(keys, data);
2384
+ };
2385
+ _proto5.putPrms = function putPrms(keys, data) {
2386
+ if (this._prms.has(keys)) {
2387
+ return false;
2388
+ }
2389
+ this._prms.set(keys, data);
2390
+ return true;
2391
+ };
2392
+ _proto5.remPrms = function remPrms(keys) {
2393
+ return this._prms["delete"](keys);
2394
+ };
2395
+ _proto5.prisElements = function prisElements(decrypter) {
2396
+ var out = new Array();
2397
+ this._pris.forEach(function (val, pubKey) {
2398
+ var verfer = new Verfer({
2399
+ qb64: pubKey
2400
+ });
2401
+ var signer = decrypter.decrypt(val, null, verfer.transferable);
2402
+ out.push([pubKey, signer]);
2403
+ });
2404
+ return out;
2405
+ };
2406
+ _proto5.pinPris = function pinPris(pubKey, signer, encrypter) {
2407
+ var cipher = encrypter.encrypt(null, signer);
2408
+ this._pris.set(pubKey, cipher.qb64b);
2409
+ };
2410
+ _proto5.putPris = function putPris(pubKey, signer, encrypter) {
2411
+ if (this._pris.has(pubKey)) {
2412
+ return false;
2413
+ }
2414
+ var cipher = encrypter.encrypt(null, signer);
2415
+ this._pris.set(pubKey, cipher.qb64b);
2416
+ return true;
2417
+ };
2418
+ _proto5.getPris = function getPris(pubKey, decrypter) {
2419
+ var val = this._pris.get(pubKey);
2420
+ if (val == undefined) {
2421
+ return undefined;
2422
+ }
2423
+ var verfer = new Verfer({
2424
+ qb64: pubKey
2425
+ });
2426
+ return decrypter.decrypt(val, null, verfer.transferable);
2427
+ };
2428
+ _proto5.pinPths = function pinPths(pubKey, val) {
2429
+ this._pths.set(pubKey, val);
2430
+ return true;
2431
+ };
2432
+ _proto5.putPths = function putPths(pubKey, val) {
2433
+ if (this._pths.has(pubKey)) {
2434
+ return false;
2435
+ }
2436
+ this._pths.set(pubKey, val);
2437
+ return true;
2438
+ };
2439
+ _proto5.getPths = function getPths(pubKey) {
2440
+ return this._pths.get(pubKey);
2441
+ };
2442
+ _proto5.remPris = function remPris(pubKey) {
2443
+ this._pris["delete"](pubKey);
2444
+ };
2445
+ _proto5.getPres = function getPres(pre) {
2446
+ return this._pres.get(pre);
2447
+ };
2448
+ _proto5.pinPres = function pinPres(pre, val) {
2449
+ this._pres.set(pre, val);
2450
+ return true;
2451
+ };
2452
+ _proto5.putPres = function putPres(pre, val) {
2453
+ if (this._pres.has(pre)) {
2454
+ return false;
2455
+ }
2456
+ this._pres.set(pre, val);
2457
+ return true;
2458
+ };
2459
+ _proto5.getSits = function getSits(keys) {
2460
+ return this._sits.get(keys);
2461
+ };
2462
+ _proto5.putSits = function putSits(pre, val) {
2463
+ if (this._sits.has(pre)) {
2464
+ return false;
2465
+ }
2466
+ this._sits.set(pre, val);
2467
+ return true;
2468
+ };
2469
+ _proto5.pinSits = function pinSits(pre, val) {
2470
+ this._sits.set(pre, val);
2471
+ return true;
2472
+ };
2473
+ _proto5.remSits = function remSits(keys) {
2474
+ return this._sits["delete"](keys);
2475
+ };
2476
+ _proto5.getPubs = function getPubs(keys) {
2477
+ return this._pubs.get(keys);
2478
+ };
2479
+ _proto5.putPubs = function putPubs(keys, data) {
2480
+ if (this._pubs.has(keys)) {
2481
+ return false;
2482
+ }
2483
+ this._pubs.set(keys, data);
2484
+ return true;
2485
+ };
2486
+ return Keeper;
2487
+ }();
2488
+
2489
+ var Tholder = /*#__PURE__*/function () {
2490
+ function Tholder(sith) {
2491
+ this._weighted = false;
2492
+ this._thold = 0;
2493
+ this._size = 0;
2494
+ this._sith = "";
2495
+ this._limen = new Array();
2496
+ this.processSith(sith);
2497
+ }
2498
+ var _proto = Tholder.prototype;
2499
+ _proto.processSith = function processSith(sith) {
2500
+ if (typeof sith == "string") {
2501
+ this._sith = sith;
2502
+ this._thold = parseInt(sith);
2503
+ } else if (typeof sith == "number") {
2504
+ this._thold = sith;
2505
+ this._size = this._thold;
2506
+ } else {
2507
+ this._limen = sith;
2508
+ this._size = this._limen.length;
2509
+ }
2510
+ };
2511
+ _createClass(Tholder, [{
2512
+ key: "num",
2513
+ get: function get() {
2514
+ return this._weighted ? undefined : this._thold;
2515
+ }
2516
+ }, {
2517
+ key: "size",
2518
+ get: function get() {
2519
+ return this._size;
2520
+ }
2521
+ }, {
2522
+ key: "thold",
2523
+ get: function get() {
2524
+ return this._thold;
2525
+ }
2526
+ }, {
2527
+ key: "weighted",
2528
+ get: function get() {
2529
+ return this._weighted;
2530
+ }
2531
+ }, {
2532
+ key: "sith",
2533
+ get: function get() {
2534
+ if (this.weighted) {
2535
+ if (this._sith == "") {
2536
+ return "" + this._limen;
2537
+ }
2538
+ return this._sith;
2539
+ } else {
2540
+ return this.thold.toString(16);
2541
+ }
2542
+ }
2543
+ }]);
2544
+ return Tholder;
2545
+ }();
2546
+
2547
+ var PNumber = /*#__PURE__*/function () {
2548
+ function PNumber(num, numh) {
2549
+ this._num = 0;
2550
+ // TODO: Implelment logic
2551
+ if (typeof num == "number") {
2552
+ this._num = num;
2553
+ } else if (numh != undefined) {
2554
+ this._num = parseInt(numh, 16);
2555
+ }
2556
+ }
2557
+ _createClass(PNumber, [{
2558
+ key: "num",
2559
+ get: function get() {
2560
+ return this._num;
2561
+ }
2562
+ }, {
2563
+ key: "numh",
2564
+ get: function get() {
2565
+ return this._num.toString(16);
2566
+ }
2567
+ }]);
2568
+ return PNumber;
2569
+ }();
2570
+
2571
+ var Serder = /*#__PURE__*/function () {
2572
+ function Serder(ked, kind, code) {
2573
+ if (kind === void 0) {
2574
+ kind = Serials.JSON;
2575
+ }
2576
+ if (code === void 0) {
2577
+ code = MtrDex.Blake3_256;
2578
+ }
2579
+ this._raw = "";
2580
+ this._ked = {};
2581
+ this._ident = Ident.KERI;
2582
+ this._size = 0;
2583
+ this._version = Versionage;
2584
+ this._code = code;
2585
+ this._kind = kind;
2586
+ this.ked = ked;
2587
+ }
2588
+ var _proto = Serder.prototype;
2589
+ _proto._exhale = function _exhale(ked, kind) {
2590
+ return sizeify(ked, kind);
2591
+ };
2592
+ _proto.pretty = function pretty() {
2593
+ return JSON.stringify(this._ked, undefined, 2);
2594
+ };
2595
+ _createClass(Serder, [{
2596
+ key: "ked",
2597
+ get: function get() {
2598
+ return this._ked;
2599
+ },
2600
+ set: function set(ked) {
2601
+ var _this$_exhale = this._exhale(ked, this._kind),
2602
+ raw = _this$_exhale[0],
2603
+ ident = _this$_exhale[1],
2604
+ kind = _this$_exhale[2],
2605
+ kd = _this$_exhale[3],
2606
+ version = _this$_exhale[4];
2607
+ var size = raw.length;
2608
+ this._raw = raw;
2609
+ this._ident = ident;
2610
+ this._ked = kd;
2611
+ this._kind = kind;
2612
+ this._size = size;
2613
+ this._version = version;
2614
+ }
2615
+ }, {
2616
+ key: "code",
2617
+ get: function get() {
2618
+ return this._code;
2619
+ }
2620
+ }, {
2621
+ key: "raw",
2622
+ get: function get() {
2623
+ return this._raw;
2624
+ }
2625
+ }, {
2626
+ key: "kind",
2627
+ get: function get() {
2628
+ return this._kind;
2629
+ }
2630
+ }, {
2631
+ key: "ident",
2632
+ get: function get() {
2633
+ return this._ident;
2634
+ }
2635
+ }, {
2636
+ key: "size",
2637
+ get: function get() {
2638
+ return this._size;
2639
+ }
2640
+ }, {
2641
+ key: "version",
2642
+ get: function get() {
2643
+ return this._version;
2644
+ }
2645
+ }]);
2646
+ return Serder;
2647
+ }();
2648
+ function dumps(ked, kind) {
2649
+ if (kind == Serials.JSON) {
2650
+ return JSON.stringify(ked);
2651
+ } else {
2652
+ throw new Error("unsupported event encoding");
2653
+ }
2654
+ }
2655
+ function sizeify(ked, kind) {
2656
+ if (!("v" in ked)) {
2657
+ throw new Error("Missing or empty version string");
2658
+ }
2659
+ var ident = Ident.KERI;
2660
+ var _deversify = deversify(ked["v"]),
2661
+ knd = _deversify[0],
2662
+ version = _deversify[1];
2663
+ if (version != Versionage) {
2664
+ throw new Error("unsupported version " + version.toString());
2665
+ }
2666
+ if (kind == undefined) {
2667
+ kind = knd;
2668
+ }
2669
+ var raw = dumps(ked, kind);
2670
+ var size = raw.length;
2671
+ ked['v'] = versify(ident, version, kind, size);
2672
+ raw = dumps(ked, kind);
2673
+ return [raw, ident, kind, ked, version];
2674
+ }
2675
+
2676
+ var Dummy = "#";
2677
+ var Prefixer = /*#__PURE__*/function (_Matter) {
2678
+ _inheritsLoose(Prefixer, _Matter);
2679
+ function Prefixer(_ref, ked) {
2680
+ var _this;
2681
+ var raw = _ref.raw,
2682
+ code = _ref.code,
2683
+ qb64b = _ref.qb64b,
2684
+ qb64 = _ref.qb64,
2685
+ qb2 = _ref.qb2;
2686
+ try {
2687
+ _this = _Matter.call(this, {
2688
+ raw: raw,
2689
+ code: code,
2690
+ qb64b: qb64b,
2691
+ qb64: qb64,
2692
+ qb2: qb2
2693
+ }) || this;
2694
+ } catch (e) {
2695
+ if (e instanceof EmptyMaterialError) {
2696
+ if (ked == undefined || code == undefined && !("i" in ked)) {
2697
+ throw e;
2698
+ }
2699
+ if (code == undefined) {
2700
+ _this = _Matter.call(this, {
2701
+ qb64: ked['i'],
2702
+ code: code
2703
+ }) || this;
2704
+ code = _this.code;
2705
+ }
2706
+ var _derive;
2707
+ if (code == MtrDex.Ed25519N) {
2708
+ _derive = Prefixer._derive_ed25519N;
2709
+ } else if (code == MtrDex.Ed25519) {
2710
+ _derive = Prefixer._derive_ed25519;
2711
+ } else if (code == MtrDex.Blake3_256) {
2712
+ _derive = Prefixer._derive_blake3_256;
2713
+ } else {
2714
+ throw new Error("Unsupported code = " + code + " for prefixer.");
2715
+ }
2716
+ var _derive2 = _derive(ked);
2717
+ raw = _derive2[0];
2718
+ code = _derive2[1];
2719
+ _this = _Matter.call(this, {
2720
+ raw: raw,
2721
+ code: code
2722
+ }) || this;
2723
+ _this._derive = _derive;
2724
+ } else {
2725
+ throw e;
2726
+ }
2727
+ }
2728
+ if (_this.code == MtrDex.Ed25519N) {
2729
+ _this._verify = _this._verify_ed25519N;
2730
+ } else if (_this.code == MtrDex.Ed25519) {
2731
+ _this._verify = _this._verify_ed25519;
2732
+ } else if (_this.code == MtrDex.Blake3_256) {
2733
+ _this._verify = _this._verify_blake3_256;
2734
+ } else {
2735
+ throw new Error("Unsupported code = " + code + " for prefixer.");
2736
+ }
2737
+ return _assertThisInitialized(_this);
2738
+ }
2739
+ var _proto = Prefixer.prototype;
2740
+ _proto.derive = function derive(ked) {
2741
+ if (ked["i"] != Ilks.icp) {
2742
+ throw new Error("Non-incepting ilk " + ked['i'] + " for prefix derivation");
2743
+ }
2744
+ return this._derive(ked);
2745
+ };
2746
+ _proto.verify = function verify(ked, prefixed) {
2747
+ if (prefixed === void 0) {
2748
+ prefixed = false;
2749
+ }
2750
+ if (ked["i"] != Ilks.icp) {
2751
+ throw new Error("Non-incepting ilk " + ked['i'] + " for prefix derivation");
2752
+ }
2753
+ return this._verify(ked, this.qb64, prefixed);
2754
+ };
2755
+ Prefixer._derive_ed25519N = function _derive_ed25519N(ked) {
2756
+ var verfer;
2757
+ var keys = ked["k"];
2758
+ if (keys.length != 1) {
2759
+ throw new Error("Basic derivation needs at most 1 key got " + keys.length + " keys instead");
2760
+ }
2761
+ try {
2762
+ verfer = new Verfer({
2763
+ qb64: keys[0]
2764
+ });
2765
+ } catch (e) {
2766
+ throw new Error("Error extracting public key = " + e);
2767
+ }
2768
+ if (!(verfer.code in [MtrDex.Ed25519N])) {
2769
+ throw new Error("Mismatch derivation code = " + verfer.code);
2770
+ }
2771
+ var next = 'n' in ked ? ked['n'] : [];
2772
+ if (verfer.code == MtrDex.Ed25519N && next.length > 0) {
2773
+ throw new Error("Non-empty nxt = " + next + " for non-transferable code = " + verfer.code);
2774
+ }
2775
+ var backers = 'b' in ked ? ked['b'] : [];
2776
+ if (verfer.code == MtrDex.Ed25519N && backers.length > 0) {
2777
+ throw new Error("Non-empty b =" + backers + " for non-transferable code = " + verfer.code);
2778
+ }
2779
+ var anchor = 'a' in ked ? ked['a'] : [];
2780
+ if (verfer.code == MtrDex.Ed25519N && anchor.length > 0) {
2781
+ throw new Error("Non-empty a = " + verfer.code + " for non-transferable code = " + verfer.code);
2782
+ }
2783
+ return [verfer.raw, verfer.code];
2784
+ };
2785
+ Prefixer._derive_ed25519 = function _derive_ed25519(ked) {
2786
+ var verfer;
2787
+ var keys = ked["k"];
2788
+ if (keys.length != 1) {
2789
+ throw new Error("Basic derivation needs at most 1 key got " + keys.length + " keys instead");
2790
+ }
2791
+ try {
2792
+ verfer = new Verfer({
2793
+ qb64: keys[0]
2794
+ });
2795
+ } catch (e) {
2796
+ throw new Error("Error extracting public key = " + e);
2797
+ }
2798
+ if (verfer.code in [MtrDex.Ed25519]) {
2799
+ throw new Error("Mismatch derivation code = " + verfer.code);
2800
+ }
2801
+ return [verfer.raw, verfer.code];
2802
+ };
2803
+ Prefixer._derive_blake3_256 = function _derive_blake3_256(ked) {
2804
+ var kd = ked;
2805
+ var ilk = ked["t"];
2806
+ if (ilk != Ilks.icp) {
2807
+ throw new Error("Invalid ilk = " + ilk + " to derive pre.");
2808
+ }
2809
+ kd["i"] = "".padStart(Matter.Sizes.get(MtrDex.Blake3_256).fs, Dummy);
2810
+ kd["d"] = ked["i"];
2811
+ var _sizeify = sizeify(ked),
2812
+ raw = _sizeify[0];
2813
+ var hasher = createHash();
2814
+ var dig = hasher.update(raw).digest('');
2815
+ return [dig, MtrDex.Blake3_256];
2816
+ };
2817
+ _proto._verify_ed25519N = function _verify_ed25519N(ked, pre, prefixed) {
2818
+ if (prefixed === void 0) {
2819
+ prefixed = false;
2820
+ }
2821
+ try {
2822
+ var keys = ked["k"];
2823
+ if (keys.length != 1) {
2824
+ return false;
2825
+ }
2826
+ if (keys[0] != pre) {
2827
+ return false;
2828
+ }
2829
+ if (prefixed && ked["i"] != pre) {
2830
+ return false;
2831
+ }
2832
+ var next = 'n' in ked ? ked['n'] : [];
2833
+ if (next.length > 0) {
2834
+ // must be empty
2835
+ return false;
2836
+ }
2837
+ } catch (e) {
2838
+ return false;
2839
+ }
2840
+ return true;
2841
+ };
2842
+ _proto._verify_ed25519 = function _verify_ed25519(ked, pre, prefixed) {
2843
+ if (prefixed === void 0) {
2844
+ prefixed = false;
2845
+ }
2846
+ try {
2847
+ var keys = ked["k"];
2848
+ if (keys.length != 1) {
2849
+ return false;
2850
+ }
2851
+ if (keys[0] != pre) {
2852
+ return false;
2853
+ }
2854
+ if (prefixed && ked["i"] != pre) {
2855
+ return false;
2856
+ }
2857
+ } catch (e) {
2858
+ return false;
2859
+ }
2860
+ return true;
2861
+ };
2862
+ _proto._verify_blake3_256 = function _verify_blake3_256(ked, pre, prefixed) {
2863
+ if (prefixed === void 0) {
2864
+ prefixed = false;
2865
+ }
2866
+ try {
2867
+ var _Prefixer$_derive_bla = Prefixer._derive_blake3_256(ked),
2868
+ raw = _Prefixer$_derive_bla[0];
2869
+ var crymat = new Matter({
2870
+ raw: raw,
2871
+ code: MtrDex.Blake3_256
2872
+ });
2873
+ if (crymat.qb64 != pre) {
2874
+ return false;
2875
+ }
2876
+ if (prefixed && ked["i"] != pre) {
2877
+ return false;
2878
+ }
2879
+ } catch (e) {
2880
+ return false;
2881
+ }
2882
+ return true;
2883
+ };
2884
+ return Prefixer;
2885
+ }(Matter);
2886
+
2887
+ var Dummy$1 = "#";
2888
+ var Ids;
2889
+ (function (Ids) {
2890
+ Ids["d"] = "d";
2891
+ })(Ids || (Ids = {}));
2892
+ var Digestage = function Digestage(klas, size, length) {
2893
+ this.klas = undefined;
2894
+ this.size = 0;
2895
+ this.length = 0;
2896
+ this.klas = klas;
2897
+ this.size = size;
2898
+ this.length = length;
2899
+ };
2900
+ var Saider = /*#__PURE__*/function (_Matter) {
2901
+ _inheritsLoose(Saider, _Matter);
2902
+ function Saider(_ref, sad, kind, label) {
2903
+ var _this;
2904
+ var raw = _ref.raw,
2905
+ code = _ref.code,
2906
+ qb64b = _ref.qb64b,
2907
+ qb64 = _ref.qb64,
2908
+ qb2 = _ref.qb2;
2909
+ if (label === void 0) {
2910
+ label = Ids.d;
2911
+ }
2912
+ try {
2913
+ _this = _Matter.call(this, {
2914
+ raw: raw,
2915
+ code: code,
2916
+ qb64b: qb64b,
2917
+ qb64: qb64,
2918
+ qb2: qb2
2919
+ }) || this;
2920
+ } catch (e) {
2921
+ if (e instanceof EmptyMaterialError) {
2922
+ if (sad == undefined || !(label in sad)) {
2923
+ throw e;
2924
+ }
2925
+ if (code == undefined) {
2926
+ if (sad[label] != "") {
2927
+ _this = _Matter.call(this, {
2928
+ qb64: sad[label],
2929
+ code: code
2930
+ }) || this;
2931
+ code = _this.code;
2932
+ } else {
2933
+ code = MtrDex.Blake3_256;
2934
+ }
2935
+ }
2936
+ if (!DigiDex.has(code)) {
2937
+ throw new Error("Unsupported digest code = " + code);
2938
+ }
2939
+ var _Saider$_derive = Saider._derive(_extends({}, sad), code, kind, label);
2940
+ raw = _Saider$_derive[0];
2941
+ _this = _Matter.call(this, {
2942
+ raw: raw,
2943
+ code: code
2944
+ }) || this;
2945
+ } else {
2946
+ throw e;
2947
+ }
2948
+ }
2949
+ if (!_this.digestive) {
2950
+ throw new Error("Unsupported digest code = " + _this.code + ".");
2951
+ }
2952
+ return _assertThisInitialized(_this);
2953
+ }
2954
+ Saider._derive_blake3_256 = function _derive_blake3_256(ser, _digest_size, _length) {
2955
+ var hasher = createHash();
2956
+ return hasher.update(ser).digest('');
2957
+ };
2958
+ Saider._derive = function _derive(sad, code, kind, label) {
2959
+ if (!DigiDex.has(code) || !Saider.Digests.has(code)) {
2960
+ throw new Error("Unsupported digest code = " + code + ".");
2961
+ }
2962
+ sad = _extends({}, sad);
2963
+ sad[label] = "".padStart(Matter.Sizes.get(code).fs, Dummy$1);
2964
+ if ('v' in sad) {
2965
+ var _sizeify = sizeify(sad, kind);
2966
+ kind = _sizeify[2];
2967
+ sad = _sizeify[3];
2968
+ }
2969
+ var ser = _extends({}, sad);
2970
+ var digestage = Saider.Digests.get(code);
2971
+ var cpa = Saider._serialze(ser, kind);
2972
+ var args = [];
2973
+ if (digestage.size != undefined) {
2974
+ args.push(digestage.size);
2975
+ }
2976
+ if (digestage.length != undefined) {
2977
+ args.push(digestage.length);
2978
+ }
2979
+ return [digestage.klas.apply(digestage, [cpa].concat(args)), sad];
2980
+ };
2981
+ var _proto = Saider.prototype;
2982
+ _proto.derive = function derive(sad, code, kind, label) {
2983
+ code = code != undefined ? code : this.code;
2984
+ return Saider._derive(sad, code, kind, label);
2985
+ };
2986
+ _proto.verify = function verify(sad, prefixed, versioned, kind, label) {
2987
+ if (prefixed === void 0) {
2988
+ prefixed = false;
2989
+ }
2990
+ if (versioned === void 0) {
2991
+ versioned = false;
2992
+ }
2993
+ if (label === void 0) {
2994
+ label = Ids.d;
2995
+ }
2996
+ try {
2997
+ var _Saider$_derive2 = Saider._derive(sad, this.code, kind, label),
2998
+ raw = _Saider$_derive2[0],
2999
+ dsad = _Saider$_derive2[1];
3000
+ var saider = new Saider({
3001
+ raw: raw,
3002
+ code: this.code
3003
+ });
3004
+ if (this.qb64 != saider.qb64) {
3005
+ return false;
3006
+ }
3007
+ if ("v" in sad && versioned) {
3008
+ if (sad['v'] != dsad["v"]) {
3009
+ return false;
3010
+ }
3011
+ }
3012
+ if (prefixed && sad[label] != this.qb64) {
3013
+ return false;
3014
+ }
3015
+ } catch (e) {
3016
+ return false;
3017
+ }
3018
+ return true;
3019
+ };
3020
+ Saider._serialze = function _serialze(sad, kind) {
3021
+ var knd = Serials.JSON;
3022
+ if ('v' in sad) {
3023
+ var _deversify = deversify(sad['v']);
3024
+ knd = _deversify[0];
3025
+ }
3026
+ if (kind == undefined) {
3027
+ kind = knd;
3028
+ }
3029
+ return dumps(sad, kind);
3030
+ };
3031
+ Saider.saidify = function saidify(sad, code, kind, label) {
3032
+ if (code === void 0) {
3033
+ code = MtrDex.Blake3_256;
3034
+ }
3035
+ if (kind === void 0) {
3036
+ kind = Serials.JSON;
3037
+ }
3038
+ if (label === void 0) {
3039
+ label = Ids.d;
3040
+ }
3041
+ if (!(label in sad)) {
3042
+ throw new Error("Missing id field labeled=" + label + " in sad.");
3043
+ }
3044
+ var raw;
3045
+ var _Saider$_derive3 = Saider._derive(sad, code, kind, label);
3046
+ raw = _Saider$_derive3[0];
3047
+ sad = _Saider$_derive3[1];
3048
+ var saider = new Saider({
3049
+ raw: raw,
3050
+ code: code
3051
+ }, undefined, kind, label);
3052
+ sad[label] = saider.qb64;
3053
+ return [saider, sad];
3054
+ };
3055
+ return Saider;
3056
+ }(Matter);
3057
+ Saider.Digests = /*#__PURE__*/new Map([[MtrDex.Blake3_256, /*#__PURE__*/new Digestage(Saider._derive_blake3_256, undefined, undefined)]]);
3058
+
3059
+ function ample(n, f, weak) {
3060
+ if (weak === void 0) {
3061
+ weak = true;
3062
+ }
3063
+ n = Math.max(0, n); // no negatives
3064
+ var f1;
3065
+ if (f == undefined) {
3066
+ f1 = Math.max(1, Math.floor(Math.max(0, n - 1) / 3)); // least floor f subject to n >= 3*f+1
3067
+ var f2 = Math.max(1, Math.ceil(Math.max(0, n - 1) / 3)); // most Math.ceil f subject to n >= 3*f+1
3068
+ if (weak) {
3069
+ // try both fs to see which one has lowest m
3070
+ return Math.min(n, Math.ceil((n + f1 + 1) / 2), Math.ceil((n + f2 + 1) / 2));
3071
+ } else {
3072
+ return Math.min(n, Math.max(0, n - f1, Math.ceil((n + f1 + 1) / 2)));
3073
+ }
3074
+ } else {
3075
+ f = Math.max(0, f);
3076
+ var m1 = Math.ceil((n + f + 1) / 2);
3077
+ var m2 = Math.max(0, n - f);
3078
+ if (m2 < m1 && n > 0) {
3079
+ throw new Error("Invalid f=" + f + " is too big for n=" + n + ".");
3080
+ }
3081
+ if (weak) {
3082
+ return Math.min(n, m1, m2);
3083
+ } else {
3084
+ return Math.min(n, Math.max(m1, m2));
3085
+ }
3086
+ }
3087
+ }
3088
+ function incept(_ref) {
3089
+ var keys = _ref.keys,
3090
+ isith = _ref.isith,
3091
+ ndigs = _ref.ndigs,
3092
+ nsith = _ref.nsith,
3093
+ toad = _ref.toad,
3094
+ wits = _ref.wits,
3095
+ cnfg = _ref.cnfg,
3096
+ data = _ref.data,
3097
+ _ref$version = _ref.version,
3098
+ version = _ref$version === void 0 ? Versionage : _ref$version,
3099
+ _ref$kind = _ref.kind,
3100
+ kind = _ref$kind === void 0 ? Serials.JSON : _ref$kind,
3101
+ code = _ref.code,
3102
+ _ref$intive = _ref.intive,
3103
+ intive = _ref$intive === void 0 ? false : _ref$intive,
3104
+ delpre = _ref.delpre;
3105
+ var vs = versify(Ident.KERI, version, kind, 0);
3106
+ var ilk = delpre == undefined ? Ilks.icp : Ilks.dip;
3107
+ var sner = new PNumber(0);
3108
+ if (isith == undefined) {
3109
+ isith = Math.max(1, Math.ceil(keys.length / 2));
3110
+ }
3111
+ var tholder = new Tholder(isith);
3112
+ if (tholder.num != undefined && tholder.num < 1) {
3113
+ throw new Error("Invalid sith = " + tholder.num + " less than 1.");
3114
+ }
3115
+ if (tholder.size > keys.length) {
3116
+ throw new Error("Invalid sith = " + tholder.num + " for keys " + keys);
3117
+ }
3118
+ if (ndigs == undefined) {
3119
+ ndigs = new Array();
3120
+ }
3121
+ if (nsith == undefined) {
3122
+ nsith = Math.max(0, Math.ceil(ndigs.length / 2));
3123
+ }
3124
+ var ntholder = new Tholder(nsith);
3125
+ if (ntholder.num != undefined && ntholder.num < 0) {
3126
+ throw new Error("Invalid nsith = " + ntholder.num + " less than 0.");
3127
+ }
3128
+ if (ntholder.size > keys.length) {
3129
+ throw new Error("Invalid nsith = " + ntholder.num + " for keys " + ndigs);
3130
+ }
3131
+ wits = wits == undefined ? [] : wits;
3132
+ if (new Set(wits).size != wits.length) {
3133
+ throw new Error("Invalid wits = " + wits + ", has duplicates.");
3134
+ }
3135
+ if (toad == undefined) {
3136
+ if (wits.length == 0) {
3137
+ toad = 0;
3138
+ } else {
3139
+ toad = ample(wits.length);
3140
+ }
3141
+ }
3142
+ var toader = new PNumber(toad);
3143
+ if (wits.length > 0) {
3144
+ if (toader.num < 1 || toader.num > wits.length) {
3145
+ throw new Error("Invalid toad = " + toader.num + " for wits = " + wits);
3146
+ }
3147
+ } else {
3148
+ if (toader.num != 0) {
3149
+ throw new Error("Invalid toad = " + toader.num + " for wits = " + wits);
3150
+ }
3151
+ }
3152
+ cnfg = cnfg == undefined ? new Array() : cnfg;
3153
+ data = data == undefined ? new Array() : data;
3154
+ var ked = {
3155
+ v: vs,
3156
+ t: ilk,
3157
+ d: "",
3158
+ i: "",
3159
+ s: sner.numh,
3160
+ kt: intive && tholder.num != undefined ? tholder.num : tholder.sith,
3161
+ k: keys,
3162
+ nt: intive && tholder.num != undefined ? ntholder.num : ntholder.sith,
3163
+ n: ndigs,
3164
+ bt: intive ? toader.num : toader.numh,
3165
+ b: wits,
3166
+ c: cnfg,
3167
+ a: data
3168
+ };
3169
+ if (delpre != undefined) {
3170
+ ked["di"] = delpre;
3171
+ if (code == undefined) {
3172
+ code = MtrDex.Blake3_256;
3173
+ }
3174
+ }
3175
+ var prefixer;
3176
+ if (delpre == undefined && code == undefined && keys.length == 1) {
3177
+ prefixer = new Prefixer({
3178
+ qb64: keys[0]
3179
+ });
3180
+ if (prefixer.digestive) {
3181
+ throw new Error("Invalid code, digestive=" + prefixer.code + ", must be derived from ked.");
3182
+ }
3183
+ } else {
3184
+ prefixer = new Prefixer({
3185
+ code: code
3186
+ }, ked);
3187
+ if (delpre != undefined) {
3188
+ if (!prefixer.digestive) {
3189
+ throw new Error("Invalid derivation code = " + prefixer.code + " for delegation. Must be digestive");
3190
+ }
3191
+ }
3192
+ }
3193
+ ked["i"] = prefixer.qb64;
3194
+ if (prefixer.digestive) {
3195
+ ked["d"] = prefixer.qb64;
3196
+ } else {
3197
+ var _Saider$saidify = Saider.saidify(ked);
3198
+ ked = _Saider$saidify[1];
3199
+ }
3200
+ return new Serder(ked);
3201
+ }
3202
+
3203
+ var TraitCodex = function TraitCodex() {
3204
+ this.EstOnly = 'EO'; // Only allow establishment events
3205
+ this.DoNotDelegate = 'DND'; // Dot not allow delegated identifiers
3206
+ };
3207
+
3208
+ var TraitDex = /*#__PURE__*/new TraitCodex();
3209
+ var Hab = /*#__PURE__*/function () {
3210
+ function Hab(name, icp) {
3211
+ this.name = name;
3212
+ this.serder = icp;
3213
+ }
3214
+ _createClass(Hab, [{
3215
+ key: "pre",
3216
+ get: function get() {
3217
+ return this.serder.ked["i"];
3218
+ }
3219
+ }]);
3220
+ return Hab;
3221
+ }();
3222
+ var Habery = /*#__PURE__*/function () {
3223
+ function Habery(_ref) {
3224
+ var name = _ref.name,
3225
+ passcode = _ref.passcode,
3226
+ seed = _ref.seed,
3227
+ aeid = _ref.aeid,
3228
+ pidx = _ref.pidx,
3229
+ salt = _ref.salt;
3230
+ this._habs = new Map();
3231
+ this._name = name;
3232
+ if (passcode != undefined && seed == undefined) {
3233
+ if (passcode.length < 21) {
3234
+ throw new Error("Bran (passcode seed material) too short.");
3235
+ }
3236
+ var bran = MtrDex.Salt_128 + 'A' + passcode.substring(0, 21); // qb64 salt for seed
3237
+ var signer = new Salter({
3238
+ qb64: bran
3239
+ }).signer(MtrDex.Ed25519_Seed, false);
3240
+ seed = signer.qb64;
3241
+ if (aeid == undefined) {
3242
+ aeid = signer.verfer.qb64; // lest it remove encryption
3243
+ }
3244
+ }
3245
+
3246
+ var algo;
3247
+ if (salt != undefined) {
3248
+ algo = Algos.salty;
3249
+ salt = new Salter({
3250
+ qb64: salt
3251
+ }).qb64;
3252
+ } else {
3253
+ algo = Algos.randy;
3254
+ }
3255
+ this._mgr = new Manager({
3256
+ seed: seed,
3257
+ aeid: aeid,
3258
+ pidx: pidx,
3259
+ algo: algo,
3260
+ salt: salt
3261
+ });
3262
+ }
3263
+ var _proto = Habery.prototype;
3264
+ _proto.habByName = function habByName(name) {
3265
+ return this._habs.get(name);
3266
+ };
3267
+ _proto.makeHab = function makeHab(name, _ref2) {
3268
+ var _ref2$code = _ref2.code,
3269
+ code = _ref2$code === void 0 ? MtrDex.Blake3_256 : _ref2$code,
3270
+ _ref2$transferable = _ref2.transferable,
3271
+ transferable = _ref2$transferable === void 0 ? true : _ref2$transferable,
3272
+ _ref2$isith = _ref2.isith,
3273
+ isith = _ref2$isith === void 0 ? undefined : _ref2$isith,
3274
+ _ref2$icount = _ref2.icount,
3275
+ icount = _ref2$icount === void 0 ? 1 : _ref2$icount,
3276
+ _ref2$nsith = _ref2.nsith,
3277
+ nsith = _ref2$nsith === void 0 ? undefined : _ref2$nsith,
3278
+ _ref2$ncount = _ref2.ncount,
3279
+ ncount = _ref2$ncount === void 0 ? undefined : _ref2$ncount,
3280
+ _ref2$toad = _ref2.toad,
3281
+ toad = _ref2$toad === void 0 ? undefined : _ref2$toad,
3282
+ _ref2$wits = _ref2.wits,
3283
+ wits = _ref2$wits === void 0 ? undefined : _ref2$wits,
3284
+ _ref2$delpre = _ref2.delpre,
3285
+ delpre = _ref2$delpre === void 0 ? undefined : _ref2$delpre,
3286
+ _ref2$estOnly = _ref2.estOnly,
3287
+ estOnly = _ref2$estOnly === void 0 ? false : _ref2$estOnly,
3288
+ _ref2$DnD = _ref2.DnD,
3289
+ DnD = _ref2$DnD === void 0 ? false : _ref2$DnD,
3290
+ _ref2$data = _ref2.data,
3291
+ data = _ref2$data === void 0 ? undefined : _ref2$data;
3292
+ if (nsith == undefined) {
3293
+ nsith = isith;
3294
+ }
3295
+ if (ncount == undefined) {
3296
+ ncount = icount;
3297
+ }
3298
+ if (!transferable) {
3299
+ ncount = 0;
3300
+ nsith = "0";
3301
+ code = MtrDex.Ed25519N;
3302
+ }
3303
+ var _this$_mgr$incept = this._mgr.incept({
3304
+ icount: icount,
3305
+ ncount: ncount,
3306
+ stem: this.name,
3307
+ transferable: transferable,
3308
+ temp: false
3309
+ }),
3310
+ verfers = _this$_mgr$incept[0],
3311
+ digers = _this$_mgr$incept[1];
3312
+ icount = verfers.length;
3313
+ ncount = digers != undefined ? digers.length : 0;
3314
+ if (isith == undefined) {
3315
+ isith = "" + Math.max(1, Math.ceil(icount / 2)).toString(16);
3316
+ }
3317
+ if (nsith == undefined) {
3318
+ nsith = "" + Math.max(1, Math.ceil(ncount / 2)).toString(16);
3319
+ }
3320
+ var cnfg = new Array();
3321
+ if (estOnly) {
3322
+ cnfg.push(TraitDex.EstOnly);
3323
+ }
3324
+ if (DnD) {
3325
+ cnfg.push(TraitDex.DoNotDelegate);
3326
+ }
3327
+ var keys = Array.from(verfers, function (verfer) {
3328
+ return verfer.qb64;
3329
+ });
3330
+ var ndigs = Array.from(digers, function (diger) {
3331
+ return diger.qb64;
3332
+ });
3333
+ var icp = incept({
3334
+ keys: keys,
3335
+ isith: isith,
3336
+ ndigs: ndigs,
3337
+ nsith: nsith,
3338
+ toad: toad,
3339
+ wits: wits,
3340
+ cnfg: cnfg,
3341
+ data: data,
3342
+ code: code,
3343
+ delpre: delpre
3344
+ });
3345
+ var hab = new Hab(name, icp);
3346
+ this._habs.set(name, hab);
3347
+ return hab;
3348
+ };
3349
+ _createClass(Habery, [{
3350
+ key: "mgr",
3351
+ get: function get() {
3352
+ return this._mgr;
3353
+ }
3354
+ }, {
3355
+ key: "habs",
3356
+ get: function get() {
3357
+ return Array.from(this._habs.values());
3358
+ }
3359
+ }, {
3360
+ key: "name",
3361
+ get: function get() {
3362
+ return this._name;
3363
+ }
3364
+ }]);
3365
+ return Habery;
3366
+ }();
7
3367
 
8
- export { sum };
3368
+ export { Codex, DigiCodex, DigiDex, Hab, Habery, Matter, MatterCodex, MtrDex, NonTransCodex, NonTransDex, Salter, Sizage, TraitCodex, TraitDex };
9
3369
  //# sourceMappingURL=signify-ts.esm.js.map