UNPKG

quantum-resistant-rustykey

Version:
560 lines 2.75 MB
//#region src/vendor/mlkem.js var wasm_module_default = (() => { var _scriptDir = import.meta.url; return (function(moduleArg = {}) { var Module = moduleArg; var readyPromiseResolve, readyPromiseReject; Module["ready"] = new Promise((resolve, reject) => { readyPromiseResolve = resolve; readyPromiseReject = reject; }); var moduleOverrides = Object.assign({}, Module); var ENVIRONMENT_IS_WEB = typeof window == "object"; var ENVIRONMENT_IS_WORKER = typeof importScripts == "function"; typeof process == "object" && typeof process.versions == "object" && process.versions.node; var scriptDirectory = ""; function locateFile(path) { return scriptDirectory + path; } var readBinary; if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { if (ENVIRONMENT_IS_WORKER) scriptDirectory = self.location.href; else if (typeof document != "undefined" && document.currentScript) scriptDirectory = document.currentScript.src; if (_scriptDir) scriptDirectory = _scriptDir; if (scriptDirectory.indexOf("blob:") !== 0) scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1); else scriptDirectory = ""; if (ENVIRONMENT_IS_WORKER) readBinary = (url) => { var xhr = new XMLHttpRequest(); xhr.open("GET", url, false); xhr.responseType = "arraybuffer"; xhr.send(null); return new Uint8Array(xhr.response); }; } console.log.bind(console); var err = console.error.bind(console); Object.assign(Module, moduleOverrides); moduleOverrides = null; var wasmBinary; if (typeof WebAssembly != "object") abort("no native wasm support detected"); function intArrayFromBase64(s) { var decoded = atob(s); var bytes = new Uint8Array(decoded.length); for (var i = 0; i < decoded.length; ++i) bytes[i] = decoded.charCodeAt(i); return bytes; } function tryParseAsDataURI(filename) { if (!isDataURI(filename)) return; return intArrayFromBase64(filename.slice(dataURIPrefix.length)); } var wasmMemory; var ABORT = false, HEAP8, HEAPU8, HEAP16, HEAP32, HEAPU32, HEAPF32, HEAPF64; function updateMemoryViews() { var b = wasmMemory.buffer; Module["HEAP8"] = HEAP8 = new Int8Array(b); Module["HEAP16"] = HEAP16 = new Int16Array(b); Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); Module["HEAPU16"] = new Uint16Array(b); Module["HEAP32"] = HEAP32 = new Int32Array(b); Module["HEAPU32"] = HEAPU32 = new Uint32Array(b); Module["HEAPF32"] = HEAPF32 = new Float32Array(b); Module["HEAPF64"] = HEAPF64 = new Float64Array(b); } var __ATPRERUN__ = []; var __ATINIT__ = []; var __ATPOSTRUN__ = []; function preRun() { callRuntimeCallbacks(__ATPRERUN__); } function initRuntime() { callRuntimeCallbacks(__ATINIT__); } function postRun() { callRuntimeCallbacks(__ATPOSTRUN__); } function addOnInit(cb) { __ATINIT__.unshift(cb); } var runDependencies = 0; var runDependencyWatcher = null; var dependenciesFulfilled = null; function addRunDependency(id) { runDependencies++; } function removeRunDependency(id) { runDependencies--; if (runDependencies == 0) { if (runDependencyWatcher !== null) { clearInterval(runDependencyWatcher); runDependencyWatcher = null; } if (dependenciesFulfilled) { var callback = dependenciesFulfilled; dependenciesFulfilled = null; callback(); } } } function abort(what) { what = "Aborted(" + what + ")"; err(what); ABORT = true; what += ". Build with -sASSERTIONS for more info."; var e = new WebAssembly.RuntimeError(what); readyPromiseReject(e); throw e; } var dataURIPrefix = "data:application/octet-stream;base64,"; var isDataURI = (filename) => filename.startsWith(dataURIPrefix); var wasmBinaryFile = "data:application/octet-stream;base64,AGFzbQEAAAABXw5gAn9/AGABfwBgA39/fwBgBH9/f38AYAR/f39/AX9gA39/fwF/YAJ/fwF/YAV/f39/fwBgCX9/f39/f39/fwBgB39/f39/f38AYAAAYAZ/f39/f38AYAF/AX9gAAF/AgcBAWEBYQACAykoBgMBAwAAAQMBAgcIAQEAAQAJAAIAAAAAAAEACgQCCwIAAAwBDQUEBQQFAXABAQEFBgEBgAKAAgYJAX8BQdCLwAALByUJAWICAAFjABwBZAAoAWUAJwFmACYBZwEAAWgAJQFpACQBagAjCrafASjYAgECfwJAIAFFDQAgAEEAOgAAIAAgAWoiAkEBa0EAOgAAIAFBA0kNACAAQQA6AAIgAEEAOgABIAJBA2tBADoAACACQQJrQQA6AAAgAUEHSQ0AIABBADoAAyACQQRrQQA6AAAgAUEJSQ0AIABBACAAa0EDcSIDaiICQQA2AgAgAiABIANrQXxxIgNqIgFBBGtBADYCACADQQlJDQAgAkEANgIIIAJBADYCBCABQQhrQQA2AgAgAUEMa0EANgIAIANBGUkNACACQQA2AhggAkEANgIUIAJBADYCECACQQA2AgwgAUEQa0EANgIAIAFBFGtBADYCACABQRhrQQA2AgAgAUEca0EANgIAIAMgAkEEcUEYciIDayIBQSBJDQAgAiADaiECA0AgAkIANwMYIAJCADcDECACQgA3AwggAkIANwMAIAJBIGohAiABQSBrIgFBH0sNAAsLIAAL6QEBBX8CQCADRQ0AIAAgAmohACADQQNxIQZBACECIANBBE8EQCADQXxxIQhBACEDA0AgACACaiIEIAQtAAAgASACai0AAHM6AAAgACACQQFyIgRqIgUgBS0AACABIARqLQAAczoAACAAIAJBAnIiBGoiBSAFLQAAIAEgBGotAABzOgAAIAAgAkEDciIEaiIFIAUtAAAgASAEai0AAHM6AAAgAkEEaiECIANBBGoiAyAIRw0ACwsgBkUNAANAIAAgAmoiAyADLQAAIAEgAmotAABzOgAAIAJBAWohAiAHQQFqIgcgBkcNAAsLC+UMAi5+A38gACkDwAEhFiAAKQO4ASEXIAApA7ABIQEgACkDqAEhAiAAKQOgASEOIAApA5gBIQ8gACkDkAEhECAAKQOIASEIIAApA4ABIQMgACkDeCEEIAApA3Ah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czoAACAAIAVBAXIiCWoiCCAILQAAIAQgCWotAABzOgAAIAAgBUECciIJaiIIIAgtAAAgBCAJai0AAHM6AAAgACAFQQNyIglqIgggCC0AACAEIAlqLQAAczoAACAFQQRqIQUgAkEEaiICIAFHDQALCyAGQQNxIgFFDQADQCAAIAVqIgIgAi0AACAEIAVqLQAAczoAACAFQQFqIQUgA0EBaiIDIAFHDQALCwtRAQR/A0AgASACQQJ0aiIDLwECIQQgACACQQNsaiIFIAMvAQAiAzoAACAFIARBBHY6AAIgBSAEQQR0IANBCHZyOgABIAJBAWoiAkGAAUcNAAsLrgEBAX8jAEHQAWsiAyQAIANBBjoAzwEgA0HIARABIQMgAkHIAE8EQANAIAMgAUEAQcgAEAIgAUHIAGohASADEAMgAkHIAGsiAkHHAEsNAAsLIAMCfyACBEAgAyABQQAgAhACQYYBIAJBxwBGDQEaCyADIANBzwFqIAJBARACQYABCzoAzwEgAyADQc8BakHHAEEBEAIgAxADIAMgAEHAABAKIANByAEQAUHQAWokAAupAQECf0GgCSEDIwBB0AFrIgIkACACQQY6AM8BIAJByAEQASECA0AgAiABQQBBiAEQAiABQYgBaiEBIAIQAyADQYgBayIDQYcBSw0ACyACAn8gAwRAIAIgAUEAIAMQAkGGASADQYcBRg0BGgsgAiACQc8BaiADQQEQAkGAAQs6AM8BIAIgAkHPAWpBhwFBARACIAIQAyACIABBIBAKIAJByAEQAUHQAWokAAu2AQEGfwNAIAEgA0EFbGoiAi0AACEHIAItAAIhBSACLQABIQYgACADQQN0aiIEIAItAARBAnQgAi0AAyICQQZ2ckGBGmxBgARqQQp2OwEGIAQgBUEGdEHAB3EgBkECdnJBgRpsQYAEakEKdjsBAiAEIAcgBkEIdEGABnFyQYEabEGABGpBCnY7AQAgBCACQQR0QfAHcSAFQQR2ckGBGmxBgARqQQp2OwEEIANBAWoiA0HAAEcNAAsLJAAgACABEA8gAEGAAmogAUGABGoQDyAAQYAEaiABQYAIahAPCyQAIAAgARARIABBgARqIAFBgANqEBEgAEGACGogAUGABmoQEQskACAAIAEQEyAAQYADaiABQYAEahATIABBgAZqIAFBgAhqEBMLzBkBCH8D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384AbEGAgIBAa0EcdnI6AAEgAyAKQbDfzgBsQYCAgEBrQRh2QfABcSAMQbDfzgBsQYCAgEBrQRx2cjoAACADIAhBsN/OAGxBgICAQGtBGHZB8AFxIAlBsN/OAGxBgICAQGtBHHZyOgACIAMgBkGw384AbEGAgIBAa0EYdkHwAXEgB0Gw384AbEGAgIBAa0EcdnI6AAMgAkEBaiICQSBHDQALIARBgAYQASIAQYAGakGABBABGiAAQYAKakGABBABGiAAQYAOakGABBABGiAAQYASakGADBABGiAAQYAeakGADBABGiAAQYAqakGADBABGiAAQYA2akGADBABGiAAQYDCAGpBgCQQARogAEIANwOYZiAAQgA3A5BmIABCADcDiGYgAEIANwOAZiALJABBAAv8AwECfyACQYAETwRAIAAgASACEAAPCyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAEEDcUUEQCAAIQIMAQsgAkUEQCAAIQIMAQsgACECA0AgAiABLQAAOgAAIAFBAWohASACQQFqIgJBA3FFDQEgAiADSQ0ACwsCQCADQXxxIgBBwABJDQAgAiAAQUBqIgRLDQADQCACIAEoAgA2AgAgAiABKAIENgIEIAIgASgCCDYCCCACIAEoAgw2AgwgAiABKAIQNgIQIAIgASgCFDYCFCACIAEoAhg2AhggAiABKAIcNgIcIAIgASgCIDYCICACIAEoAiQ2AiQgAiABKAIoNgIoIAIgASgCLDYCLCACIAEoAjA2AjAgAiABKAI0NgI0IAIgASgCODYCOCACIAEoAjw2AjwgAUFAayEBIAJBQGsiAiAETQ0ACwsgACACTQ0BA0AgAiABKAIANgIAIAFBBGohASACQQRqIgIgAEkNAAsMAQsgA0EESQRAIAAhAgwBCyAAIANBBGsiBEsEQCAAIQIMAQsgACECA0AgAiABLQAAOgAAIAIgAS0AAToAASACIAEtAAI6AAIgAiABLQADOgADIAFBBGohASACQQRqIgIgBE0NAAsLIAIgA0kEQANAIAIgAS0AADoAACABQQFqIQEgAkEBaiICIANHDQALCwulBAEIfyAEBEADQCAFEAMgBUHIAWoQAyAFQZADahADIAVB2ARqEAMgACALaiEHIAEgC2ohCCACIAtqIQwgAyALaiENQQAhBkEAIQkDQCAGIAdqIAUgBmotAAA6AAAgByAGQQFyIgpqIAUgCmotAAA6AAAgByAGQQJyIgpqIAUgCmotAAA6AAAgByAGQQNyIgpqIAUgCmotAAA6AAAgBkEEaiEGIAlBBGoiCUGoAUcNAAsgBUHIAWohB0EAIQZBACEJA0AgBiAIaiAGIAdqLQAAOgAAIAggBkEBciIKaiAHIApqLQAAOgAAIAggBkECciIKaiAHIApqLQAAOgAAIAggBkEDciIKaiAHIApqLQAAOgAAIAZBBGohBiAJQQRqIglBqAFHDQALIAVBkANqIQdBACEGQQAhCQNAIAYgDGogBiAHai0AADoAACAMIAZBAXIiCGogByAIai0AADoAACAMIAZBAnIiCGogByAIai0AADoAACAMIAZBA3IiCGogByAIai0AADoAACAGQQRqIQYgCUEEaiIJQagBRw0ACyAFQdgEaiEHQQAhBkEAIQkDQCAGIA1qIAYgB2otAAA6AAAgDSAGQQFyIghqIAcgCGotAAA6AAAgDSAGQQJyIghqIAcgCGotAAA6AAAgDSAGQQNyIghqIAcgCGotAAA6AAAgBkEEaiEGIAlBBGoiCUGoAUcNAAsgC0GoAWohCyAEQQFrIgQNAAsLCygAIAEEQANAIAIQAyACIABBqAEQCiAAQagBaiEAIAFBAWsiAQ0ACwsLzwMBB38jACICIQggAkHgBWtBYHEiBCQAIwBBEGsiAiQAIAJBHzoADyAEQYAEaiIFQcgBEAEiAyABQQBBIhACIAMgAkEPaiIBQSJBARACIAJBgAE6AA8gAyABQacBQQEQAiACQRBqJAAgBEEDIAUQIEEAIQFBAyECQQAhAwNAIAMgBGoiAy0AASIFQQh0QYAecSADLQAAciIGQYAaTQRAIAAgAUEBdGogBjsBACABQQFqIQELAkAgAUH/AUsNACADLQACQQR0IAVBBHZyIgNBgBpLDQAgACABQQF0aiADOwEAIAFBAWohAQsgAUH/AU0EQCACIgNBA2ohAiADQfYDSQ0BCwsgAUGAAkkEQANAIARBASAEQYAEahAgQQAhAkEDIQMDQCACIARqIgItAAIhBSACLQAAIAItAAEiAkEIdEGAHnFyIgZBgBpNBEAgACABQQF0aiAGOwEAIAFBAWohAQsCQCABQf8BSw0AIAVBBHQgAkEEdnIiAkGAGksNACAAIAFBAXRqIAI7AQAgAUEBaiEBCyABQf8BSyIFRQRAIAMiAkEDaiEDIAJBpgFJDQELCyAFRQ0ACwsgBEGABGpB4AEQARogBEH4AxABGiAIJAALJAAgACABEAYgAEGABGogAUGABGoQBiAAQYAIaiABQYAIahAGCxAAIwAgAGtBcHEiACQAIAALBgAgACQACwQAIwALog8BKn8jACIDISwgA0HgCWtBYHEiByQAQX8hBCMAIghBIGtBYHEiAyQAIAMgAkGACWoiEBAVQQAgAy0AHyACLQC/EnMiCSADLQAeIAItAL4ScyIGIAMtAB0gAi0AvRJzIgwgAy0AHCACLQC8EnMiDSADLQAbIAItALsScyIFIAMtABogAi0AuhJzIgogAy0AGSACLQC5EnMiESADLQAYIAItALgScyISIAMtABcgAi0AtxJzIhMgAy0AFiACLQC2EnMiFCADLQAVIAItALUScyIVIAMtABQgAi0AtBJzIhYgAy0AEyACLQCzEnMiFyADLQASIAItALIScyIYIAMtABEgAi0AsRJzIhkgAy0AECACLQCwEnMiGiADLQAPIAItAK8ScyIbIAMtAA4gAi0ArhJzIhwgAy0ADSACLQCtEnMiHSADLQAMIAItAKwScyIeIAMtAAsgAi0AqxJzIh8gAy0ACiACLQCqEnMiICADLQAJIAItAKkScyIhIAMtAAggAi0AqBJzIiIgAy0AByACLQCnEnMiIyADLQAGIAItAKYScyIkIAMtAAUgAi0ApRJzIiUgAy0ABCACLQCkEnMiJiADLQADIAItAKMScyInIAMtAAIgAi0AohJzIiggAy0AASACLQChEnMiKSADLQAAIAItAKAScyIqcnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycmshKyADQgA3AwAgA0IANwMIIANCADcDECADQgA3AxggCCQAAkBBf0EAIAkgBiAMIA0gBSAKIBEgEiATIBQgFSAWIBcgGCAZIBogGyAcIB0gHiAfICAgISAiICMgJCAlICYgJyAoICkgKnNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3MiAyArQRB2c0H/AXEgA0H/AXFHGw0AIAdBoAlqIQwjACINQYAma0FgcSIIJAAgCEGAGmoiBiIDIAEQFiADQYAEaiABQcACahAWIANBgAhqIAFBgAVqEBYgCEGACmohCSABQcAHaiEEQQAhAwNAIAkgA0ECdGoiBSADIARqIgotAABBD3FBgRpsQQhqQQR2OwEAIAUgCi0AAEEEdkGBGmxBCGpBBHY7AQIgA0EBaiIDQYABRw0ACyAIQYAOaiIDIAIQGCAGEA4gCCAGEBcgCEGABmoiBCADIAYgCBAEIAQQCUEAIQMDQCAJIANBAXQiBmoiBSAFLwEAIAQgBmovAQBrOwEAIAkgBkECciIFaiIKIAovAQAgBCAFai8BAGs7AQAgCSAGQQRyIgVqIgogCi8BACAEIAVqLwEAazsBACAJIAZBBnIiBmoiBSAFLwEAIAQgBmovAQBrOwEAIANBBGoiA0GAAkcNAAsgCRAHQQAhAwNAIAMgDGoiBEEAOgAAIAQgCSADQQR0aiIGLgEAQbjfzgBsQYCAgIAEakEfdiIFOgAAIAQgBi4BAkG4384AbEGAgICABGpBHnZBAnEgBXIiBToAACAEIAUgBi4BBEG4384AbEGAgICABGpBHXZBBHFyIgU6AAAgBCAFIAYuAQZBuN/OAGxBgICAgARqQRx2QQhxciIFOgAAIAQgBSAGLgEIQbjfzgBsQYCAgIAEakEbdkEQcXIiBToAACAEIAUgBi4BCkG4384AbEGAgICABGpBGnZBIHFyIgU6AAAgBCAFIAYuAQxBuN/OAGxBgICAgARqQRl2QcAAcXIiBToAACAEIAUgBi4BDkG4384AbEGAgICABGpBGHZBgAFxcjoAACADQQFqIgNBIEcNAAsgCEGABhABIgNBgAZqQYAEEAEaIANBgApqQYAEEAEaIANBgA5qQYAMEAEaIANBgBpqQYAMEAEaIA0kAEEAIgQNACAHQdgJaiACQbgSaikAADcDACAHQdAJaiACQbASaikAADcDACAHQcgJaiACQagSaikAADcDACAHIAIpAKASNwPACSAHQeAIaiAMQcAAEBQgByAMIBAgB0GACWoQHSIEDQBBACEDA0AgByADQQFyIgRqLQAAIAEgBGotAABzIgQgAyAHai0AACABIANqLQAAcyIIIA5zcyEOIAQgCCALcnIhCyADQQJqIgNBwAhHDQALQQAhBCAHIAIpAMASNwMAIAcgAkHIEmopAAA3AwggByACQdASaikAADcDECAHIAJB2BJqKQAANwMYIAdBIGogAUHACBAeIABBICAHQeAIEAhBAEEAIAtB/wFxa0EQdkH/AXFrIQFBACEDA0AgACADaiICLQAAIQggAiABQRB2IgIgCCAHQeAIaiIJIANqLQAAIgZzcSAGczoAACAAIANBAXIiCGoiBi0AACELIAYgAiALIAggCWotAAAiCHNxIAhzOgAAIANBAmoiA0EgRw0ACwsgB0HgCBABIgBBmAlqQgA3AwAgAEGQCWpCADcDACAAQYgJakIANwMAIABBgAlqQgA3AwAgAEIANwP4CCAAQgA3A/AIIABCADcD6AggAEIANwPgCCAAQdgJakIANwMAIABB0AlqQgA3AwAgAEHICWpCADcDACAAQcAJakIANwMAIABCADcDuAkgAEIANwOwCSAAQgA3A6gJIABCADcDoAkgLCQAIAQL2gMBCX8jACIEIQwgBEGAFWtBYHEiBCQAIARBgAlqIgUgAhAYIAUQDSAEIAUQGUEAIQUDQCAEIAVBAmoiCGotAAAgAiAIai0AAHMiCCAEIAVBAWoiCWotAAAgAiAJai0AAHMiCSAEIAVqLQAAIAIgBWotAABzIgsgBnNzcyEGIAggCSAHIAtycnIhByAFQQNqIgVBgAlHDQALIARBgAkQASIEQYAJakGADBABGkF/IQUCQCAGQQAgB0H/AXFrQRB2c0H/AXEgBkH/AXFHDQAgBCADKQAANwOACSAEIAMpABg3A5gJIAQgAykAEDcDkAkgBCADKQAINwOICSAEQaAJaiACEBUgBCAEQYAJaiIDQcAAEBQgACADIAIgBEEgahAdIgUNACABIAQpAwA3AAAgASAEKQMYNwAYIAEgBCkDEDcAECABIAQpAwg3AAhBACEFCyAEQgA3AzggBEIANwMwIARCADcDKCAEQgA3AyAgBEIANwMYIARCADcDECAEQgA3AwggBEIANwMAIARBuAlqQgA3AwAgBEGwCWpCADcDACAEQagJakIANwMAIARBoAlqQgA3AwAgBEIANwOYCSAEQgA3A5AJIARCADcDiAkgBEIANwOACSAMJAAgBQvABwIKfwR+An8jACIIQYDPAGtBYHEiAyQAIAIpABghDSACKQAQIQ4gAikACCEPIAIpAAAhECADQaDOAGoiCUEDOgAAIAMgEDcDgE4gAyAPNwOITiADIA43A5BOIAMgDTcDmE4gA0HAzgBqIANBgM4AakEhEBQgA0HIHmogAykDyE4iDTcDACADQdAeaiADKQPQTiIONwMAIANB2B5qIAMpA9hOIg83AwAgA0GIH2ogDTcDACADQZAfaiAONwMAIANBmB9qIA83AwAgA0HYH2ogDzcDACADQdAfaiAONwMAIANByB9qIA03AwAgAyAPNwOYHiADIA43A5AeIAMgDTcDiB4gAyADKQPATiINNwOAHiADIA03A8AeIAMgDTcDgB8gAyANNwPAHyADQeAfaiIEQYACOwEAIANBoB9qIgVBAjsBACADQeAeaiIHQQE7AQAgA0EAOwGgHiADQYAqaiIKIANBgC5qIANBgDJqIANBgDZqIgsgA0GAHmoiBhALIARBgQQ7AQAgBUGABDsBACAHQYICOwEAIANBgQI7AaAeIANBgDpqIANBgD5qIANBgMIAaiIMIANBgMYAaiAGEAsgA0GCBDsBoB4gA0GAygBqIAYQISAGQYACEAEaIANBgAZqIgQgA0GACmogA0GADmpBACADQeDOAGoiB0EAQQFBAkH/ARAMIAYgA0GAImogA0GAJmpBACAHQQNBBEEFQf8BEAwgBBAOIAYQDiADIAQQFyADQYASaiIFIAogBCADEAQgA0GAFmogCyAEIAMQBCADQYAaaiAMIAQgAxAEIAUQECAFQYAEahAQIAVBgAhqEBAgBSAGECIgBRANIAQQDSABIAQQGSAAIAUQGSAAQZgJaiADKQPYTjcAACAAQZAJaiADKQPQTjcAACAAQYgJaiADKQPITjcAACAAIAMpA8BONwCACSADQYAGEAEiA0GABmpBgAwQARogA0GAEmpBgAwQARogA0GAHmpBgAwQARogA0GAKmpBgCQQARogCUEAOgAAIANCADcDmE4gA0IANwOQTiADQgA3A4hOIANCADcDgE4gA0H4zgBqQgA3AwAgA0HwzgBqQgA3AwAgA0HozgBqQgA3AwAgB0IANwMAIANCADcD2E4gA0IANwPQTiADQgA3A8hOIANCADcDwE4gCCQAIAFBgAlqIABBoAkQHiABQaASaiAAEBUgAUHYEmogAikAODcAACABQdASaiACKQAwNwAAIAFByBJqIAIpACg3AAAgASACKQAgNwDAEkEADAALCwvIAwEAQYAIC8AD7PsK/Zn+E/rVBY4FHwHKAFX/bgIpBrYAwgNO+z76vAU9AtP6CAF/AcP8sgW++X7/V/35A9wCYAL6+ZsBM//d+ccEjALY/fcD8/rTBeb++PkEAvj/wP5m/a75dvt+AL0Fq/ym//H+PgNrAHP6Cf9J/HL+wQMc+iv9wAHX+6UCBfux+64BKwJLAx37ZwMOBmkApgFLArEAFf/d/jT+JgZ1Bgr/CgOHBG3/9/zLBab9XwTK+YQCmPxdAaIBSQFk/7X/MQNJBFsCYgIqBfv6R/qAAUH7eP/CBMn6lvzcAF37hflf+wb6AvsaAxr6qvya/N4BlP/M/uQD3wO+A0z68gVcBgEAAAAAAAAAgoAAAAAAAACKgAAAAAAAgACAAIAAAACAi4AAAAAAAAABAACAAAAAAIGAAIAAAACACYAAAAAAAICKAAAAAAAAAIgAAAAAAAAACYAAgAAAAAAKAACAAAAAAIuAAIAAAAAAiwAAAAAAAICJgAAAAAAAgAOAAAAAAACAAoAAAAAAAICAAAAAAAAAgAqAAAAAAAAACgAAgAAAAICBgACAAAAAgICAAAAAAACAAQAAgAAAAAAIgACAAAAAgA=="; if (!isDataURI(wasmBinaryFile)) wasmBinaryFile = locateFile(wasmBinaryFile); function getBinarySync(file) { if (file == wasmBinaryFile && wasmBinary) return new Uint8Array(wasmBinary); var binary = tryParseAsDataURI(file); if (binary) return binary; if (readBinary) return readBinary(file); throw "both async and sync fetching of the wasm failed"; } function getBinaryPromise(binaryFile) { return Promise.resolve().then(() => getBinarySync(binaryFile)); } function instantiateArrayBuffer(binaryFile, imports, receiver) { return getBinaryPromise(binaryFile).then((binary) => WebAssembly.instantiate(binary, imports)).then((instance) => instance).then(receiver, (reason) => { err(`failed to asynchronously prepare wasm: ${reason}`); abort(reason); }); } function instantiateAsync(binary, binaryFile, imports, callback) { return instantiateArrayBuffer(binaryFile, imports, callback); } function createWasm() { var info = { "a": wasmImports }; function receiveInstance(instance, module) { wasmExports = instance.exports; wasmMemory = wasmExports["b"]; updateMemoryViews(); addOnInit(wasmExports["c"]); removeRunDependency("wasm-instantiate"); return wasmExports; } addRunDependency("wasm-instantiate"); function receiveInstantiationResult(result) { receiveInstance(result["instance"]); } instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult).catch(readyPromiseReject); return {}; } var callRuntimeCallbacks = (callbacks) => { while (callbacks.length > 0) callbacks.shift()(Module); }; function getValue(ptr, type = "i8") { if (type.endsWith("*")) type = "*"; switch (type) { case "i1": return HEAP8[ptr >> 0]; case "i8": return HEAP8[ptr >> 0]; case "i16": return HEAP16[ptr >> 1]; case "i32": return HEAP32[ptr >> 2]; case "i64": abort("to do getValue(i64) use WASM_BIGINT"); case "float": return HEAPF32[ptr >> 2]; case "double": return HEAPF64[ptr >> 3]; case "*": return HEAPU32[ptr >> 2]; default: abort(`invalid type for getValue: ${type}`); } } function setValue(ptr, value, type = "i8") { if (type.endsWith("*")) type = "*"; switch (type) { case "i1": HEAP8[ptr >> 0] = value; break; case "i8": HEAP8[ptr >> 0] = value; break; case "i16": HEAP16[ptr >> 1] = value; break; case "i32": HEAP32[ptr >> 2] = value; break; case "i64": abort("to do setValue(i64) use WASM_BIGINT"); case "float": HEAPF32[ptr >> 2] = value; break; case "double": HEAPF64[ptr >> 3] = value; break; case "*": HEAPU32[ptr >> 2] = value; break; default: abort(`invalid type for setValue: ${type}`); } } var _emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num); var wasmImports = { a: _emscripten_memcpy_js }; var wasmExports = createWasm(); var ___wasm_call_ctors = () => (___wasm_call_ctors = wasmExports["c"])(); var _mlkem768_keypair_derand = Module["_mlkem768_keypair_derand"] = (a0, a1, a2) => (_mlkem768_keypair_derand = Module["_mlkem768_keypair_derand"] = wasmExports["d"])(a0, a1, a2); var _mlkem768_enc_derand = Module["_mlkem768_enc_derand"] = (a0, a1, a2, a3) => (_mlkem768_enc_derand = Module["_mlkem768_enc_derand"] = wasmExports["e"])(a0, a1, a2, a3); var _mlkem768_dec = Module["_mlkem768_dec"] = (a0, a1, a2) => (_mlkem768_dec = Module["_mlkem768_dec"] = wasmExports["f"])(a0, a1, a2); var ___errno_location = () => (___errno_location = wasmExports["__errno_location"])(); var stackSave = () => (stackSave = wasmExports["h"])(); var stackRestore = (a0) => (stackRestore = wasmExports["i"])(a0); var stackAlloc = (a0) => (stackAlloc = wasmExports["j"])(a0); Module["stackAlloc"] = stackAlloc; Module["stackSave"] = stackSave; Module["stackRestore"] = stackRestore; Module["setValue"] = setValue; Module["getValue"] = getValue; var calledRun; dependenciesFulfilled = function runCaller() { if (!calledRun) run(); if (!calledRun) dependenciesFulfilled = runCaller; }; function run() { if (runDependencies > 0) return; preRun(); if (runDependencies > 0) return; function doRun() { if (calledRun) return; calledRun = true; Module["calledRun"] = true; if (ABORT) return; initRuntime(); readyPromiseResolve(Module); postRun(); } doRun(); } run(); return moduleArg.ready; }); })(); var ALGORITHM_NAME$2 = "ML-KEM-768"; var JWK_ALG$2 = "MLKEM768"; var KEY_USAGES$2 = [ "encapsulateKey", "encapsulateBits", "decapsulateKey", "decapsulateBits" ]; var MlKemOperationError$2 = class extends Error { constructor(message) { super(message); this.name = "OperationError"; } }; var MlKemInvalidAccessError$2 = class extends Error { constructor(message) { super(message); this.name = "InvalidAccessError"; } }; var MlKemNotSupportedError$2 = class extends Error { constructor(message) { super(message); this.name = "NotSupportedError"; } }; var MlKemDataError$2 = class extends Error { constructor(message) { super(message); this.name = "DataError"; } }; var internalKeyData$2 = /* @__PURE__ */ new WeakMap(); function getInternalKeyData$2(key) { const keyData = internalKeyData$2.get(key); if (!keyData) throw new TypeError("Unknown key object"); return keyData; } var cleanupRegistry$2 = new FinalizationRegistry((keyData) => { keyData.publicKeyData.fill(0); keyData.privateSeedData?.fill(0); keyData.privateSecretKeyData?.fill(0); }); function getPublicKeyDataRef$2(key) { const keyData = getInternalKeyData$2(key); if (!keyData.publicKeyData) throw new MlKemOperationError$2("Failed to get public key data"); return keyData.publicKeyData; } function getPrivateKeyDataRef$2(key) { const keyData = getInternalKeyData$2(key); if (!keyData.privateSeedData || !keyData.privateSecretKeyData) throw new MlKemOperationError$2("Failed to get private key data"); return keyData; } var noClone$2 = /* @__PURE__ */ Symbol("CryptoKey created by mlkem-wasm cannot be cloned"); var keyIdKey$2 = "_mlkem_wasm"; var emptyToJSON$2 = () => ({}); function createKeyObject$2(type, extractable, usages, keyData) { const key = { type, extractable, algorithm: Object.freeze({ name: ALGORITHM_NAME$2 }), usages: Object.freeze(Array.from(usages)), [keyIdKey$2]: noClone$2 }; Object.defineProperty(key, "toJSON", { value: emptyToJSON$2, writable: false, enumerable: false, configurable: false }); Object.setPrototypeOf(key, CryptoKey.prototype); internalKeyData$2.set(key, keyData); cleanupRegistry$2.register(key, keyData); return Object.freeze(key); } function createPublicKey$2(publicKeyData, usages) { return createKeyObject$2("public", true, usages, { publicKeyData }); } function createPrivateKey$2(publicKeyData, privateSeedData, privateSecretKeyData, extractable, usages) { return createKeyObject$2("private", extractable, usages, { publicKeyData, privateSeedData, privateSecretKeyData }); } function _isSupportedCryptoKey$2(key) { return key instanceof CryptoKey && keyIdKey$2 in key && key[keyIdKey$2] == noClone$2 && internalKeyData$2.has(key); } function toBase64url$2(data) { return btoa(String.fromCharCode(...data)).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, ""); } function fromBase64url$2(base64url) { const base64 = base64url.replace(/-/g, "+").replace(/_/g, "/"); const binary = atob(base64 + "===".slice((base64.length + 3) % 4)); return Uint8Array.from(binary, (c) => c.charCodeAt(0)); } var PUBLICKEY_BYTES$2 = 1184; var SECRETKEY_BYTES$2 = 2400; var CIPHERTEXT_BYTES$2 = 1088; var SHARED_SECRET_BYTES$2 = 32; var KEYPAIR_RANDOM_BYTES$2 = 64; var ENC_RANDOM_BYTES$2 = 32; var _module$2; async function getModule$2() { if (!_module$2) _module$2 = await wasm_module_default(); return _module$2; } var getRandomValues$2 = crypto.getRandomValues.bind(crypto); function checkAlgorithm$2(algorithm) { if ((typeof algorithm === "string" ? algorithm.toUpperCase() : typeof algorithm === "object" && algorithm !== null && "name" in algorithm && typeof algorithm.name === "string" ? algorithm.name.toUpperCase() : null) !== ALGORITHM_NAME$2) throw new TypeError("Unsupported algorithm"); } async function internalGenerateKeyPair$2(coins) { const module = await getModule$2(); const stackSave = module.stackSave(); try { const pkPtr = module.stackAlloc(PUBLICKEY_BYTES$2); const skPtr = module.stackAlloc(SECRETKEY_BYTES$2); const coinsPtr = module.stackAlloc(KEYPAIR_RANDOM_BYTES$2); module.HEAPU8.set(coins, coinsPtr); if (module._mlkem768_keypair_derand(pkPtr, skPtr, coinsPtr) !== 0) throw new MlKemOperationError$2("Key generation failed"); const rawPublicKey = new Uint8Array(PUBLICKEY_BYTES$2); const rawSecretKey = new Uint8Array(SECRETKEY_BYTES$2); const rawSeed = new Uint8Array(coins); rawPublicKey.set(module.HEAPU8.subarray(pkPtr, pkPtr + PUBLICKEY_BYTES$2)); rawSecretKey.set(module.HEAPU8.subarray(skPtr, skPtr + SECRETKEY_BYTES$2)); module.HEAPU8.fill(0, pkPtr, pkPtr + PUBLICKEY_BYTES$2); module.HEAPU8.fill(0, skPtr, skPtr + SECRETKEY_BYTES$2); module.HEAPU8.fill(0, coinsPtr, coinsPtr + KEYPAIR_RANDOM_BYTES$2); return { rawPublicKey, rawSecretKey, rawSeed }; } finally { module.stackRestore(stackSave); } } async function generateKey$2(keyAlgorithm, extractable, usages) { checkAlgorithm$2(keyAlgorithm); if (!Array.isArray(usages) || usages.some((usage) => !KEY_USAGES$2.includes(usage))) throw new SyntaxError("Invalid key usages"); const { rawPublicKey, rawSecretKey, rawSeed } = await internalGenerateKeyPair$2(getRandomValues$2(new Uint8Array(KEYPAIR_RANDOM_BYTES$2))); return { publicKey: createPublicKey$2(rawPublicKey, usages.filter((usage) => usage === "encapsulateKey" || usage === "encapsulateBits")), privateKey: createPrivateKey$2(rawPublicKey, rawSeed, rawSecretKey, extractable, usages.filter((usage) => usage === "decapsulateKey" || usage === "decapsulateBits")) }; } async function exportKey$2(format, key) { if (!(key instanceof CryptoKey)) throw new TypeError("Expected key to be an instance of CryptoKey"); checkAlgorithm$2(key.algorithm); if (!key.extractable) throw new MlKemOperationError$2("Key is not extractable"); if (format === "spki") { if (key.type !== "public") throw new TypeError("Expected key type to be 'public'"); return rawToDer$2(MLKEM768_SPKI, getPublicKeyDataRef$2(key)).buffer; } if (format === "pkcs8") { if (key.type !== "private") throw new MlKemInvalidAccessError$2("Expected key type to be 'private'"); return rawToDer$2(MLKEM768_PKCS8, getPrivateKeyDataRef$2(key).privateSeedData).buffer; } if (format === "raw-public") { if (key.type !== "public") throw new TypeError("Expected key type to be 'public'"); return new Uint8Array(getPublicKeyDataRef$2(key)).buffer; } if (format === "raw-seed") { if (key.type !== "private") throw new MlKemInvalidAccessError$2("Expected key type to be 'private'"); return new Uint8Array(getPrivateKeyDataRef$2(key).privateSeedData).buffer; } if (format === "jwk") { const jwk = { kty: "AKP", alg: JWK_ALG$2, pub: toBase64url$2(getPublicKeyDataRef$2(key)) }; if (key.type === "private") jwk.priv = toBase64url$2(getPrivateKeyDataRef$2(key).privateSeedData); jwk.key_ops = key.usages; jwk.ext = key.extractable; return jwk; } throw new MlKemNotSupportedError$2("Format not supported"); } function bufferSourcetoUint8Array$2(value) { if (ArrayBuffer.isView(value) && value.buffer instanceof ArrayBuffer) return new Uint8Array(value.buffer, value.byteOffset, value.byteLength); else if (value instanceof ArrayBuffer) return new Uint8Array(value); else throw new TypeError("Value must be a BufferSource"); } function bufferSourcetoUint8ArrayCopy$2(value) { return bufferSourcetoUint8Array$2(value).slice(); } var MLKEM768_SPKI = { fullLength: 1206, prefix: new Uint8Array([ 48, 130, 4, 178, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 4, 2, 3, 130, 4, 161, 0 ]) }; var MLKEM768_PKCS8 = { fullLength: 86, prefix: new Uint8Array([ 48, 84, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 4, 2, 4, 66, 128, 64 ]) }; function bytesEqual$2(a, b) { if (a.length !== b.length) return false; let diff = 0; for (let i = 0; i < a.length; i++) diff |= a[i] ^ b[i]; return diff === 0; } function derToRaw$2(encoding, der) { if (der.length !== encoding.fullLength) throw new MlKemDataError$2("Invalid encoding"); if (!bytesEqual$2(der.subarray(0, encoding.prefix.length), encoding.prefix)) throw new MlKemNotSupportedError$2("Unsupported encoding"); return der.slice(encoding.prefix.length); } function rawToDer$2(encoding, raw) { const der = new Uint8Array(encoding.fullLength); der.set(encoding.prefix); der.set(raw, encoding.prefix.length); return der; } async function importKey$2(format, keyData, algorithm, extractable, usages) { checkAlgorithm$2(algorithm); if (format === "spki") { if (!Array.isArray(usages) || usages.some((usage) => usage !== "encapsulateKey" && usage !== "encapsulateBits")) throw new SyntaxError("Invalid key usages for public key"); const data = derToRaw$2(MLKEM768_SPKI, bufferSourcetoUint8Array$2(keyData)); if (data.length !== PUBLICKEY_BYTES$2) throw new MlKemDataError$2("Invalid key length"); return createPublicKey$2(data, usages); } if (format === "pkcs8") { if (!Array.isArray(usages) || usages.some((usage) => usage !== "decapsulateKey" && usage !== "decapsulateBits")) throw new SyntaxError("Invalid key usages for private key"); const data = derToRaw$2(MLKEM768_PKCS8, bufferSourcetoUint8Array$2(keyData)); if (data.length !== KEYPAIR_RANDOM_BYTES$2) throw new MlKemDataError$2("Invalid key length"); const { rawPublicKey, rawSecretKey, rawSeed } = await internalGenerateKeyPair$2(data); return createPrivateKey$2(rawPublicKey, rawSeed, rawSecretKey, extractable, usages); } if (format === "raw-public") { if (!Array.isArray(usages) || usages.some((usage) => usage !== "encapsulateKey" && usage !== "encapsulateBits")) throw new SyntaxError("Invalid key usages for public key"); return createPublicKey$2(bufferSourcetoUint8ArrayCopy$2(keyData), usages); } if (format === "raw-seed") { if (!Array.isArray(usages) || usages.some((usage) => usage !== "decapsulateKey" && usage !== "decapsulateBits")) throw new SyntaxError("Invalid key usages for private key"); const data = bufferSourcetoUint8ArrayCopy$2(keyData); if (data.length !== KEYPAIR_RANDOM_BYTES$2) throw new MlKemDataError$2("Invalid key length"); const { rawPublicKey, rawSecretKey, rawSeed } = await internalGenerateKeyPair$2(data); return createPrivateKey$2(rawPublicKey, rawSeed, rawSecretKey, extractable, usages); } if (format === "jwk") { if (typeof keyData !== "object" || keyData === null) throw new MlKemDataError$2("Expected keyData to be a JsonWebKey dictionary"); const jwk = keyData; if (jwk.priv && usages.some((usage) => usage !== "decapsulateKey" && usage !== "decapsulateBits")) throw new SyntaxError("Invalid key usages for private key"); if (!jwk.priv && usages.some((usage) => usage !== "encapsulateKey" && usage !== "encapsulateBits")) throw new SyntaxError("Invalid key usages for public key"); if (jwk.kty !== "AKP") throw new MlKemDataError$2("Invalid key type"); if (jwk.alg !== JWK_ALG$2 && jwk.alg !== "ML-KEM-768+A192KW") throw new MlKemDataError$2("Invalid algorithm"); if (usages.length > 0 && jwk.use && jwk.use !== "enc") throw new MlKemDataError$2("Invalid key usage"); if (jwk.key_ops && Array.isArray(jwk.key_ops) && !Array.prototype.every.call(jwk.key_ops, (op) => KEY_USAGES$2.includes(op)) || !Array.isArray(jwk.key_ops)) throw new MlKemDataError$2("Invalid key operations"); if (jwk.ext === false && extractable) throw new MlKemDataError$2("Invalid key extractability"); if (jwk.priv) try { const seedData = fromBase64url$2(jwk.priv); if (seedData.length !== KEYPAIR_RANDOM_BYTES$2) throw new MlKemDataError$2("Invalid private key length"); const { rawPublicKey, rawSecretKey, rawSeed } = await internalGenerateKeyPair$2(seedData); const key = createPrivateKey$2(rawPublicKey, rawSeed, rawSecretKey, extractable, usages); if (toBase64url$2(rawPublicKey) !== jwk.pub) throw new MlKemDataError$2("Invalid public key data"); return key; } catch { throw new MlKemDataError$2("Invalid private key format"); } else try { const publicKeyData = fromBase64url$2(jwk.pub); if (publicKeyData.length !== PUBLICKEY_BYTES$2) throw new MlKemDataError$2("Invalid public key data"); return createPublicKey$2(publicKeyData, usages); } catch { throw new MlKemDataError$2("Invalid public key format"); } } throw new MlKemNotSupportedError$2("Unsupported key format"); } async function getPublicKey$2(key, usages) { if (!(key instanceof CryptoKey)) throw new TypeError("Expected key to be an instance of CryptoKey"); checkAlgorithm$2(key.algorithm); if (key.type !== "private") throw new MlKemInvalidAccessError$2("Expected key type to be 'private'"); if (!Array.isArray(usages) || usages.some((usage) => usage !== "encapsulateKey" && usage !== "encapsulateBits")) throw new SyntaxError("Invalid key usages"); const keyData = getInternalKeyData$2(key); if (!keyData.publicKeyData) throw new MlKemOperationError$2("Failed to get public key data"); return createPublicKey$2(new Uint8Array(keyData.publicKeyData), usages); } async function internalEncapsulate$2(algorithm, encapsulationKey, usage) { const module = await getModule$2(); checkAlgorithm$2(algorithm); if (!(encapsulationKey instanceof CryptoKey) || encapsulationKey.type !== "public") throw new MlKemInvalidAccessError$2("Expected publicKey to be an instance of MlKemCryptoKey with type 'public'"); if (!encapsulationKey.usages.includes(usage)) throw new MlKemInvalidAccessError$2(`Key usages don't include '${usage}'`); const publicKeyDa