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