one 2.6.20 → 2.6.21
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/cpp/HybridOneCrypto.cpp +327 -1
- package/cpp/HybridOneCrypto.hpp +8 -0
- package/dist/cjs/index.cjs +25 -22
- package/dist/cjs/index.native.cjs +25 -22
- package/dist/cjs/index.native.js +25 -22
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/one.cjs +1 -0
- package/dist/cjs/one.native.cjs +1 -0
- package/dist/cjs/one.native.js +1 -0
- package/dist/cjs/one.native.js.map +1 -1
- package/dist/cjs/platform/crypto/aes.cjs +259 -0
- package/dist/cjs/platform/crypto/aes.native.cjs +343 -0
- package/dist/cjs/platform/crypto/aes.native.js +345 -0
- package/dist/cjs/platform/crypto/aes.native.js.map +1 -0
- package/dist/cjs/platform/crypto/bytes.cjs +132 -0
- package/dist/cjs/platform/crypto/bytes.native.cjs +175 -0
- package/dist/cjs/platform/crypto/bytes.native.js +177 -0
- package/dist/cjs/platform/crypto/bytes.native.js.map +1 -0
- package/dist/cjs/platform/crypto/digest-api.cjs +65 -0
- package/dist/cjs/platform/crypto/digest-api.native.cjs +69 -0
- package/dist/cjs/platform/crypto/digest-api.native.js +71 -0
- package/dist/cjs/platform/crypto/digest-api.native.js.map +1 -0
- package/dist/cjs/platform/crypto/digest.cjs +26 -15
- package/dist/cjs/platform/crypto/digest.native.cjs +26 -15
- package/dist/cjs/platform/crypto/digest.native.js +26 -15
- package/dist/cjs/platform/crypto/digest.native.js.map +1 -1
- package/dist/cjs/platform/crypto/index.cjs +19 -1
- package/dist/cjs/platform/crypto/index.native.cjs +39 -1
- package/dist/cjs/platform/crypto/index.native.js +39 -1
- package/dist/cjs/platform/crypto/index.native.js.map +1 -1
- package/dist/cjs/platform/crypto/types.cjs +16 -0
- package/dist/cjs/platform/crypto/types.native.cjs +18 -0
- package/dist/cjs/platform/crypto/types.native.js +20 -0
- package/dist/cjs/platform/crypto/types.native.js.map +1 -0
- package/dist/cjs/platform/crypto/web.cjs +73 -0
- package/dist/cjs/platform/extras.cjs +4 -0
- package/dist/cjs/platform/extras.native.cjs +4 -0
- package/dist/cjs/platform/extras.native.js +4 -0
- package/dist/cjs/platform/extras.native.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/index.native.js +2 -2
- package/dist/esm/one.mjs +2 -1
- package/dist/esm/one.mjs.map +1 -1
- package/dist/esm/one.native.js +2 -1
- package/dist/esm/one.native.js.map +1 -1
- package/dist/esm/platform/crypto/aes.mjs +236 -0
- package/dist/esm/platform/crypto/aes.mjs.map +1 -0
- package/dist/esm/platform/crypto/aes.native.js +318 -0
- package/dist/esm/platform/crypto/aes.native.js.map +1 -0
- package/dist/esm/platform/crypto/bytes.mjs +104 -0
- package/dist/esm/platform/crypto/bytes.mjs.map +1 -0
- package/dist/esm/platform/crypto/bytes.native.js +145 -0
- package/dist/esm/platform/crypto/bytes.native.js.map +1 -0
- package/dist/esm/platform/crypto/digest-api.mjs +42 -0
- package/dist/esm/platform/crypto/digest-api.mjs.map +1 -0
- package/dist/esm/platform/crypto/digest-api.native.js +44 -0
- package/dist/esm/platform/crypto/digest-api.native.js.map +1 -0
- package/dist/esm/platform/crypto/digest.mjs +23 -15
- package/dist/esm/platform/crypto/digest.mjs.map +1 -1
- package/dist/esm/platform/crypto/digest.native.js +23 -15
- package/dist/esm/platform/crypto/digest.native.js.map +1 -1
- package/dist/esm/platform/crypto/index.mjs +14 -1
- package/dist/esm/platform/crypto/index.mjs.map +1 -1
- package/dist/esm/platform/crypto/index.native.js +34 -1
- package/dist/esm/platform/crypto/index.native.js.map +1 -1
- package/dist/esm/platform/crypto/types.mjs +0 -0
- package/dist/esm/platform/crypto/types.native.js +0 -0
- package/dist/esm/platform/crypto/web.mjs +50 -0
- package/dist/esm/platform/crypto/web.mjs.map +1 -0
- package/dist/esm/platform/extras.mjs +2 -1
- package/dist/esm/platform/extras.native.js +2 -1
- package/nitrogen/generated/shared/c++/HybridOneCryptoSpec.cpp +2 -0
- package/nitrogen/generated/shared/c++/HybridOneCryptoSpec.hpp +4 -1
- package/package.json +12 -12
- package/src/index.ts +1 -0
- package/src/one.ts +3 -0
- package/src/platform/crypto/aes.ts +345 -0
- package/src/platform/crypto/bytes.ts +120 -0
- package/src/platform/crypto/digest-api.ts +50 -0
- package/src/platform/crypto/digest.ts +24 -15
- package/src/platform/crypto/index.native.ts +68 -0
- package/src/platform/crypto/index.ts +31 -0
- package/src/platform/crypto/types.ts +64 -0
- package/src/platform/crypto/web.ts +69 -0
- package/src/platform/extras.ts +15 -0
- package/src/platform/specs/OneCrypto.nitro.ts +19 -0
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/one.d.ts +2 -1
- package/types/one.d.ts.map +1 -1
- package/types/platform/crypto/aes.d.ts +211 -0
- package/types/platform/crypto/aes.d.ts.map +1 -0
- package/types/platform/crypto/bytes.d.ts +8 -0
- package/types/platform/crypto/bytes.d.ts.map +1 -0
- package/types/platform/crypto/digest-api.d.ts +9 -0
- package/types/platform/crypto/digest-api.d.ts.map +1 -0
- package/types/platform/crypto/digest.d.ts +5 -0
- package/types/platform/crypto/digest.d.ts.map +1 -1
- package/types/platform/crypto/index.d.ts +127 -0
- package/types/platform/crypto/index.d.ts.map +1 -1
- package/types/platform/crypto/index.native.d.ts +127 -0
- package/types/platform/crypto/index.native.d.ts.map +1 -1
- package/types/platform/crypto/types.d.ts +43 -0
- package/types/platform/crypto/types.d.ts.map +1 -0
- package/types/platform/crypto/web.d.ts +5 -0
- package/types/platform/crypto/web.d.ts.map +1 -0
- package/types/platform/extras.d.ts +2 -0
- package/types/platform/extras.d.ts.map +1 -1
- package/types/platform/specs/OneCrypto.nitro.d.ts +2 -0
- package/types/platform/specs/OneCrypto.nitro.d.ts.map +1 -1
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import { base64ToBytes, bytesToBase64, bytesToHex, concatBytes, exactBytes, hexToBytes } from "./bytes.native.js";
|
|
2
|
+
|
|
3
|
+
function _class_call_check(instance, Constructor) {
|
|
4
|
+
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
|
|
5
|
+
}
|
|
6
|
+
function _defineProperties(target, props) {
|
|
7
|
+
for (var i = 0; i < props.length; i++) {
|
|
8
|
+
var descriptor = props[i];
|
|
9
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
10
|
+
descriptor.configurable = true;
|
|
11
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
12
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
16
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
17
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
18
|
+
return Constructor;
|
|
19
|
+
}
|
|
20
|
+
function _define_property(obj, key, value) {
|
|
21
|
+
if (key in obj) {
|
|
22
|
+
Object.defineProperty(obj, key, {
|
|
23
|
+
value,
|
|
24
|
+
enumerable: true,
|
|
25
|
+
configurable: true,
|
|
26
|
+
writable: true
|
|
27
|
+
});
|
|
28
|
+
} else obj[key] = value;
|
|
29
|
+
return obj;
|
|
30
|
+
}
|
|
31
|
+
var KEY_SIZES = [
|
|
32
|
+
128,
|
|
33
|
+
192,
|
|
34
|
+
256
|
|
35
|
+
];
|
|
36
|
+
var TAG_LENGTHS = [
|
|
37
|
+
16,
|
|
38
|
+
15,
|
|
39
|
+
14,
|
|
40
|
+
13,
|
|
41
|
+
12,
|
|
42
|
+
8,
|
|
43
|
+
4
|
|
44
|
+
];
|
|
45
|
+
var DEFAULT_IV_LENGTH = 12;
|
|
46
|
+
var DEFAULT_TAG_LENGTH = 16;
|
|
47
|
+
function assertTagLength(tagLength, verb) {
|
|
48
|
+
if (!TAG_LENGTHS.includes(tagLength)) {
|
|
49
|
+
throw new Error(`${verb}: tagLength must be one of: ${TAG_LENGTHS.join(", ")}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
function toBytes(input, verb) {
|
|
53
|
+
if (typeof input === "string") return base64ToBytes(input, verb);
|
|
54
|
+
if (input instanceof ArrayBuffer) return new Uint8Array(input.slice(0));
|
|
55
|
+
if (ArrayBuffer.isView(input) && input.buffer instanceof ArrayBuffer) {
|
|
56
|
+
return exactBytes(new Uint8Array(input.buffer, input.byteOffset, input.byteLength));
|
|
57
|
+
}
|
|
58
|
+
throw new TypeError(`${verb}: expected a base64 string, Uint8Array, or ArrayBuffer`);
|
|
59
|
+
}
|
|
60
|
+
var sealedParts = /* @__PURE__ */ new WeakMap();
|
|
61
|
+
var keyBytes = /* @__PURE__ */ new WeakMap();
|
|
62
|
+
function encodeParts(bytes, encoding) {
|
|
63
|
+
return encoding === "base64" ? bytesToBase64(bytes) : exactBytes(bytes);
|
|
64
|
+
}
|
|
65
|
+
function createAesApi(engine) {
|
|
66
|
+
var AESEncryptionKey = /* @__PURE__ */ (function() {
|
|
67
|
+
"use strict";
|
|
68
|
+
function AESEncryptionKey2(bytes) {
|
|
69
|
+
_class_call_check(this, AESEncryptionKey2);
|
|
70
|
+
_define_property(this, "size", void 0);
|
|
71
|
+
if (!KEY_SIZES.includes(bytes.length * 8)) {
|
|
72
|
+
throw new Error(`Crypto.AESEncryptionKey: key must be 128, 192, or 256 bits, got ${bytes.length * 8}`);
|
|
73
|
+
}
|
|
74
|
+
this.size = bytes.length * 8;
|
|
75
|
+
keyBytes.set(this, exactBytes(bytes));
|
|
76
|
+
}
|
|
77
|
+
_create_class(AESEncryptionKey2, [{
|
|
78
|
+
key: "bytes",
|
|
79
|
+
value: async function bytes() {
|
|
80
|
+
return exactBytes(keyBytes.get(this));
|
|
81
|
+
}
|
|
82
|
+
}, {
|
|
83
|
+
key: "encoded",
|
|
84
|
+
value: async function encoded(encoding) {
|
|
85
|
+
var bytes = keyBytes.get(this);
|
|
86
|
+
if (encoding === "hex") return bytesToHex(bytes);
|
|
87
|
+
if (encoding === "base64") return bytesToBase64(bytes);
|
|
88
|
+
throw new Error(`Crypto.AESEncryptionKey.encoded: encoding must be 'hex' or 'base64'`);
|
|
89
|
+
}
|
|
90
|
+
}], [{
|
|
91
|
+
key: "generate",
|
|
92
|
+
value: async function generate() {
|
|
93
|
+
var size = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 256;
|
|
94
|
+
if (!KEY_SIZES.includes(size)) {
|
|
95
|
+
throw new Error(`Crypto.AESEncryptionKey.generate: size must be one of: ${KEY_SIZES.join(", ")}`);
|
|
96
|
+
}
|
|
97
|
+
var bytes = new Uint8Array(size / 8);
|
|
98
|
+
engine.random(bytes);
|
|
99
|
+
return new AESEncryptionKey2(bytes);
|
|
100
|
+
}
|
|
101
|
+
}, {
|
|
102
|
+
key: "import",
|
|
103
|
+
value: async function _import(input, encoding) {
|
|
104
|
+
var verb = "Crypto.AESEncryptionKey.import";
|
|
105
|
+
var bytes;
|
|
106
|
+
if (typeof input === "string") {
|
|
107
|
+
if (encoding === "hex") bytes = hexToBytes(input, verb);
|
|
108
|
+
else if (encoding === "base64") bytes = base64ToBytes(input, verb);
|
|
109
|
+
else throw new Error(`${verb}: encoding must be 'hex' or 'base64'`);
|
|
110
|
+
} else if (input instanceof Uint8Array) {
|
|
111
|
+
bytes = exactBytes(input);
|
|
112
|
+
} else {
|
|
113
|
+
throw new TypeError(`${verb}: expected bytes or an encoded string`);
|
|
114
|
+
}
|
|
115
|
+
if (!KEY_SIZES.includes(bytes.length * 8)) {
|
|
116
|
+
throw new Error(`${verb}: key must be 128, 192, or 256 bits, got ${bytes.length * 8}`);
|
|
117
|
+
}
|
|
118
|
+
return new AESEncryptionKey2(bytes);
|
|
119
|
+
}
|
|
120
|
+
}]);
|
|
121
|
+
return AESEncryptionKey2;
|
|
122
|
+
})();
|
|
123
|
+
var AESSealedData = /* @__PURE__ */ (function() {
|
|
124
|
+
"use strict";
|
|
125
|
+
function AESSealedData2(parts) {
|
|
126
|
+
_class_call_check(this, AESSealedData2);
|
|
127
|
+
if (parts.iv.length === 0) throw new Error("Crypto.AESSealedData: iv must not be empty");
|
|
128
|
+
assertTagLength(parts.tag.length, "Crypto.AESSealedData");
|
|
129
|
+
sealedParts.set(this, parts);
|
|
130
|
+
}
|
|
131
|
+
_create_class(AESSealedData2, [
|
|
132
|
+
{
|
|
133
|
+
key: "ivSize",
|
|
134
|
+
get: function get() {
|
|
135
|
+
return sealedParts.get(this).iv.length;
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
key: "tagSize",
|
|
140
|
+
get: function get() {
|
|
141
|
+
return sealedParts.get(this).tag.length;
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
key: "combinedSize",
|
|
146
|
+
get: function get() {
|
|
147
|
+
var parts = sealedParts.get(this);
|
|
148
|
+
return parts.iv.length + parts.ciphertext.length + parts.tag.length;
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
key: "iv",
|
|
153
|
+
value: async function iv(encoding) {
|
|
154
|
+
return encodeParts(sealedParts.get(this).iv, encoding);
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
key: "tag",
|
|
159
|
+
value: async function tag(encoding) {
|
|
160
|
+
return encodeParts(sealedParts.get(this).tag, encoding);
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
key: "ciphertext",
|
|
165
|
+
value: async function ciphertext(options) {
|
|
166
|
+
var parts = sealedParts.get(this);
|
|
167
|
+
var bytes = (options === null || options === void 0 ? void 0 : options.includeTag) ? concatBytes([parts.ciphertext, parts.tag]) : parts.ciphertext;
|
|
168
|
+
return encodeParts(bytes, options === null || options === void 0 ? void 0 : options.encoding);
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
key: "combined",
|
|
173
|
+
value: async function combined(encoding) {
|
|
174
|
+
var parts = sealedParts.get(this);
|
|
175
|
+
return encodeParts(concatBytes([
|
|
176
|
+
parts.iv,
|
|
177
|
+
parts.ciphertext,
|
|
178
|
+
parts.tag
|
|
179
|
+
]), encoding);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
], [
|
|
183
|
+
{
|
|
184
|
+
key: "fromCombined",
|
|
185
|
+
value: function fromCombined(combined) {
|
|
186
|
+
var config = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
|
|
187
|
+
var _config_ivLength, _config_tagLength;
|
|
188
|
+
var verb = "Crypto.AESSealedData.fromCombined";
|
|
189
|
+
var ivLength = (_config_ivLength = config.ivLength) !== null && _config_ivLength !== void 0 ? _config_ivLength : DEFAULT_IV_LENGTH;
|
|
190
|
+
var tagLength = (_config_tagLength = config.tagLength) !== null && _config_tagLength !== void 0 ? _config_tagLength : DEFAULT_TAG_LENGTH;
|
|
191
|
+
assertTagLength(tagLength, verb);
|
|
192
|
+
if (!Number.isInteger(ivLength) || ivLength <= 0) {
|
|
193
|
+
throw new Error(`${verb}: ivLength must be a positive integer`);
|
|
194
|
+
}
|
|
195
|
+
var bytes = toBytes(combined, verb);
|
|
196
|
+
if (bytes.length < ivLength + tagLength) {
|
|
197
|
+
throw new Error(`${verb}: combined data is shorter than its iv and tag`);
|
|
198
|
+
}
|
|
199
|
+
return new AESSealedData2({
|
|
200
|
+
iv: exactBytes(bytes.subarray(0, ivLength)),
|
|
201
|
+
ciphertext: exactBytes(bytes.subarray(ivLength, bytes.length - tagLength)),
|
|
202
|
+
tag: exactBytes(bytes.subarray(bytes.length - tagLength))
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
key: "fromParts",
|
|
208
|
+
value: function fromParts(ivInput, ciphertextInput, tagOrLength) {
|
|
209
|
+
var verb = "Crypto.AESSealedData.fromParts";
|
|
210
|
+
var iv = toBytes(ivInput, verb);
|
|
211
|
+
var ciphertext = toBytes(ciphertextInput, verb);
|
|
212
|
+
if (tagOrLength === void 0 || typeof tagOrLength === "number") {
|
|
213
|
+
var tagLength = tagOrLength !== null && tagOrLength !== void 0 ? tagOrLength : DEFAULT_TAG_LENGTH;
|
|
214
|
+
assertTagLength(tagLength, verb);
|
|
215
|
+
if (ciphertext.length < tagLength) {
|
|
216
|
+
throw new Error(`${verb}: ciphertext is shorter than its tag`);
|
|
217
|
+
}
|
|
218
|
+
return new AESSealedData2({
|
|
219
|
+
iv,
|
|
220
|
+
ciphertext: exactBytes(ciphertext.subarray(0, ciphertext.length - tagLength)),
|
|
221
|
+
tag: exactBytes(ciphertext.subarray(ciphertext.length - tagLength))
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
var tag = toBytes(tagOrLength, verb);
|
|
225
|
+
assertTagLength(tag.length, verb);
|
|
226
|
+
return new AESSealedData2({
|
|
227
|
+
iv,
|
|
228
|
+
ciphertext,
|
|
229
|
+
tag
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
key: "fromSeal",
|
|
235
|
+
value: (function fromSeal(iv, ciphertextWithTag, tagLength) {
|
|
236
|
+
return new AESSealedData2({
|
|
237
|
+
iv,
|
|
238
|
+
ciphertext: exactBytes(ciphertextWithTag.subarray(0, ciphertextWithTag.length - tagLength)),
|
|
239
|
+
tag: exactBytes(ciphertextWithTag.subarray(ciphertextWithTag.length - tagLength))
|
|
240
|
+
});
|
|
241
|
+
})
|
|
242
|
+
}
|
|
243
|
+
]);
|
|
244
|
+
return AESSealedData2;
|
|
245
|
+
})();
|
|
246
|
+
async function keyMaterial(key, verb) {
|
|
247
|
+
var own = keyBytes.get(key);
|
|
248
|
+
if (own) return exactBytes(own);
|
|
249
|
+
if (key && typeof key.bytes === "function") return exactBytes(await key.bytes());
|
|
250
|
+
throw new TypeError(`${verb}: expected an AESEncryptionKey`);
|
|
251
|
+
}
|
|
252
|
+
async function partsOf(sealed, verb) {
|
|
253
|
+
var own = sealedParts.get(sealed);
|
|
254
|
+
if (own) {
|
|
255
|
+
return {
|
|
256
|
+
iv: exactBytes(own.iv),
|
|
257
|
+
ciphertext: exactBytes(own.ciphertext),
|
|
258
|
+
tag: exactBytes(own.tag)
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
if (sealed && typeof sealed.iv === "function" && typeof sealed.combined === "function") {
|
|
262
|
+
var iv = exactBytes(await sealed.iv());
|
|
263
|
+
var tag = exactBytes(await sealed.tag());
|
|
264
|
+
var ciphertext = exactBytes(await sealed.ciphertext({
|
|
265
|
+
encoding: "bytes",
|
|
266
|
+
includeTag: false
|
|
267
|
+
}));
|
|
268
|
+
return {
|
|
269
|
+
iv,
|
|
270
|
+
ciphertext,
|
|
271
|
+
tag
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
throw new TypeError(`${verb}: expected an AESSealedData`);
|
|
275
|
+
}
|
|
276
|
+
async function aesEncrypt(plaintext, key) {
|
|
277
|
+
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
|
|
278
|
+
var _options_tagLength;
|
|
279
|
+
var verb = "Crypto.aesEncrypt";
|
|
280
|
+
var tagLength = (_options_tagLength = options.tagLength) !== null && _options_tagLength !== void 0 ? _options_tagLength : DEFAULT_TAG_LENGTH;
|
|
281
|
+
assertTagLength(tagLength, verb);
|
|
282
|
+
var iv;
|
|
283
|
+
var nonce = options.nonce;
|
|
284
|
+
if (nonce && "bytes" in nonce && nonce.bytes !== void 0) {
|
|
285
|
+
iv = toBytes(nonce.bytes, verb);
|
|
286
|
+
if (iv.length === 0) throw new Error(`${verb}: nonce bytes must not be empty`);
|
|
287
|
+
} else {
|
|
288
|
+
var length = nonce && "length" in nonce && nonce.length !== void 0 ? nonce.length : DEFAULT_IV_LENGTH;
|
|
289
|
+
if (!Number.isInteger(length) || length <= 0) {
|
|
290
|
+
throw new Error(`${verb}: nonce length must be a positive integer`);
|
|
291
|
+
}
|
|
292
|
+
iv = new Uint8Array(length);
|
|
293
|
+
engine.random(iv);
|
|
294
|
+
}
|
|
295
|
+
var additionalData = options.additionalData === void 0 ? void 0 : toBytes(options.additionalData, verb);
|
|
296
|
+
var plainBytes = toBytes(plaintext, verb);
|
|
297
|
+
var sealed = await engine.seal(await keyMaterial(key, verb), iv, plainBytes, additionalData, tagLength);
|
|
298
|
+
var actualTag = sealed.length - plainBytes.length;
|
|
299
|
+
return AESSealedData.fromSeal(iv, sealed, actualTag > 0 ? actualTag : tagLength);
|
|
300
|
+
}
|
|
301
|
+
async function aesDecrypt(sealedData, key) {
|
|
302
|
+
var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
|
|
303
|
+
var verb = "Crypto.aesDecrypt";
|
|
304
|
+
var parts = await partsOf(sealedData, verb);
|
|
305
|
+
var additionalData = options.additionalData === void 0 ? void 0 : toBytes(options.additionalData, verb);
|
|
306
|
+
var plaintext = await engine.open(await keyMaterial(key, verb), parts.iv, concatBytes([parts.ciphertext, parts.tag]), additionalData, parts.tag.length);
|
|
307
|
+
return options.output === "base64" ? bytesToBase64(plaintext) : plaintext;
|
|
308
|
+
}
|
|
309
|
+
return {
|
|
310
|
+
AESEncryptionKey,
|
|
311
|
+
AESSealedData,
|
|
312
|
+
aesEncrypt,
|
|
313
|
+
aesDecrypt
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
export { assertTagLength, createAesApi, toBytes };
|
|
318
|
+
//# sourceMappingURL=aes.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aes.native.js","names":[],"sources":["esm/platform/crypto/aes.native.js"],"sourcesContent":["import { base64ToBytes, bytesToBase64, bytesToHex, concatBytes, exactBytes, hexToBytes } from \"./bytes\";\nfunction _class_call_check(instance, Constructor) {\n if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else obj[key] = value;\n return obj;\n}\nvar KEY_SIZES = [\n 128,\n 192,\n 256\n];\nvar TAG_LENGTHS = [\n 16,\n 15,\n 14,\n 13,\n 12,\n 8,\n 4\n];\nvar DEFAULT_IV_LENGTH = 12;\nvar DEFAULT_TAG_LENGTH = 16;\nfunction assertTagLength(tagLength, verb) {\n if (!TAG_LENGTHS.includes(tagLength)) {\n throw new Error(`${verb}: tagLength must be one of: ${TAG_LENGTHS.join(\", \")}`);\n }\n}\nfunction toBytes(input, verb) {\n if (typeof input === \"string\") return base64ToBytes(input, verb);\n if (input instanceof ArrayBuffer) return new Uint8Array(input.slice(0));\n if (ArrayBuffer.isView(input) && input.buffer instanceof ArrayBuffer) {\n return exactBytes(new Uint8Array(input.buffer, input.byteOffset, input.byteLength));\n }\n throw new TypeError(`${verb}: expected a base64 string, Uint8Array, or ArrayBuffer`);\n}\nvar sealedParts = /* @__PURE__ */ new WeakMap();\nvar keyBytes = /* @__PURE__ */ new WeakMap();\nfunction encodeParts(bytes, encoding) {\n return encoding === \"base64\" ? bytesToBase64(bytes) : exactBytes(bytes);\n}\nfunction createAesApi(engine) {\n var AESEncryptionKey = /* @__PURE__ */ (function() {\n \"use strict\";\n function AESEncryptionKey2(bytes) {\n _class_call_check(this, AESEncryptionKey2);\n _define_property(this, \"size\", void 0);\n if (!KEY_SIZES.includes(bytes.length * 8)) {\n throw new Error(`Crypto.AESEncryptionKey: key must be 128, 192, or 256 bits, got ${bytes.length * 8}`);\n }\n this.size = bytes.length * 8;\n keyBytes.set(this, exactBytes(bytes));\n }\n _create_class(AESEncryptionKey2, [\n {\n key: \"bytes\",\n value: async function bytes() {\n return exactBytes(keyBytes.get(this));\n }\n },\n {\n key: \"encoded\",\n value: async function encoded(encoding) {\n var bytes = keyBytes.get(this);\n if (encoding === \"hex\") return bytesToHex(bytes);\n if (encoding === \"base64\") return bytesToBase64(bytes);\n throw new Error(`Crypto.AESEncryptionKey.encoded: encoding must be 'hex' or 'base64'`);\n }\n }\n ], [\n {\n key: \"generate\",\n value: async function generate() {\n var size = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 256;\n if (!KEY_SIZES.includes(size)) {\n throw new Error(`Crypto.AESEncryptionKey.generate: size must be one of: ${KEY_SIZES.join(\", \")}`);\n }\n var bytes = new Uint8Array(size / 8);\n engine.random(bytes);\n return new AESEncryptionKey2(bytes);\n }\n },\n {\n key: \"import\",\n value: async function _import(input, encoding) {\n var verb = \"Crypto.AESEncryptionKey.import\";\n var bytes;\n if (typeof input === \"string\") {\n if (encoding === \"hex\") bytes = hexToBytes(input, verb);\n else if (encoding === \"base64\") bytes = base64ToBytes(input, verb);\n else throw new Error(`${verb}: encoding must be 'hex' or 'base64'`);\n } else if (input instanceof Uint8Array) {\n bytes = exactBytes(input);\n } else {\n throw new TypeError(`${verb}: expected bytes or an encoded string`);\n }\n if (!KEY_SIZES.includes(bytes.length * 8)) {\n throw new Error(`${verb}: key must be 128, 192, or 256 bits, got ${bytes.length * 8}`);\n }\n return new AESEncryptionKey2(bytes);\n }\n }\n ]);\n return AESEncryptionKey2;\n })();\n var AESSealedData = /* @__PURE__ */ (function() {\n \"use strict\";\n function AESSealedData2(parts) {\n _class_call_check(this, AESSealedData2);\n if (parts.iv.length === 0) throw new Error(\"Crypto.AESSealedData: iv must not be empty\");\n assertTagLength(parts.tag.length, \"Crypto.AESSealedData\");\n sealedParts.set(this, parts);\n }\n _create_class(AESSealedData2, [\n {\n key: \"ivSize\",\n get: function get() {\n return sealedParts.get(this).iv.length;\n }\n },\n {\n key: \"tagSize\",\n get: function get() {\n return sealedParts.get(this).tag.length;\n }\n },\n {\n key: \"combinedSize\",\n get: function get() {\n var parts = sealedParts.get(this);\n return parts.iv.length + parts.ciphertext.length + parts.tag.length;\n }\n },\n {\n key: \"iv\",\n value: async function iv(encoding) {\n return encodeParts(sealedParts.get(this).iv, encoding);\n }\n },\n {\n key: \"tag\",\n value: async function tag(encoding) {\n return encodeParts(sealedParts.get(this).tag, encoding);\n }\n },\n {\n key: \"ciphertext\",\n value: async function ciphertext(options) {\n var parts = sealedParts.get(this);\n var bytes = (options === null || options === void 0 ? void 0 : options.includeTag) ? concatBytes([\n parts.ciphertext,\n parts.tag\n ]) : parts.ciphertext;\n return encodeParts(bytes, options === null || options === void 0 ? void 0 : options.encoding);\n }\n },\n {\n key: \"combined\",\n value: async function combined(encoding) {\n var parts = sealedParts.get(this);\n return encodeParts(concatBytes([\n parts.iv,\n parts.ciphertext,\n parts.tag\n ]), encoding);\n }\n }\n ], [\n {\n key: \"fromCombined\",\n value: function fromCombined(combined) {\n var config = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n var _config_ivLength, _config_tagLength;\n var verb = \"Crypto.AESSealedData.fromCombined\";\n var ivLength = (_config_ivLength = config.ivLength) !== null && _config_ivLength !== void 0 ? _config_ivLength : DEFAULT_IV_LENGTH;\n var tagLength = (_config_tagLength = config.tagLength) !== null && _config_tagLength !== void 0 ? _config_tagLength : DEFAULT_TAG_LENGTH;\n assertTagLength(tagLength, verb);\n if (!Number.isInteger(ivLength) || ivLength <= 0) {\n throw new Error(`${verb}: ivLength must be a positive integer`);\n }\n var bytes = toBytes(combined, verb);\n if (bytes.length < ivLength + tagLength) {\n throw new Error(`${verb}: combined data is shorter than its iv and tag`);\n }\n return new AESSealedData2({\n iv: exactBytes(bytes.subarray(0, ivLength)),\n ciphertext: exactBytes(bytes.subarray(ivLength, bytes.length - tagLength)),\n tag: exactBytes(bytes.subarray(bytes.length - tagLength))\n });\n }\n },\n {\n key: \"fromParts\",\n value: function fromParts(ivInput, ciphertextInput, tagOrLength) {\n var verb = \"Crypto.AESSealedData.fromParts\";\n var iv = toBytes(ivInput, verb);\n var ciphertext = toBytes(ciphertextInput, verb);\n if (tagOrLength === void 0 || typeof tagOrLength === \"number\") {\n var tagLength = tagOrLength !== null && tagOrLength !== void 0 ? tagOrLength : DEFAULT_TAG_LENGTH;\n assertTagLength(tagLength, verb);\n if (ciphertext.length < tagLength) {\n throw new Error(`${verb}: ciphertext is shorter than its tag`);\n }\n return new AESSealedData2({\n iv,\n ciphertext: exactBytes(ciphertext.subarray(0, ciphertext.length - tagLength)),\n tag: exactBytes(ciphertext.subarray(ciphertext.length - tagLength))\n });\n }\n var tag = toBytes(tagOrLength, verb);\n assertTagLength(tag.length, verb);\n return new AESSealedData2({\n iv,\n ciphertext,\n tag\n });\n }\n },\n {\n key: \"fromSeal\",\n value: (\n // internal: aesEncrypt builds sealed data from engine output without\n // going through the public parsers (which would just re-split it).\n function fromSeal(iv, ciphertextWithTag, tagLength) {\n return new AESSealedData2({\n iv,\n ciphertext: exactBytes(ciphertextWithTag.subarray(0, ciphertextWithTag.length - tagLength)),\n tag: exactBytes(ciphertextWithTag.subarray(ciphertextWithTag.length - tagLength))\n });\n }\n )\n }\n ]);\n return AESSealedData2;\n })();\n async function keyMaterial(key, verb) {\n var own = keyBytes.get(key);\n if (own) return exactBytes(own);\n if (key && typeof key.bytes === \"function\") return exactBytes(await key.bytes());\n throw new TypeError(`${verb}: expected an AESEncryptionKey`);\n }\n async function partsOf(sealed, verb) {\n var own = sealedParts.get(sealed);\n if (own) {\n return {\n iv: exactBytes(own.iv),\n ciphertext: exactBytes(own.ciphertext),\n tag: exactBytes(own.tag)\n };\n }\n if (sealed && typeof sealed.iv === \"function\" && typeof sealed.combined === \"function\") {\n var iv = exactBytes(await sealed.iv());\n var tag = exactBytes(await sealed.tag());\n var ciphertext = exactBytes(await sealed.ciphertext({\n encoding: \"bytes\",\n includeTag: false\n }));\n return {\n iv,\n ciphertext,\n tag\n };\n }\n throw new TypeError(`${verb}: expected an AESSealedData`);\n }\n async function aesEncrypt(plaintext, key) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var _options_tagLength;\n var verb = \"Crypto.aesEncrypt\";\n var tagLength = (_options_tagLength = options.tagLength) !== null && _options_tagLength !== void 0 ? _options_tagLength : DEFAULT_TAG_LENGTH;\n assertTagLength(tagLength, verb);\n var iv;\n var nonce = options.nonce;\n if (nonce && \"bytes\" in nonce && nonce.bytes !== void 0) {\n iv = toBytes(nonce.bytes, verb);\n if (iv.length === 0) throw new Error(`${verb}: nonce bytes must not be empty`);\n } else {\n var length = nonce && \"length\" in nonce && nonce.length !== void 0 ? nonce.length : DEFAULT_IV_LENGTH;\n if (!Number.isInteger(length) || length <= 0) {\n throw new Error(`${verb}: nonce length must be a positive integer`);\n }\n iv = new Uint8Array(length);\n engine.random(iv);\n }\n var additionalData = options.additionalData === void 0 ? void 0 : toBytes(options.additionalData, verb);\n var plainBytes = toBytes(plaintext, verb);\n var sealed = await engine.seal(await keyMaterial(key, verb), iv, plainBytes, additionalData, tagLength);\n var actualTag = sealed.length - plainBytes.length;\n return AESSealedData.fromSeal(iv, sealed, actualTag > 0 ? actualTag : tagLength);\n }\n async function aesDecrypt(sealedData, key) {\n var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};\n var verb = \"Crypto.aesDecrypt\";\n var parts = await partsOf(sealedData, verb);\n var additionalData = options.additionalData === void 0 ? void 0 : toBytes(options.additionalData, verb);\n var plaintext = await engine.open(await keyMaterial(key, verb), parts.iv, concatBytes([\n parts.ciphertext,\n parts.tag\n ]), additionalData, parts.tag.length);\n return options.output === \"base64\" ? bytesToBase64(plaintext) : plaintext;\n }\n return {\n AESEncryptionKey,\n AESSealedData,\n aesEncrypt,\n aesDecrypt\n };\n}\nexport {\n assertTagLength,\n createAesApi,\n toBytes\n};\n//# sourceMappingURL=aes.js.map\n"],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
const HEX_DIGITS = "0123456789abcdef";
|
|
2
|
+
function bytesToHex(bytes) {
|
|
3
|
+
let out = "";
|
|
4
|
+
for (const byte of bytes) out += HEX_DIGITS[byte >> 4] + HEX_DIGITS[byte & 15];
|
|
5
|
+
return out;
|
|
6
|
+
}
|
|
7
|
+
function hexToBytes(hex, verb) {
|
|
8
|
+
if (hex.length % 2 !== 0 || /[^0-9a-fA-F]/.test(hex)) {
|
|
9
|
+
throw new Error(`${verb}: expected an even-length hex string`);
|
|
10
|
+
}
|
|
11
|
+
const out = new Uint8Array(hex.length / 2);
|
|
12
|
+
for (let index = 0; index < out.length; index++) {
|
|
13
|
+
out[index] = parseInt(hex.slice(index * 2, index * 2 + 2), 16);
|
|
14
|
+
}
|
|
15
|
+
return out;
|
|
16
|
+
}
|
|
17
|
+
const BASE64_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
18
|
+
const BASE64_VALUES = new Int16Array(128).fill(-1);
|
|
19
|
+
for (let index = 0; index < BASE64_ALPHABET.length; index++) {
|
|
20
|
+
BASE64_VALUES[BASE64_ALPHABET.charCodeAt(index)] = index;
|
|
21
|
+
}
|
|
22
|
+
function bytesToBase64(bytes) {
|
|
23
|
+
let out = "";
|
|
24
|
+
for (let index = 0; index < bytes.length; index += 3) {
|
|
25
|
+
const first = bytes[index];
|
|
26
|
+
const second = bytes[index + 1];
|
|
27
|
+
const third = bytes[index + 2];
|
|
28
|
+
out += BASE64_ALPHABET[first >> 2];
|
|
29
|
+
out += BASE64_ALPHABET[(first & 3) << 4 | (second ?? 0) >> 4];
|
|
30
|
+
out += second === void 0 ? "=" : BASE64_ALPHABET[(second & 15) << 2 | (third ?? 0) >> 6];
|
|
31
|
+
out += third === void 0 ? "=" : BASE64_ALPHABET[third & 63];
|
|
32
|
+
}
|
|
33
|
+
return out;
|
|
34
|
+
}
|
|
35
|
+
function base64ToBytes(base64, verb) {
|
|
36
|
+
if (base64.length % 4 !== 0 || /[^A-Za-z0-9+/=]/.test(base64)) {
|
|
37
|
+
throw new Error(`${verb}: expected a base64 string`);
|
|
38
|
+
}
|
|
39
|
+
const padding = base64.endsWith("==") ? 2 : base64.endsWith("=") ? 1 : 0;
|
|
40
|
+
if (base64.slice(0, base64.length - padding).includes("=")) {
|
|
41
|
+
throw new Error(`${verb}: expected a base64 string`);
|
|
42
|
+
}
|
|
43
|
+
const out = new Uint8Array(base64.length / 4 * 3 - padding);
|
|
44
|
+
let at = 0;
|
|
45
|
+
for (let index = 0; index < base64.length; index += 4) {
|
|
46
|
+
const values = [
|
|
47
|
+
0,
|
|
48
|
+
1,
|
|
49
|
+
2,
|
|
50
|
+
3
|
|
51
|
+
].map((offset) => {
|
|
52
|
+
const code = base64.charCodeAt(index + offset);
|
|
53
|
+
return code === 61 ? 0 : BASE64_VALUES[code];
|
|
54
|
+
});
|
|
55
|
+
if (values.some((value) => value < 0)) throw new Error(`${verb}: expected a base64 string`);
|
|
56
|
+
if (at < out.length) out[at++] = values[0] << 2 | values[1] >> 4;
|
|
57
|
+
if (at < out.length) out[at++] = (values[1] & 15) << 4 | values[2] >> 2;
|
|
58
|
+
if (at < out.length) out[at++] = (values[2] & 3) << 6 | values[3];
|
|
59
|
+
}
|
|
60
|
+
return out;
|
|
61
|
+
}
|
|
62
|
+
function utf8Encode(text) {
|
|
63
|
+
const bytes = [];
|
|
64
|
+
for (let index = 0; index < text.length; index++) {
|
|
65
|
+
let code = text.charCodeAt(index);
|
|
66
|
+
if (code >= 55296 && code <= 56319) {
|
|
67
|
+
const next = text.charCodeAt(index + 1);
|
|
68
|
+
if (next >= 56320 && next <= 57343) {
|
|
69
|
+
code = 65536 + (code - 55296 << 10) + (next - 56320);
|
|
70
|
+
index++;
|
|
71
|
+
} else {
|
|
72
|
+
code = 65533;
|
|
73
|
+
}
|
|
74
|
+
} else if (code >= 56320 && code <= 57343) {
|
|
75
|
+
code = 65533;
|
|
76
|
+
}
|
|
77
|
+
if (code < 128) {
|
|
78
|
+
bytes.push(code);
|
|
79
|
+
} else if (code < 2048) {
|
|
80
|
+
bytes.push(192 | code >> 6, 128 | code & 63);
|
|
81
|
+
} else if (code < 65536) {
|
|
82
|
+
bytes.push(224 | code >> 12, 128 | code >> 6 & 63, 128 | code & 63);
|
|
83
|
+
} else {
|
|
84
|
+
bytes.push(240 | code >> 18, 128 | code >> 12 & 63, 128 | code >> 6 & 63, 128 | code & 63);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return new Uint8Array(bytes);
|
|
88
|
+
}
|
|
89
|
+
function exactBytes(view) {
|
|
90
|
+
return new Uint8Array(view);
|
|
91
|
+
}
|
|
92
|
+
function concatBytes(parts) {
|
|
93
|
+
const length = parts.reduce((sum, part) => sum + part.length, 0);
|
|
94
|
+
const out = new Uint8Array(length);
|
|
95
|
+
let at = 0;
|
|
96
|
+
for (const part of parts) {
|
|
97
|
+
out.set(part, at);
|
|
98
|
+
at += part.length;
|
|
99
|
+
}
|
|
100
|
+
return out;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export { base64ToBytes, bytesToBase64, bytesToHex, concatBytes, exactBytes, hexToBytes, utf8Encode };
|
|
104
|
+
//# sourceMappingURL=bytes.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bytes.js","names":[],"sources":["esm/platform/crypto/bytes.js"],"sourcesContent":["const HEX_DIGITS = \"0123456789abcdef\";\nfunction bytesToHex(bytes) {\n let out = \"\";\n for (const byte of bytes) out += HEX_DIGITS[byte >> 4] + HEX_DIGITS[byte & 15];\n return out;\n}\nfunction hexToBytes(hex, verb) {\n if (hex.length % 2 !== 0 || /[^0-9a-fA-F]/.test(hex)) {\n throw new Error(`${verb}: expected an even-length hex string`);\n }\n const out = new Uint8Array(hex.length / 2);\n for (let index = 0; index < out.length; index++) {\n out[index] = parseInt(hex.slice(index * 2, index * 2 + 2), 16);\n }\n return out;\n}\nconst BASE64_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nconst BASE64_VALUES = new Int16Array(128).fill(-1);\nfor (let index = 0; index < BASE64_ALPHABET.length; index++) {\n BASE64_VALUES[BASE64_ALPHABET.charCodeAt(index)] = index;\n}\nfunction bytesToBase64(bytes) {\n let out = \"\";\n for (let index = 0; index < bytes.length; index += 3) {\n const first = bytes[index];\n const second = bytes[index + 1];\n const third = bytes[index + 2];\n out += BASE64_ALPHABET[first >> 2];\n out += BASE64_ALPHABET[(first & 3) << 4 | (second ?? 0) >> 4];\n out += second === void 0 ? \"=\" : BASE64_ALPHABET[(second & 15) << 2 | (third ?? 0) >> 6];\n out += third === void 0 ? \"=\" : BASE64_ALPHABET[third & 63];\n }\n return out;\n}\nfunction base64ToBytes(base64, verb) {\n if (base64.length % 4 !== 0 || /[^A-Za-z0-9+/=]/.test(base64)) {\n throw new Error(`${verb}: expected a base64 string`);\n }\n const padding = base64.endsWith(\"==\") ? 2 : base64.endsWith(\"=\") ? 1 : 0;\n if (base64.slice(0, base64.length - padding).includes(\"=\")) {\n throw new Error(`${verb}: expected a base64 string`);\n }\n const out = new Uint8Array(base64.length / 4 * 3 - padding);\n let at = 0;\n for (let index = 0; index < base64.length; index += 4) {\n const values = [0, 1, 2, 3].map((offset) => {\n const code = base64.charCodeAt(index + offset);\n return code === 61 ? 0 : BASE64_VALUES[code];\n });\n if (values.some((value) => value < 0)) throw new Error(`${verb}: expected a base64 string`);\n if (at < out.length) out[at++] = values[0] << 2 | values[1] >> 4;\n if (at < out.length) out[at++] = (values[1] & 15) << 4 | values[2] >> 2;\n if (at < out.length) out[at++] = (values[2] & 3) << 6 | values[3];\n }\n return out;\n}\nfunction utf8Encode(text) {\n const bytes = [];\n for (let index = 0; index < text.length; index++) {\n let code = text.charCodeAt(index);\n if (code >= 55296 && code <= 56319) {\n const next = text.charCodeAt(index + 1);\n if (next >= 56320 && next <= 57343) {\n code = 65536 + (code - 55296 << 10) + (next - 56320);\n index++;\n } else {\n code = 65533;\n }\n } else if (code >= 56320 && code <= 57343) {\n code = 65533;\n }\n if (code < 128) {\n bytes.push(code);\n } else if (code < 2048) {\n bytes.push(192 | code >> 6, 128 | code & 63);\n } else if (code < 65536) {\n bytes.push(224 | code >> 12, 128 | code >> 6 & 63, 128 | code & 63);\n } else {\n bytes.push(\n 240 | code >> 18,\n 128 | code >> 12 & 63,\n 128 | code >> 6 & 63,\n 128 | code & 63\n );\n }\n }\n return new Uint8Array(bytes);\n}\nfunction exactBytes(view) {\n return new Uint8Array(view);\n}\nfunction concatBytes(parts) {\n const length = parts.reduce((sum, part) => sum + part.length, 0);\n const out = new Uint8Array(length);\n let at = 0;\n for (const part of parts) {\n out.set(part, at);\n at += part.length;\n }\n return out;\n}\nexport {\n base64ToBytes,\n bytesToBase64,\n bytesToHex,\n concatBytes,\n exactBytes,\n hexToBytes,\n utf8Encode\n};\n//# sourceMappingURL=bytes.js.map\n"],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
var HEX_DIGITS = "0123456789abcdef";
|
|
2
|
+
function bytesToHex(bytes) {
|
|
3
|
+
var out = "";
|
|
4
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
5
|
+
try {
|
|
6
|
+
for (var _iterator = bytes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
7
|
+
var byte = _step.value;
|
|
8
|
+
out += HEX_DIGITS[byte >> 4] + HEX_DIGITS[byte & 15];
|
|
9
|
+
}
|
|
10
|
+
} catch (err) {
|
|
11
|
+
_didIteratorError = true;
|
|
12
|
+
_iteratorError = err;
|
|
13
|
+
} finally {
|
|
14
|
+
try {
|
|
15
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
16
|
+
_iterator.return();
|
|
17
|
+
}
|
|
18
|
+
} finally {
|
|
19
|
+
if (_didIteratorError) {
|
|
20
|
+
throw _iteratorError;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
function hexToBytes(hex, verb) {
|
|
27
|
+
if (hex.length % 2 !== 0 || /[^0-9a-fA-F]/.test(hex)) {
|
|
28
|
+
throw new Error(`${verb}: expected an even-length hex string`);
|
|
29
|
+
}
|
|
30
|
+
var out = new Uint8Array(hex.length / 2);
|
|
31
|
+
for (var index2 = 0; index2 < out.length; index2++) {
|
|
32
|
+
out[index2] = parseInt(hex.slice(index2 * 2, index2 * 2 + 2), 16);
|
|
33
|
+
}
|
|
34
|
+
return out;
|
|
35
|
+
}
|
|
36
|
+
var BASE64_ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
|
|
37
|
+
var BASE64_VALUES = new Int16Array(128).fill(-1);
|
|
38
|
+
for (var index = 0; index < BASE64_ALPHABET.length; index++) {
|
|
39
|
+
BASE64_VALUES[BASE64_ALPHABET.charCodeAt(index)] = index;
|
|
40
|
+
}
|
|
41
|
+
function bytesToBase64(bytes) {
|
|
42
|
+
var out = "";
|
|
43
|
+
for (var index2 = 0; index2 < bytes.length; index2 += 3) {
|
|
44
|
+
var first = bytes[index2];
|
|
45
|
+
var second = bytes[index2 + 1];
|
|
46
|
+
var third = bytes[index2 + 2];
|
|
47
|
+
out += BASE64_ALPHABET[first >> 2];
|
|
48
|
+
out += BASE64_ALPHABET[(first & 3) << 4 | (second !== null && second !== void 0 ? second : 0) >> 4];
|
|
49
|
+
out += second === void 0 ? "=" : BASE64_ALPHABET[(second & 15) << 2 | (third !== null && third !== void 0 ? third : 0) >> 6];
|
|
50
|
+
out += third === void 0 ? "=" : BASE64_ALPHABET[third & 63];
|
|
51
|
+
}
|
|
52
|
+
return out;
|
|
53
|
+
}
|
|
54
|
+
function base64ToBytes(base64, verb) {
|
|
55
|
+
var _loop = function(index3) {
|
|
56
|
+
var values = [
|
|
57
|
+
0,
|
|
58
|
+
1,
|
|
59
|
+
2,
|
|
60
|
+
3
|
|
61
|
+
].map(function(offset) {
|
|
62
|
+
var code = base64.charCodeAt(index3 + offset);
|
|
63
|
+
return code === 61 ? 0 : BASE64_VALUES[code];
|
|
64
|
+
});
|
|
65
|
+
if (values.some(function(value) {
|
|
66
|
+
return value < 0;
|
|
67
|
+
})) throw new Error(`${verb}: expected a base64 string`);
|
|
68
|
+
if (at < out.length) out[at++] = values[0] << 2 | values[1] >> 4;
|
|
69
|
+
if (at < out.length) out[at++] = (values[1] & 15) << 4 | values[2] >> 2;
|
|
70
|
+
if (at < out.length) out[at++] = (values[2] & 3) << 6 | values[3];
|
|
71
|
+
};
|
|
72
|
+
if (base64.length % 4 !== 0 || /[^A-Za-z0-9+/=]/.test(base64)) {
|
|
73
|
+
throw new Error(`${verb}: expected a base64 string`);
|
|
74
|
+
}
|
|
75
|
+
var padding = base64.endsWith("==") ? 2 : base64.endsWith("=") ? 1 : 0;
|
|
76
|
+
if (base64.slice(0, base64.length - padding).includes("=")) {
|
|
77
|
+
throw new Error(`${verb}: expected a base64 string`);
|
|
78
|
+
}
|
|
79
|
+
var out = new Uint8Array(base64.length / 4 * 3 - padding);
|
|
80
|
+
var at = 0;
|
|
81
|
+
for (var index2 = 0; index2 < base64.length; index2 += 4) _loop(index2);
|
|
82
|
+
return out;
|
|
83
|
+
}
|
|
84
|
+
function utf8Encode(text) {
|
|
85
|
+
var bytes = [];
|
|
86
|
+
for (var index2 = 0; index2 < text.length; index2++) {
|
|
87
|
+
var code = text.charCodeAt(index2);
|
|
88
|
+
if (code >= 55296 && code <= 56319) {
|
|
89
|
+
var next = text.charCodeAt(index2 + 1);
|
|
90
|
+
if (next >= 56320 && next <= 57343) {
|
|
91
|
+
code = 65536 + (code - 55296 << 10) + (next - 56320);
|
|
92
|
+
index2++;
|
|
93
|
+
} else {
|
|
94
|
+
code = 65533;
|
|
95
|
+
}
|
|
96
|
+
} else if (code >= 56320 && code <= 57343) {
|
|
97
|
+
code = 65533;
|
|
98
|
+
}
|
|
99
|
+
if (code < 128) {
|
|
100
|
+
bytes.push(code);
|
|
101
|
+
} else if (code < 2048) {
|
|
102
|
+
bytes.push(192 | code >> 6, 128 | code & 63);
|
|
103
|
+
} else if (code < 65536) {
|
|
104
|
+
bytes.push(224 | code >> 12, 128 | code >> 6 & 63, 128 | code & 63);
|
|
105
|
+
} else {
|
|
106
|
+
bytes.push(240 | code >> 18, 128 | code >> 12 & 63, 128 | code >> 6 & 63, 128 | code & 63);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return new Uint8Array(bytes);
|
|
110
|
+
}
|
|
111
|
+
function exactBytes(view) {
|
|
112
|
+
return new Uint8Array(view);
|
|
113
|
+
}
|
|
114
|
+
function concatBytes(parts) {
|
|
115
|
+
var length = parts.reduce(function(sum, part2) {
|
|
116
|
+
return sum + part2.length;
|
|
117
|
+
}, 0);
|
|
118
|
+
var out = new Uint8Array(length);
|
|
119
|
+
var at = 0;
|
|
120
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
|
|
121
|
+
try {
|
|
122
|
+
for (var _iterator = parts[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
|
123
|
+
var part = _step.value;
|
|
124
|
+
out.set(part, at);
|
|
125
|
+
at += part.length;
|
|
126
|
+
}
|
|
127
|
+
} catch (err) {
|
|
128
|
+
_didIteratorError = true;
|
|
129
|
+
_iteratorError = err;
|
|
130
|
+
} finally {
|
|
131
|
+
try {
|
|
132
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
133
|
+
_iterator.return();
|
|
134
|
+
}
|
|
135
|
+
} finally {
|
|
136
|
+
if (_didIteratorError) {
|
|
137
|
+
throw _iteratorError;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return out;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export { base64ToBytes, bytesToBase64, bytesToHex, concatBytes, exactBytes, hexToBytes, utf8Encode };
|
|
145
|
+
//# sourceMappingURL=bytes.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bytes.native.js","names":[],"sources":["esm/platform/crypto/bytes.native.js"],"sourcesContent":["var HEX_DIGITS = \"0123456789abcdef\";\nfunction bytesToHex(bytes) {\n var out = \"\";\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = bytes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var byte = _step.value;\n out += HEX_DIGITS[byte >> 4] + HEX_DIGITS[byte & 15];\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return out;\n}\nfunction hexToBytes(hex, verb) {\n if (hex.length % 2 !== 0 || /[^0-9a-fA-F]/.test(hex)) {\n throw new Error(`${verb}: expected an even-length hex string`);\n }\n var out = new Uint8Array(hex.length / 2);\n for (var index2 = 0; index2 < out.length; index2++) {\n out[index2] = parseInt(hex.slice(index2 * 2, index2 * 2 + 2), 16);\n }\n return out;\n}\nvar BASE64_ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar BASE64_VALUES = new Int16Array(128).fill(-1);\nfor (var index = 0; index < BASE64_ALPHABET.length; index++) {\n BASE64_VALUES[BASE64_ALPHABET.charCodeAt(index)] = index;\n}\nfunction bytesToBase64(bytes) {\n var out = \"\";\n for (var index2 = 0; index2 < bytes.length; index2 += 3) {\n var first = bytes[index2];\n var second = bytes[index2 + 1];\n var third = bytes[index2 + 2];\n out += BASE64_ALPHABET[first >> 2];\n out += BASE64_ALPHABET[(first & 3) << 4 | (second !== null && second !== void 0 ? second : 0) >> 4];\n out += second === void 0 ? \"=\" : BASE64_ALPHABET[(second & 15) << 2 | (third !== null && third !== void 0 ? third : 0) >> 6];\n out += third === void 0 ? \"=\" : BASE64_ALPHABET[third & 63];\n }\n return out;\n}\nfunction base64ToBytes(base64, verb) {\n var _loop = function(index3) {\n var values = [\n 0,\n 1,\n 2,\n 3\n ].map(function(offset) {\n var code = base64.charCodeAt(index3 + offset);\n return code === 61 ? 0 : BASE64_VALUES[code];\n });\n if (values.some(function(value) {\n return value < 0;\n })) throw new Error(`${verb}: expected a base64 string`);\n if (at < out.length) out[at++] = values[0] << 2 | values[1] >> 4;\n if (at < out.length) out[at++] = (values[1] & 15) << 4 | values[2] >> 2;\n if (at < out.length) out[at++] = (values[2] & 3) << 6 | values[3];\n };\n if (base64.length % 4 !== 0 || /[^A-Za-z0-9+/=]/.test(base64)) {\n throw new Error(`${verb}: expected a base64 string`);\n }\n var padding = base64.endsWith(\"==\") ? 2 : base64.endsWith(\"=\") ? 1 : 0;\n if (base64.slice(0, base64.length - padding).includes(\"=\")) {\n throw new Error(`${verb}: expected a base64 string`);\n }\n var out = new Uint8Array(base64.length / 4 * 3 - padding);\n var at = 0;\n for (var index2 = 0; index2 < base64.length; index2 += 4) _loop(index2);\n return out;\n}\nfunction utf8Encode(text) {\n var bytes = [];\n for (var index2 = 0; index2 < text.length; index2++) {\n var code = text.charCodeAt(index2);\n if (code >= 55296 && code <= 56319) {\n var next = text.charCodeAt(index2 + 1);\n if (next >= 56320 && next <= 57343) {\n code = 65536 + (code - 55296 << 10) + (next - 56320);\n index2++;\n } else {\n code = 65533;\n }\n } else if (code >= 56320 && code <= 57343) {\n code = 65533;\n }\n if (code < 128) {\n bytes.push(code);\n } else if (code < 2048) {\n bytes.push(192 | code >> 6, 128 | code & 63);\n } else if (code < 65536) {\n bytes.push(224 | code >> 12, 128 | code >> 6 & 63, 128 | code & 63);\n } else {\n bytes.push(240 | code >> 18, 128 | code >> 12 & 63, 128 | code >> 6 & 63, 128 | code & 63);\n }\n }\n return new Uint8Array(bytes);\n}\nfunction exactBytes(view) {\n return new Uint8Array(view);\n}\nfunction concatBytes(parts) {\n var length = parts.reduce(function(sum, part2) {\n return sum + part2.length;\n }, 0);\n var out = new Uint8Array(length);\n var at = 0;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = parts[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var part = _step.value;\n out.set(part, at);\n at += part.length;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return out;\n}\nexport {\n base64ToBytes,\n bytesToBase64,\n bytesToHex,\n concatBytes,\n exactBytes,\n hexToBytes,\n utf8Encode\n};\n//# sourceMappingURL=bytes.js.map\n"],"mappings":"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"}
|