@sd-jwt/sd-jwt-vc 0.3.2-next.94

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/dist/index.js ADDED
@@ -0,0 +1,454 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __commonJS = (cb, mod) => function __require() {
9
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
10
+ };
11
+ var __export = (target, all) => {
12
+ for (var name in all)
13
+ __defProp(target, name, { get: all[name], enumerable: true });
14
+ };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from))
18
+ if (!__hasOwnProp.call(to, key) && key !== except)
19
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
20
+ }
21
+ return to;
22
+ };
23
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
24
+ // If the importer is in node compatibility mode or this is not an ESM
25
+ // file that has been converted to a CommonJS file using a Babel-
26
+ // compatible transform (i.e. "__esModule" has not been set), then set
27
+ // "default" to the CommonJS "module.exports" for node compatibility.
28
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
29
+ mod
30
+ ));
31
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
+
33
+ // ../../node_modules/.pnpm/js-base64@3.7.6/node_modules/js-base64/base64.js
34
+ var require_base64 = __commonJS({
35
+ "../../node_modules/.pnpm/js-base64@3.7.6/node_modules/js-base64/base64.js"(exports2, module2) {
36
+ "use strict";
37
+ (function(global2, factory) {
38
+ typeof exports2 === "object" && typeof module2 !== "undefined" ? module2.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (
39
+ // cf. https://github.com/dankogai/js-base64/issues/119
40
+ function() {
41
+ var _Base64 = global2.Base64;
42
+ var gBase64 = factory();
43
+ gBase64.noConflict = function() {
44
+ global2.Base64 = _Base64;
45
+ return gBase64;
46
+ };
47
+ if (global2.Meteor) {
48
+ Base64 = gBase64;
49
+ }
50
+ global2.Base64 = gBase64;
51
+ }()
52
+ );
53
+ })(typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : exports2, function() {
54
+ "use strict";
55
+ var version = "3.7.6";
56
+ var VERSION = version;
57
+ var _hasatob = typeof atob === "function";
58
+ var _hasbtoa = typeof btoa === "function";
59
+ var _hasBuffer = typeof Buffer === "function";
60
+ var _TD = typeof TextDecoder === "function" ? new TextDecoder() : void 0;
61
+ var _TE = typeof TextEncoder === "function" ? new TextEncoder() : void 0;
62
+ var b64ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
63
+ var b64chs = Array.prototype.slice.call(b64ch);
64
+ var b64tab = function(a) {
65
+ var tab = {};
66
+ a.forEach(function(c, i) {
67
+ return tab[c] = i;
68
+ });
69
+ return tab;
70
+ }(b64chs);
71
+ var b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;
72
+ var _fromCC = String.fromCharCode.bind(String);
73
+ var _U8Afrom = typeof Uint8Array.from === "function" ? Uint8Array.from.bind(Uint8Array) : function(it) {
74
+ return new Uint8Array(Array.prototype.slice.call(it, 0));
75
+ };
76
+ var _mkUriSafe = function(src) {
77
+ return src.replace(/=/g, "").replace(/[+\/]/g, function(m0) {
78
+ return m0 == "+" ? "-" : "_";
79
+ });
80
+ };
81
+ var _tidyB64 = function(s) {
82
+ return s.replace(/[^A-Za-z0-9\+\/]/g, "");
83
+ };
84
+ var btoaPolyfill = function(bin) {
85
+ var u32, c0, c1, c2, asc = "";
86
+ var pad = bin.length % 3;
87
+ for (var i = 0; i < bin.length; ) {
88
+ if ((c0 = bin.charCodeAt(i++)) > 255 || (c1 = bin.charCodeAt(i++)) > 255 || (c2 = bin.charCodeAt(i++)) > 255)
89
+ throw new TypeError("invalid character found");
90
+ u32 = c0 << 16 | c1 << 8 | c2;
91
+ asc += b64chs[u32 >> 18 & 63] + b64chs[u32 >> 12 & 63] + b64chs[u32 >> 6 & 63] + b64chs[u32 & 63];
92
+ }
93
+ return pad ? asc.slice(0, pad - 3) + "===".substring(pad) : asc;
94
+ };
95
+ var _btoa = _hasbtoa ? function(bin) {
96
+ return btoa(bin);
97
+ } : _hasBuffer ? function(bin) {
98
+ return Buffer.from(bin, "binary").toString("base64");
99
+ } : btoaPolyfill;
100
+ var _fromUint8Array = _hasBuffer ? function(u8a) {
101
+ return Buffer.from(u8a).toString("base64");
102
+ } : function(u8a) {
103
+ var maxargs = 4096;
104
+ var strs = [];
105
+ for (var i = 0, l = u8a.length; i < l; i += maxargs) {
106
+ strs.push(_fromCC.apply(null, u8a.subarray(i, i + maxargs)));
107
+ }
108
+ return _btoa(strs.join(""));
109
+ };
110
+ var fromUint8Array = function(u8a, urlsafe) {
111
+ if (urlsafe === void 0) {
112
+ urlsafe = false;
113
+ }
114
+ return urlsafe ? _mkUriSafe(_fromUint8Array(u8a)) : _fromUint8Array(u8a);
115
+ };
116
+ var cb_utob = function(c) {
117
+ if (c.length < 2) {
118
+ var cc = c.charCodeAt(0);
119
+ return cc < 128 ? c : cc < 2048 ? _fromCC(192 | cc >>> 6) + _fromCC(128 | cc & 63) : _fromCC(224 | cc >>> 12 & 15) + _fromCC(128 | cc >>> 6 & 63) + _fromCC(128 | cc & 63);
120
+ } else {
121
+ var cc = 65536 + (c.charCodeAt(0) - 55296) * 1024 + (c.charCodeAt(1) - 56320);
122
+ return _fromCC(240 | cc >>> 18 & 7) + _fromCC(128 | cc >>> 12 & 63) + _fromCC(128 | cc >>> 6 & 63) + _fromCC(128 | cc & 63);
123
+ }
124
+ };
125
+ var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
126
+ var utob = function(u) {
127
+ return u.replace(re_utob, cb_utob);
128
+ };
129
+ var _encode = _hasBuffer ? function(s) {
130
+ return Buffer.from(s, "utf8").toString("base64");
131
+ } : _TE ? function(s) {
132
+ return _fromUint8Array(_TE.encode(s));
133
+ } : function(s) {
134
+ return _btoa(utob(s));
135
+ };
136
+ var encode = function(src, urlsafe) {
137
+ if (urlsafe === void 0) {
138
+ urlsafe = false;
139
+ }
140
+ return urlsafe ? _mkUriSafe(_encode(src)) : _encode(src);
141
+ };
142
+ var encodeURI = function(src) {
143
+ return encode(src, true);
144
+ };
145
+ var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g;
146
+ var cb_btou = function(cccc) {
147
+ switch (cccc.length) {
148
+ case 4:
149
+ var cp = (7 & cccc.charCodeAt(0)) << 18 | (63 & cccc.charCodeAt(1)) << 12 | (63 & cccc.charCodeAt(2)) << 6 | 63 & cccc.charCodeAt(3), offset = cp - 65536;
150
+ return _fromCC((offset >>> 10) + 55296) + _fromCC((offset & 1023) + 56320);
151
+ case 3:
152
+ return _fromCC((15 & cccc.charCodeAt(0)) << 12 | (63 & cccc.charCodeAt(1)) << 6 | 63 & cccc.charCodeAt(2));
153
+ default:
154
+ return _fromCC((31 & cccc.charCodeAt(0)) << 6 | 63 & cccc.charCodeAt(1));
155
+ }
156
+ };
157
+ var btou = function(b) {
158
+ return b.replace(re_btou, cb_btou);
159
+ };
160
+ var atobPolyfill = function(asc) {
161
+ asc = asc.replace(/\s+/g, "");
162
+ if (!b64re.test(asc))
163
+ throw new TypeError("malformed base64.");
164
+ asc += "==".slice(2 - (asc.length & 3));
165
+ var u24, bin = "", r1, r2;
166
+ for (var i = 0; i < asc.length; ) {
167
+ u24 = b64tab[asc.charAt(i++)] << 18 | b64tab[asc.charAt(i++)] << 12 | (r1 = b64tab[asc.charAt(i++)]) << 6 | (r2 = b64tab[asc.charAt(i++)]);
168
+ bin += r1 === 64 ? _fromCC(u24 >> 16 & 255) : r2 === 64 ? _fromCC(u24 >> 16 & 255, u24 >> 8 & 255) : _fromCC(u24 >> 16 & 255, u24 >> 8 & 255, u24 & 255);
169
+ }
170
+ return bin;
171
+ };
172
+ var _atob = _hasatob ? function(asc) {
173
+ return atob(_tidyB64(asc));
174
+ } : _hasBuffer ? function(asc) {
175
+ return Buffer.from(asc, "base64").toString("binary");
176
+ } : atobPolyfill;
177
+ var _toUint8Array = _hasBuffer ? function(a) {
178
+ return _U8Afrom(Buffer.from(a, "base64"));
179
+ } : function(a) {
180
+ return _U8Afrom(_atob(a).split("").map(function(c) {
181
+ return c.charCodeAt(0);
182
+ }));
183
+ };
184
+ var toUint8Array = function(a) {
185
+ return _toUint8Array(_unURI(a));
186
+ };
187
+ var _decode = _hasBuffer ? function(a) {
188
+ return Buffer.from(a, "base64").toString("utf8");
189
+ } : _TD ? function(a) {
190
+ return _TD.decode(_toUint8Array(a));
191
+ } : function(a) {
192
+ return btou(_atob(a));
193
+ };
194
+ var _unURI = function(a) {
195
+ return _tidyB64(a.replace(/[-_]/g, function(m0) {
196
+ return m0 == "-" ? "+" : "/";
197
+ }));
198
+ };
199
+ var decode = function(src) {
200
+ return _decode(_unURI(src));
201
+ };
202
+ var isValid = function(src) {
203
+ if (typeof src !== "string")
204
+ return false;
205
+ var s = src.replace(/\s+/g, "").replace(/={0,2}$/, "");
206
+ return !/[^\s0-9a-zA-Z\+/]/.test(s) || !/[^\s0-9a-zA-Z\-_]/.test(s);
207
+ };
208
+ var _noEnum = function(v) {
209
+ return {
210
+ value: v,
211
+ enumerable: false,
212
+ writable: true,
213
+ configurable: true
214
+ };
215
+ };
216
+ var extendString = function() {
217
+ var _add = function(name, body) {
218
+ return Object.defineProperty(String.prototype, name, _noEnum(body));
219
+ };
220
+ _add("fromBase64", function() {
221
+ return decode(this);
222
+ });
223
+ _add("toBase64", function(urlsafe) {
224
+ return encode(this, urlsafe);
225
+ });
226
+ _add("toBase64URI", function() {
227
+ return encode(this, true);
228
+ });
229
+ _add("toBase64URL", function() {
230
+ return encode(this, true);
231
+ });
232
+ _add("toUint8Array", function() {
233
+ return toUint8Array(this);
234
+ });
235
+ };
236
+ var extendUint8Array = function() {
237
+ var _add = function(name, body) {
238
+ return Object.defineProperty(Uint8Array.prototype, name, _noEnum(body));
239
+ };
240
+ _add("toBase64", function(urlsafe) {
241
+ return fromUint8Array(this, urlsafe);
242
+ });
243
+ _add("toBase64URI", function() {
244
+ return fromUint8Array(this, true);
245
+ });
246
+ _add("toBase64URL", function() {
247
+ return fromUint8Array(this, true);
248
+ });
249
+ };
250
+ var extendBuiltins = function() {
251
+ extendString();
252
+ extendUint8Array();
253
+ };
254
+ var gBase64 = {
255
+ version,
256
+ VERSION,
257
+ atob: _atob,
258
+ atobPolyfill,
259
+ btoa: _btoa,
260
+ btoaPolyfill,
261
+ fromBase64: decode,
262
+ toBase64: encode,
263
+ encode,
264
+ encodeURI,
265
+ encodeURL: encodeURI,
266
+ utob,
267
+ btou,
268
+ decode,
269
+ isValid,
270
+ fromUint8Array,
271
+ toUint8Array,
272
+ extendString,
273
+ extendUint8Array,
274
+ extendBuiltins
275
+ };
276
+ gBase64.Base64 = {};
277
+ Object.keys(gBase64).forEach(function(k) {
278
+ return gBase64.Base64[k] = gBase64[k];
279
+ });
280
+ return gBase64;
281
+ });
282
+ }
283
+ });
284
+
285
+ // ../utils/dist/index.js
286
+ var require_dist = __commonJS({
287
+ "../utils/dist/index.js"(exports2, module2) {
288
+ "use strict";
289
+ var __defProp2 = Object.defineProperty;
290
+ var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
291
+ var __getOwnPropNames2 = Object.getOwnPropertyNames;
292
+ var __hasOwnProp2 = Object.prototype.hasOwnProperty;
293
+ var __export2 = (target, all) => {
294
+ for (var name in all)
295
+ __defProp2(target, name, { get: all[name], enumerable: true });
296
+ };
297
+ var __copyProps2 = (to, from, except, desc) => {
298
+ if (from && typeof from === "object" || typeof from === "function") {
299
+ for (let key of __getOwnPropNames2(from))
300
+ if (!__hasOwnProp2.call(to, key) && key !== except)
301
+ __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
302
+ }
303
+ return to;
304
+ };
305
+ var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
306
+ var __async = (__this, __arguments, generator) => {
307
+ return new Promise((resolve, reject) => {
308
+ var fulfilled = (value) => {
309
+ try {
310
+ step(generator.next(value));
311
+ } catch (e) {
312
+ reject(e);
313
+ }
314
+ };
315
+ var rejected = (value) => {
316
+ try {
317
+ step(generator.throw(value));
318
+ } catch (e) {
319
+ reject(e);
320
+ }
321
+ };
322
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
323
+ step((generator = generator.apply(__this, __arguments)).next());
324
+ });
325
+ };
326
+ var src_exports2 = {};
327
+ __export2(src_exports2, {
328
+ Base64urlDecode: () => Base64urlDecode,
329
+ Base64urlEncode: () => Base64urlEncode,
330
+ Disclosure: () => Disclosure,
331
+ SDJWTException: () => SDJWTException2,
332
+ Uint8ArrayToBase64Url: () => Uint8ArrayToBase64Url
333
+ });
334
+ module2.exports = __toCommonJS2(src_exports2);
335
+ var import_js_base64 = require_base64();
336
+ var Base64urlEncode = import_js_base64.Base64.encodeURI;
337
+ var Base64urlDecode = import_js_base64.Base64.decode;
338
+ var Uint8ArrayToBase64Url = (input) => import_js_base64.Base64.fromUint8Array(input, true);
339
+ var SDJWTException2 = class _SDJWTException extends Error {
340
+ constructor(message, details) {
341
+ super(message);
342
+ Object.setPrototypeOf(this, _SDJWTException.prototype);
343
+ this.name = "SDJWTException";
344
+ this.details = details;
345
+ }
346
+ getFullMessage() {
347
+ return `${this.name}: ${this.message} ${this.details ? `- ${JSON.stringify(this.details)}` : ""}`;
348
+ }
349
+ };
350
+ var Disclosure = class _Disclosure {
351
+ constructor(data, _meta) {
352
+ this._digest = _meta == null ? void 0 : _meta.digest;
353
+ this._encoded = _meta == null ? void 0 : _meta.encoded;
354
+ if (data.length === 2) {
355
+ this.salt = data[0];
356
+ this.value = data[1];
357
+ return;
358
+ }
359
+ if (data.length === 3) {
360
+ this.salt = data[0];
361
+ this.key = data[1];
362
+ this.value = data[2];
363
+ return;
364
+ }
365
+ throw new SDJWTException2("Invalid disclosure data");
366
+ }
367
+ // We need to digest of the original encoded data.
368
+ // After decode process, we use JSON.stringify to encode the data.
369
+ // This can be different from the original encoded data.
370
+ static fromEncode(s, hash) {
371
+ return __async(this, null, function* () {
372
+ const { hasher, alg } = hash;
373
+ const digest = yield hasher(s, alg);
374
+ const digestStr = Uint8ArrayToBase64Url(digest);
375
+ const item = JSON.parse(Base64urlDecode(s));
376
+ return _Disclosure.fromArray(item, { digest: digestStr, encoded: s });
377
+ });
378
+ }
379
+ static fromEncodeSync(s, hash) {
380
+ const { hasher, alg } = hash;
381
+ const digest = hasher(s, alg);
382
+ const digestStr = Uint8ArrayToBase64Url(digest);
383
+ const item = JSON.parse(Base64urlDecode(s));
384
+ return _Disclosure.fromArray(item, { digest: digestStr, encoded: s });
385
+ }
386
+ static fromArray(item, _meta) {
387
+ return new _Disclosure(item, _meta);
388
+ }
389
+ encode() {
390
+ if (!this._encoded) {
391
+ this._encoded = Base64urlEncode(JSON.stringify(this.decode()));
392
+ }
393
+ return this._encoded;
394
+ }
395
+ decode() {
396
+ return this.key ? [this.salt, this.key, this.value] : [this.salt, this.value];
397
+ }
398
+ digest(hash) {
399
+ return __async(this, null, function* () {
400
+ const { hasher, alg } = hash;
401
+ if (!this._digest) {
402
+ const hash2 = yield hasher(this.encode(), alg);
403
+ this._digest = Uint8ArrayToBase64Url(hash2);
404
+ }
405
+ return this._digest;
406
+ });
407
+ }
408
+ digestSync(hash) {
409
+ const { hasher, alg } = hash;
410
+ if (!this._digest) {
411
+ const hash2 = hasher(this.encode(), alg);
412
+ this._digest = Uint8ArrayToBase64Url(hash2);
413
+ }
414
+ return this._digest;
415
+ }
416
+ };
417
+ }
418
+ });
419
+
420
+ // src/index.ts
421
+ var src_exports = {};
422
+ __export(src_exports, {
423
+ SDJwtVcInstance: () => SDJwtVcInstance
424
+ });
425
+ module.exports = __toCommonJS(src_exports);
426
+ var import_core = require("@sd-jwt/core");
427
+ var import_dist = __toESM(require_dist());
428
+ var SDJwtVcInstance = class extends import_core.SDJwtInstance {
429
+ constructor() {
430
+ super(...arguments);
431
+ this.type = "sd-jwt-vc";
432
+ }
433
+ validateReservedFields(disclosureFrame) {
434
+ if ((disclosureFrame == null ? void 0 : disclosureFrame._sd) && Array.isArray(disclosureFrame._sd) && disclosureFrame._sd.length > 0) {
435
+ const reservedNames = [
436
+ "iss",
437
+ "iat",
438
+ "nbf",
439
+ "exp",
440
+ "cnf",
441
+ "vct",
442
+ "status"
443
+ ];
444
+ const reservedNamesInDisclosureFrame = disclosureFrame._sd.filter((key) => reservedNames.includes(key));
445
+ if (reservedNamesInDisclosureFrame.length > 0) {
446
+ throw new import_dist.SDJWTException("Cannot disclose protected field");
447
+ }
448
+ }
449
+ }
450
+ };
451
+ // Annotate the CommonJS export names for ESM import in node:
452
+ 0 && (module.exports = {
453
+ SDJwtVcInstance
454
+ });