UNPKG

spa

Version:

Single-page applications builder with continuous integration, granular updates and loader.

197 lines (157 loc) 8.01 kB
path = require("path") fs = require('fs') expect = require("chai").expect utils = require("./utils") vm = require("vm") spa = require("../lib") gen = (size) -> result = "-" for i in [0..size] result = result + "|" + result return result eval_file = (p, s) -> return vm.runInNewContext(fs.readFileSync(path.resolve(__dirname, p), "utf8"), s) sandbox = ArrayBuffer: Object.freeze(ArrayBuffer) Buffer: Object.freeze(Buffer) Uint8Array: Object.freeze(Uint8Array) describe 'Testing hash functions from assets', -> toArrayBuffer = (buffer) -> ab = new ArrayBuffer(buffer.length) view = new Uint8Array(ab) for i in [0..buffer.length] view[i] = buffer[i]; return ab it "should compute valid `md5` hash", -> md5 = eval_file("../lib/assets/hash/md5.js", sandbox) expect(md5("Hello World")).to.equals("b10a8db164e0754105b7a99be72e3fe5") expect(md5(new Buffer("Hello World"))).to.equals("b10a8db164e0754105b7a99be72e3fe5") expect(md5(toArrayBuffer(new Buffer("Hello World")))).to.equals("b10a8db164e0754105b7a99be72e3fe5") expect(md5("Hello Вася")).to.equals("238de3b491f08ac71de076ad7c5b6541") expect(md5(new Buffer("Hello Вася"))).to.equals("238de3b491f08ac71de076ad7c5b6541") expect(md5(toArrayBuffer(new Buffer("Hello Вася")))).to.equals("238de3b491f08ac71de076ad7c5b6541") it "should compute valid `ripemd160` hash", -> ripemd160 = eval_file("../lib/assets/hash/ripemd160.js", sandbox) expect(ripemd160("Hello World")).to.equals("a830d7beb04eb7549ce990fb7dc962e499a27230") expect(ripemd160("Hello Вася")).to.equals("0c21db8ee9b440476b79f7dcbeb2594c45c37a2c") it "should compute valid `sha1` hash", -> sha1 = eval_file("../lib/assets/hash/sha1.js", sandbox) expect(sha1("Hello World")).to.equals("0a4d55a8d778e5022fab701977c5d840bbc486d0") expect(sha1(new Buffer("Hello World"))).to.equals("0a4d55a8d778e5022fab701977c5d840bbc486d0") expect(sha1(toArrayBuffer(new Buffer("Hello World")))).to.equals("0a4d55a8d778e5022fab701977c5d840bbc486d0") expect(sha1("Hello Вася")).to.equals("65a6daf017d8b5f036c27d9fb03adadb8dec801e") expect(sha1(new Buffer("Hello Вася"))).to.equals("65a6daf017d8b5f036c27d9fb03adadb8dec801e") expect(sha1(toArrayBuffer(new Buffer("Hello Вася")))).to.equals("65a6daf017d8b5f036c27d9fb03adadb8dec801e") it "should compute valid `sha224` hash", -> sha224 = eval_file("../lib/assets/hash/sha224.js", sandbox) expect(sha224("Hello World")).to.equals("c4890faffdb0105d991a461e668e276685401b02eab1ef4372795047") expect(sha224("Hello Вася")).to.equals("b6d32b2ca1b12b830218cf81f10478918cbc60dedd999908df4babcb") it "should compute valid `sha256` hash", -> sha256 = eval_file("../lib/assets/hash/sha256.js", sandbox) expect(sha256("Hello World")).to.equals("a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e") expect(sha256("Hello Вася")).to.equals("07a2495337a70ed331c6228a971c613e766a0c1b88e4b16ab47257768b86b885") it "should compute valid `sha384` hash", -> sha384 = eval_file("../lib/assets/hash/sha384.js", sandbox) expect(sha384("Hello World")).to.equals("99514329186b2f6ae4a1329e7ee6c610a729636335174ac6b740f9028396fcc803d0e93863a7c3d90f86beee782f4f3f") expect(sha384("Hello Вася")).to.equals("4cd80a13b2100ea2f4e4ac4a5911139a3fa19e345230b5e2b457fe9233d6878a1c99bd8c498acbfd6f7fafcdf0855a60") it "should compute valid `sha512` hash", -> sha512 = eval_file("../lib/assets/hash/sha512.js", sandbox) expect(sha512("Hello World")).to.equals("2c74fd17edafd80e8447b0d46741ee243b7eb74dd2149a0ab1b9246fb30382f27e853d8585719e0e67cbda0daa8f51671064615d645ae27acb15bfb1447f459b") expect(sha512("Hello Вася")).to.equals("93f287a0068b3de02010b96d758d5b48e777ea70e33457ed0b157ecc6c083477e7951962372d268bf3631f923f2eab2d95887c5fa8793c37b186d15c502cd751") describe 'Testing cypher functions from assets', -> it "sjcl decrypt", -> decrypt = eval_file("../lib/assets/decode/aes-ccm.js", sandbox) module = decoding: cipher: "aes" mode: "ccm" iter: 1000 ks: 128 ts: 64 iv: "0d9e71975ce5b84732bc9ea325786893", salt: "a4e4d6b02a887b71" auth: "" ct = new Buffer([ 76, 93, 211, 25, 205, 64, 12, 250, 12, 137, 139, 195, 251, 200, 115, 223, 83, 62, 72, 77, 32, 217, 131, 93, 196, 101, 69, 169, 181, 241, 197, 229, 7, 110, 116, 75, 182, 223, 27, 119, 182, 114, 113, 247, 209, 72, 207, 160, 223, 77, 29, 87, 109, 151, 225, 165, 15, 119, 77, 79, 135, 80, 214, 34, 26, 184, 156, 192, 15, 1 ]) loader = options: password: "aaa111" expect(decrypt(ct, module, loader)).to.equals("This page is a demo of the Stanford Javascript Crypto Library.") window = {} window.window = window esandbox = ArrayBuffer: Object.freeze(ArrayBuffer) Buffer: Object.freeze(Buffer) Uint8Array: Object.freeze(Uint8Array) console: Object.freeze(console) window: Object.freeze(window) Uint32Array: Object.freeze(Uint32Array) it "sjcl aes-ccm", -> decrypt = eval_file("../lib/assets/decode/aes-ccm.js", esandbox) encrypt = eval_file("../lib/assets/encode/aes-ccm.js", esandbox) message = gen(5) builder = coding_func: password: "aaa111" iter: 1000 ks: 128 ts: 128 cache: new spa.DB() module = url: "zzzzzz" loader = options: password: "aaa111" data = encrypt(message, module, builder) expect(module.decoding).to.have.property("cipher").that.equals("aes") expect(module.decoding).to.have.property("mode").that.equals("ccm") expect(decrypt(data, module, loader)).to.equals(message) it "sjcl aes-gcm", -> decrypt = eval_file("../lib/assets/decode/aes-gcm.js", esandbox) encrypt = eval_file("../lib/assets/encode/aes-gcm.js", esandbox) message = gen(5) builder = coding_func: password: "aaa111" iter: 1000 ks: 128 ts: 128 cache: new spa.DB() module = url: "zzzzzz" loader = options: password: "aaa111" data = encrypt(message, module, builder) expect(module.decoding).to.have.property("cipher").that.equals("aes") expect(module.decoding).to.have.property("mode").that.equals("gcm") expect(decrypt(data, module, loader)).to.equals(message) it "sjcl aes-ocb2", -> decrypt = eval_file("../lib/assets/decode/aes-ocb2.js", esandbox) encrypt = eval_file("../lib/assets/encode/aes-ocb2.js", esandbox) message = gen(5) builder = coding_func: password: "aaa111" iter: 1000 ks: 128 ts: 128 cache: new spa.DB() module = url: "zzzzzz" loader = options: password: "aaa111" data = encrypt(message, module, builder) expect(module.decoding).to.have.property("cipher").that.equals("aes") expect(module.decoding).to.have.property("mode").that.equals("ocb2") expect(decrypt(data, module, loader)).to.equals(message)