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