Upload files to "/"
Running "node lib-dqx-test.mjs" will: 1. Generate a secret key and print it out. 2. Generate a public key and print it out. 3. Generate a second key pair and print out only the public key. 4. Hash the second public key with SHA-256. 5. Sign the hash with the secret key of the first key pair. 6. Verify the signature with the public key of the first key pair.
This commit is contained in:
1 parent
457dcb3ca9
commit
676d349ca3
4 files changed
+164
No files matched your search
@@ -0,0 +1,95 @@
|
||||
import DilithiumModule from "./wasm.cjs";
|
||||
import {Buffer} from "buffer/index.js";
|
||||
|
||||
async function dilithiumInit({randomBytes}) {
|
||||
let mod = await DilithiumModule();
|
||||
|
||||
if (!randomBytes) {
|
||||
randomBytes = () => {
|
||||
throw new Error("Random generator implementation not provided but required.");
|
||||
};
|
||||
}
|
||||
|
||||
global.dilithium_randombytes = (function (out, outlen) {
|
||||
let buf = this.HEAPU8.subarray(out, out + outlen);
|
||||
let randomBytesBuffer = randomBytes(outlen);
|
||||
buf.set(new Uint8Array(randomBytesBuffer), 0);
|
||||
}).bind(mod);
|
||||
|
||||
return mod;
|
||||
}
|
||||
|
||||
async function dilithiumGenKeyPair({randomBytes}) {
|
||||
const mod = await dilithiumInit({randomBytes});
|
||||
|
||||
if (mod._dilithium_gen_key_pair() === 0) {
|
||||
let pk_ptr = mod._get_pk_buffer();
|
||||
let pk_len = mod._get_pk_length();
|
||||
const pk = new Uint8Array(mod.HEAP8.buffer, pk_ptr, pk_len);
|
||||
|
||||
let sk_ptr = mod._get_sk_buffer();
|
||||
let sk_len = mod._get_sk_length();
|
||||
const sk = new Uint8Array(mod.HEAP8.buffer, sk_ptr, sk_len);
|
||||
|
||||
return { publicKey: Buffer.from(pk), secretKey: Buffer.from(sk) };
|
||||
} else {
|
||||
throw new Error('Failed to generate key pair.');
|
||||
}
|
||||
}
|
||||
|
||||
async function dilithiumSign({secretKey, challenge}) {
|
||||
const mod = await dilithiumInit({});
|
||||
|
||||
if (challenge.length !== 32) {
|
||||
throw new Error('Challenge buffer must be 32 bytes long.');
|
||||
}
|
||||
|
||||
let m_ptr = mod._get_m_buffer();
|
||||
let m_len = mod._get_m_length();
|
||||
const m = new Uint8Array(mod.HEAP8.buffer, m_ptr, m_len);
|
||||
|
||||
let sk_ptr = mod._get_sk_buffer();
|
||||
let sk_len = mod._get_sk_length();
|
||||
const sk = new Uint8Array(mod.HEAP8.buffer, sk_ptr, sk_len);
|
||||
|
||||
let sig_ptr = mod._get_sig_buffer();
|
||||
let sig_len = mod._get_sig_length();
|
||||
const sig = new Uint8Array(mod.HEAP8.buffer, sig_ptr, sig_len);
|
||||
|
||||
sk.set(Buffer.from(secretKey, 'hex'), 0);
|
||||
m.set(Buffer.from(challenge, 'hex'), 0);
|
||||
|
||||
if (mod._dilithium_sign() === 0) {
|
||||
return Buffer.from(sig);
|
||||
} else {
|
||||
throw new Error('Failed to sign message.');
|
||||
}
|
||||
}
|
||||
|
||||
async function dilithiumVerifySig({publicKey, challenge, signature}) {
|
||||
const mod = await dilithiumInit({});
|
||||
|
||||
if (challenge.length !== 32) {
|
||||
throw new Error('Challenge buffer must be 32 bytes long.');
|
||||
}
|
||||
|
||||
let m_ptr = mod._get_m_buffer();
|
||||
let m_len = mod._get_m_length();
|
||||
const m = new Uint8Array(mod.HEAP8.buffer, m_ptr, m_len);
|
||||
|
||||
let sig_ptr = mod._get_sig_buffer();
|
||||
let sig_len = mod._get_sig_length();
|
||||
const sig = new Uint8Array(mod.HEAP8.buffer, sig_ptr, sig_len);
|
||||
|
||||
let pk_ptr = mod._get_pk_buffer();
|
||||
let pk_len = mod._get_pk_length();
|
||||
const pk = new Uint8Array(mod.HEAP8.buffer, pk_ptr, pk_len);
|
||||
|
||||
pk.set(publicKey, 0);
|
||||
sig.set(signature, 0);
|
||||
m.set(challenge, 0);
|
||||
|
||||
return mod._dilithium_verify_signature() === 0;
|
||||
}
|
||||
|
||||
export { dilithiumGenKeyPair, dilithiumSign, dilithiumVerifySig };
|
||||
@@ -0,0 +1,36 @@
|
||||
import { dilithiumGenKeyPair, dilithiumSign, dilithiumVerifySig } from './api.js';
|
||||
import { randomBytes, createHash } from 'crypto';
|
||||
|
||||
async function testDilithium() {
|
||||
try {
|
||||
// Generate the first key pair
|
||||
const { publicKey: publicKey1, secretKey: secretKey1 } = await dilithiumGenKeyPair({ randomBytes });
|
||||
console.log("First Key Pair Generated.");
|
||||
console.log("Secret Key 1:", secretKey1.toString('hex'));
|
||||
console.log("Public Key 1:", publicKey1.toString('hex'));
|
||||
|
||||
// Generate the second key pair
|
||||
const { publicKey: publicKey2 } = await dilithiumGenKeyPair({ randomBytes });
|
||||
console.log("Second Key Pair Generated.");
|
||||
console.log("Public Key 2:", publicKey2.toString('hex'));
|
||||
|
||||
// Hash the second public key using SHA-256
|
||||
const hash = createHash('sha256');
|
||||
hash.update(publicKey2);
|
||||
const hashedPublicKey2 = hash.digest();
|
||||
console.log("Hashed Public Key 2:", hashedPublicKey2.toString('hex'));
|
||||
|
||||
// Sign the hash with the first secret key
|
||||
const signature = await dilithiumSign({ secretKey: secretKey1, challenge: hashedPublicKey2 });
|
||||
console.log("Signature:", signature.toString('hex'));
|
||||
|
||||
// Verify the signature with the first public key
|
||||
const isValid = await dilithiumVerifySig({ publicKey: publicKey1, challenge: hashedPublicKey2, signature });
|
||||
console.log("Signature Validity:", isValid);
|
||||
|
||||
} catch (error) {
|
||||
console.error("Error in testDilithium:", error);
|
||||
}
|
||||
}
|
||||
|
||||
testDilithium();
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
|
||||
var Module = (() => {
|
||||
var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;
|
||||
|
||||
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 arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,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=""}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};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)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var WebAssembly={Memory:function(opts){this.buffer=new ArrayBuffer(opts["initial"]*65536)},Module:function(binary){},Instance:function(module,info){this.exports=(
|
||||
// EMSCRIPTEN_START_ASM
|
||||
function instantiate(T){function c(d){d.set=function(a,b){this[a]=b};d.get=function(a){return this[a]};return d}var e;var f=new Uint8Array(123);for(var a=25;a>=0;--a){f[48+a]=52+a;f[65+a]=a;f[97+a]=26+a}f[43]=62;f[47]=63;function l(m,n,o){var g,h,a=0,i=n,j=o.length,k=n+(j*3>>2)-(o[j-2]=="=")-(o[j-1]=="=");for(;a<j;a+=4){g=f[o.charCodeAt(a+1)];h=f[o.charCodeAt(a+2)];m[i++]=f[o.charCodeAt(a)]<<2|g>>4;if(i<k)m[i++]=g<<4|h>>2;if(i<k)m[i++]=h<<6|f[o.charCodeAt(a+3)]}}function p(q){l(e,1028,"92QAAAIx2P8DFfj/RJ4DABgh9P8oofL/JB4HACveGwAr6SMArYT6/38U4P91mi8ACfvT/0l6LwAn5SgAWJYpAHCgDwCkhe//iLc2AJCd9/+g6u7/aPknAHvT3//Wrd//5xrF//ek6v+Y/M3/NdAaACK0//8BMj0AxUUEAGdKKQAgdgEAzfQuAMXeNQADpeb/LDDJ/9RH2f+vvjsAhRXF/3yO0f+WijYAQT7U/wAENgBNavv/nNYjAF3F9/89Eub/1urm/x5+NQBZr8X/P4Q1ABdW3/9clOf/jHM4AKhjDACaGwgAdo8OAFM4OwA0hTsAMPzY/1SdHwAtT9X/5QbE/4Gs6P/P4cf/GZjR/13W6f/uCTUAxzUhALvP5/91z+z/cpcdAHKwwf/2vPD/gFLP/67Sz//gkMj/yu8BAPIQNACF/vD/OMYgAJ9uKQCjt9L/S6TH/226+f8JNNr/gsL1/xNB7f87pv//9wns/90r+v/UlRQAY0UcAGIs6v/p+8z/8AoEABfEBwCIRS8AAK0AAL427/9EzQ0AWmc8AMorx/9+3v//SDkZAMBpzv9sdSQA38f8/6GYCwAI6Ov/bOQCAAjIyf/CNjAA9r/j/5M82//gSv3/BRMUAJJ3FAAlnhMA4NDn/0SZ8/8CCOr/ou7R/5zHxP9XoMj/2Zc6AJPqHwBa/zMA1FgjAPhBOgBy/8z/+z0iAJ+r2v8ipMn/9RIEAIclJQDwJO3/XZs1AKBIyv/8osb/Vrvt/95Fz/9evg0AGl4cAObgDQBafwwAg48HAIpi5/8EV////Ab4/yEA9v/2WtD/hAAfAIbvMAB9ucn/1vz3/5JF9P/CIcn/GTkFAAxhBABBzdr/G7A+AOdyNAA7AM3/x3waACQZAwDlXisAmREpADp62P9xTRMAHOE9AIQJEwBR8CUARloYABiFxv++FBMAkTgoAJDbyf+JUNL/P4UcAEsLHQCm9u//vqjr/xvhEgA+Xs3/Ly3q/+Qd+f/HBhQAg3IyAG4N4v9Teez/mUAdAHgl2f+tBev/BeQWAOfbCwDoHSIAz/gzADS59/8MytT/+H/m/1fR4/8bkdj/EizH/9gQCQAfXsb/WEbh/4sdJQC3cyUAj3z9/5jdHQCYaDMAu9QCAKeT7f++bM//HHwCAAiqGABx/S0ApVwMAJo3GQBnocf/PYzk/zyh0f85xTUAFQE7AMAdBAD3xCEA9Bvx/+c1GgAONAcARX35/9BMGgCufOT/aCYdAJiO5v8zJu//2gX8/9t/xf9kJ9P/r+Hd/92T+f8JHd3/k8wCAAUY8f8qnBgAqeXJ/1CK9/8szzsATkP//9826//KFTwAaF4VALYW8//OKR4AAQAAAAAAAACCgAAAAAAAAIqAAAAAAACAAIAAgAAAAICLgAAAAAAAAAEAAIAAAAAAgYAAgAAAAIAJgAAAAAAAgIoAAAAAAAAAiAAAAAAAAAAJgACAAAAAAAoAAIAAAAAAi4AAgAAAAACLAAAAAAAAgImAAAAAAACAA4AAAAAAAIACgAAAAAAAgIAAAAAAAACACoAAAAAAAAAKAACAAAAAgIGAAIAAAACAgIAAAAAAAIABAACAAAAAAAiAAIAAAACA")}function S(q){var r=q.a;var s=r.a;var t=s.buffer;var u=new Int8Array(t);var v=new Int16Array(t);var w=new Int32Array(t);var x=new Uint8Array(t);var y=new Uint16Array(t);var z=new Uint32Array(t);var A=new Float32Array(t);var B=new Float64Array(t);var C=Math.imul;var D=Math.fround;var E=Math.abs;var F=Math.clz32;var G=Math.min;var H=Math.max;var I=Math.floor;var J=Math.ceil;var K=Math.trunc;var L=Math.sqrt;var M=r.b;var N=r.c;var O=74176;var P=0;
|
||||
// EMSCRIPTEN_START_FUNCS
|
||||
function ka(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;i=256;while(1){c=(l<<2)+a|0;f=w[c>>2];b=w[c+4>>2];h=f-b|0;w[c+4>>2]=h;w[c>>2]=b+f;i=i-1|0;b=0-w[(i<<2)+1024>>2]|0;h=ab(h,h>>31,b,b>>31);b=P;f=b;ab(h,b,0,58728449);b=P;e=b>>31;d=h;h=ab(b,e,-8380417,-1);b=d+h|0;e=P+f|0;w[c+4>>2]=b>>>0<h>>>0?e+1|0:e;c=l>>>0<254;l=l+2|0;if(c){continue}break}while(1){j=m<<2;b=j+a|0;h=w[b>>2];c=w[b+8>>2];f=h-c|0;w[b+8>>2]=f;w[b>>2]=c+h;l=0;i=i-1|0;h=0-w[(i<<2)+1024>>2]|0;g=h>>31;f=ab(h,g,f,f>>31);c=P;d=c;ab(f,c,0,58728449);c=P;e=c>>31;k=f;f=ab(c,e,-8380417,-1);c=k+f|0;e=P+d|0;w[b+8>>2]=c>>>0<f>>>0?e+1|0:e;c=(j|4)+a|0;d=w[c>>2];f=w[c+8>>2];b=d-f|0;w[c+8>>2]=b;w[c>>2]=d+f;h=ab(b,b>>31,h,g);b=P;f=b;ab(h,b,0,58728449);b=P;e=b>>31;d=h;h=ab(b,e,-8380417,-1);b=d+h|0;e=P+f|0;w[c+8>>2]=b>>>0<h>>>0?e+1|0:e;c=m>>>0<252;m=m+4|0;if(c){continue}break}while(1){j=l<<2;b=j+a|0;h=w[b>>2];c=w[b+16>>2];f=h-c|0;w[b+16>>2]=f;w[b>>2]=c+h;m=0;i=i-1|0;h=0-w[(i<<2)+1024>>2]|0;g=h>>31;f=ab(h,g,f,f>>31);c=P;d=c;ab(f,c,0,58728449);c=P;e=c>>31;k=f;f=ab(c,e,-8380417,-1);c=k+f|0;e=P+d|0;w[b+16>>2]=c>>>0<f>>>0?e+1|0:e;c=(j|4)+a|0;d=w[c>>2];f=w[c+16>>2];b=d-f|0;w[c+16>>2]=b;w[c>>2]=d+f;f=ab(b,b>>31,h,g);b=P;d=b;ab(f,b,0,58728449);b=P;e=b>>31;k=f;f=ab(b,e,-8380417,-1);b=k+f|0;e=P+d|0;w[c+16>>2]=b>>>0<f>>>0?e+1|0:e;c=(j|8)+a|0;d=w[c>>2];f=w[c+16>>2];b=d-f|0;w[c+16>>2]=b;w[c>>2]=d+f;f=ab(b,b>>31,h,g);b=P;d=b;ab(f,b,0,58728449);b=P;e=b>>31;k=f;f=ab(b,e,-8380417,-1);b=k+f|0;e=P+d|0;w[c+16>>2]=b>>>0<f>>>0?e+1|0:e;c=(j|12)+a|0;d=w[c>>2];f=w[c+16>>2];b=d-f|0;w[c+16>>2]=b;w[c>>2]=d+f;h=ab(b,b>>31,h,g);b=P;f=b;ab(h,b,0,58728449);b=P;e=b>>31;d=h;h=ab(b,e,-8380417,-1);b=d+h|0;e=P+f|0;w[c+16>>2]=b>>>0<h>>>0?e+1|0:e;c=l>>>0<248;l=l+8|0;if(c){continue}break}while(1){j=m<<2;b=j+a|0;h=w[b>>2];c=w[b+32>>2];f=h-c|0;w[b+32>>2]=f;w[b>>2]=c+h;l=0;i=i-1|0;h=0-w[(i<<2)+1024>>2]|0;g=h>>31;f=ab(h,g,f,f>>31);c=P;d=c;ab(f,c,0,58728449);c=P;e=c>>31;k=f;f=ab(c,e,-8380417,-1);c=k+f|0;e=P+d|0;w[b+32>>2]=c>>>0<f>>>0?e+1|0:e;c=(j|4)+a|0;d=w[c>>2];f=w[c+32>>2];b=d-f|0;w[c+32>>2]=b;w[c>>2]=d+f;f=ab(b,b>>31,h,g);b=P;d=b;ab(f,b,0,58728449);b=P;e=b>>31;k=f;f=ab(b,e,-8380417,-1);b=k+f|0;e=P+d|0;w[c+32>>2]=b>>>0<f>>>0?e+1|0:e;c=(j|8)+a|0;d=w[c>>2];f=w[c+32>>2];b=d-f|0;w[c+32>>2]=b;w[c>>2]=d+f;f=ab(b,b>>31,h,g);b=P;d=b;ab(f,b,0,58728449);b=P;e=b>>31;k=f;f=ab(b,e,-8380417,-1);b=k+f|0;e=P+d|0;w[c+32>>2]=b>>>0<f>>>0?e+1|0:e;c=(j|12)+a|0;d=w[c>>2];f=w[c+32>>2];b=d-f|0;w[c+32>>2]=b;w[c>>2]=d+f;f=ab(b,b>>31,h,g);b=P;d=b;ab(f,b,0,58728449);b=P;e=b>>31;k=f;f=ab(b,e,-8380417,-1);b=k+f|0;e=P+d|0;w[c+32>>2]=b>>>0<f>>>0?e+1|0:e;c=(j|16)+a|0;d=w[c>>2];f=w[c+32>>2];b=d-f|0;w[c+32>>2]=b;w[c>>2]=d+f;f=ab(b,b>>31,h,g);b=P;d=b;ab(f,b,0,58728449);b=P;e=b>>31;k=f;f=ab(b,e,-8380417,-1);b=k+f|0;e=P+d|0;w[c+32>>2]=b>>>0<f>>>0?e+1|0:e;c=(j|20)+a|0;d=w[c>>2];f=w[c+32>>2];b=d-f|0;w[c+32>>2]=b;w[c>>2]=d+f;f=ab(b,b>>31,h,g);b=P;d=b;ab(f,b,0,58728449);b=P;e=b>>31;k=f;f=ab(b,e,-8380417,-1);b=k+f|0;e=P+d|0;w[c+32>>2]=b>>>0<f>>>0?e+1|0:e;c=(j|24)+a|0;d=w[c>>2];f=w[c+32>>2];b=d-f|0;w[c+32>>2]=b;w[c>>2]=d+f;f=ab(b,b>>31,h,g);b=P;d=b;ab(f,b,0,58728449);b=P;e=b>>31;k=f;f=ab(b,e,-8380417,-1);b=k+f|0;e=P+d|0;w[c+32>>2]=b>>>0<f>>>0?e+1|0:e;c=(j|28)+a|0;d=w[c>>2];f=w[c+32>>2];b=d-f|0;w[c+32>>2]=b;w[c>>2]=d+f;h=ab(b,b>>31,h,g);b=P;f=b;ab(h,b,0,58728449);b=P;e=b>>31;d=h;h=ab(b,e,-8380417,-1);b=d+h|0;e=P+f|0;w[c+32>>2]=b>>>0<h>>>0?e+1|0:e;c=m>>>0<240;m=m+16|0;if(c){continue}break}while(1){n=l<<2;f=n+a|0;b=f- -64|0;h=w[f>>2];c=w[b>>2];d=h-c|0;w[b>>2]=d;w[f>>2]=c+h;f=i;i=f-1|0;h=0-w[(i<<2)+1024>>2]|0;m=h>>31;d=ab(h,m,d,d>>31);c=P;g=c;ab(d,c,0,58728449);c=P;e=c>>31;k=d;d=ab(c,e,-8380417,-1);c=k+d|0;e=P+g|0;w[b>>2]=d>>>0>c>>>0?e+1|0:e;j=(n|4)+a|0;c=j- -64|0;g=w[j>>2];d=w[c>>2];b=g-d|0;w[c>>2]=b;w[j>>2]=d+g;d=ab(b,b>>31,h,m);b=P;g=b;ab(d,b,0,58728449);b=P;e=b>>31;k=d;d=ab(b,e,-8380417,-1);b=k+d|0;e=P+g|0;w[c>>2]=b>>>0<d>>>0?e+1|0:e;j=(n|8)+a|0;c=j- -64|0;g=w[j>>2];d=w[c>>2];b=g-d|0;w[c>>2]=b;w[j>>2]=d+g;d=ab(b,b>>31,h,m);b=P;g=b;ab(d,b,0,58728449);b=P;e=b>>31;k=d;d=ab(b,e,-8380417,-1);b=k+d|0;e=P+g|0;w[c>>2]=b>>>0<d>>>0?e+1|0:e;j=(n|12)+a|0;c=j- -64|0;g=w[j>>2];d=w[c>>2];b=g-d|0;w[c>>2]=b;w[j>>2]=d+g;d=ab(b,b>>31,h,m);b=P;g=b;ab(d,b,0,58728449);b=P;e=b>>31;k=d;d=ab(b,e,-8380417,-1);b=k+d|0;e=P+g|0;w[c>>2]=b>>>0<d>>>0?e+1|0:e;j=(n|16)+a|0;c=j- -64|0;g=w[j>>2];d=w[c>>2];b=g-d|0;w[c>>2]=b;w[j>>2]=d+g;d=ab(b,b>>31,h,m);b=P;g=b;ab(d,b,0,58728449);b=P;e=b>>31;k=d;d=ab(b,e,-8380417,-1);b=k+d|0;e=P+g|0;w[c>>2]=b>>>0<d>>>0?e+1|0:e;j=(n|20)+a|0;c=j- -64|0;g=w[j>>2];d=w[c>>2];b=g-d|0;w[c>>2]=b;w[j>>2]=d+g;d=ab(b,b>>31,h,m);b=P;g=b;ab(d,b,0,58728449);b=P;e=b>>31;k=d;d=ab(b,e,-8380417,-1);b=k+d|0;e=P+g|0;w[c>>2]=b>>>0<d>>>0?e+1|0:e;j=(n|24)+a|0;c=j- -64|0;g=w[j>>2];d=w[c>>2];b=g-d|0;w[c>>2]=b;w[j>>2]=d+g;d=ab(b,b>>31,h,m);b=P;g=b;ab(d,b,0,58728449);b=P;e=b>>31;k=d;d=ab(b,e,-8380417,-1);b=k+d|0;e=P+g|0;w[c>>2]=b>>>0<d>>>0?e+1|0:e;j=(n|28)+a|0;c=j- -64|0;g=w[j>>2];d=w[c>>2];b=g-d|0;w[c>>2]=b;w[j>>2]=d+g;d=ab(b,b>>31,h,m);b=P;g=b;ab(d,b,0,5872844Line truncated
|
||||
function Ma(a,b){var c=0,d=0,e=0,f=0,g=0;c=O-352|0;O=c;aa(c);X(c,b,32);ca(c);fa(c+208|0,1,c);e=w[c+208>>2];f=w[c+212>>2];g=Y(a,1024);a=217;b=8;while(1){if(b>>>0>=136){fa(c+208|0,1,c);b=0}d=(c+208|0)+b|0;b=b+1|0;d=x[d|0];if(d>>>0>a>>>0){continue}d=(d<<2)+g|0;w[(a<<2)+g>>2]=w[d>>2];w[d>>2]=1-(e<<1&2);e=(f&1)<<31|e>>>1;f=f>>>1|0;a=a+1|0;if((a|0)!=256){continue}break}O=c+352|0}function ma(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;while(1){d=(h<<4)+b|0;e=w[d+4>>2];f=w[d+8>>2];g=w[d+12>>2];c=C(h,9)+a|0;d=131072-w[d>>2]|0;u[c|0]=d;u[c+1|0]=d>>>8;g=131072-g|0;u[c+8|0]=g>>>10;u[c+7|0]=g>>>2;f=131072-f|0;u[c+5|0]=f>>>4;e=131072-e|0;u[c+3|0]=e>>>6;u[c+6|0]=g<<6|f>>>12;u[c+4|0]=f<<4|e>>>14;u[c+2|0]=e<<2|d>>>16;h=h+1|0;if((h|0)!=64){continue}break}}function $(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;while(1){c=(d<<5)+b|0;h=w[c+16>>2];i=w[c+12>>2];e=w[c+28>>2];j=w[c+20>>2];k=w[c+24>>2];f=C(d,3)+a|0;g=16-(w[c+4>>2]<<3)|2-w[c>>2];c=2-w[c+8>>2]|0;u[f|0]=g|c<<6;g=64-(e<<5)|0;e=2-j|0;u[f+2|0]=g|(8-(k<<2)|(e&254)>>>1);u[f+1|0]=32-(h<<4)|(4-(i<<1)|(c&252)>>>2)|e<<7;d=d+1|0;if((d|0)!=32){continue}break}}function fa(a,b,c){var d=0,e=0,f=0,g=0;if(b){while(1){Z(c);g=0;while(1){e=g<<3;d=e+a|0;f=c+e|0;e=w[f+4>>2];f=w[f>>2];u[d|0]=f;u[d+1|0]=f>>>8;u[d+2|0]=f>>>16;u[d+3|0]=f>>>24;u[d+4|0]=e;u[d+5|0]=e>>>8;u[d+6|0]=e>>>16;u[d+7|0]=e>>>24;g=g+1|0;if((g|0)!=17){continue}break}a=a+136|0;b=b-1|0;if(b){continue}break}}}function Ka(a,b,c){var d=0,e=0,f=0,g=0;if(b){while(1){Z(c);g=0;while(1){e=g<<3;d=e+a|0;f=c+e|0;e=w[f+4>>2];f=w[f>>2];u[d|0]=f;u[d+1|0]=f>>>8;u[d+2|0]=f>>>16;u[d+3|0]=f>>>24;u[d+4|0]=e;u[d+5|0]=e>>>8;u[d+6|0]=e>>>16;u[d+7|0]=e>>>24;g=g+1|0;if((g|0)!=21){continue}break}a=a+168|0;b=b-1|0;if(b){continue}break}}}function Ha(a,b){V(a,b,0);V(a+1024|0,b,1);V(a+2048|0,b,2);V(a+3072|0,b,3);V(a+4096|0,b,256);V(a+5120|0,b,257);V(a+6144|0,b,258);V(a+7168|0,b,259);V(a- -8192|0,b,512);V(a+9216|0,b,513);V(a+10240|0,b,514);V(a+11264|0,b,515);V(a+12288|0,b,768);V(a+13312|0,b,769);V(a+14336|0,b,770);V(a+15360|0,b,771)}function ua(a,b,c){var d=0,e=0,f=0,g=0,h=0;while(1){e=g<<2;h=e+a|0;f=w[b+e>>2];d=C(f+127>>7,11275)+8388608>>24;d=(d|0)<=43?d:0;a:{if(w[c+e>>2]){f=C(d,-190464)+f|0;e=(d|0)!=43?d+1|0:0;if((((f|0)>4190208?-8380417:0)+f|0)>0){break a}d=d?d-1|0:43}e=d}w[h>>2]=e;g=g+1|0;if((g|0)!=256){continue}break}}function ca(a){var b=0,c=0,d=0,e=0;b=w[a+200>>2];d=(b&-8)+a|0;e=w[d+4>>2];c=b<<3&56;b=c&31;if((c&63)>>>0>=32){c=31<<b;b=0}else{c=(1<<b)-1&31>>>32-b;b=31<<b}w[d>>2]=b^w[d>>2];w[d+4>>2]=c^e;w[a+200>>2]=136;b=w[a+132>>2]^-2147483648;w[a+128>>2]=w[a+128>>2];w[a+132>>2]=b}function la(a,b){var c=0,d=0,e=0,f=0;while(1){d=C(f,3)+a|0;e=(f<<4)+b|0;c=w[e>>2];u[d|0]=c;u[d|0]=c|w[e+4>>2]<<6;c=w[e+4>>2]>>>2|0;u[d+1|0]=c;u[d+1|0]=c|w[e+8>>2]<<4;c=w[e+8>>2]>>>4|0;u[d+2|0]=c;u[d+2|0]=c|w[e+12>>2]<<2;f=f+1|0;if((f|0)!=64){continue}break}}function U(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;while(1){d=f<<2;g=d+a|0;e=w[c+d>>2];d=w[b+d>>2];d=ab(e,e>>31,d,d>>31);e=P;h=e;ab(d,e,0,58728449);i=d;e=P;d=e>>31;e=ab(e,d,-8380417,-1);d=P+h|0;w[g>>2]=e>>>0>i+e>>>0?d+1|0:d;f=f+1|0;if((f|0)!=256){continue}break}}function qa(a,b){var c=0,d=0,e=0;while(1){d=C(e,5)+a|0;c=(e<<4)+b|0;u[d|0]=w[c>>2];u[d+1|0]=w[c+4>>2]<<2|w[c>>2]>>>8;u[d+2|0]=w[c+8>>2]<<4|w[c+4>>2]>>>6;u[d+3|0]=w[c+12>>2]<<6|w[c+8>>2]>>>4;u[d+4|0]=w[c+12>>2]>>>2;e=e+1|0;if((e|0)!=64){continue}break}}function pa(a,b){var c=0,d=0,e=0;while(1){e=(d<<4)+a|0;c=C(d,5)+b|0;w[e>>2]=x[c+1|0]<<8&768|x[c|0];w[e+4>>2]=x[c+2|0]<<6&960|x[c+1|0]>>>2;w[e+8>>2]=x[c+3|0]<<4&1008|x[c+2|0]>>>4;w[e+12>>2]=x[c+4|0]<<2|x[c+3|0]>>>6;d=d+1|0;if((d|0)!=64){continue}break}}function ta(a,b){var c=0,d=0,e=0,f=0;c=1;a:{if((b|0)>1047552){break a}while(1){f=e<<2;d=w[f+a>>2];c=1;if((d-(d<<1&d>>31)|0)>=(b|0)){break a}d=w[(f|4)+a>>2];c=1;if((d-(d<<1&d>>31)|0)>=(b|0)){break a}e=e+2|0;if((e|0)!=256){continue}break}c=0}return c}function wa(a,b,c){var d=0,e=0,f=0,g=0;while(1){g=f<<2;d=w[g+c>>2];e=C(d+127>>7,11275)+8388608>>24;e=(e|0)<=43?e:0;d=C(e,-190464)+d|0;w[b+g>>2]=d+((d|0)>4190208?-8380417:0);w[a+g>>2]=e;f=f+1|0;if((f|0)!=256){continue}break}}function ab(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;e=c>>>16|0;f=a>>>16|0;j=C(e,f);g=c&65535;h=a&65535;i=C(g,h);f=(i>>>16|0)+C(f,g)|0;e=(f&65535)+C(e,h)|0;P=(C(b,c)+j|0)+C(a,d)+(f>>>16)+(e>>>16)|0;return i&65535|e<<16}function ya(a){var b=0,c=0,d=0;while(1){c=d<<2;b=c+a|0;w[b>>2]=w[b>>2]<<13;b=(c|4)+a|0;w[b>>2]=w[b>>2]<<13;b=(c|8)+a|0;w[b>>2]=w[b>>2]<<13;c=(c|12)+a|0;w[c>>2]=w[c>>2]<<13;d=d+4|0;if((d|0)!=256){continue}break}}function va(a,b,c){var d=0,e=0,f=0,g=0;while(1){f=e<<2;d=w[f+b>>2];d=(d|0)==-95232&w[c+f>>2]!=0|d-95233>>>0<4294776831;w[a+f>>2]=d;g=d+g|0;e=e+1|0;if((e|0)!=256){continue}break}return g}function xa(a,b,c){var d=0,e=0,f=0,g=0;while(1){e=d<<2;f=w[e+c>>2];g=f+4095|0;w[b+e>>2]=f-(g&-8192);w[a+e>>2]=g>>13;d=d+1|0;if((d|0)!=256){continue}break}}function za(a,b,c){var d=0,e=0;while(1){d=e<<2;w[d+a>>2]=w[b+d>>2]-w[c+d>>2];d=d|4;w[d+a>>2]=w[b+d>>2]-w[c+d>>2];e=e+2|0;if((e|0)!=256){continue}break}}function W(a,Line truncated
|
||||
// EMSCRIPTEN_END_FUNCS
|
||||
e=x;p(q);var Q=c([]);function R(){return t.byteLength/65536|0}return{"d":Qa,"e":$a,"f":Ya,"g":Xa,"h":Wa,"i":Va,"j":Ua,"k":Ta,"l":Sa,"m":Ra,"n":_a,"o":Za,"p":Q}}return S(T)}
|
||||
// EMSCRIPTEN_END_ASM
|
||||
|
||||
|
||||
)(info)},instantiate:function(binary,info){return{then:function(ok){var module=new WebAssembly.Module(binary);ok({"instance":new WebAssembly.Instance(module,info)})}}},RuntimeError:Error};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;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,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"]=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 INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":INITIAL_MEMORY/65536})}updateMemoryViews();INITIAL_MEMORY=wasmMemory.buffer.byteLength;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;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;wasmBinaryFile="<<< WASM_BINARY_FILE >>>";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;addOnInit(wasmExports["d"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}function randombytes(out,outlen){global.dilithium_randombytes(out,outlen)}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;var _emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var wasmImports={b:_emscripten_memcpy_js,a:wasmMemory,c:randombytes};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctoLine truncated
|
||||
|
||||
|
||||
return moduleArg.ready
|
||||
}
|
||||
);
|
||||
})();
|
||||
;
|
||||
if (typeof exports === 'object' && typeof module === 'object')
|
||||
module.exports = Module;
|
||||
else if (typeof define === 'function' && define['amd'])
|
||||
define([], () => Module);
|
||||
Reference in new issue
Block a user