@loaders.gl/crypto
Advanced tools
Comparing version 4.2.0-alpha.4 to 4.2.0-alpha.5
@@ -5,10 +5,15 @@ (function webpackUniversalModuleDefinition(root, factory) { | ||
else if (typeof define === 'function' && define.amd) define([], factory); | ||
else if (typeof exports === 'object') exports['loader'] = factory(); | ||
else root['loader'] = factory();})(globalThis, function () { | ||
else if (typeof exports === 'object') exports['loaders'] = factory(); | ||
else root['loaders'] = factory();})(globalThis, function () { | ||
"use strict"; | ||
var __exports__ = (() => { | ||
var __create = Object.create; | ||
var __defProp = Object.defineProperty; | ||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | ||
var __getOwnPropNames = Object.getOwnPropertyNames; | ||
var __getProtoOf = Object.getPrototypeOf; | ||
var __hasOwnProp = Object.prototype.hasOwnProperty; | ||
var __commonJS = (cb, mod) => function __require() { | ||
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; | ||
}; | ||
var __export = (target, all) => { | ||
@@ -26,7 +31,23 @@ for (var name in all) | ||
}; | ||
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default")); | ||
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( | ||
// If the importer is in node compatibility mode or this is not an ESM | ||
// file that has been converted to a CommonJS file using a Babel- | ||
// compatible transform (i.e. "__esModule" has not been set), then set | ||
// "default" to the CommonJS "module.exports" for node compatibility. | ||
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, | ||
mod | ||
)); | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
// src/index.ts | ||
var src_exports = {}; | ||
__export(src_exports, { | ||
// external-global-plugin:@loaders.gl/core | ||
var require_core = __commonJS({ | ||
"external-global-plugin:@loaders.gl/core"(exports, module) { | ||
module.exports = globalThis.loaders; | ||
} | ||
}); | ||
// bundle.ts | ||
var bundle_exports = {}; | ||
__export(bundle_exports, { | ||
CRC32CHash: () => CRC32CHash, | ||
@@ -47,2 +68,3 @@ CRC32Hash: () => CRC32Hash, | ||
}); | ||
__reExport(bundle_exports, __toESM(require_core(), 1)); | ||
@@ -54,3 +76,5 @@ // ../loader-utils/src/lib/binary-utils/array-buffer-utils.ts | ||
function concatenateArrayBuffersFromArray(sources) { | ||
const sourceArrays = sources.map((source2) => source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2); | ||
const sourceArrays = sources.map( | ||
(source2) => source2 instanceof ArrayBuffer ? new Uint8Array(source2) : source2 | ||
); | ||
const byteLength = sourceArrays.reduce((length, typedArray) => length + typedArray.byteLength, 0); | ||
@@ -91,6 +115,5 @@ const result = new Uint8Array(byteLength); | ||
const hash = await this.hash(output, encoding); | ||
this.options.crypto?.onEnd?.({ | ||
hash | ||
}); | ||
this.options.crypto?.onEnd?.({ hash }); | ||
} | ||
// HELPERS | ||
async concatenate(asyncIterator) { | ||
@@ -119,3 +142,260 @@ return await concatenateArrayBuffersAsync(asyncIterator); | ||
}; | ||
var CRC32TAB = Uint32Array.of(0, 1996959894, 3993919788, 2567524794, 124634137, 1886057615, 3915621685, 2657392035, 249268274, 2044508324, 3772115230, 2547177864, 162941995, 2125561021, 3887607047, 2428444049, 498536548, 1789927666, 4089016648, 2227061214, 450548861, 1843258603, 4107580753, 2211677639, 325883990, 1684777152, 4251122042, 2321926636, 335633487, 1661365465, 4195302755, 2366115317, 997073096, 1281953886, 3579855332, 2724688242, 1006888145, 1258607687, 3524101629, 2768942443, 901097722, 1119000684, 3686517206, 2898065728, 853044451, 1172266101, 3705015759, 2882616665, 651767980, 1373503546, 3369554304, 3218104598, 565507253, 1454621731, 3485111705, 3099436303, 671266974, 1594198024, 3322730930, 2970347812, 795835527, 1483230225, 3244367275, 3060149565, 1994146192, 31158534, 2563907772, 4023717930, 1907459465, 112637215, 2680153253, 3904427059, 2013776290, 251722036, 2517215374, 3775830040, 2137656763, 141376813, 2439277719, 3865271297, 1802195444, 476864866, 2238001368, 4066508878, 1812370925, 453092731, 2181625025, 4111451223, 1706088902, 314042704, 2344532202, 4240017532, 1658658271, 366619977, 2362670323, 4224994405, 1303535960, 984961486, 2747007092, 3569037538, 1256170817, 1037604311, 2765210733, 3554079995, 1131014506, 879679996, 2909243462, 3663771856, 1141124467, 855842277, 2852801631, 3708648649, 1342533948, 654459306, 3188396048, 3373015174, 1466479909, 544179635, 3110523913, 3462522015, 1591671054, 702138776, 2966460450, 3352799412, 1504918807, 783551873, 3082640443, 3233442989, 3988292384, 2596254646, 62317068, 1957810842, 3939845945, 2647816111, 81470997, 1943803523, 3814918930, 2489596804, 225274430, 2053790376, 3826175755, 2466906013, 167816743, 2097651377, 4027552580, 2265490386, 503444072, 1762050814, 4150417245, 2154129355, 426522225, 1852507879, 4275313526, 2312317920, 282753626, 1742555852, 4189708143, 2394877945, 397917763, 1622183637, 3604390888, 2714866558, 953729732, 1340076626, 3518719985, 2797360999, 1068828381, 1219638859, 3624741850, 2936675148, 906185462, 1090812512, 3747672003, 2825379669, 829329135, 1181335161, 3412177804, 3160834842, 628085408, 1382605366, 3423369109, 3138078467, 570562233, 1426400815, 3317316542, 2998733608, 733239954, 1555261956, 3268935591, 3050360625, 752459403, 1541320221, 2607071920, 3965973030, 1969922972, 40735498, 2617837225, 3943577151, 1913087877, 83908371, 2512341634, 3803740692, 2075208622, 213261112, 2463272603, 3855990285, 2094854071, 198958881, 2262029012, 4057260610, 1759359992, 534414190, 2176718541, 4139329115, 1873836001, 414664567, 2282248934, 4279200368, 1711684554, 285281116, 2405801727, 4167216745, 1634467795, 376229701, 2685067896, 3608007406, 1308918612, 956543938, 2808555105, 3495958263, 1231636301, 1047427035, 2932959818, 3654703836, 1088359270, 936918e3, 2847714899, 3736837829, 1202900863, 817233897, 3183342108, 3401237130, 1404277552, 615818150, 3134207493, 3453421203, 1423857449, 601450431, 3009837614, 3294710456, 1567103746, 711928724, 3020668471, 3272380065, 1510334235, 755167117); | ||
var CRC32TAB = Uint32Array.of( | ||
0, | ||
1996959894, | ||
3993919788, | ||
2567524794, | ||
124634137, | ||
1886057615, | ||
3915621685, | ||
2657392035, | ||
249268274, | ||
2044508324, | ||
3772115230, | ||
2547177864, | ||
162941995, | ||
2125561021, | ||
3887607047, | ||
2428444049, | ||
498536548, | ||
1789927666, | ||
4089016648, | ||
2227061214, | ||
450548861, | ||
1843258603, | ||
4107580753, | ||
2211677639, | ||
325883990, | ||
1684777152, | ||
4251122042, | ||
2321926636, | ||
335633487, | ||
1661365465, | ||
4195302755, | ||
2366115317, | ||
997073096, | ||
1281953886, | ||
3579855332, | ||
2724688242, | ||
1006888145, | ||
1258607687, | ||
3524101629, | ||
2768942443, | ||
901097722, | ||
1119000684, | ||
3686517206, | ||
2898065728, | ||
853044451, | ||
1172266101, | ||
3705015759, | ||
2882616665, | ||
651767980, | ||
1373503546, | ||
3369554304, | ||
3218104598, | ||
565507253, | ||
1454621731, | ||
3485111705, | ||
3099436303, | ||
671266974, | ||
1594198024, | ||
3322730930, | ||
2970347812, | ||
795835527, | ||
1483230225, | ||
3244367275, | ||
3060149565, | ||
1994146192, | ||
31158534, | ||
2563907772, | ||
4023717930, | ||
1907459465, | ||
112637215, | ||
2680153253, | ||
3904427059, | ||
2013776290, | ||
251722036, | ||
2517215374, | ||
3775830040, | ||
2137656763, | ||
141376813, | ||
2439277719, | ||
3865271297, | ||
1802195444, | ||
476864866, | ||
2238001368, | ||
4066508878, | ||
1812370925, | ||
453092731, | ||
2181625025, | ||
4111451223, | ||
1706088902, | ||
314042704, | ||
2344532202, | ||
4240017532, | ||
1658658271, | ||
366619977, | ||
2362670323, | ||
4224994405, | ||
1303535960, | ||
984961486, | ||
2747007092, | ||
3569037538, | ||
1256170817, | ||
1037604311, | ||
2765210733, | ||
3554079995, | ||
1131014506, | ||
879679996, | ||
2909243462, | ||
3663771856, | ||
1141124467, | ||
855842277, | ||
2852801631, | ||
3708648649, | ||
1342533948, | ||
654459306, | ||
3188396048, | ||
3373015174, | ||
1466479909, | ||
544179635, | ||
3110523913, | ||
3462522015, | ||
1591671054, | ||
702138776, | ||
2966460450, | ||
3352799412, | ||
1504918807, | ||
783551873, | ||
3082640443, | ||
3233442989, | ||
3988292384, | ||
2596254646, | ||
62317068, | ||
1957810842, | ||
3939845945, | ||
2647816111, | ||
81470997, | ||
1943803523, | ||
3814918930, | ||
2489596804, | ||
225274430, | ||
2053790376, | ||
3826175755, | ||
2466906013, | ||
167816743, | ||
2097651377, | ||
4027552580, | ||
2265490386, | ||
503444072, | ||
1762050814, | ||
4150417245, | ||
2154129355, | ||
426522225, | ||
1852507879, | ||
4275313526, | ||
2312317920, | ||
282753626, | ||
1742555852, | ||
4189708143, | ||
2394877945, | ||
397917763, | ||
1622183637, | ||
3604390888, | ||
2714866558, | ||
953729732, | ||
1340076626, | ||
3518719985, | ||
2797360999, | ||
1068828381, | ||
1219638859, | ||
3624741850, | ||
2936675148, | ||
906185462, | ||
1090812512, | ||
3747672003, | ||
2825379669, | ||
829329135, | ||
1181335161, | ||
3412177804, | ||
3160834842, | ||
628085408, | ||
1382605366, | ||
3423369109, | ||
3138078467, | ||
570562233, | ||
1426400815, | ||
3317316542, | ||
2998733608, | ||
733239954, | ||
1555261956, | ||
3268935591, | ||
3050360625, | ||
752459403, | ||
1541320221, | ||
2607071920, | ||
3965973030, | ||
1969922972, | ||
40735498, | ||
2617837225, | ||
3943577151, | ||
1913087877, | ||
83908371, | ||
2512341634, | ||
3803740692, | ||
2075208622, | ||
213261112, | ||
2463272603, | ||
3855990285, | ||
2094854071, | ||
198958881, | ||
2262029012, | ||
4057260610, | ||
1759359992, | ||
534414190, | ||
2176718541, | ||
4139329115, | ||
1873836001, | ||
414664567, | ||
2282248934, | ||
4279200368, | ||
1711684554, | ||
285281116, | ||
2405801727, | ||
4167216745, | ||
1634467795, | ||
376229701, | ||
2685067896, | ||
3608007406, | ||
1308918612, | ||
956543938, | ||
2808555105, | ||
3495958263, | ||
1231636301, | ||
1047427035, | ||
2932959818, | ||
3654703836, | ||
1088359270, | ||
936918e3, | ||
2847714899, | ||
3736837829, | ||
1202900863, | ||
817233897, | ||
3183342108, | ||
3401237130, | ||
1404277552, | ||
615818150, | ||
3134207493, | ||
3453421203, | ||
1423857449, | ||
601450431, | ||
3009837614, | ||
3294710456, | ||
1567103746, | ||
711928724, | ||
3020668471, | ||
3272380065, | ||
1510334235, | ||
755167117 | ||
); | ||
function getCRC32Table() { | ||
@@ -262,11 +542,12 @@ return CRC32TAB; | ||
var CRC32Hash = class extends Hash { | ||
name = "crc32"; | ||
constructor(options = {}) { | ||
super(); | ||
this.options = { | ||
crypto: {}, | ||
...options | ||
}; | ||
this.name = "crc32"; | ||
this.options = { crypto: {}, ...options }; | ||
this.hashBatches = this.hashBatches.bind(this); | ||
} | ||
/** | ||
* Atomic hash calculation | ||
* @returns base64 encoded hash | ||
*/ | ||
async hash(input, encoding) { | ||
@@ -288,5 +569,3 @@ return this.hashSync(input, encoding); | ||
const digest = hash.finalize(); | ||
this.options.crypto?.onEnd?.({ | ||
hash: encodeNumber(digest, encoding) | ||
}); | ||
this.options.crypto?.onEnd?.({ hash: encodeNumber(digest, encoding) }); | ||
} | ||
@@ -314,3 +593,260 @@ }; | ||
}; | ||
var CRC32C_TABLE = Int32Array.of(0, 4067132163, 3778769143, 324072436, 3348797215, 904991772, 648144872, 3570033899, 2329499855, 2024987596, 1809983544, 2575936315, 1296289744, 3207089363, 2893594407, 1578318884, 274646895, 3795141740, 4049975192, 51262619, 3619967088, 632279923, 922689671, 3298075524, 2592579488, 1760304291, 2075979607, 2312596564, 1562183871, 2943781820, 3156637768, 1313733451, 549293790, 3537243613, 3246849577, 871202090, 3878099393, 357341890, 102525238, 4101499445, 2858735121, 1477399826, 1264559846, 3107202533, 1845379342, 2677391885, 2361733625, 2125378298, 820201905, 3263744690, 3520608582, 598981189, 4151959214, 85089709, 373468761, 3827903834, 3124367742, 1213305469, 1526817161, 2842354314, 2107672161, 2412447074, 2627466902, 1861252501, 1098587580, 3004210879, 2688576843, 1378610760, 2262928035, 1955203488, 1742404180, 2511436119, 3416409459, 969524848, 714683780, 3639785095, 205050476, 4266873199, 3976438427, 526918040, 1361435347, 2739821008, 2954799652, 1114974503, 2529119692, 1691668175, 2005155131, 2247081528, 3690758684, 697762079, 986182379, 3366744552, 476452099, 3993867776, 4250756596, 255256311, 1640403810, 2477592673, 2164122517, 1922457750, 2791048317, 1412925310, 1197962378, 3037525897, 3944729517, 427051182, 170179418, 4165941337, 746937522, 3740196785, 3451792453, 1070968646, 1905808397, 2213795598, 2426610938, 1657317369, 3053634322, 1147748369, 1463399397, 2773627110, 4215344322, 153784257, 444234805, 3893493558, 1021025245, 3467647198, 3722505002, 797665321, 2197175160, 1889384571, 1674398607, 2443626636, 1164749927, 3070701412, 2757221520, 1446797203, 137323447, 4198817972, 3910406976, 461344835, 3484808360, 1037989803, 781091935, 3705997148, 2460548119, 1623424788, 1939049696, 2180517859, 1429367560, 2807687179, 3020495871, 1180866812, 410100952, 3927582683, 4182430767, 186734380, 3756733383, 763408580, 1053836080, 3434856499, 2722870694, 1344288421, 1131464017, 2971354706, 1708204729, 2545590714, 2229949006, 1988219213, 680717673, 3673779818, 3383336350, 1002577565, 4010310262, 493091189, 238226049, 4233660802, 2987750089, 1082061258, 1395524158, 2705686845, 1972364758, 2279892693, 2494862625, 1725896226, 952904198, 3399985413, 3656866545, 731699698, 4283874585, 222117402, 510512622, 3959836397, 3280807620, 837199303, 582374963, 3504198960, 68661723, 4135334616, 3844915500, 390545967, 1230274059, 3141532936, 2825850620, 1510247935, 2395924756, 2091215383, 1878366691, 2644384480, 3553878443, 565732008, 854102364, 3229815391, 340358836, 3861050807, 4117890627, 119113024, 1493875044, 2875275879, 3090270611, 1247431312, 2660249211, 1828433272, 2141937292, 2378227087, 3811616794, 291187481, 34330861, 4032846830, 615137029, 3603020806, 3314634738, 939183345, 1776939221, 2609017814, 2295496738, 2058945313, 2926798794, 1545135305, 1330124605, 3173225534, 4084100981, 17165430, 307568514, 3762199681, 888469610, 3332340585, 3587147933, 665062302, 2042050490, 2346497209, 2559330125, 1793573966, 3190661285, 1279665062, 1595330642, 2910671697); | ||
var CRC32C_TABLE = Int32Array.of( | ||
0, | ||
4067132163, | ||
3778769143, | ||
324072436, | ||
3348797215, | ||
904991772, | ||
648144872, | ||
3570033899, | ||
2329499855, | ||
2024987596, | ||
1809983544, | ||
2575936315, | ||
1296289744, | ||
3207089363, | ||
2893594407, | ||
1578318884, | ||
274646895, | ||
3795141740, | ||
4049975192, | ||
51262619, | ||
3619967088, | ||
632279923, | ||
922689671, | ||
3298075524, | ||
2592579488, | ||
1760304291, | ||
2075979607, | ||
2312596564, | ||
1562183871, | ||
2943781820, | ||
3156637768, | ||
1313733451, | ||
549293790, | ||
3537243613, | ||
3246849577, | ||
871202090, | ||
3878099393, | ||
357341890, | ||
102525238, | ||
4101499445, | ||
2858735121, | ||
1477399826, | ||
1264559846, | ||
3107202533, | ||
1845379342, | ||
2677391885, | ||
2361733625, | ||
2125378298, | ||
820201905, | ||
3263744690, | ||
3520608582, | ||
598981189, | ||
4151959214, | ||
85089709, | ||
373468761, | ||
3827903834, | ||
3124367742, | ||
1213305469, | ||
1526817161, | ||
2842354314, | ||
2107672161, | ||
2412447074, | ||
2627466902, | ||
1861252501, | ||
1098587580, | ||
3004210879, | ||
2688576843, | ||
1378610760, | ||
2262928035, | ||
1955203488, | ||
1742404180, | ||
2511436119, | ||
3416409459, | ||
969524848, | ||
714683780, | ||
3639785095, | ||
205050476, | ||
4266873199, | ||
3976438427, | ||
526918040, | ||
1361435347, | ||
2739821008, | ||
2954799652, | ||
1114974503, | ||
2529119692, | ||
1691668175, | ||
2005155131, | ||
2247081528, | ||
3690758684, | ||
697762079, | ||
986182379, | ||
3366744552, | ||
476452099, | ||
3993867776, | ||
4250756596, | ||
255256311, | ||
1640403810, | ||
2477592673, | ||
2164122517, | ||
1922457750, | ||
2791048317, | ||
1412925310, | ||
1197962378, | ||
3037525897, | ||
3944729517, | ||
427051182, | ||
170179418, | ||
4165941337, | ||
746937522, | ||
3740196785, | ||
3451792453, | ||
1070968646, | ||
1905808397, | ||
2213795598, | ||
2426610938, | ||
1657317369, | ||
3053634322, | ||
1147748369, | ||
1463399397, | ||
2773627110, | ||
4215344322, | ||
153784257, | ||
444234805, | ||
3893493558, | ||
1021025245, | ||
3467647198, | ||
3722505002, | ||
797665321, | ||
2197175160, | ||
1889384571, | ||
1674398607, | ||
2443626636, | ||
1164749927, | ||
3070701412, | ||
2757221520, | ||
1446797203, | ||
137323447, | ||
4198817972, | ||
3910406976, | ||
461344835, | ||
3484808360, | ||
1037989803, | ||
781091935, | ||
3705997148, | ||
2460548119, | ||
1623424788, | ||
1939049696, | ||
2180517859, | ||
1429367560, | ||
2807687179, | ||
3020495871, | ||
1180866812, | ||
410100952, | ||
3927582683, | ||
4182430767, | ||
186734380, | ||
3756733383, | ||
763408580, | ||
1053836080, | ||
3434856499, | ||
2722870694, | ||
1344288421, | ||
1131464017, | ||
2971354706, | ||
1708204729, | ||
2545590714, | ||
2229949006, | ||
1988219213, | ||
680717673, | ||
3673779818, | ||
3383336350, | ||
1002577565, | ||
4010310262, | ||
493091189, | ||
238226049, | ||
4233660802, | ||
2987750089, | ||
1082061258, | ||
1395524158, | ||
2705686845, | ||
1972364758, | ||
2279892693, | ||
2494862625, | ||
1725896226, | ||
952904198, | ||
3399985413, | ||
3656866545, | ||
731699698, | ||
4283874585, | ||
222117402, | ||
510512622, | ||
3959836397, | ||
3280807620, | ||
837199303, | ||
582374963, | ||
3504198960, | ||
68661723, | ||
4135334616, | ||
3844915500, | ||
390545967, | ||
1230274059, | ||
3141532936, | ||
2825850620, | ||
1510247935, | ||
2395924756, | ||
2091215383, | ||
1878366691, | ||
2644384480, | ||
3553878443, | ||
565732008, | ||
854102364, | ||
3229815391, | ||
340358836, | ||
3861050807, | ||
4117890627, | ||
119113024, | ||
1493875044, | ||
2875275879, | ||
3090270611, | ||
1247431312, | ||
2660249211, | ||
1828433272, | ||
2141937292, | ||
2378227087, | ||
3811616794, | ||
291187481, | ||
34330861, | ||
4032846830, | ||
615137029, | ||
3603020806, | ||
3314634738, | ||
939183345, | ||
1776939221, | ||
2609017814, | ||
2295496738, | ||
2058945313, | ||
2926798794, | ||
1545135305, | ||
1330124605, | ||
3173225534, | ||
4084100981, | ||
17165430, | ||
307568514, | ||
3762199681, | ||
888469610, | ||
3332340585, | ||
3587147933, | ||
665062302, | ||
2042050490, | ||
2346497209, | ||
2559330125, | ||
1793573966, | ||
3190661285, | ||
1279665062, | ||
1595330642, | ||
2910671697 | ||
); | ||
function getCRC32Table2() { | ||
@@ -322,10 +858,15 @@ return CRC32C_TABLE; | ||
var CRC32CHash = class extends Hash { | ||
name = "crc32c"; | ||
/** | ||
* Atomic hash calculation | ||
* @returns base64 encoded hash | ||
*/ | ||
constructor(options = {}) { | ||
super(); | ||
this.options = { | ||
crypto: {}, | ||
...options | ||
}; | ||
this.name = "crc32c"; | ||
this.options = { crypto: {}, ...options }; | ||
} | ||
/** | ||
* Atomic hash calculation | ||
* @returns base64 encoded hash | ||
*/ | ||
async hash(input, encoding) { | ||
@@ -340,2 +881,3 @@ return this.hashSync(input, encoding); | ||
} | ||
// runInBatches inherited | ||
async *hashBatches(asyncIterator, encoding = "base64") { | ||
@@ -348,5 +890,3 @@ const hash = new CRC32C(this.options); | ||
const digest = hash.finalize(); | ||
this.options.crypto?.onEnd?.({ | ||
hash: encodeNumber(digest, encoding) | ||
}); | ||
this.options.crypto?.onEnd?.({ hash: encodeNumber(digest, encoding) }); | ||
} | ||
@@ -357,3 +897,5 @@ }; | ||
var atb = typeof atob === "function" ? atob : typeof Buffer === "function" ? nodeATOB : identity; | ||
var wasmB64 = atb("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"); | ||
var wasmB64 = atb( | ||
"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" | ||
); | ||
var wasm = WebAssembly && atb !== identity ? str2AB(wasmB64).buffer : false; | ||
@@ -367,3 +909,5 @@ var crypt = makeCrypt(); | ||
if (!wasm) { | ||
console.log("WebAssembly not available or WASM module could not be decoded; md5WASM will fall back to JavaScript"); | ||
console.log( | ||
"WebAssembly not available or WASM module could not be decoded; md5WASM will fall back to JavaScript" | ||
); | ||
} | ||
@@ -407,9 +951,4 @@ function md5WASM(data) { | ||
memView = new Uint32Array(mem.buffer); | ||
imports = { | ||
mem, | ||
log: console.log | ||
}; | ||
importObj = { | ||
imports | ||
}; | ||
imports = { mem, log: console.log }; | ||
importObj = { imports }; | ||
WebAssembly.instantiate(wasm, importObj).then(giterdone); | ||
@@ -769,9 +1308,18 @@ } | ||
var MD5Hash = class extends Hash { | ||
name = "md5"; | ||
constructor(options = {}) { | ||
super(); | ||
this.name = "md5"; | ||
this.options = options; | ||
} | ||
/** | ||
* Atomic hash calculation | ||
* @returns base64 encoded hash | ||
*/ | ||
async hash(input, encoding) { | ||
const md5Promise = new Promise((resolve, reject) => md5WASM(input).then(resolve).catch(reject)); | ||
const md5Promise = new Promise( | ||
(resolve, reject) => ( | ||
// @ts-expect-error | ||
md5WASM(input).then(resolve).catch(reject) | ||
) | ||
); | ||
const hex = await md5Promise; | ||
@@ -803,2 +1351,6 @@ return encodeHex(hex, encoding); | ||
} | ||
/** | ||
* Atomic hash calculation | ||
* @returns base64 encoded hash | ||
*/ | ||
async hash(input, encoding) { | ||
@@ -827,5 +1379,3 @@ await this.preload(); | ||
const digest = hash.finalize().toString(enc); | ||
this.options?.crypto?.onEnd?.({ | ||
hash: digest | ||
}); | ||
this.options?.crypto?.onEnd?.({ hash: digest }); | ||
} | ||
@@ -837,9 +1387,3 @@ }; | ||
constructor(options) { | ||
super({ | ||
...options, | ||
crypto: { | ||
...options.crypto, | ||
algorithm: "SHA256" | ||
} | ||
}); | ||
super({ ...options, crypto: { ...options.crypto, algorithm: "SHA256" } }); | ||
} | ||
@@ -858,2 +1402,6 @@ }; | ||
} | ||
/** | ||
* Atomic hash calculation | ||
* @returns base64 encoded hash | ||
*/ | ||
async hash(input, encoding) { | ||
@@ -865,3 +1413,3 @@ throw new Error("Not implemented"); | ||
// src/index.ts | ||
var VERSION = true ? "4.2.0-alpha.4" : "latest"; | ||
var VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest"; | ||
var CryptoWorker = { | ||
@@ -885,5 +1433,5 @@ id: "crypto", | ||
}; | ||
return __toCommonJS(src_exports); | ||
return __toCommonJS(bundle_exports); | ||
})(); | ||
return __exports__; | ||
}); |
@@ -1,8 +0,8 @@ | ||
export { Hash } from './lib/hash'; | ||
export { CRC32Hash } from './lib/crc32-hash'; | ||
export { CRC32CHash } from './lib/crc32c-hash'; | ||
export { MD5Hash } from './lib/md5-hash'; | ||
export { SHA256Hash } from './lib/sha256-hash'; | ||
export { CryptoHash } from './lib/crypto-hash'; | ||
export { NodeHash } from './lib/node-hash'; | ||
export { Hash } from "./lib/hash.js"; | ||
export { CRC32Hash } from "./lib/crc32-hash.js"; | ||
export { CRC32CHash } from "./lib/crc32c-hash.js"; | ||
export { MD5Hash } from "./lib/md5-hash.js"; | ||
export { SHA256Hash } from "./lib/sha256-hash.js"; | ||
export { CryptoHash } from "./lib/crypto-hash.js"; | ||
export { NodeHash } from "./lib/node-hash.js"; | ||
/** | ||
@@ -33,4 +33,4 @@ * Small, fast worker for CRC32, CRC32c and MD5 Hashes | ||
}; | ||
export { encodeNumber, encodeHex, encodeBase64 } from './lib/utils/digest-utils'; | ||
export { asciiToBase64, base64ToAscii } from './lib/utils/base64-utils'; | ||
export { encodeNumber, encodeHex, encodeBase64 } from "./lib/utils/digest-utils.js"; | ||
export { asciiToBase64, base64ToAscii } from "./lib/utils/base64-utils.js"; | ||
//# sourceMappingURL=index.d.ts.map |
@@ -0,1 +1,6 @@ | ||
// loaders.gl | ||
// SPDX-License-Identifier: MIT | ||
// Copyright (c) vis.gl contributors | ||
// __VERSION__ is injected by babel-plugin-version-inline | ||
// @ts-ignore TS2304: Cannot find name '__VERSION__'. | ||
const VERSION = typeof "4.2.0-alpha.4" !== 'undefined' ? "4.2.0-alpha.4" : 'latest'; | ||
@@ -9,22 +14,29 @@ export { Hash } from "./lib/hash.js"; | ||
export { NodeHash } from "./lib/node-hash.js"; | ||
/** | ||
* Small, fast worker for CRC32, CRC32c and MD5 Hashes | ||
*/ | ||
export const CryptoWorker = { | ||
id: 'crypto', | ||
name: 'CRC32, CRC32c and MD5 Hashes', | ||
module: 'crypto', | ||
version: VERSION, | ||
options: { | ||
crypto: {} | ||
} | ||
id: 'crypto', | ||
name: 'CRC32, CRC32c and MD5 Hashes', | ||
module: 'crypto', | ||
version: VERSION, | ||
options: { | ||
crypto: {} | ||
} | ||
}; | ||
/** | ||
* Large worker for full complement of Cryptographic Hashes | ||
* bundles the full crypto.js library | ||
*/ | ||
export const CryptoJSWorker = { | ||
id: 'cryptojs', | ||
name: 'Cryptographic Hashes', | ||
module: 'crypto', | ||
version: VERSION, | ||
options: { | ||
cryptojs: {} | ||
} | ||
id: 'cryptojs', | ||
name: 'Cryptographic Hashes', | ||
module: 'crypto', | ||
version: VERSION, | ||
options: { | ||
cryptojs: {} | ||
} | ||
}; | ||
// EXPERIMENTAL | ||
export { encodeNumber, encodeHex, encodeBase64 } from "./lib/utils/digest-utils.js"; | ||
export { asciiToBase64, base64ToAscii } from "./lib/utils/base64-utils.js"; | ||
//# sourceMappingURL=index.js.map |
@@ -0,23 +1,37 @@ | ||
// loaders.gl | ||
// SPDX-License-Identifier: MIT | ||
// Copyright (c) vis.gl contributors | ||
// Inspired by https://gist.github.com/wqli78/1330293/6d85cc967f32cccfcbad94ae7d088a3dcfc14bd9 | ||
// Full crc32 docs: https://www.kernel.org/doc/Documentation/crc32.txt | ||
// Better JS implementation: https://stackoverflow.com/a/18639999 | ||
/** | ||
* Calculates the CRC32 checksum of a string. | ||
*/ | ||
export default class CRC32 { | ||
constructor() { | ||
this.crc = void 0; | ||
this.crc = ~0; | ||
} | ||
update(arrayBuffer) { | ||
const CRC32_TABLE = getCRC32Table(); | ||
const byteArray = new Uint8Array(arrayBuffer); | ||
for (let i = 0; i < byteArray.byteLength; i++) { | ||
this.crc = this.crc >>> 8 ^ CRC32_TABLE[(this.crc ^ byteArray[i]) & 0xff]; | ||
constructor() { | ||
this.crc = ~0; | ||
} | ||
return this; | ||
} | ||
finalize() { | ||
this.crc = (this.crc ^ -1) >>> 0; | ||
return this.crc; | ||
} | ||
update(arrayBuffer) { | ||
const CRC32_TABLE = getCRC32Table(); | ||
const byteArray = new Uint8Array(arrayBuffer); | ||
for (let i = 0; i < byteArray.byteLength; i++) { | ||
this.crc = (this.crc >>> 8) ^ CRC32_TABLE[(this.crc ^ byteArray[i]) & 0xff]; | ||
// strings: crc = (crc >>> 8) ^ CRC32TAB[(crc ^ str.charCodeAt(i)) & 0xff]; | ||
} | ||
return this; | ||
} | ||
finalize() { | ||
// performing final division and making crc unsigned. | ||
// The reason why we can't use Math.abs() ther is that 1 in bite representation is 00000000000000000000000000000001 | ||
// and -1 is 11111111111111111111111111111111. So Math.abs() completely changes the bits there, | ||
// but what we need is just make JS count first 1 bit as a part of a number and not the sign marker. | ||
// We don't need to change anything else in this bit representation. And that's exactly what >>> does. | ||
this.crc = (this.crc ^ -1) >>> 0; | ||
return this.crc; | ||
} | ||
} | ||
// Note: Using a typed array here doubles the speed of the cipher | ||
const CRC32TAB = Uint32Array.of(0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d); | ||
function getCRC32Table() { | ||
return CRC32TAB; | ||
return CRC32TAB; | ||
} | ||
//# sourceMappingURL=crc32.js.map |
@@ -0,26 +1,38 @@ | ||
// loaders.gl | ||
// SPDX-License-Identifier: MIT | ||
// Copyright (c) vis.gl contributors | ||
// From: https://gist.github.com/wqli78/1330293/6d85cc967f32cccfcbad94ae7d088a3dcfc14bd9 | ||
// CRC32 doesn't appear to be supported natively by crypto-js | ||
// import {toBuffer} from '@loaders.gl/loader-utils'; | ||
// import {calculate as sse4calculate} from 'sse4_crc32'; | ||
/** | ||
* Calculates the CRC32C checksum of a string. | ||
*/ | ||
export default class CRC32C { | ||
constructor() { | ||
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
this.options = void 0; | ||
this.crc = void 0; | ||
this.options = options; | ||
this.crc = ~0; | ||
} | ||
update(arrayBuffer) { | ||
const byteArray = new Uint8Array(arrayBuffer); | ||
const CRC32_TABLE = getCRC32Table(); | ||
for (let i = 0; i < byteArray.length; i++) { | ||
this.crc = CRC32_TABLE[(this.crc ^ byteArray[i]) & 0xff] ^ this.crc >>> 8; | ||
constructor(options = {}) { | ||
this.options = options; | ||
this.crc = ~0; | ||
} | ||
return this; | ||
} | ||
finalize() { | ||
this.crc = (this.crc ^ -1) >>> 0; | ||
return this.crc; | ||
} | ||
update(arrayBuffer) { | ||
const byteArray = new Uint8Array(arrayBuffer); | ||
const CRC32_TABLE = getCRC32Table(); | ||
for (let i = 0; i < byteArray.length; i++) { | ||
this.crc = CRC32_TABLE[(this.crc ^ byteArray[i]) & 0xff] ^ (this.crc >>> 8); | ||
} | ||
return this; | ||
} | ||
finalize() { | ||
this.crc = (this.crc ^ -1) >>> 0; | ||
return this.crc; | ||
} | ||
} | ||
/** | ||
* This code is a manual javascript translation of c code generated by | ||
* pycrc 0.7.1 (http://www.tty1.net/pycrc/). Command line used: | ||
* './pycrc.py --model=crc-32c --generate c --algorithm=table-driven' | ||
*/ | ||
// Note: Using a typed array here doubles the speed of the cipher | ||
const CRC32C_TABLE = Int32Array.of(0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4, 0xc79a971f, 0x35f1141c, 0x26a1e7e8, 0xd4ca64eb, 0x8ad958cf, 0x78b2dbcc, 0x6be22838, 0x9989ab3b, 0x4d43cfd0, 0xbf284cd3, 0xac78bf27, 0x5e133c24, 0x105ec76f, 0xe235446c, 0xf165b798, 0x030e349b, 0xd7c45070, 0x25afd373, 0x36ff2087, 0xc494a384, 0x9a879fa0, 0x68ec1ca3, 0x7bbcef57, 0x89d76c54, 0x5d1d08bf, 0xaf768bbc, 0xbc267848, 0x4e4dfb4b, 0x20bd8ede, 0xd2d60ddd, 0xc186fe29, 0x33ed7d2a, 0xe72719c1, 0x154c9ac2, 0x061c6936, 0xf477ea35, 0xaa64d611, 0x580f5512, 0x4b5fa6e6, 0xb93425e5, 0x6dfe410e, 0x9f95c20d, 0x8cc531f9, 0x7eaeb2fa, 0x30e349b1, 0xc288cab2, 0xd1d83946, 0x23b3ba45, 0xf779deae, 0x05125dad, 0x1642ae59, 0xe4292d5a, 0xba3a117e, 0x4851927d, 0x5b016189, 0xa96ae28a, 0x7da08661, 0x8fcb0562, 0x9c9bf696, 0x6ef07595, 0x417b1dbc, 0xb3109ebf, 0xa0406d4b, 0x522bee48, 0x86e18aa3, 0x748a09a0, 0x67dafa54, 0x95b17957, 0xcba24573, 0x39c9c670, 0x2a993584, 0xd8f2b687, 0x0c38d26c, 0xfe53516f, 0xed03a29b, 0x1f682198, 0x5125dad3, 0xa34e59d0, 0xb01eaa24, 0x42752927, 0x96bf4dcc, 0x64d4cecf, 0x77843d3b, 0x85efbe38, 0xdbfc821c, 0x2997011f, 0x3ac7f2eb, 0xc8ac71e8, 0x1c661503, 0xee0d9600, 0xfd5d65f4, 0x0f36e6f7, 0x61c69362, 0x93ad1061, 0x80fde395, 0x72966096, 0xa65c047d, 0x5437877e, 0x4767748a, 0xb50cf789, 0xeb1fcbad, 0x197448ae, 0x0a24bb5a, 0xf84f3859, 0x2c855cb2, 0xdeeedfb1, 0xcdbe2c45, 0x3fd5af46, 0x7198540d, 0x83f3d70e, 0x90a324fa, 0x62c8a7f9, 0xb602c312, 0x44694011, 0x5739b3e5, 0xa55230e6, 0xfb410cc2, 0x092a8fc1, 0x1a7a7c35, 0xe811ff36, 0x3cdb9bdd, 0xceb018de, 0xdde0eb2a, 0x2f8b6829, 0x82f63b78, 0x709db87b, 0x63cd4b8f, 0x91a6c88c, 0x456cac67, 0xb7072f64, 0xa457dc90, 0x563c5f93, 0x082f63b7, 0xfa44e0b4, 0xe9141340, 0x1b7f9043, 0xcfb5f4a8, 0x3dde77ab, 0x2e8e845f, 0xdce5075c, 0x92a8fc17, 0x60c37f14, 0x73938ce0, 0x81f80fe3, 0x55326b08, 0xa759e80b, 0xb4091bff, 0x466298fc, 0x1871a4d8, 0xea1a27db, 0xf94ad42f, 0x0b21572c, 0xdfeb33c7, 0x2d80b0c4, 0x3ed04330, 0xccbbc033, 0xa24bb5a6, 0x502036a5, 0x4370c551, 0xb11b4652, 0x65d122b9, 0x97baa1ba, 0x84ea524e, 0x7681d14d, 0x2892ed69, 0xdaf96e6a, 0xc9a99d9e, 0x3bc21e9d, 0xef087a76, 0x1d63f975, 0x0e330a81, 0xfc588982, 0xb21572c9, 0x407ef1ca, 0x532e023e, 0xa145813d, 0x758fe5d6, 0x87e466d5, 0x94b49521, 0x66df1622, 0x38cc2a06, 0xcaa7a905, 0xd9f75af1, 0x2b9cd9f2, 0xff56bd19, 0x0d3d3e1a, 0x1e6dcdee, 0xec064eed, 0xc38d26c4, 0x31e6a5c7, 0x22b65633, 0xd0ddd530, 0x0417b1db, 0xf67c32d8, 0xe52cc12c, 0x1747422f, 0x49547e0b, 0xbb3ffd08, 0xa86f0efc, 0x5a048dff, 0x8ecee914, 0x7ca56a17, 0x6ff599e3, 0x9d9e1ae0, 0xd3d3e1ab, 0x21b862a8, 0x32e8915c, 0xc083125f, 0x144976b4, 0xe622f5b7, 0xf5720643, 0x07198540, 0x590ab964, 0xab613a67, 0xb831c993, 0x4a5a4a90, 0x9e902e7b, 0x6cfbad78, 0x7fab5e8c, 0x8dc0dd8f, 0xe330a81a, 0x115b2b19, 0x020bd8ed, 0xf0605bee, 0x24aa3f05, 0xd6c1bc06, 0xc5914ff2, 0x37faccf1, 0x69e9f0d5, 0x9b8273d6, 0x88d28022, 0x7ab90321, 0xae7367ca, 0x5c18e4c9, 0x4f48173d, 0xbd23943e, 0xf36e6f75, 0x0105ec76, 0x12551f82, 0xe03e9c81, 0x34f4f86a, 0xc69f7b69, 0xd5cf889d, 0x27a40b9e, 0x79b737ba, 0x8bdcb4b9, 0x988c474d, 0x6ae7c44e, 0xbe2da0a5, 0x4c4623a6, 0x5f16d052, 0xad7d5351); | ||
function getCRC32Table() { | ||
return CRC32C_TABLE; | ||
return CRC32C_TABLE; | ||
} | ||
//# sourceMappingURL=crc32c.js.map |
@@ -1,428 +0,435 @@ | ||
const atb = typeof atob === 'function' ? atob : typeof Buffer === 'function' ? nodeATOB : identity, | ||
wasmB64 = atb('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'), | ||
wasm = WebAssembly && atb !== identity ? str2AB(wasmB64).buffer : false, | ||
crypt = makeCrypt(), | ||
biteSize = 240 * 16 * 16, | ||
bounder = Math.floor(biteSize * 16 * 1.066666667), | ||
upperLimit = 268435456 - 65536, | ||
parmTypeErrStr = 'Parameter must be Buffer, ArrayBuffer or Uint8Array', | ||
tooBigErrStr = 'Parameter exceeds max size of 255.9 Mbytes'; | ||
// loaders.gl | ||
// SPDX-License-Identifier: MIT | ||
// Copyright (c) vis.gl contributors | ||
/* eslint-disable */ | ||
// @ts-nocheck | ||
/* ! | ||
* MD5 WebAssembly | ||
* https://github.com/briantbutton/md5-wasm | ||
* (c) 2020 Brian Todd Button | ||
* Released under the MIT license | ||
*/ | ||
// *-*=* *=*-* *-*=* *=*-* *-*=* *=*-* *-*=* *=*-* *-*=* *=*-* *-*=* *=*-* | ||
// This contains two functions designed to achieve the same thing | ||
// -> A WebAssembly function for larger files | ||
// -> A JavaScript function for the others | ||
// | ||
const atb = typeof atob === 'function' ? atob : typeof Buffer === 'function' ? nodeATOB : identity, wasmB64 = atb('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'), wasm = WebAssembly && atb !== identity ? str2AB(wasmB64).buffer : false, crypt = makeCrypt(), biteSize = 240 * 16 * 16, bounder = Math.floor(biteSize * 16 * 1.066666667), upperLimit = 268435456 - 65536, parmTypeErrStr = 'Parameter must be Buffer, ArrayBuffer or Uint8Array', tooBigErrStr = 'Parameter exceeds max size of 255.9 Mbytes'; | ||
if (!wasm) { | ||
console.log('WebAssembly not available or WASM module could not be decoded; md5WASM will fall back to JavaScript'); | ||
console.log('WebAssembly not available or WASM module could not be decoded; md5WASM will fall back to JavaScript'); | ||
} | ||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
// This returns a Promise-like object (I was farting around, so sue me) | ||
// which supports '.catch' and '.then' | ||
export default function md5WASM(data) { | ||
var mem, memView, importObj, imports, len, buff, thenFun, catchFun, result, endTime; | ||
const md5JS = makeMD5JS(), | ||
md5WA = makeMD5WA(), | ||
returnObj = {}, | ||
startTime = new Date().getTime(); | ||
returnObj['then'] = function (fun) { | ||
thenFun = fun; | ||
getThen(); | ||
return returnObj; | ||
}; | ||
returnObj['catch'] = function (fun) { | ||
catchFun = fun; | ||
return returnObj; | ||
}; | ||
if (true) { | ||
if (data && typeof data === 'object') { | ||
if (typeof Buffer === 'function' && data.constructor === Buffer) { | ||
buff = data; | ||
} else { | ||
if (data.constructor === Uint8Array || data.constructor === ArrayBuffer) { | ||
buff = data.constructor === ArrayBuffer ? new Uint8Array(data) : data; | ||
} else { | ||
getCatch(new TypeError(parmTypeErrStr)); | ||
var mem, memView, importObj, imports, len, buff, thenFun, catchFun, result, endTime; | ||
const md5JS = makeMD5JS(), md5WA = makeMD5WA(), returnObj = {}, startTime = new Date().getTime(); | ||
returnObj['then'] = function (fun) { | ||
thenFun = fun; | ||
getThen(); | ||
return returnObj; | ||
}; | ||
returnObj['catch'] = function (fun) { | ||
catchFun = fun; | ||
return returnObj; | ||
}; | ||
// Sift the incoming parameter and the environment | ||
// If we are good, set buff | ||
if (true) { | ||
if (data && typeof data === 'object') { | ||
if (typeof Buffer === 'function' && data.constructor === Buffer) { | ||
buff = data; | ||
} | ||
else { | ||
if (data.constructor === Uint8Array || data.constructor === ArrayBuffer) { | ||
buff = data.constructor === ArrayBuffer ? new Uint8Array(data) : data; | ||
} | ||
else { | ||
getCatch(new TypeError(parmTypeErrStr)); | ||
} | ||
} | ||
} | ||
} | ||
} else { | ||
getCatch(new TypeError(parmTypeErrStr)); | ||
else { | ||
getCatch(new TypeError(parmTypeErrStr)); | ||
} | ||
} | ||
} | ||
if (buff) { | ||
len = buff.length; | ||
if (wasm && len > bounder) { | ||
if (len > upperLimit) { | ||
getCatch(new Error(tooBigErrStr)); | ||
} else { | ||
mem = new WebAssembly.Memory({ | ||
initial: len > 32000000 ? len > 64000000 ? len > 128000000 ? 4096 : 2048 : 1024 : 512 | ||
}); | ||
memView = new Uint32Array(mem.buffer); | ||
imports = { | ||
mem: mem, | ||
log: console.log | ||
}; | ||
importObj = { | ||
imports | ||
}; | ||
WebAssembly.instantiate(wasm, importObj).then(giterdone); | ||
} | ||
} else { | ||
getThen(md5JS(buff)); | ||
// - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
// Make some choices based on the size of the incoming data | ||
// ~ Use WebAssembly or just JavaScript | ||
// ~ If Webassemly, allocate appropriate memory | ||
// | ||
if (buff) { | ||
len = buff.length; | ||
if (wasm && len > bounder) { | ||
if (len > upperLimit) { | ||
getCatch(new Error(tooBigErrStr)); | ||
} | ||
else { | ||
mem = new WebAssembly.Memory({ | ||
initial: len > 32000000 ? (len > 64000000 ? (len > 128000000 ? 4096 : 2048) : 1024) : 512 | ||
}); | ||
memView = new Uint32Array(mem.buffer); | ||
imports = { mem: mem, log: console.log }; | ||
importObj = { imports }; | ||
WebAssembly.instantiate(wasm, importObj).then(giterdone); | ||
} | ||
} | ||
else { | ||
getThen(md5JS(buff)); | ||
} | ||
} | ||
} | ||
return returnObj; | ||
function giterdone(obj) { | ||
getThen(md5WA(buff, obj.instance.exports, memView)); | ||
} | ||
function getThen(r) { | ||
var res = Boolean(r) ? r : result; | ||
if (Boolean(r)) { | ||
endTime = new Date().getTime(); | ||
return returnObj; | ||
function giterdone(obj) { | ||
getThen(md5WA(buff, obj.instance.exports, memView)); | ||
} | ||
if (typeof thenFun === 'function') { | ||
if (Boolean(res)) { | ||
thenFun(res, endTime - startTime); | ||
thenFun = catchFun = null; | ||
} | ||
} else { | ||
if (Boolean(r)) { | ||
result = r; | ||
} | ||
function getThen(r) { | ||
var res = Boolean(r) ? r : result; | ||
if (Boolean(r)) { | ||
endTime = new Date().getTime(); | ||
} | ||
if (typeof thenFun === 'function') { | ||
if (Boolean(res)) { | ||
thenFun(res, endTime - startTime); | ||
thenFun = catchFun = null; | ||
} | ||
} | ||
else { | ||
if (Boolean(r)) { | ||
result = r; | ||
} | ||
} | ||
} | ||
} | ||
function getCatch(err) { | ||
if (typeof catchFun === 'function') { | ||
catchFun(err); | ||
function getCatch(err) { | ||
if (typeof catchFun === 'function') { | ||
catchFun(err); | ||
} | ||
} | ||
} | ||
} | ||
function makeMD5WA() { | ||
var loop, loops; | ||
var getA, setA, getB, setB, getC, setC, getD, setD, getX, setX, memView; | ||
var md5WA = function (message) { | ||
var m00, m01, m02, m03, m04, m05, m06, m07, m08, m09, m10, m11, m12, m13, m14, m15, aa, bb, cc, dd, m, k; | ||
var qwerty = new Date().getTime(); | ||
var md5Used = 0; | ||
var a = 1732584193, | ||
b = -271733879, | ||
c = -1732584194, | ||
d = 271733878, | ||
i = 0, | ||
l = message.length * 8, | ||
len; | ||
len = bytesToWordsNewer(message, memView); | ||
memView[l >>> 5] |= 0x80 << l % 32; | ||
memView[(l + 64 >>> 9 << 4) + 14] = l; | ||
len = (l + 64 >>> 9 << 4) + 15; | ||
m = memView; | ||
while (i < len) { | ||
if (len > i + bounder) { | ||
setA(a); | ||
setB(b); | ||
setC(c); | ||
setD(d); | ||
loops(biteSize); | ||
i = i + biteSize * 16; | ||
a = getA(); | ||
b = getB(); | ||
c = getC(); | ||
d = getD(); | ||
md5Used++; | ||
} else { | ||
aa = a; | ||
bb = b; | ||
cc = c; | ||
dd = d; | ||
m00 = m[i + 0] >>> 0; | ||
m01 = m[i + 1] >>> 0; | ||
m02 = m[i + 2] >>> 0; | ||
m03 = m[i + 3] >>> 0; | ||
m04 = m[i + 4] >>> 0; | ||
m05 = m[i + 5] >>> 0; | ||
m06 = m[i + 6] >>> 0; | ||
m07 = m[i + 7] >>> 0; | ||
m08 = m[i + 8] >>> 0; | ||
m09 = m[i + 9] >>> 0; | ||
m10 = m[i + 10] >>> 0; | ||
m11 = m[i + 11] >>> 0; | ||
m12 = m[i + 12] >>> 0; | ||
m13 = m[i + 13] >>> 0; | ||
m14 = m[i + 14] >>> 0; | ||
m15 = m[i + 15] >>> 0; | ||
a = ____(7, 25, a + (b & c | ~b & d) + m00 - 680876936) + b; | ||
d = ____(12, 20, d + (a & b | ~a & c) + m01 - 389564586) + a; | ||
c = ____(17, 15, c + (d & a | ~d & b) + m02 + 606105819) + d; | ||
b = ____(22, 10, b + (c & d | ~c & a) + m03 - 1044525330) + c; | ||
a = ____(7, 25, a + (b & c | ~b & d) + m04 - 176418897) + b; | ||
d = ____(12, 20, d + (a & b | ~a & c) + m05 + 1200080426) + a; | ||
c = ____(17, 15, c + (d & a | ~d & b) + m06 - 1473231341) + d; | ||
b = ____(22, 10, b + (c & d | ~c & a) + m07 - 45705983) + c; | ||
a = ____(7, 25, a + (b & c | ~b & d) + m08 + 1770035416) + b; | ||
d = ____(12, 20, d + (a & b | ~a & c) + m09 - 1958414417) + a; | ||
c = ____(17, 15, c + (d & a | ~d & b) + m10 - 42063) + d; | ||
b = ____(22, 10, b + (c & d | ~c & a) + m11 - 1990404162) + c; | ||
a = ____(7, 25, a + (b & c | ~b & d) + m12 + 1804603682) + b; | ||
d = ____(12, 20, d + (a & b | ~a & c) + m13 - 40341101) + a; | ||
c = ____(17, 15, c + (d & a | ~d & b) + m14 - 1502002290) + d; | ||
b = ____(22, 10, b + (c & d | ~c & a) + m15 + 1236535329) + c; | ||
a = ____(5, 27, a + (b & d | c & ~d) + m01 - 165796510) + b; | ||
d = ____(9, 23, d + (a & c | b & ~c) + m06 - 1069501632) + a; | ||
c = ____(14, 18, c + (d & b | a & ~b) + m11 + 643717713) + d; | ||
b = ____(20, 12, b + (c & a | d & ~a) + m00 - 373897302) + c; | ||
a = ____(5, 27, a + (b & d | c & ~d) + m05 - 701558691) + b; | ||
d = ____(9, 23, d + (a & c | b & ~c) + m10 + 38016083) + a; | ||
c = ____(14, 18, c + (d & b | a & ~b) + m15 - 660478335) + d; | ||
b = ____(20, 12, b + (c & a | d & ~a) + m04 - 405537848) + c; | ||
a = ____(5, 27, a + (b & d | c & ~d) + m09 + 568446438) + b; | ||
d = ____(9, 23, d + (a & c | b & ~c) + m14 - 1019803690) + a; | ||
c = ____(14, 18, c + (d & b | a & ~b) + m03 - 187363961) + d; | ||
b = ____(20, 12, b + (c & a | d & ~a) + m08 + 1163531501) + c; | ||
a = ____(5, 27, a + (b & d | c & ~d) + m13 - 1444681467) + b; | ||
d = ____(9, 23, d + (a & c | b & ~c) + m02 - 51403784) + a; | ||
c = ____(14, 18, c + (d & b | a & ~b) + m07 + 1735328473) + d; | ||
b = ____(20, 12, b + (c & a | d & ~a) + m12 - 1926607734) + c; | ||
a = ____(4, 28, a + (b ^ c ^ d) + m05 - 378558) + b; | ||
d = ____(11, 21, d + (a ^ b ^ c) + m08 - 2022574463) + a; | ||
c = ____(16, 16, c + (d ^ a ^ b) + m11 + 1839030562) + d; | ||
b = ____(23, 9, b + (c ^ d ^ a) + m14 - 35309556) + c; | ||
a = ____(4, 28, a + (b ^ c ^ d) + m01 - 1530992060) + b; | ||
d = ____(11, 21, d + (a ^ b ^ c) + m04 + 1272893353) + a; | ||
c = ____(16, 16, c + (d ^ a ^ b) + m07 - 155497632) + d; | ||
b = ____(23, 9, b + (c ^ d ^ a) + m10 - 1094730640) + c; | ||
a = ____(4, 28, a + (b ^ c ^ d) + m13 + 681279174) + b; | ||
d = ____(11, 21, d + (a ^ b ^ c) + m00 - 358537222) + a; | ||
c = ____(16, 16, c + (d ^ a ^ b) + m03 - 722521979) + d; | ||
b = ____(23, 9, b + (c ^ d ^ a) + m06 + 76029189) + c; | ||
a = ____(4, 28, a + (b ^ c ^ d) + m09 - 640364487) + b; | ||
d = ____(11, 21, d + (a ^ b ^ c) + m12 - 421815835) + a; | ||
c = ____(16, 16, c + (d ^ a ^ b) + m15 + 530742520) + d; | ||
b = ____(23, 9, b + (c ^ d ^ a) + m02 - 995338651) + c; | ||
a = ____(6, 26, a + (c ^ (b | ~d)) + m00 - 198630844) + b; | ||
d = ____(10, 22, d + (b ^ (a | ~c)) + m07 + 1126891415) + a; | ||
c = ____(15, 17, c + (a ^ (d | ~b)) + m14 - 1416354905) + d; | ||
b = ____(21, 11, b + (d ^ (c | ~a)) + m05 - 57434055) + c; | ||
a = ____(6, 26, a + (c ^ (b | ~d)) + m12 + 1700485571) + b; | ||
d = ____(10, 22, d + (b ^ (a | ~c)) + m03 - 1894986606) + a; | ||
c = ____(15, 17, c + (a ^ (d | ~b)) + m10 - 1051523) + d; | ||
b = ____(21, 11, b + (d ^ (c | ~a)) + m01 - 2054922799) + c; | ||
a = ____(6, 26, a + (c ^ (b | ~d)) + m08 + 1873313359) + b; | ||
d = ____(10, 22, d + (b ^ (a | ~c)) + m15 - 30611744) + a; | ||
c = ____(15, 17, c + (a ^ (d | ~b)) + m06 - 1560198380) + d; | ||
b = ____(21, 11, b + (d ^ (c | ~a)) + m13 + 1309151649) + c; | ||
a = ____(6, 26, a + (c ^ (b | ~d)) + m04 - 145523070) + b; | ||
d = ____(10, 22, d + (b ^ (a | ~c)) + m11 - 1120210379) + a; | ||
c = ____(15, 17, c + (a ^ (d | ~b)) + m02 + 718787259) + d; | ||
b = ____(21, 11, b + (d ^ (c | ~a)) + m09 - 343485551) + c; | ||
i = i + 16; | ||
a = a + aa >>> 0; | ||
b = b + bb >>> 0; | ||
c = c + cc >>> 0; | ||
d = d + dd >>> 0; | ||
} | ||
} | ||
return crypt.endian([a, b, c, d]); | ||
function ____(s, t, n) { | ||
return n << s | n >>> t; | ||
} | ||
function bytesToWordsNewer(bytes, words) { | ||
var i = -1, | ||
l = Math.floor((bytes.length - 1) / 4), | ||
j = 0, | ||
b0, | ||
b1, | ||
b2, | ||
b3; | ||
while (l - 8 > i++) { | ||
j = i << 2; | ||
words[i] = bytes[j + 0] | bytes[j + 1] << 8 | bytes[j + 2] << 16 | bytes[j + 3] << 24; | ||
} | ||
i--; | ||
while (l > i++) { | ||
j = i << 2; | ||
b0 = typeof bytes[j + 0] === 'undefined' ? 0 : bytes[j + 0]; | ||
b1 = typeof bytes[j + 1] === 'undefined' ? 0 : bytes[j + 1]; | ||
b2 = typeof bytes[j + 2] === 'undefined' ? 0 : bytes[j + 2]; | ||
b3 = typeof bytes[j + 3] === 'undefined' ? 0 : bytes[j + 3]; | ||
words[i] = b0 | b1 << 8 | b2 << 16 | b3 << 24; | ||
} | ||
return l + 1; | ||
} | ||
}; | ||
return function (message, exports, mView, options) { | ||
var digestbytes; | ||
loops = exports.loops; | ||
loop = exports.loop; | ||
getA = exports.getA; | ||
getB = exports.getB; | ||
getC = exports.getC; | ||
getD = exports.getD; | ||
getX = exports.getX; | ||
setA = exports.setA; | ||
setB = exports.setB; | ||
setC = exports.setC; | ||
setD = exports.setD; | ||
setX = exports.setX; | ||
memView = mView; | ||
digestbytes = crypt.wordsToBytes(md5WA(message)); | ||
return options && options.asBytes ? digestbytes : crypt.bytesconvertNumberToHex(digestbytes); | ||
}; | ||
var loop, loops; | ||
var getA, setA, getB, setB, getC, setC, getD, setD, getX, setX, memView; | ||
var md5WA = function (message) { | ||
var m00, m01, m02, m03, m04, m05, m06, m07, m08, m09, m10, m11, m12, m13, m14, m15, aa, bb, cc, dd, m, k; | ||
var qwerty = new Date().getTime(); | ||
var md5Used = 0; | ||
var a = 1732584193, b = -271733879, c = -1732584194, d = 271733878, i = 0, l = message.length * 8, len; | ||
len = bytesToWordsNewer(message, memView); | ||
memView[l >>> 5] |= 0x80 << l % 32; | ||
memView[(((l + 64) >>> 9) << 4) + 14] = l; | ||
len = (((l + 64) >>> 9) << 4) + 15; | ||
m = memView; | ||
// console.log("first loop took "+((new Date().getTime())-qwerty)+"ms"); | ||
while (i < len) { | ||
if (len > i + bounder) { | ||
setA(a); | ||
setB(b); | ||
setC(c); | ||
setD(d); | ||
loops(biteSize); | ||
i = i + biteSize * 16; | ||
a = getA(); | ||
b = getB(); | ||
c = getC(); | ||
d = getD(); | ||
md5Used++; | ||
} | ||
else { | ||
aa = a; | ||
bb = b; | ||
cc = c; | ||
dd = d; | ||
m00 = m[i + 0] >>> 0; | ||
m01 = m[i + 1] >>> 0; | ||
m02 = m[i + 2] >>> 0; | ||
m03 = m[i + 3] >>> 0; | ||
m04 = m[i + 4] >>> 0; | ||
m05 = m[i + 5] >>> 0; | ||
m06 = m[i + 6] >>> 0; | ||
m07 = m[i + 7] >>> 0; | ||
m08 = m[i + 8] >>> 0; | ||
m09 = m[i + 9] >>> 0; | ||
m10 = m[i + 10] >>> 0; | ||
m11 = m[i + 11] >>> 0; | ||
m12 = m[i + 12] >>> 0; | ||
m13 = m[i + 13] >>> 0; | ||
m14 = m[i + 14] >>> 0; | ||
m15 = m[i + 15] >>> 0; | ||
a = ____(7, 25, a + ((b & c) | (~b & d)) + m00 - 680876936) + b; | ||
d = ____(12, 20, d + ((a & b) | (~a & c)) + m01 - 389564586) + a; | ||
c = ____(17, 15, c + ((d & a) | (~d & b)) + m02 + 606105819) + d; | ||
b = ____(22, 10, b + ((c & d) | (~c & a)) + m03 - 1044525330) + c; | ||
a = ____(7, 25, a + ((b & c) | (~b & d)) + m04 - 176418897) + b; | ||
d = ____(12, 20, d + ((a & b) | (~a & c)) + m05 + 1200080426) + a; | ||
c = ____(17, 15, c + ((d & a) | (~d & b)) + m06 - 1473231341) + d; | ||
b = ____(22, 10, b + ((c & d) | (~c & a)) + m07 - 45705983) + c; | ||
a = ____(7, 25, a + ((b & c) | (~b & d)) + m08 + 1770035416) + b; | ||
d = ____(12, 20, d + ((a & b) | (~a & c)) + m09 - 1958414417) + a; | ||
c = ____(17, 15, c + ((d & a) | (~d & b)) + m10 - 42063) + d; | ||
b = ____(22, 10, b + ((c & d) | (~c & a)) + m11 - 1990404162) + c; | ||
a = ____(7, 25, a + ((b & c) | (~b & d)) + m12 + 1804603682) + b; | ||
d = ____(12, 20, d + ((a & b) | (~a & c)) + m13 - 40341101) + a; | ||
c = ____(17, 15, c + ((d & a) | (~d & b)) + m14 - 1502002290) + d; | ||
b = ____(22, 10, b + ((c & d) | (~c & a)) + m15 + 1236535329) + c; | ||
a = ____(5, 27, a + ((b & d) | (c & ~d)) + m01 - 165796510) + b; | ||
d = ____(9, 23, d + ((a & c) | (b & ~c)) + m06 - 1069501632) + a; | ||
c = ____(14, 18, c + ((d & b) | (a & ~b)) + m11 + 643717713) + d; | ||
b = ____(20, 12, b + ((c & a) | (d & ~a)) + m00 - 373897302) + c; | ||
a = ____(5, 27, a + ((b & d) | (c & ~d)) + m05 - 701558691) + b; | ||
d = ____(9, 23, d + ((a & c) | (b & ~c)) + m10 + 38016083) + a; | ||
c = ____(14, 18, c + ((d & b) | (a & ~b)) + m15 - 660478335) + d; | ||
b = ____(20, 12, b + ((c & a) | (d & ~a)) + m04 - 405537848) + c; | ||
a = ____(5, 27, a + ((b & d) | (c & ~d)) + m09 + 568446438) + b; | ||
d = ____(9, 23, d + ((a & c) | (b & ~c)) + m14 - 1019803690) + a; | ||
c = ____(14, 18, c + ((d & b) | (a & ~b)) + m03 - 187363961) + d; | ||
b = ____(20, 12, b + ((c & a) | (d & ~a)) + m08 + 1163531501) + c; | ||
a = ____(5, 27, a + ((b & d) | (c & ~d)) + m13 - 1444681467) + b; | ||
d = ____(9, 23, d + ((a & c) | (b & ~c)) + m02 - 51403784) + a; | ||
c = ____(14, 18, c + ((d & b) | (a & ~b)) + m07 + 1735328473) + d; | ||
b = ____(20, 12, b + ((c & a) | (d & ~a)) + m12 - 1926607734) + c; | ||
a = ____(4, 28, a + (b ^ c ^ d) + m05 - 378558) + b; | ||
d = ____(11, 21, d + (a ^ b ^ c) + m08 - 2022574463) + a; | ||
c = ____(16, 16, c + (d ^ a ^ b) + m11 + 1839030562) + d; | ||
b = ____(23, 9, b + (c ^ d ^ a) + m14 - 35309556) + c; | ||
a = ____(4, 28, a + (b ^ c ^ d) + m01 - 1530992060) + b; | ||
d = ____(11, 21, d + (a ^ b ^ c) + m04 + 1272893353) + a; | ||
c = ____(16, 16, c + (d ^ a ^ b) + m07 - 155497632) + d; | ||
b = ____(23, 9, b + (c ^ d ^ a) + m10 - 1094730640) + c; | ||
a = ____(4, 28, a + (b ^ c ^ d) + m13 + 681279174) + b; | ||
d = ____(11, 21, d + (a ^ b ^ c) + m00 - 358537222) + a; | ||
c = ____(16, 16, c + (d ^ a ^ b) + m03 - 722521979) + d; | ||
b = ____(23, 9, b + (c ^ d ^ a) + m06 + 76029189) + c; | ||
a = ____(4, 28, a + (b ^ c ^ d) + m09 - 640364487) + b; | ||
d = ____(11, 21, d + (a ^ b ^ c) + m12 - 421815835) + a; | ||
c = ____(16, 16, c + (d ^ a ^ b) + m15 + 530742520) + d; | ||
b = ____(23, 9, b + (c ^ d ^ a) + m02 - 995338651) + c; | ||
a = ____(6, 26, a + (c ^ (b | ~d)) + m00 - 198630844) + b; | ||
d = ____(10, 22, d + (b ^ (a | ~c)) + m07 + 1126891415) + a; | ||
c = ____(15, 17, c + (a ^ (d | ~b)) + m14 - 1416354905) + d; | ||
b = ____(21, 11, b + (d ^ (c | ~a)) + m05 - 57434055) + c; | ||
a = ____(6, 26, a + (c ^ (b | ~d)) + m12 + 1700485571) + b; | ||
d = ____(10, 22, d + (b ^ (a | ~c)) + m03 - 1894986606) + a; | ||
c = ____(15, 17, c + (a ^ (d | ~b)) + m10 - 1051523) + d; | ||
b = ____(21, 11, b + (d ^ (c | ~a)) + m01 - 2054922799) + c; | ||
a = ____(6, 26, a + (c ^ (b | ~d)) + m08 + 1873313359) + b; | ||
d = ____(10, 22, d + (b ^ (a | ~c)) + m15 - 30611744) + a; | ||
c = ____(15, 17, c + (a ^ (d | ~b)) + m06 - 1560198380) + d; | ||
b = ____(21, 11, b + (d ^ (c | ~a)) + m13 + 1309151649) + c; | ||
a = ____(6, 26, a + (c ^ (b | ~d)) + m04 - 145523070) + b; | ||
d = ____(10, 22, d + (b ^ (a | ~c)) + m11 - 1120210379) + a; | ||
c = ____(15, 17, c + (a ^ (d | ~b)) + m02 + 718787259) + d; | ||
b = ____(21, 11, b + (d ^ (c | ~a)) + m09 - 343485551) + c; | ||
i = i + 16; | ||
a = (a + aa) >>> 0; | ||
b = (b + bb) >>> 0; | ||
c = (c + cc) >>> 0; | ||
d = (d + dd) >>> 0; | ||
} | ||
} | ||
// console.log("md5WA, elapsed="+((new Date().getTime())-qwerty)+(md5Used?", WebAssembly called "+md5Used+" times":", WebAssembly not called")); | ||
return crypt.endian([a, b, c, d]); | ||
function ____(s, t, n) { | ||
return (n << s) | (n >>> t); | ||
} | ||
// Convert a byte array to big-endian 32-bit words | ||
function bytesToWordsNewer(bytes, words) { | ||
var i = -1, l = Math.floor((bytes.length - 1) / 4), j = 0, b0, b1, b2, b3; | ||
while (l - 8 > i++) { | ||
j = i << 2; | ||
words[i] = bytes[j + 0] | (bytes[j + 1] << 8) | (bytes[j + 2] << 16) | (bytes[j + 3] << 24); | ||
} | ||
i--; | ||
while (l > i++) { | ||
j = i << 2; | ||
b0 = typeof bytes[j + 0] === 'undefined' ? 0 : bytes[j + 0]; | ||
b1 = typeof bytes[j + 1] === 'undefined' ? 0 : bytes[j + 1]; | ||
b2 = typeof bytes[j + 2] === 'undefined' ? 0 : bytes[j + 2]; | ||
b3 = typeof bytes[j + 3] === 'undefined' ? 0 : bytes[j + 3]; | ||
words[i] = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24); | ||
} | ||
return l + 1; | ||
} | ||
}; | ||
return function (message, exports, mView, options) { | ||
var digestbytes; | ||
loops = exports.loops; | ||
loop = exports.loop; | ||
getA = exports.getA; | ||
getB = exports.getB; | ||
getC = exports.getC; | ||
getD = exports.getD; | ||
getX = exports.getX; | ||
setA = exports.setA; | ||
setB = exports.setB; | ||
setC = exports.setC; | ||
setD = exports.setD; | ||
setX = exports.setX; | ||
memView = mView; | ||
digestbytes = crypt.wordsToBytes(md5WA(message)); | ||
return options && options.asBytes ? digestbytes : crypt.bytesconvertNumberToHex(digestbytes); | ||
}; | ||
} | ||
function makeMD5JS() { | ||
var md5JS = function (message, options) { | ||
var m00, m01, m02, m03, m04, m05, m06, m07, m08, m09, m10, m11, m12, m13, m14, m15, aa, bb, cc, dd, m; | ||
var qwerty = new Date().getTime(); | ||
var a = 1732584193, | ||
b = -271733879, | ||
c = -1732584194, | ||
d = 271733878, | ||
l = message.length * 8; | ||
m = crypt.bytesToWords(message); | ||
for (var j = 0; j < m.length; j++) { | ||
m[j] = (m[j] << 8 | m[j] >>> 24) & 0x00ff00ff | (m[j] << 24 | m[j] >>> 8) & 0xff00ff00; | ||
} | ||
m[l >>> 5] |= 0x80 << l % 32; | ||
m[(l + 64 >>> 9 << 4) + 14] = l; | ||
for (var i = 0; i < m.length; i += 16) { | ||
aa = a; | ||
bb = b; | ||
cc = c; | ||
dd = d; | ||
m00 = m[i + 0] >>> 0; | ||
m01 = m[i + 1] >>> 0; | ||
m02 = m[i + 2] >>> 0; | ||
m03 = m[i + 3] >>> 0; | ||
m04 = m[i + 4] >>> 0; | ||
m05 = m[i + 5] >>> 0; | ||
m06 = m[i + 6] >>> 0; | ||
m07 = m[i + 7] >>> 0; | ||
m08 = m[i + 8] >>> 0; | ||
m09 = m[i + 9] >>> 0; | ||
m10 = m[i + 10] >>> 0; | ||
m11 = m[i + 11] >>> 0; | ||
m12 = m[i + 12] >>> 0; | ||
m13 = m[i + 13] >>> 0; | ||
m14 = m[i + 14] >>> 0; | ||
m15 = m[i + 15] >>> 0; | ||
a = ____(7, 25, a + (b & c | ~b & d) + m00 - 680876936) + b; | ||
d = ____(12, 20, d + (a & b | ~a & c) + m01 - 389564586) + a; | ||
c = ____(17, 15, c + (d & a | ~d & b) + m02 + 606105819) + d; | ||
b = ____(22, 10, b + (c & d | ~c & a) + m03 - 1044525330) + c; | ||
a = ____(7, 25, a + (b & c | ~b & d) + m04 - 176418897) + b; | ||
d = ____(12, 20, d + (a & b | ~a & c) + m05 + 1200080426) + a; | ||
c = ____(17, 15, c + (d & a | ~d & b) + m06 - 1473231341) + d; | ||
b = ____(22, 10, b + (c & d | ~c & a) + m07 - 45705983) + c; | ||
a = ____(7, 25, a + (b & c | ~b & d) + m08 + 1770035416) + b; | ||
d = ____(12, 20, d + (a & b | ~a & c) + m09 - 1958414417) + a; | ||
c = ____(17, 15, c + (d & a | ~d & b) + m10 - 42063) + d; | ||
b = ____(22, 10, b + (c & d | ~c & a) + m11 - 1990404162) + c; | ||
a = ____(7, 25, a + (b & c | ~b & d) + m12 + 1804603682) + b; | ||
d = ____(12, 20, d + (a & b | ~a & c) + m13 - 40341101) + a; | ||
c = ____(17, 15, c + (d & a | ~d & b) + m14 - 1502002290) + d; | ||
b = ____(22, 10, b + (c & d | ~c & a) + m15 + 1236535329) + c; | ||
a = ____(5, 27, a + (b & d | c & ~d) + m01 - 165796510) + b; | ||
d = ____(9, 23, d + (a & c | b & ~c) + m06 - 1069501632) + a; | ||
c = ____(14, 18, c + (d & b | a & ~b) + m11 + 643717713) + d; | ||
b = ____(20, 12, b + (c & a | d & ~a) + m00 - 373897302) + c; | ||
a = ____(5, 27, a + (b & d | c & ~d) + m05 - 701558691) + b; | ||
d = ____(9, 23, d + (a & c | b & ~c) + m10 + 38016083) + a; | ||
c = ____(14, 18, c + (d & b | a & ~b) + m15 - 660478335) + d; | ||
b = ____(20, 12, b + (c & a | d & ~a) + m04 - 405537848) + c; | ||
a = ____(5, 27, a + (b & d | c & ~d) + m09 + 568446438) + b; | ||
d = ____(9, 23, d + (a & c | b & ~c) + m14 - 1019803690) + a; | ||
c = ____(14, 18, c + (d & b | a & ~b) + m03 - 187363961) + d; | ||
b = ____(20, 12, b + (c & a | d & ~a) + m08 + 1163531501) + c; | ||
a = ____(5, 27, a + (b & d | c & ~d) + m13 - 1444681467) + b; | ||
d = ____(9, 23, d + (a & c | b & ~c) + m02 - 51403784) + a; | ||
c = ____(14, 18, c + (d & b | a & ~b) + m07 + 1735328473) + d; | ||
b = ____(20, 12, b + (c & a | d & ~a) + m12 - 1926607734) + c; | ||
a = ____(4, 28, a + (b ^ c ^ d) + m05 - 378558) + b; | ||
d = ____(11, 21, d + (a ^ b ^ c) + m08 - 2022574463) + a; | ||
c = ____(16, 16, c + (d ^ a ^ b) + m11 + 1839030562) + d; | ||
b = ____(23, 9, b + (c ^ d ^ a) + m14 - 35309556) + c; | ||
a = ____(4, 28, a + (b ^ c ^ d) + m01 - 1530992060) + b; | ||
d = ____(11, 21, d + (a ^ b ^ c) + m04 + 1272893353) + a; | ||
c = ____(16, 16, c + (d ^ a ^ b) + m07 - 155497632) + d; | ||
b = ____(23, 9, b + (c ^ d ^ a) + m10 - 1094730640) + c; | ||
a = ____(4, 28, a + (b ^ c ^ d) + m13 + 681279174) + b; | ||
d = ____(11, 21, d + (a ^ b ^ c) + m00 - 358537222) + a; | ||
c = ____(16, 16, c + (d ^ a ^ b) + m03 - 722521979) + d; | ||
b = ____(23, 9, b + (c ^ d ^ a) + m06 + 76029189) + c; | ||
a = ____(4, 28, a + (b ^ c ^ d) + m09 - 640364487) + b; | ||
d = ____(11, 21, d + (a ^ b ^ c) + m12 - 421815835) + a; | ||
c = ____(16, 16, c + (d ^ a ^ b) + m15 + 530742520) + d; | ||
b = ____(23, 9, b + (c ^ d ^ a) + m02 - 995338651) + c; | ||
a = ____(6, 26, a + (c ^ (b | ~d)) + m00 - 198630844) + b; | ||
d = ____(10, 22, d + (b ^ (a | ~c)) + m07 + 1126891415) + a; | ||
c = ____(15, 17, c + (a ^ (d | ~b)) + m14 - 1416354905) + d; | ||
b = ____(21, 11, b + (d ^ (c | ~a)) + m05 - 57434055) + c; | ||
a = ____(6, 26, a + (c ^ (b | ~d)) + m12 + 1700485571) + b; | ||
d = ____(10, 22, d + (b ^ (a | ~c)) + m03 - 1894986606) + a; | ||
c = ____(15, 17, c + (a ^ (d | ~b)) + m10 - 1051523) + d; | ||
b = ____(21, 11, b + (d ^ (c | ~a)) + m01 - 2054922799) + c; | ||
a = ____(6, 26, a + (c ^ (b | ~d)) + m08 + 1873313359) + b; | ||
d = ____(10, 22, d + (b ^ (a | ~c)) + m15 - 30611744) + a; | ||
c = ____(15, 17, c + (a ^ (d | ~b)) + m06 - 1560198380) + d; | ||
b = ____(21, 11, b + (d ^ (c | ~a)) + m13 + 1309151649) + c; | ||
a = ____(6, 26, a + (c ^ (b | ~d)) + m04 - 145523070) + b; | ||
d = ____(10, 22, d + (b ^ (a | ~c)) + m11 - 1120210379) + a; | ||
c = ____(15, 17, c + (a ^ (d | ~b)) + m02 + 718787259) + d; | ||
b = ____(21, 11, b + (d ^ (c | ~a)) + m09 - 343485551) + c; | ||
a = a + aa >>> 0; | ||
b = b + bb >>> 0; | ||
c = c + cc >>> 0; | ||
d = d + dd >>> 0; | ||
} | ||
return crypt.endian([a, b, c, d]); | ||
function ____(s, t, n) { | ||
return n << s | n >>> t; | ||
} | ||
}; | ||
return function (message, options) { | ||
var digestbytes = crypt.wordsToBytes(md5JS(message, options)), | ||
result = options && options.asBytes ? digestbytes : crypt.bytesconvertNumberToHex(digestbytes); | ||
return result; | ||
}; | ||
var md5JS = function (message, options) { | ||
var m00, m01, m02, m03, m04, m05, m06, m07, m08, m09, m10, m11, m12, m13, m14, m15, aa, bb, cc, dd, m; | ||
var qwerty = new Date().getTime(); | ||
// console.log("md5 start"); | ||
var a = 1732584193, b = -271733879, c = -1732584194, d = 271733878, l = message.length * 8; | ||
m = crypt.bytesToWords(message); | ||
// Swap endian | ||
for (var j = 0; j < m.length; j++) { | ||
m[j] = | ||
(((m[j] << 8) | (m[j] >>> 24)) & 0x00ff00ff) | (((m[j] << 24) | (m[j] >>> 8)) & 0xff00ff00); | ||
} | ||
// Padding | ||
m[l >>> 5] |= 0x80 << l % 32; | ||
m[(((l + 64) >>> 9) << 4) + 14] = l; | ||
for (var i = 0; i < m.length; i += 16) { | ||
aa = a; | ||
bb = b; | ||
cc = c; | ||
dd = d; | ||
m00 = m[i + 0] >>> 0; | ||
m01 = m[i + 1] >>> 0; | ||
m02 = m[i + 2] >>> 0; | ||
m03 = m[i + 3] >>> 0; | ||
m04 = m[i + 4] >>> 0; | ||
m05 = m[i + 5] >>> 0; | ||
m06 = m[i + 6] >>> 0; | ||
m07 = m[i + 7] >>> 0; | ||
m08 = m[i + 8] >>> 0; | ||
m09 = m[i + 9] >>> 0; | ||
m10 = m[i + 10] >>> 0; | ||
m11 = m[i + 11] >>> 0; | ||
m12 = m[i + 12] >>> 0; | ||
m13 = m[i + 13] >>> 0; | ||
m14 = m[i + 14] >>> 0; | ||
m15 = m[i + 15] >>> 0; | ||
a = ____(7, 25, a + ((b & c) | (~b & d)) + m00 - 680876936) + b; | ||
d = ____(12, 20, d + ((a & b) | (~a & c)) + m01 - 389564586) + a; | ||
c = ____(17, 15, c + ((d & a) | (~d & b)) + m02 + 606105819) + d; | ||
b = ____(22, 10, b + ((c & d) | (~c & a)) + m03 - 1044525330) + c; | ||
a = ____(7, 25, a + ((b & c) | (~b & d)) + m04 - 176418897) + b; | ||
d = ____(12, 20, d + ((a & b) | (~a & c)) + m05 + 1200080426) + a; | ||
c = ____(17, 15, c + ((d & a) | (~d & b)) + m06 - 1473231341) + d; | ||
b = ____(22, 10, b + ((c & d) | (~c & a)) + m07 - 45705983) + c; | ||
a = ____(7, 25, a + ((b & c) | (~b & d)) + m08 + 1770035416) + b; | ||
d = ____(12, 20, d + ((a & b) | (~a & c)) + m09 - 1958414417) + a; | ||
c = ____(17, 15, c + ((d & a) | (~d & b)) + m10 - 42063) + d; | ||
b = ____(22, 10, b + ((c & d) | (~c & a)) + m11 - 1990404162) + c; | ||
a = ____(7, 25, a + ((b & c) | (~b & d)) + m12 + 1804603682) + b; | ||
d = ____(12, 20, d + ((a & b) | (~a & c)) + m13 - 40341101) + a; | ||
c = ____(17, 15, c + ((d & a) | (~d & b)) + m14 - 1502002290) + d; | ||
b = ____(22, 10, b + ((c & d) | (~c & a)) + m15 + 1236535329) + c; | ||
a = ____(5, 27, a + ((b & d) | (c & ~d)) + m01 - 165796510) + b; | ||
d = ____(9, 23, d + ((a & c) | (b & ~c)) + m06 - 1069501632) + a; | ||
c = ____(14, 18, c + ((d & b) | (a & ~b)) + m11 + 643717713) + d; | ||
b = ____(20, 12, b + ((c & a) | (d & ~a)) + m00 - 373897302) + c; | ||
a = ____(5, 27, a + ((b & d) | (c & ~d)) + m05 - 701558691) + b; | ||
d = ____(9, 23, d + ((a & c) | (b & ~c)) + m10 + 38016083) + a; | ||
c = ____(14, 18, c + ((d & b) | (a & ~b)) + m15 - 660478335) + d; | ||
b = ____(20, 12, b + ((c & a) | (d & ~a)) + m04 - 405537848) + c; | ||
a = ____(5, 27, a + ((b & d) | (c & ~d)) + m09 + 568446438) + b; | ||
d = ____(9, 23, d + ((a & c) | (b & ~c)) + m14 - 1019803690) + a; | ||
c = ____(14, 18, c + ((d & b) | (a & ~b)) + m03 - 187363961) + d; | ||
b = ____(20, 12, b + ((c & a) | (d & ~a)) + m08 + 1163531501) + c; | ||
a = ____(5, 27, a + ((b & d) | (c & ~d)) + m13 - 1444681467) + b; | ||
d = ____(9, 23, d + ((a & c) | (b & ~c)) + m02 - 51403784) + a; | ||
c = ____(14, 18, c + ((d & b) | (a & ~b)) + m07 + 1735328473) + d; | ||
b = ____(20, 12, b + ((c & a) | (d & ~a)) + m12 - 1926607734) + c; | ||
a = ____(4, 28, a + (b ^ c ^ d) + m05 - 378558) + b; | ||
d = ____(11, 21, d + (a ^ b ^ c) + m08 - 2022574463) + a; | ||
c = ____(16, 16, c + (d ^ a ^ b) + m11 + 1839030562) + d; | ||
b = ____(23, 9, b + (c ^ d ^ a) + m14 - 35309556) + c; | ||
a = ____(4, 28, a + (b ^ c ^ d) + m01 - 1530992060) + b; | ||
d = ____(11, 21, d + (a ^ b ^ c) + m04 + 1272893353) + a; | ||
c = ____(16, 16, c + (d ^ a ^ b) + m07 - 155497632) + d; | ||
b = ____(23, 9, b + (c ^ d ^ a) + m10 - 1094730640) + c; | ||
a = ____(4, 28, a + (b ^ c ^ d) + m13 + 681279174) + b; | ||
d = ____(11, 21, d + (a ^ b ^ c) + m00 - 358537222) + a; | ||
c = ____(16, 16, c + (d ^ a ^ b) + m03 - 722521979) + d; | ||
b = ____(23, 9, b + (c ^ d ^ a) + m06 + 76029189) + c; | ||
a = ____(4, 28, a + (b ^ c ^ d) + m09 - 640364487) + b; | ||
d = ____(11, 21, d + (a ^ b ^ c) + m12 - 421815835) + a; | ||
c = ____(16, 16, c + (d ^ a ^ b) + m15 + 530742520) + d; | ||
b = ____(23, 9, b + (c ^ d ^ a) + m02 - 995338651) + c; | ||
a = ____(6, 26, a + (c ^ (b | ~d)) + m00 - 198630844) + b; | ||
d = ____(10, 22, d + (b ^ (a | ~c)) + m07 + 1126891415) + a; | ||
c = ____(15, 17, c + (a ^ (d | ~b)) + m14 - 1416354905) + d; | ||
b = ____(21, 11, b + (d ^ (c | ~a)) + m05 - 57434055) + c; | ||
a = ____(6, 26, a + (c ^ (b | ~d)) + m12 + 1700485571) + b; | ||
d = ____(10, 22, d + (b ^ (a | ~c)) + m03 - 1894986606) + a; | ||
c = ____(15, 17, c + (a ^ (d | ~b)) + m10 - 1051523) + d; | ||
b = ____(21, 11, b + (d ^ (c | ~a)) + m01 - 2054922799) + c; | ||
a = ____(6, 26, a + (c ^ (b | ~d)) + m08 + 1873313359) + b; | ||
d = ____(10, 22, d + (b ^ (a | ~c)) + m15 - 30611744) + a; | ||
c = ____(15, 17, c + (a ^ (d | ~b)) + m06 - 1560198380) + d; | ||
b = ____(21, 11, b + (d ^ (c | ~a)) + m13 + 1309151649) + c; | ||
a = ____(6, 26, a + (c ^ (b | ~d)) + m04 - 145523070) + b; | ||
d = ____(10, 22, d + (b ^ (a | ~c)) + m11 - 1120210379) + a; | ||
c = ____(15, 17, c + (a ^ (d | ~b)) + m02 + 718787259) + d; | ||
b = ____(21, 11, b + (d ^ (c | ~a)) + m09 - 343485551) + c; | ||
a = (a + aa) >>> 0; | ||
b = (b + bb) >>> 0; | ||
c = (c + cc) >>> 0; | ||
d = (d + dd) >>> 0; | ||
} | ||
// console.log("md5JS, elapsed="+((new Date().getTime())-qwerty)); | ||
return crypt.endian([a, b, c, d]); | ||
function ____(s, t, n) { | ||
return (n << s) | (n >>> t); | ||
} | ||
}; | ||
return function (message, options) { | ||
var digestbytes = crypt.wordsToBytes(md5JS(message, options)), result = options && options.asBytes ? digestbytes : crypt.bytesconvertNumberToHex(digestbytes); | ||
return result; | ||
}; | ||
} | ||
function str2AB(str) { | ||
var l, | ||
buff, | ||
buffView, | ||
i = -1; | ||
l = str.length - 1; | ||
buff = new ArrayBuffer(str.length); | ||
buffView = new Uint8Array(buff); | ||
while (l > i++) { | ||
buffView[i] = str.charCodeAt(i); | ||
} | ||
return buffView; | ||
var l, buff, buffView, i = -1; | ||
l = str.length - 1; | ||
buff = new ArrayBuffer(str.length); | ||
buffView = new Uint8Array(buff); | ||
while (l > i++) { | ||
buffView[i] = str.charCodeAt(i); | ||
} | ||
return buffView; | ||
} | ||
function nodeATOB(str) { | ||
return Buffer.from(str, 'base64').toString('binary'); | ||
return Buffer.from(str, 'base64').toString('binary'); | ||
} | ||
function identity(x) { | ||
return x; | ||
return x; | ||
} | ||
function makeCrypt() { | ||
var base64map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; | ||
return { | ||
rotl: function (n, b) { | ||
return n << b | n >>> 32 - b; | ||
}, | ||
endian: function (n) { | ||
if (n.constructor == Number) { | ||
return crypt.rotl(n, 8) & 0x00ff00ff | crypt.rotl(n, 24) & 0xff00ff00; | ||
} | ||
for (var i = 0; i < n.length; i++) n[i] = crypt.endian(n[i]); | ||
return n; | ||
}, | ||
bytesToWords: function (bytes) { | ||
for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8) words[b >>> 5] |= bytes[i] << 24 - b % 32; | ||
return words; | ||
}, | ||
wordsToBytes: function (words) { | ||
for (var bytes = [], b = 0; b < words.length * 32; b += 8) bytes.push(words[b >>> 5] >>> 24 - b % 32 & 0xff); | ||
return bytes; | ||
}, | ||
bytesconvertNumberToHex: function (bytes) { | ||
for (var hex = [], i = 0; i < bytes.length; i++) { | ||
hex.push((bytes[i] >>> 4).toString(16)); | ||
hex.push((bytes[i] & 0xf).toString(16)); | ||
} | ||
return hex.join(''); | ||
} | ||
}; | ||
var base64map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; | ||
return { | ||
rotl: function (n, b) { | ||
return (n << b) | (n >>> (32 - b)); | ||
}, | ||
endian: function (n) { | ||
if (n.constructor == Number) { | ||
return (crypt.rotl(n, 8) & 0x00ff00ff) | (crypt.rotl(n, 24) & 0xff00ff00); | ||
} | ||
for (var i = 0; i < n.length; i++) | ||
n[i] = crypt.endian(n[i]); | ||
return n; | ||
}, | ||
bytesToWords: function (bytes) { | ||
for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8) | ||
words[b >>> 5] |= bytes[i] << (24 - (b % 32)); | ||
return words; | ||
}, | ||
wordsToBytes: function (words) { | ||
for (var bytes = [], b = 0; b < words.length * 32; b += 8) | ||
bytes.push((words[b >>> 5] >>> (24 - (b % 32))) & 0xff); | ||
return bytes; | ||
}, | ||
bytesconvertNumberToHex: function (bytes) { | ||
for (var hex = [], i = 0; i < bytes.length; i++) { | ||
hex.push((bytes[i] >>> 4).toString(16)); | ||
hex.push((bytes[i] & 0xf).toString(16)); | ||
} | ||
return hex.join(''); | ||
} | ||
}; | ||
} | ||
//# sourceMappingURL=md5-wasm.js.map |
@@ -1,2 +0,2 @@ | ||
import { Hash } from './hash'; | ||
import { Hash } from "./hash.js"; | ||
/** | ||
@@ -3,0 +3,0 @@ * Calculates CRC32 Cryptographic Hash |
@@ -0,46 +1,39 @@ | ||
// loaders.gl | ||
// SPDX-License-Identifier: MIT | ||
// Copyright (c) vis.gl contributors | ||
import { Hash } from "./hash.js"; | ||
import CRC32 from "./algorithms/crc32.js"; | ||
import { encodeNumber } from "./utils/digest-utils.js"; | ||
/** | ||
* Calculates CRC32 Cryptographic Hash | ||
*/ | ||
export class CRC32Hash extends Hash { | ||
constructor() { | ||
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
super(); | ||
this.name = 'crc32'; | ||
this.options = void 0; | ||
this.options = { | ||
crypto: {}, | ||
...options | ||
}; | ||
this.hashBatches = this.hashBatches.bind(this); | ||
} | ||
async hash(input, encoding) { | ||
return this.hashSync(input, encoding); | ||
} | ||
hashSync(input, encoding) { | ||
const hash = new CRC32(); | ||
hash.update(input); | ||
const digest = hash.finalize(); | ||
return encodeNumber(digest, encoding); | ||
} | ||
hashBatches(asyncIterator) { | ||
try { | ||
var _this = this; | ||
let encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'base64'; | ||
return async function* () { | ||
var _this$options$crypto, _this$options$crypto$; | ||
constructor(options = {}) { | ||
super(); | ||
this.name = 'crc32'; | ||
this.options = { crypto: {}, ...options }; | ||
this.hashBatches = this.hashBatches.bind(this); | ||
} | ||
/** | ||
* Atomic hash calculation | ||
* @returns base64 encoded hash | ||
*/ | ||
async hash(input, encoding) { | ||
return this.hashSync(input, encoding); | ||
} | ||
hashSync(input, encoding) { | ||
const hash = new CRC32(); | ||
hash.update(input); | ||
const digest = hash.finalize(); | ||
return encodeNumber(digest, encoding); | ||
} | ||
async *hashBatches(asyncIterator, encoding = 'base64') { | ||
const hash = new CRC32(); | ||
for await (const chunk of asyncIterator) { | ||
hash.update(chunk); | ||
yield chunk; | ||
hash.update(chunk); | ||
yield chunk; | ||
} | ||
const digest = hash.finalize(); | ||
(_this$options$crypto = _this.options.crypto) === null || _this$options$crypto === void 0 ? void 0 : (_this$options$crypto$ = _this$options$crypto.onEnd) === null || _this$options$crypto$ === void 0 ? void 0 : _this$options$crypto$.call(_this$options$crypto, { | ||
hash: encodeNumber(digest, encoding) | ||
}); | ||
}(); | ||
} catch (e) { | ||
return Promise.reject(e); | ||
this.options.crypto?.onEnd?.({ hash: encodeNumber(digest, encoding) }); | ||
} | ||
} | ||
} | ||
//# sourceMappingURL=crc32-hash.js.map |
@@ -1,2 +0,2 @@ | ||
import { Hash } from './hash'; | ||
import { Hash } from "./hash.js"; | ||
/** | ||
@@ -3,0 +3,0 @@ * A transform that calculates CRC32c Hash |
@@ -0,45 +1,43 @@ | ||
// loaders.gl | ||
// SPDX-License-Identifier: MIT | ||
// Copyright (c) vis.gl contributors | ||
import { Hash } from "./hash.js"; | ||
import CRC32C from "./algorithms/crc32c.js"; | ||
import { encodeNumber } from "./utils/digest-utils.js"; | ||
/** | ||
* A transform that calculates CRC32c Hash | ||
*/ | ||
export class CRC32CHash extends Hash { | ||
constructor() { | ||
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
super(); | ||
this.name = 'crc32c'; | ||
this.options = void 0; | ||
this.options = { | ||
crypto: {}, | ||
...options | ||
}; | ||
} | ||
async hash(input, encoding) { | ||
return this.hashSync(input, encoding); | ||
} | ||
hashSync(input, encoding) { | ||
const hash = new CRC32C(this.options); | ||
hash.update(input); | ||
const digest = hash.finalize(); | ||
return encodeNumber(digest, encoding); | ||
} | ||
hashBatches(asyncIterator) { | ||
try { | ||
var _this = this; | ||
let encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'base64'; | ||
return async function* () { | ||
var _this$options$crypto, _this$options$crypto$; | ||
const hash = new CRC32C(_this.options); | ||
/** | ||
* Atomic hash calculation | ||
* @returns base64 encoded hash | ||
*/ | ||
constructor(options = {}) { | ||
super(); | ||
this.name = 'crc32c'; | ||
this.options = { crypto: {}, ...options }; | ||
} | ||
/** | ||
* Atomic hash calculation | ||
* @returns base64 encoded hash | ||
*/ | ||
async hash(input, encoding) { | ||
return this.hashSync(input, encoding); | ||
} | ||
hashSync(input, encoding) { | ||
const hash = new CRC32C(this.options); | ||
hash.update(input); | ||
const digest = hash.finalize(); | ||
return encodeNumber(digest, encoding); | ||
} | ||
// runInBatches inherited | ||
async *hashBatches(asyncIterator, encoding = 'base64') { | ||
const hash = new CRC32C(this.options); | ||
for await (const chunk of asyncIterator) { | ||
hash.update(chunk); | ||
yield chunk; | ||
hash.update(chunk); | ||
yield chunk; | ||
} | ||
const digest = hash.finalize(); | ||
(_this$options$crypto = _this.options.crypto) === null || _this$options$crypto === void 0 ? void 0 : (_this$options$crypto$ = _this$options$crypto.onEnd) === null || _this$options$crypto$ === void 0 ? void 0 : _this$options$crypto$.call(_this$options$crypto, { | ||
hash: encodeNumber(digest, encoding) | ||
}); | ||
}(); | ||
} catch (e) { | ||
return Promise.reject(e); | ||
this.options.crypto?.onEnd?.({ hash: encodeNumber(digest, encoding) }); | ||
} | ||
} | ||
} | ||
//# sourceMappingURL=crc32c-hash.js.map |
@@ -1,2 +0,2 @@ | ||
import { Hash } from './hash'; | ||
import { Hash } from "./hash.js"; | ||
type CryptoHashOptions = { | ||
@@ -3,0 +3,0 @@ modules?: { |
import { Hash } from "./hash.js"; | ||
let CryptoJS; | ||
/** | ||
* A transform that calculates Cryptographic Hash using Crypto JS library | ||
* @deprecated Warning, experimental class | ||
*/ | ||
export class CryptoHash extends Hash { | ||
constructor(options) { | ||
var _this$options, _this$options$crypto; | ||
super(); | ||
this.name = void 0; | ||
this.options = void 0; | ||
this._algorithm = void 0; | ||
this._algo = void 0; | ||
this.options = options; | ||
this._algorithm = (_this$options = this.options) === null || _this$options === void 0 ? void 0 : (_this$options$crypto = _this$options.crypto) === null || _this$options$crypto === void 0 ? void 0 : _this$options$crypto.algorithm; | ||
if (!this._algorithm) { | ||
throw new Error(this.name); | ||
constructor(options) { | ||
super(); | ||
this.options = options; | ||
this._algorithm = this.options?.crypto?.algorithm; | ||
if (!this._algorithm) { | ||
throw new Error(this.name); | ||
} | ||
this.name = this._algorithm.toLowerCase(); | ||
} | ||
this.name = this._algorithm.toLowerCase(); | ||
} | ||
async preload() { | ||
if (!CryptoJS) { | ||
var _this$options2, _this$options2$module; | ||
CryptoJS = (_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : (_this$options2$module = _this$options2.modules) === null || _this$options2$module === void 0 ? void 0 : _this$options2$module.CryptoJS; | ||
async preload() { | ||
if (!CryptoJS) { | ||
CryptoJS = this.options?.modules?.CryptoJS; | ||
} | ||
if (!CryptoJS) { | ||
throw new Error(this.name); | ||
} | ||
this._algo = CryptoJS.algo[this._algorithm]; | ||
} | ||
if (!CryptoJS) { | ||
throw new Error(this.name); | ||
/** | ||
* Atomic hash calculation | ||
* @returns base64 encoded hash | ||
*/ | ||
async hash(input, encoding) { | ||
await this.preload(); | ||
const hash = this._algo.create(); | ||
if (!hash) { | ||
throw new Error(this.name); | ||
} | ||
// arrayBuffer is accepted, even though types and docs say no | ||
// https://stackoverflow.com/questions/25567468/how-to-decrypt-an-arraybuffer | ||
const typedWordArray = CryptoJS.lib.WordArray.create(input); | ||
// Map our encoding constant to Crypto library | ||
const enc = encoding === 'base64' ? CryptoJS.enc.Base64 : CryptoJS.enc.Hex; | ||
return hash.update(typedWordArray).finalize().toString(enc); | ||
} | ||
this._algo = CryptoJS.algo[this._algorithm]; | ||
} | ||
async hash(input, encoding) { | ||
await this.preload(); | ||
const hash = this._algo.create(); | ||
if (!hash) { | ||
throw new Error(this.name); | ||
} | ||
const typedWordArray = CryptoJS.lib.WordArray.create(input); | ||
const enc = encoding === 'base64' ? CryptoJS.enc.Base64 : CryptoJS.enc.Hex; | ||
return hash.update(typedWordArray).finalize().toString(enc); | ||
} | ||
hashBatches(asyncIterator) { | ||
try { | ||
var _this = this; | ||
let encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'base64'; | ||
return async function* () { | ||
var _this$options3, _this$options3$crypto, _this$options3$crypto2; | ||
await _this.preload(); | ||
const hash = _this._algo.create(); | ||
async *hashBatches(asyncIterator, encoding = 'base64') { | ||
await this.preload(); | ||
const hash = this._algo.create(); | ||
if (!hash) { | ||
throw new Error(_this.name); | ||
throw new Error(this.name); | ||
} | ||
for await (const chunk of asyncIterator) { | ||
const typedWordArray = CryptoJS.lib.WordArray.create(chunk); | ||
hash.update(typedWordArray); | ||
yield chunk; | ||
// arrayBuffer is accepted, even though types and docs say no | ||
// https://stackoverflow.com/questions/25567468/how-to-decrypt-an-arraybuffer | ||
const typedWordArray = CryptoJS.lib.WordArray.create(chunk); | ||
hash.update(typedWordArray); | ||
yield chunk; | ||
} | ||
// Map our encoding constant to Crypto library | ||
const enc = encoding === 'base64' ? CryptoJS.enc.Base64 : CryptoJS.enc.Hex; | ||
const digest = hash.finalize().toString(enc); | ||
(_this$options3 = _this.options) === null || _this$options3 === void 0 ? void 0 : (_this$options3$crypto = _this$options3.crypto) === null || _this$options3$crypto === void 0 ? void 0 : (_this$options3$crypto2 = _this$options3$crypto.onEnd) === null || _this$options3$crypto2 === void 0 ? void 0 : _this$options3$crypto2.call(_this$options3$crypto, { | ||
hash: digest | ||
}); | ||
}(); | ||
} catch (e) { | ||
return Promise.reject(e); | ||
this.options?.crypto?.onEnd?.({ hash: digest }); | ||
} | ||
} | ||
} | ||
//# sourceMappingURL=crypto-hash.js.map |
@@ -0,37 +1,27 @@ | ||
// loaders.gl | ||
// SPDX-License-Identifier: MIT | ||
// Copyright (c) vis.gl contributors | ||
import { concatenateArrayBuffersAsync } from '@loaders.gl/loader-utils'; | ||
/** Abstract hash base class */ | ||
export class Hash { | ||
constructor() { | ||
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
this.name = void 0; | ||
this.options = void 0; | ||
this.hashBatches = this.hashBatches.bind(this); | ||
} | ||
async preload() { | ||
return; | ||
} | ||
hashBatches(asyncIterator) { | ||
try { | ||
var _this = this; | ||
let encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'base64'; | ||
return async function* () { | ||
var _this$options$crypto, _this$options$crypto$; | ||
constructor(options = {}) { | ||
this.hashBatches = this.hashBatches.bind(this); | ||
} | ||
async preload() { | ||
return; | ||
} | ||
async *hashBatches(asyncIterator, encoding = 'base64') { | ||
const arrayBuffers = []; | ||
for await (const arrayBuffer of asyncIterator) { | ||
arrayBuffers.push(arrayBuffer); | ||
yield arrayBuffer; | ||
arrayBuffers.push(arrayBuffer); | ||
yield arrayBuffer; | ||
} | ||
const output = await _this.concatenate(arrayBuffers); | ||
const hash = await _this.hash(output, encoding); | ||
(_this$options$crypto = _this.options.crypto) === null || _this$options$crypto === void 0 ? void 0 : (_this$options$crypto$ = _this$options$crypto.onEnd) === null || _this$options$crypto$ === void 0 ? void 0 : _this$options$crypto$.call(_this$options$crypto, { | ||
hash | ||
}); | ||
}(); | ||
} catch (e) { | ||
return Promise.reject(e); | ||
const output = await this.concatenate(arrayBuffers); | ||
const hash = await this.hash(output, encoding); | ||
this.options.crypto?.onEnd?.({ hash }); | ||
} | ||
} | ||
async concatenate(asyncIterator) { | ||
return await concatenateArrayBuffersAsync(asyncIterator); | ||
} | ||
// HELPERS | ||
async concatenate(asyncIterator) { | ||
return await concatenateArrayBuffersAsync(asyncIterator); | ||
} | ||
} | ||
//# sourceMappingURL=hash.js.map |
@@ -1,2 +0,2 @@ | ||
import { Hash } from './hash'; | ||
import { Hash } from "./hash.js"; | ||
/** | ||
@@ -3,0 +3,0 @@ * A transform that calculates MD5 hashes, passing data through |
@@ -0,18 +1,28 @@ | ||
// loaders.gl | ||
// SPDX-License-Identifier: MIT | ||
// Copyright (c) vis.gl contributors | ||
// Fork of https://github.com/briantbutton/md5-wasm under MIT license | ||
import { Hash } from "./hash.js"; | ||
import md5WASM from "./algorithms/md5-wasm.js"; | ||
import { encodeHex } from "./utils/digest-utils.js"; | ||
/** | ||
* A transform that calculates MD5 hashes, passing data through | ||
*/ | ||
export class MD5Hash extends Hash { | ||
constructor() { | ||
let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; | ||
super(); | ||
this.name = 'md5'; | ||
this.options = void 0; | ||
this.options = options; | ||
} | ||
async hash(input, encoding) { | ||
const md5Promise = new Promise((resolve, reject) => md5WASM(input).then(resolve).catch(reject)); | ||
const hex = await md5Promise; | ||
return encodeHex(hex, encoding); | ||
} | ||
constructor(options = {}) { | ||
super(); | ||
this.name = 'md5'; | ||
this.options = options; | ||
} | ||
/** | ||
* Atomic hash calculation | ||
* @returns base64 encoded hash | ||
*/ | ||
async hash(input, encoding) { | ||
const md5Promise = new Promise((resolve, reject) => | ||
// @ts-expect-error | ||
md5WASM(input).then(resolve).catch(reject)); | ||
const hex = await md5Promise; | ||
return encodeHex(hex, encoding); | ||
} | ||
} | ||
//# sourceMappingURL=md5-hash.js.map |
@@ -1,2 +0,2 @@ | ||
import { Hash } from './hash'; | ||
import { Hash } from "./hash.js"; | ||
type NodeHashOptions = { | ||
@@ -3,0 +3,0 @@ crypto: { |
@@ -0,17 +1,25 @@ | ||
// loaders.gl | ||
// SPDX-License-Identifier: MIT | ||
// Copyright (c) vis.gl contributors | ||
import { Hash } from "./hash.js"; | ||
/** | ||
* A transform that calculates Cryptographic Hash using Node's Crypto library | ||
* @deprecated Only available in Node.js | ||
*/ | ||
export class NodeHash extends Hash { | ||
constructor(options) { | ||
super(); | ||
this.name = void 0; | ||
this.options = void 0; | ||
this.options = options; | ||
if (!globalThis.loaders.NodeHash) { | ||
throw new Error('install @loaders.gl/crypto on Node.js to use NodeHash'); | ||
constructor(options) { | ||
super(); | ||
this.options = options; | ||
if (!globalThis.loaders.NodeHash) { | ||
throw new Error('install @loaders.gl/crypto on Node.js to use NodeHash'); | ||
} | ||
return new globalThis.loaders.NodeHash(options); | ||
} | ||
return new globalThis.loaders.NodeHash(options); | ||
} | ||
async hash(input, encoding) { | ||
throw new Error('Not implemented'); | ||
} | ||
/** | ||
* Atomic hash calculation | ||
* @returns base64 encoded hash | ||
*/ | ||
async hash(input, encoding) { | ||
throw new Error('Not implemented'); | ||
} | ||
} | ||
//# sourceMappingURL=node-hash.js.map |
@@ -1,2 +0,2 @@ | ||
import { CryptoHash } from './crypto-hash'; | ||
import { CryptoHash } from "./crypto-hash.js"; | ||
type CryptoHashOptions = { | ||
@@ -3,0 +3,0 @@ modules: { |
@@ -0,13 +1,12 @@ | ||
// loaders.gl | ||
// SPDX-License-Identifier: MIT | ||
// Copyright (c) vis.gl contributors | ||
import { CryptoHash } from "./crypto-hash.js"; | ||
/** | ||
* A transform that calculates Cryptographic Hash | ||
*/ | ||
export class SHA256Hash extends CryptoHash { | ||
constructor(options) { | ||
super({ | ||
...options, | ||
crypto: { | ||
...options.crypto, | ||
algorithm: 'SHA256' | ||
} | ||
}); | ||
} | ||
constructor(options) { | ||
super({ ...options, crypto: { ...options.crypto, algorithm: 'SHA256' } }); | ||
} | ||
} | ||
//# sourceMappingURL=sha256-hash.js.map |
@@ -0,87 +1,160 @@ | ||
// loaders.gl | ||
// SPDX-License-Identifier: MIT | ||
// Copyright (c) vis.gl contributors | ||
/** | ||
* `btoa()` polyfill as defined by the HTML and Infra specs, which mostly just references | ||
* RFC 4648. | ||
*/ | ||
export function asciiToBase64(string) { | ||
string = `${string}`; | ||
for (let i = 0; i < string.length; i++) { | ||
if (string.charCodeAt(i) > 255) { | ||
return null; | ||
// String conversion as required by Web IDL. | ||
string = `${string}`; | ||
// "The btoa() method must throw an "InvalidCharacterError" DOMException if | ||
// data contains any character whose code point is greater than U+00FF." | ||
for (let i = 0; i < string.length; i++) { | ||
if (string.charCodeAt(i) > 255) { | ||
return null; | ||
} | ||
} | ||
} | ||
let out = ''; | ||
for (let i = 0; i < string.length; i += 3) { | ||
const groupsOfSix = [undefined, undefined, undefined, undefined]; | ||
groupsOfSix[0] = string.charCodeAt(i) >> 2; | ||
groupsOfSix[1] = (string.charCodeAt(i) & 0x03) << 4; | ||
if (string.length > i + 1) { | ||
groupsOfSix[1] |= string.charCodeAt(i + 1) >> 4; | ||
groupsOfSix[2] = (string.charCodeAt(i + 1) & 0x0f) << 2; | ||
let out = ''; | ||
for (let i = 0; i < string.length; i += 3) { | ||
/** @type {Array[4]} */ | ||
const groupsOfSix = [undefined, undefined, undefined, undefined]; | ||
groupsOfSix[0] = string.charCodeAt(i) >> 2; | ||
groupsOfSix[1] = (string.charCodeAt(i) & 0x03) << 4; | ||
if (string.length > i + 1) { | ||
groupsOfSix[1] |= string.charCodeAt(i + 1) >> 4; | ||
groupsOfSix[2] = (string.charCodeAt(i + 1) & 0x0f) << 2; | ||
} | ||
if (string.length > i + 2) { | ||
// @ts-expect-error | ||
groupsOfSix[2] |= string.charCodeAt(i + 2) >> 6; | ||
groupsOfSix[3] = string.charCodeAt(i + 2) & 0x3f; | ||
} | ||
for (let j = 0; j < groupsOfSix.length; j++) { | ||
if (typeof groupsOfSix[j] === 'undefined') { | ||
out += '='; | ||
} | ||
else { | ||
out += btoaLookup(groupsOfSix[j]); | ||
} | ||
} | ||
} | ||
if (string.length > i + 2) { | ||
groupsOfSix[2] |= string.charCodeAt(i + 2) >> 6; | ||
groupsOfSix[3] = string.charCodeAt(i + 2) & 0x3f; | ||
} | ||
for (let j = 0; j < groupsOfSix.length; j++) { | ||
if (typeof groupsOfSix[j] === 'undefined') { | ||
out += '='; | ||
} else { | ||
out += btoaLookup(groupsOfSix[j]); | ||
} | ||
} | ||
} | ||
return out; | ||
return out; | ||
} | ||
/** | ||
* Implementation of atob() according to the HTML and Infra specs, except that | ||
* instead of throwing INVALID_CHARACTER_ERR we return null. | ||
* | ||
* @note Forked from https://github.com/jsdom/abab under BSD 3 clause license | ||
*/ | ||
export function base64ToAscii(data) { | ||
data = `${data}`; | ||
data = data.replace(/[ \t\n\f\r]/g, ''); | ||
if (data.length % 4 === 0) { | ||
data = data.replace(/[=]=?$/, ''); | ||
} | ||
if (data.length % 4 === 1 || /[^+/0-9A-Za-z]/.test(data)) { | ||
return ''; | ||
} | ||
let output = ''; | ||
let buffer = 0; | ||
let accumulatedBits = 0; | ||
for (let i = 0; i < data.length; i++) { | ||
buffer <<= 6; | ||
buffer |= atobLookup(data[i]); | ||
accumulatedBits += 6; | ||
if (accumulatedBits === 24) { | ||
output += String.fromCharCode((buffer & 0xff0000) >> 16); | ||
output += String.fromCharCode((buffer & 0xff00) >> 8); | ||
output += String.fromCharCode(buffer & 0xff); | ||
buffer = accumulatedBits = 0; | ||
// Web IDL requires DOMStrings to just be converted using ECMAScript | ||
// ToString, which in our case amounts to using a template literal. | ||
data = `${data}`; | ||
// "Remove all ASCII whitespace from data." | ||
data = data.replace(/[ \t\n\f\r]/g, ''); | ||
// "If data's code point length divides by 4 leaving no remainder, then: if data ends | ||
// with one or two U+003D (=) code points, then remove them from data." | ||
if (data.length % 4 === 0) { | ||
data = data.replace(/[=]=?$/, ''); | ||
} | ||
} | ||
if (accumulatedBits === 12) { | ||
buffer >>= 4; | ||
output += String.fromCharCode(buffer); | ||
} else if (accumulatedBits === 18) { | ||
buffer >>= 2; | ||
output += String.fromCharCode((buffer & 0xff00) >> 8); | ||
output += String.fromCharCode(buffer & 0xff); | ||
} | ||
return output; | ||
// "If data's code point length divides by 4 leaving a remainder of 1, then return | ||
// failure." | ||
// | ||
// "If data contains a code point that is not one of | ||
// | ||
// U+002B (+) | ||
// U+002F (/) | ||
// ASCII alphanumeric | ||
// | ||
// then return failure." | ||
if (data.length % 4 === 1 || /[^+/0-9A-Za-z]/.test(data)) { | ||
return ''; | ||
} | ||
// "Let output be an empty byte sequence." | ||
let output = ''; | ||
// "Let buffer be an empty buffer that can have bits appended to it." | ||
// | ||
// We append bits via left-shift and or. accumulatedBits is used to track | ||
// when we've gotten to 24 bits. | ||
let buffer = 0; | ||
let accumulatedBits = 0; | ||
// "Let position be a position variable for data, initially pointing at the | ||
// start of data." | ||
// | ||
// "While position does not point past the end of data:" | ||
for (let i = 0; i < data.length; i++) { | ||
// "Find the code point pointed to by position in the second column of | ||
// Table 1: The Base 64 Alphabet of RFC 4648. Let n be the number given in | ||
// the first cell of the same row. | ||
// | ||
// "Append to buffer the six bits corresponding to n, most significant bit | ||
// first." | ||
// | ||
// atobLookup() implements the table from RFC 4648. | ||
buffer <<= 6; | ||
// @ts-expect-error | ||
buffer |= atobLookup(data[i]); | ||
accumulatedBits += 6; | ||
// "If buffer has accumulated 24 bits, interpret them as three 8-bit | ||
// big-endian numbers. Append three bytes with values equal to those | ||
// numbers to output, in the same order, and then empty buffer." | ||
if (accumulatedBits === 24) { | ||
output += String.fromCharCode((buffer & 0xff0000) >> 16); | ||
output += String.fromCharCode((buffer & 0xff00) >> 8); | ||
output += String.fromCharCode(buffer & 0xff); | ||
buffer = accumulatedBits = 0; | ||
} | ||
// "Advance position by 1." | ||
} | ||
// "If buffer is not empty, it contains either 12 or 18 bits. If it contains | ||
// 12 bits, then discard the last four and interpret the remaining eight as | ||
// an 8-bit big-endian number. If it contains 18 bits, then discard the last | ||
// two and interpret the remaining 16 as two 8-bit big-endian numbers. Append | ||
// the one or two bytes with values equal to those one or two numbers to | ||
// output, in the same order." | ||
if (accumulatedBits === 12) { | ||
buffer >>= 4; | ||
output += String.fromCharCode(buffer); | ||
} | ||
else if (accumulatedBits === 18) { | ||
buffer >>= 2; | ||
output += String.fromCharCode((buffer & 0xff00) >> 8); | ||
output += String.fromCharCode(buffer & 0xff); | ||
} | ||
// "Return output." | ||
return output; | ||
} | ||
/** | ||
* A lookup table for atob(), which converts an ASCII character to the | ||
* corresponding six-bit number. | ||
*/ | ||
const keystr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; | ||
function atobLookup(chr) { | ||
const index = keystr.indexOf(chr); | ||
return index < 0 ? undefined : index; | ||
const index = keystr.indexOf(chr); | ||
// Throw exception if character is not in the lookup string; should not be hit in tests | ||
return index < 0 ? undefined : index; | ||
} | ||
/** | ||
* Lookup table for btoa(), which converts a six-bit number into the | ||
* corresponding ASCII character. | ||
*/ | ||
function btoaLookup(idx) { | ||
if (idx < 26) { | ||
return String.fromCharCode(idx + 'A'.charCodeAt(0)); | ||
} | ||
if (idx < 52) { | ||
return String.fromCharCode(idx - 26 + 'a'.charCodeAt(0)); | ||
} | ||
if (idx < 62) { | ||
return String.fromCharCode(idx - 52 + '0'.charCodeAt(0)); | ||
} | ||
if (idx === 62) { | ||
return '+'; | ||
} | ||
if (idx === 63) { | ||
return '/'; | ||
} | ||
return undefined; | ||
if (idx < 26) { | ||
return String.fromCharCode(idx + 'A'.charCodeAt(0)); | ||
} | ||
if (idx < 52) { | ||
return String.fromCharCode(idx - 26 + 'a'.charCodeAt(0)); | ||
} | ||
if (idx < 62) { | ||
return String.fromCharCode(idx - 52 + '0'.charCodeAt(0)); | ||
} | ||
if (idx === 62) { | ||
return '+'; | ||
} | ||
if (idx === 63) { | ||
return '/'; | ||
} | ||
// Throw INVALID_CHARACTER_ERR exception here -- won't be hit in the teststring. | ||
return undefined; | ||
} | ||
//# sourceMappingURL=base64-utils.js.map |
@@ -0,47 +1,68 @@ | ||
// loaders.gl | ||
// SPDX-License-Identifier: MIT | ||
// Copyright (c) vis.gl contributors | ||
import { asciiToBase64, base64ToAscii } from "./base64-utils.js"; | ||
/** | ||
* Encode a number (usually a digest from a hash function / cipher) as either hex or base64 | ||
* Suitable for hashes like CRC32 where the number of required bits fit withing a JavaScript number. | ||
*/ | ||
export function encodeNumber(number, encoding) { | ||
switch (encoding) { | ||
case 'hex': | ||
return convertNumberToHex(number); | ||
case 'base64': | ||
return convertHexToBase64(convertNumberToHex(number)); | ||
default: | ||
throw new Error(encoding); | ||
} | ||
switch (encoding) { | ||
case 'hex': | ||
return convertNumberToHex(number); | ||
case 'base64': | ||
return convertHexToBase64(convertNumberToHex(number)); | ||
default: | ||
throw new Error(encoding); | ||
} | ||
} | ||
/** Encode a hex string, aeither return hex or re-encode as base64 */ | ||
export function encodeHex(hex, encoding) { | ||
switch (encoding) { | ||
case 'hex': | ||
return hex; | ||
case 'base64': | ||
return convertHexToBase64(hex); | ||
default: | ||
throw new Error(encoding); | ||
} | ||
switch (encoding) { | ||
case 'hex': | ||
return hex; | ||
case 'base64': | ||
return convertHexToBase64(hex); | ||
default: | ||
throw new Error(encoding); | ||
} | ||
} | ||
export function encodeBase64(base64, encoding) { | ||
switch (encoding) { | ||
case 'hex': | ||
return convertBase64ToHex(base64); | ||
case 'base64': | ||
return base64; | ||
default: | ||
throw new Error(encoding); | ||
} | ||
switch (encoding) { | ||
case 'hex': | ||
return convertBase64ToHex(base64); | ||
case 'base64': | ||
return base64; | ||
default: | ||
throw new Error(encoding); | ||
} | ||
} | ||
/** | ||
* Convert a hexadecimal string to base64 encoded string representation | ||
*/ | ||
function convertHexToBase64(hexstring) { | ||
if (hexstring.length % 2 !== 0) { | ||
hexstring = `0${hexstring}`; | ||
} | ||
const matches = hexstring.match(/\w{2}/g) || []; | ||
const string = matches.map(a => String.fromCharCode(parseInt(a, 16))).join(''); | ||
return asciiToBase64(string) || ''; | ||
// Add leading zero to keep even count of digits | ||
// eg. f85d741 => 0f85d741 | ||
if (hexstring.length % 2 !== 0) { | ||
hexstring = `0${hexstring}`; | ||
} | ||
const matches = hexstring.match(/\w{2}/g) || []; | ||
const string = matches.map((a) => String.fromCharCode(parseInt(a, 16))).join(''); | ||
// TODO - define how to handle failures | ||
return asciiToBase64(string) || ''; | ||
} | ||
/** | ||
* Convert a base64 encoded string to hexadecimal encoded string representation | ||
*/ | ||
function convertBase64ToHex(base64String) { | ||
return [...base64ToAscii(base64String)].map(c => c.charCodeAt(0).toString(16).padStart(2, '0')).join(''); | ||
return [...base64ToAscii(base64String)] | ||
.map((c) => c.charCodeAt(0).toString(16).padStart(2, '0')) | ||
.join(''); | ||
} | ||
/** | ||
* Converts a number to hex | ||
*/ | ||
function convertNumberToHex(cipher) { | ||
const hexString = cipher.toString(16); | ||
return hexString === '0' ? `0${hexString}` : hexString; | ||
const hexString = cipher.toString(16); | ||
return hexString === '0' ? `0${hexString}` : hexString; | ||
} | ||
//# sourceMappingURL=digest-utils.js.map |
@@ -0,2 +1,4 @@ | ||
// loaders.gl | ||
// SPDX-License-Identifier: MIT | ||
// Copyright (c) vis.gl contributors | ||
export {}; | ||
//# sourceMappingURL=types.js.map |
@@ -1,2 +0,2 @@ | ||
import './crypto-worker'; | ||
import "./crypto-worker.js"; | ||
//# sourceMappingURL=crypto-worker-node.d.ts.map |
import "./crypto-worker.js"; | ||
//# sourceMappingURL=crypto-worker-node.js.map |
@@ -1,4 +0,4 @@ | ||
import { CRC32Hash } from '../lib/crc32-hash'; | ||
import { CRC32CHash } from '../lib/crc32c-hash'; | ||
import { CRC32Hash } from "../lib/crc32-hash.js"; | ||
import { CRC32CHash } from "../lib/crc32c-hash.js"; | ||
export { CRC32Hash, CRC32CHash }; | ||
//# sourceMappingURL=crypto-worker.d.ts.map |
@@ -0,1 +1,4 @@ | ||
// loaders.gl | ||
// SPDX-License-Identifier: MIT | ||
// Copyright (c) vis.gl contributors | ||
import { createWorker } from '@loaders.gl/worker-utils'; | ||
@@ -5,20 +8,17 @@ import { CRC32Hash } from "../lib/crc32-hash.js"; | ||
import { MD5Hash } from "../lib/md5-hash.js"; | ||
// Assuming we can bundle as module | ||
export { CRC32Hash, CRC32CHash }; | ||
createWorker(async function (data) { | ||
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; | ||
const { | ||
operation, | ||
encoding = 'base64' | ||
} = options; | ||
switch (operation) { | ||
case 'crc32': | ||
return await new CRC32Hash(options).hash(data, encoding); | ||
case 'crc32c': | ||
return await new CRC32CHash(options).hash(data, encoding); | ||
case 'md5': | ||
return await new MD5Hash(options).hash(data, encoding); | ||
default: | ||
throw new Error(`invalid option: ${operation}`); | ||
} | ||
createWorker(async (data, options = {}) => { | ||
// @ts-ignore | ||
const { operation, encoding = 'base64' } = options; | ||
switch (operation) { | ||
case 'crc32': | ||
return await new CRC32Hash(options).hash(data, encoding); | ||
case 'crc32c': | ||
return await new CRC32CHash(options).hash(data, encoding); | ||
case 'md5': | ||
return await new MD5Hash(options).hash(data, encoding); | ||
default: | ||
throw new Error(`invalid option: ${operation}`); | ||
} | ||
}); | ||
//# sourceMappingURL=crypto-worker.js.map |
{ | ||
"name": "@loaders.gl/crypto", | ||
"version": "4.2.0-alpha.4", | ||
"version": "4.2.0-alpha.5", | ||
"description": "Cryptographic/hashing plugins for loaders.gl", | ||
@@ -42,4 +42,5 @@ "license": "MIT", | ||
"scripts": { | ||
"pre-build": "npm run build-bundle && npm run build-bundle -- --env=dev && npm run build-worker && npm run build-worker-node", | ||
"build-bundle": "ocular-bundle ./src/index.ts", | ||
"pre-build": "npm run build-bundle && npm run build-bundle-dev && npm run build-worker && npm run build-worker-node", | ||
"build-bundle": "ocular-bundle ./bundle.ts --output=dist/dist.min.js", | ||
"build-bundle-dev": "ocular-bundle ./bundle.ts --env=dev --output=dist/dist.dev.js", | ||
"build-worker": "esbuild src/workers/crypto-worker.ts --outfile=dist/crypto-worker.js --target=esnext --bundle --minify --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\"", | ||
@@ -49,5 +50,4 @@ "build-worker-node": "esbuild src/workers/crypto-worker-node.ts --outfile=dist/crypto-worker-node.js --platform=node --target=esnext,node16 --bundle --minify --sourcemap --define:__VERSION__=\\\"$npm_package_version\\\"" | ||
"dependencies": { | ||
"@babel/runtime": "^7.3.1", | ||
"@loaders.gl/loader-utils": "4.2.0-alpha.4", | ||
"@loaders.gl/worker-utils": "4.2.0-alpha.4", | ||
"@loaders.gl/loader-utils": "4.2.0-alpha.5", | ||
"@loaders.gl/worker-utils": "4.2.0-alpha.5", | ||
"@types/crypto-js": "^4.0.2" | ||
@@ -62,3 +62,6 @@ }, | ||
}, | ||
"gitHead": "6c52dee5c3f005648a394cc4aee7fc37005c8e83" | ||
"peerDependencies": { | ||
"@loaders.gl/core": "^4.0.0" | ||
}, | ||
"gitHead": "32d95a81971f104e4dfeb88ab57065f05321a76a" | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
438413
5494
76
+ Added@loaders.gl/core@4.3.3(transitive)
+ Added@loaders.gl/loader-utils@4.2.0-alpha.54.3.3(transitive)
+ Added@loaders.gl/schema@4.3.3(transitive)
+ Added@loaders.gl/worker-utils@4.2.0-alpha.54.3.3(transitive)
+ Added@probe.gl/env@4.1.0(transitive)
+ Added@probe.gl/log@4.1.0(transitive)
+ Added@types/geojson@7946.0.16(transitive)
- Removed@babel/runtime@^7.3.1
- Removed@babel/runtime@7.26.9(transitive)
- Removed@loaders.gl/loader-utils@4.2.0-alpha.4(transitive)
- Removed@loaders.gl/worker-utils@4.2.0-alpha.4(transitive)
- Removedregenerator-runtime@0.14.1(transitive)