webcrypto-core
Advanced tools
Comparing version 0.1.10 to 0.1.11
{ | ||
"name": "webcrypto-core", | ||
"version": "0.1.10", | ||
"version": "0.1.11", | ||
"description": "Common layer to be used by crypto libraries based on WebCrypto API for input validation.", | ||
"main": "build/index.js", | ||
"main": "dist/webcrypto-core.js", | ||
"module": "dist/webcrypto-core.es.js", | ||
"types": "index.d.ts", | ||
@@ -11,12 +12,12 @@ "directories": { | ||
"scripts": { | ||
"prepublish": "npm run build:dist", | ||
"build": "npm run build:es5", | ||
"build:es5": "tsc", | ||
"build:es2015": "tsc -p tsconfig.es2015.json", | ||
"build:rollup": "npm run build:es2015 && rollup -c", | ||
"build:map": "tsc --sourcemap", | ||
"build:es5": "rollup -c", | ||
"build:map": "rollup -c -m", | ||
"build:es2015": "rollup -c rollup.config.es.js", | ||
"build:dist": "npm run build:es5 && npm run build:es2015", | ||
"build:source": "tsc --declaration --declarationDir types", | ||
"pretest": "npm run build:map", | ||
"test": "mocha test", | ||
"install": "npm run build", | ||
"pub": "npm version patch && npm publish && git push", | ||
"precoverage": "npm run build:map", | ||
"coverage": "nyc npm test", | ||
@@ -46,11 +47,13 @@ "precoveragehtml": "npm run coverage", | ||
"@types/node": "^6", | ||
"tslib": "^1.5.0", | ||
"typescript": "^2" | ||
"tslib": "^1.5.0" | ||
}, | ||
"devDependencies": { | ||
"@types/node": "^6.0.62", | ||
"babel-preset-es2015": "^6.18.0", | ||
"coveralls": "^2", | ||
"live-server": "^1", | ||
"npm-run-all": "^3", | ||
"nyc": "^8", | ||
"mocha": "^3.2.0", | ||
"rollup": "^0.41.4", | ||
"rollup-plugin-typescript": "^0.8.1", | ||
"typescript": "^2.1.5", | ||
"watch": "^0" | ||
@@ -57,0 +60,0 @@ }, |
@@ -8,2 +8,3 @@ [![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://raw.githubusercontent.com/PeculiarVentures/webcrypto-core/master/LICENSE) | ||
# webcrypto-core | ||
We have created a number of WebCrypto polyfills including: [node-webcrypto-ossl](https://github.com/PeculiarVentures/node-webcrypto-ossl), [node-webcrypto-p11](https://github.com/PeculiarVentures/node-webcrypto-p11), and [webcrypto-liner](https://github.com/PeculiarVentures/webcrypto-liner). `webcrypto-core` was designed to be a common layer to be used by all of these libraries for input validation. | ||
@@ -21,3 +22,3 @@ | ||
> NOTE: `npm install` command downloads and installs modules to local folder. | ||
> You can install all dependancies globally | ||
> You can install all dependencies globally | ||
@@ -34,7 +35,2 @@ typescript | ||
babel | ||
``` | ||
npm install babel-cli --global | ||
``` | ||
mocha | ||
@@ -47,3 +43,3 @@ ``` | ||
``` | ||
npm install typescript rollup babel-cli mocha --global | ||
npm install typescript rollup mocha --global | ||
``` | ||
@@ -72,3 +68,3 @@ | ||
|-------------------------|------------| | ||
| webcrypto-core.js | 58Kb | | ||
| webcrypto-core.js | 59Kb | | ||
| webcrypto-core.min.js | 25Kb | |
253
test/aes.js
@@ -1,2 +0,2 @@ | ||
var webcrypto = require("../build/index"); | ||
var webcrypto = require("../"); | ||
var assert = require("assert"); | ||
@@ -28,2 +28,5 @@ | ||
}); | ||
it(alg + " generate wrong key usage", function (done) { | ||
generate({ name: alg, length: 128 }, ["sign", "verify"], done, true); | ||
}); | ||
it(alg + " generate 111, wrong length", function (done) { | ||
@@ -71,83 +74,154 @@ generate({ name: alg, length: 111 }, ["encrypt", "decrypt", "wrapKey", "unwrapKey"], done, true); | ||
it("AES-CBC encrypt", function (done) { | ||
var alg = { name: "AES-CBC", iv: new Uint8Array(16) }; | ||
var key = { | ||
algorithm: { name: "AES-CBC" }, | ||
type: "secret", | ||
usages: ["encrypt"] | ||
}; | ||
encrypt("encrypt", alg, key, done, false); | ||
context("AES-CBC encrypt", () => { | ||
it("ArrayBufferView", function (done) { | ||
var alg = { name: "AES-CBC", iv: new Uint8Array(16) }; | ||
var key = { | ||
algorithm: { name: "AES-CBC" }, | ||
type: "secret", | ||
usages: ["encrypt"] | ||
}; | ||
encrypt("encrypt", alg, key, done, false); | ||
}); | ||
it("ArrayBuffer", function (done) { | ||
var alg = { name: "AES-CBC", iv: new ArrayBuffer(16) }; | ||
var key = { | ||
algorithm: { name: "AES-CBC" }, | ||
type: "secret", | ||
usages: ["encrypt"] | ||
}; | ||
encrypt("encrypt", alg, key, done, false); | ||
}); | ||
it("Wrong iv", function (done) { | ||
var alg = { name: "AES-CBC", iv: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6] }; | ||
var key = { | ||
algorithm: { name: "AES-CBC" }, | ||
type: "secret", | ||
usages: ["encrypt"] | ||
}; | ||
encrypt("encrypt", alg, key, done, true); | ||
}); | ||
}) | ||
context("AES-CBC decrypt", () => { | ||
it("ArrayBufferView", function (done) { | ||
var alg = { name: "AES-CBC", iv: new Uint16Array(8) }; | ||
var key = { | ||
algorithm: { name: "AES-CBC" }, | ||
type: "secret", | ||
usages: ["decrypt"] | ||
}; | ||
encrypt("decrypt", alg, key, done, false); | ||
}); | ||
it("ArrayBufferView", function (done) { | ||
var alg = { name: "AES-CBC", iv: new ArrayBuffer(16) }; | ||
var key = { | ||
algorithm: { name: "AES-CBC" }, | ||
type: "secret", | ||
usages: ["decrypt"] | ||
}; | ||
encrypt("decrypt", alg, key, done, false); | ||
}); | ||
it("wrong key", function (done) { | ||
var alg = { name: "AES-CBC", iv: new Uint8Array(16) }; | ||
var key = { | ||
algorithm: { name: "AES-GCM" }, | ||
type: "secret", | ||
usages: ["decrypt"] | ||
}; | ||
encrypt("decrypt", alg, key, done, true); | ||
}); | ||
it("wrong alg param, iv size 15", function (done) { | ||
var alg = { name: "AES-CBC", iv: new Uint8Array(15) }; | ||
var key = { | ||
algorithm: { name: "AES-CBC" }, | ||
type: "secret", | ||
usages: ["decrypt"] | ||
}; | ||
encrypt("decrypt", alg, key, done, true); | ||
}); | ||
it("wrong key usage", function (done) { | ||
var alg = { name: "AES-CBC", iv: new Uint8Array(16) }; | ||
var key = { | ||
algorithm: { name: "AES-CBC" }, | ||
type: "secret", | ||
usages: ["unwrapKey"] | ||
}; | ||
encrypt("decrypt", alg, key, done, true); | ||
}); | ||
}); | ||
it("AES-CBC decrypt", function (done) { | ||
var alg = { name: "AES-CBC", iv: new Uint8Array(16) }; | ||
var key = { | ||
algorithm: { name: "AES-CBC" }, | ||
type: "secret", | ||
usages: ["decrypt"] | ||
}; | ||
encrypt("decrypt", alg, key, done, false); | ||
context("AES-CTR encrypt", () => { | ||
it("counter - ArrayBufferView", function (done) { | ||
var alg = { name: "AES-CTR", counter: new Uint8Array(16), length: 1 }; | ||
var key = { | ||
algorithm: { name: "AES-CTR" }, | ||
type: "secret", | ||
usages: ["encrypt"] | ||
}; | ||
encrypt("encrypt", alg, key, done, false); | ||
}); | ||
it("counter - ArrayBuffer", function (done) { | ||
var alg = { name: "AES-CTR", counter: new ArrayBuffer(16), length: 1 }; | ||
var key = { | ||
algorithm: { name: "AES-CTR" }, | ||
type: "secret", | ||
usages: ["encrypt"] | ||
}; | ||
encrypt("encrypt", alg, key, done, false); | ||
}); | ||
it("counter - wrong type", function (done) { | ||
var alg = { name: "AES-CTR", counter: "1234567890123456", length: 1 }; | ||
var key = { | ||
algorithm: { name: "AES-CTR" }, | ||
type: "secret", | ||
usages: ["encrypt"] | ||
}; | ||
encrypt("encrypt", alg, key, done, true); | ||
}); | ||
it("counter - size is not 16", function (done) { | ||
var alg = { name: "AES-CTR", counter: new ArrayBuffer(15), length: 1 }; | ||
var key = { | ||
algorithm: { name: "AES-CTR" }, | ||
type: "secret", | ||
usages: ["encrypt"] | ||
}; | ||
encrypt("encrypt", alg, key, done, true); | ||
}); | ||
}) | ||
context("AES-CTR decrypt", () => { | ||
it("counter - ArrayBufferView", function (done) { | ||
var alg = { name: "AES-CTR", counter: new Uint8Array(16), length: 1 }; | ||
var key = { | ||
algorithm: { name: "AES-CTR" }, | ||
type: "secret", | ||
usages: ["decrypt"] | ||
}; | ||
encrypt("decrypt", alg, key, done, false); | ||
}); | ||
it("counter - ArrayBuffer", function (done) { | ||
var alg = { name: "AES-CTR", counter: new ArrayBuffer(16), length: 1 }; | ||
var key = { | ||
algorithm: { name: "AES-CTR" }, | ||
type: "secret", | ||
usages: ["decrypt"] | ||
}; | ||
encrypt("decrypt", alg, key, done, false); | ||
}); | ||
it("wrong alg param, counter size 15", function (done) { | ||
var alg = { name: "AES-CTR", counter: new Uint8Array(15), length: 1 }; | ||
var key = { | ||
algorithm: { name: "AES-CTR" }, | ||
type: "secret", | ||
usages: ["decrypt"] | ||
}; | ||
encrypt("decrypt", alg, key, done, true); | ||
}); | ||
it("wrong alg param, length", function (done) { | ||
var alg = { name: "AES-CTR", counter: new Uint8Array(16), length: 256 }; | ||
var key = { | ||
algorithm: { name: "AES-CTR" }, | ||
type: "secret", | ||
usages: ["decrypt"] | ||
}; | ||
encrypt("decrypt", alg, key, done, true); | ||
}); | ||
}); | ||
it("AES-CBC decrypt, wrong key", function (done) { | ||
var alg = { name: "AES-CBC", iv: new Uint8Array(16) }; | ||
var key = { | ||
algorithm: { name: "AES-GCM" }, | ||
type: "secret", | ||
usages: ["decrypt"] | ||
}; | ||
encrypt("decrypt", alg, key, done, true); | ||
}); | ||
it("AES-CBC decrypt, wrong alg param, iv size 15", function (done) { | ||
var alg = { name: "AES-CBC", iv: new Uint8Array(15) }; | ||
var key = { | ||
algorithm: { name: "AES-CBC" }, | ||
type: "secret", | ||
usages: ["decrypt"] | ||
}; | ||
encrypt("decrypt", alg, key, done, true); | ||
}); | ||
it("AES-CBC decrypt, wrong key usage", function (done) { | ||
var alg = { name: "AES-CBC", iv: new Uint8Array(16) }; | ||
var key = { | ||
algorithm: { name: "AES-CBC" }, | ||
type: "secret", | ||
usages: ["unwrapKey"] | ||
}; | ||
encrypt("decrypt", alg, key, done, true); | ||
}); | ||
it("AES-CTR encrypt", function (done) { | ||
var alg = { name: "AES-CTR", counter: new Uint8Array(16), length: 1 }; | ||
var key = { | ||
algorithm: { name: "AES-CTR" }, | ||
type: "secret", | ||
usages: ["encrypt"] | ||
}; | ||
encrypt("encrypt", alg, key, done, false); | ||
}); | ||
it("AES-CTR decrypt", function (done) { | ||
var alg = { name: "AES-CTR", counter: new Uint8Array(16), length: 1 }; | ||
var key = { | ||
algorithm: { name: "AES-CTR" }, | ||
type: "secret", | ||
usages: ["decrypt"] | ||
}; | ||
encrypt("decrypt", alg, key, done, false); | ||
}); | ||
it("AES-CTR decrypt, wrong alg param, counter size 15", function (done) { | ||
var alg = { name: "AES-CTR", counter: new Uint8Array(15), length: 1 }; | ||
var key = { | ||
algorithm: { name: "AES-CTR" }, | ||
type: "secret", | ||
usages: ["decrypt"] | ||
}; | ||
encrypt("decrypt", alg, key, done, true); | ||
}); | ||
it("AES-CTR decrypt, wrong alg param, length", function (done) { | ||
var alg = { name: "AES-CTR", counter: new Uint8Array(16), length: 256 }; | ||
var key = { | ||
algorithm: { name: "AES-CTR" }, | ||
type: "secret", | ||
usages: ["decrypt"] | ||
}; | ||
encrypt("decrypt", alg, key, done, true); | ||
}); | ||
@@ -167,3 +241,3 @@ it("AES-CTR wrapKey", function (done) { | ||
}; | ||
wrapKey("jwk", alg, key, wkey, done, false); | ||
wrapKey("jwk", alg, wkey, key, done, false); | ||
}); | ||
@@ -228,2 +302,5 @@ | ||
}); | ||
it("valid with additionalData and iv ArrayBuffer", () => { | ||
AesGCM.checkAlgorithmParams({ name: "AES-GCM", additionalData: new ArrayBuffer(4), iv: new ArrayBuffer(12), tagLength: 128 }); | ||
}); | ||
it("valid without tagLength", () => { | ||
@@ -301,2 +378,14 @@ AesGCM.checkAlgorithmParams({ name: "AES-GCM", additionalData: new Uint8Array(4), iv: new Uint8Array(12) }); | ||
context("importKey", () => { | ||
// keyLength | ||
[128, 192, 256].forEach(keyLength => { | ||
// format | ||
["jwk", "raw"].forEach(format => { | ||
it(`length: ${keyLength} ${format}`, done => { | ||
importKey(format, new Uint8Array(3), {name: "AES-KW", length: keyLength}, ["wrapKey"], done, false); | ||
}); | ||
}) | ||
}); | ||
}); | ||
context("wrapKey", () => { | ||
@@ -312,4 +401,4 @@ | ||
{ name: "AES-KW" }, | ||
{ type: "private", algorithm: { name: "RSASSA-PKCS1-v1_5" }, extractable: true, usages: ["sign"] }, | ||
{ type: "secret", algorithm: { name: "AES-KW", length: keyLength }, extractable: true, usages: ["wrapKey", "unwrapKey"] }, | ||
{ type: "private", algorithm: { name: "RSASSA-PKCS1-v1_5" }, extractable: true, usages: ["sign"] }, | ||
done, | ||
@@ -316,0 +405,0 @@ false |
@@ -1,2 +0,2 @@ | ||
var Base64Url = require("../build/index").Base64Url; | ||
var Base64Url = require("../").Base64Url; | ||
var assert = require("assert"); | ||
@@ -3,0 +3,0 @@ |
@@ -1,2 +0,2 @@ | ||
var webcrypto = require("../build/index"); | ||
var webcrypto = require("../"); | ||
var assert = require("assert"); | ||
@@ -3,0 +3,0 @@ |
@@ -6,2 +6,3 @@ var helper = require("./helper"); | ||
var deriveKey = helper.deriveKey; | ||
var deriveBits = helper.deriveBits; | ||
var exportKey = helper.exportKey; | ||
@@ -24,3 +25,3 @@ var importKey = helper.importKey; | ||
["P-256", "P-384", "P-521", "Wrong curve"] | ||
["P-256", "P-384", "P-521", "Wrong curve", void 0, 123] | ||
.forEach(function (namedCurve, index) { | ||
@@ -33,3 +34,3 @@ | ||
}; | ||
generate(_alg, keyUsages[alg], done, index === 3) | ||
generate(_alg, keyUsages[alg], done, index >= 3) | ||
}); | ||
@@ -158,5 +159,46 @@ | ||
context("ECDH deriveBits", () => { | ||
it("optional length", (done) => { | ||
var _alg = { | ||
name: "ecdh", | ||
public: { | ||
type: "public", | ||
algorithm: { | ||
name: "ecdh" | ||
} | ||
} | ||
} | ||
var _key = { | ||
algorithm: { | ||
name: "ecdh" | ||
}, | ||
type: "private", | ||
usages: ["deriveBits"] | ||
} | ||
deriveBits(_alg, _key, void 0, done, false); | ||
}); | ||
it("length", (done) => { | ||
var _alg = { | ||
name: "ecdh", | ||
public: { | ||
type: "public", | ||
algorithm: { | ||
name: "ecdh" | ||
} | ||
} | ||
} | ||
var _key = { | ||
algorithm: { | ||
name: "ecdh" | ||
}, | ||
type: "private", | ||
usages: ["deriveBits"] | ||
} | ||
deriveBits(_alg, _key, 128, done, false); | ||
}); | ||
}); | ||
context("ECDH deriveKey", function () { | ||
["aes-cbc", "aes-ctr", "aes-gcm"] | ||
["aes-cbc", "aes-ctr", "aes-gcm", "aes-kw"] | ||
.forEach(function (aesAlg) { | ||
@@ -185,3 +227,3 @@ | ||
} | ||
deriveKey(_alg, _key, derAlg, ["encrypt"], done, false); | ||
deriveKey(_alg, _key, derAlg, ["wrapKey"], done, false); | ||
}); | ||
@@ -215,2 +257,20 @@ | ||
it("empty param public", function (done) { | ||
var _alg = { | ||
name: "ecdh", | ||
} | ||
var _key = { | ||
algorithm: { | ||
name: "ecdh" | ||
}, | ||
type: "private", | ||
usages: ["deriveKey"] | ||
} | ||
var derAlg = { | ||
name: "aes-ctr", | ||
length: 128 | ||
} | ||
deriveKey(_alg, _key, derAlg, ["encrypt"], done, true); | ||
}); | ||
it("wrong derived key type", function (done) { | ||
@@ -348,3 +408,3 @@ var _alg = { | ||
}); | ||
// Test export of private keys | ||
@@ -378,3 +438,3 @@ ["jwk", "pkcs8", "spki", "raw"].forEach(function (format) { | ||
}); // import/export ECDSA | ||
context("import/export ECDH", function () { | ||
@@ -381,0 +441,0 @@ |
@@ -1,2 +0,2 @@ | ||
var subtle = new (require("../build/index").SubtleCrypto); | ||
var subtle = new (require("../").SubtleCrypto); | ||
var assert = require("assert"); | ||
@@ -64,3 +64,3 @@ | ||
function wrapKey(format, alg, key, wkey, done, error) { | ||
checkPromise(subtle.wrapKey(format, wkey, key, alg), done, error); | ||
checkPromise(subtle.wrapKey(format, key, wkey, alg), done, error); | ||
} | ||
@@ -67,0 +67,0 @@ module.exports.wrapKey = wrapKey; |
@@ -1,2 +0,2 @@ | ||
var webcrypto = require("../build/index"); | ||
var webcrypto = require("../"); | ||
var assert = require("assert"); | ||
@@ -3,0 +3,0 @@ |
@@ -1,2 +0,2 @@ | ||
var webcrypto = require("../build/index"); | ||
var webcrypto = require("../"); | ||
var assert = require("assert"); | ||
@@ -3,0 +3,0 @@ |
219
test/rsa.js
@@ -6,2 +6,8 @@ var helper = require("./helper"); | ||
var verify = helper.verify; | ||
var generate = helper.generate; | ||
var importKey = helper.importKey; | ||
var exportKey = helper.exportKey; | ||
var encrypt = helper.encrypt; | ||
var wrapKey = helper.wrapKey; | ||
var unwrapKey = helper.unwrapKey; | ||
@@ -12,20 +18,20 @@ describe("Subtle", function () { | ||
context("generateKey", function (done) { | ||
function generateKey(alg, keyUsages, done, error) { | ||
var _error = true; | ||
subtle.generateKey(alg, false, keyUsages) | ||
.then(function (res) { | ||
assert.equal(res, null); | ||
_error = false; | ||
}) | ||
.catch(function (err) { | ||
assert.equal(!!err, error, err.message); | ||
}) | ||
.then(function () { | ||
assert.equal(_error, error, "Must be error"); | ||
}) | ||
.then(done, done); | ||
} | ||
it("with wrong publicExponent type ArrayBuffer", function (done) { | ||
generate({ | ||
name: "rsassa-pkcs1-v1_5", | ||
hash: "SHA-256", | ||
modulusLength: 1024, | ||
publicExponent: new ArrayBuffer(3), | ||
}, ["sign"], done, true); | ||
}); | ||
it("without hash param", function (done) { | ||
generate({ | ||
name: "rsassa-pkcs1-v1_5", | ||
modulusLength: 1024, | ||
publicExponent: new Uint8Array([3]), | ||
}, ["sign"], done, true); | ||
}); | ||
it("RSA generate RSASSA 1024 [3] sign", function (done) { | ||
generateKey({ | ||
generate({ | ||
name: "rsassa-pkcs1-v1_5", | ||
@@ -38,3 +44,3 @@ modulusLength: 1024, | ||
it("RSA generate RSASSA 2048 [1, 0, 1] verify", function (done) { | ||
generateKey({ | ||
generate({ | ||
name: "rsassa-pkcs1-v1_5", | ||
@@ -47,3 +53,3 @@ modulusLength: 2048, | ||
it("RSA generate RSASSA 4048 [1, 0, 1] sign,verify(upper case)", function (done) { | ||
generateKey({ | ||
generate({ | ||
name: "rsassa-pkcs1-v1_5", | ||
@@ -56,3 +62,3 @@ modulusLength: 4096, | ||
it("RSA generate RSASSA empty modulusLength", function (done) { | ||
generateKey({ | ||
generate({ | ||
name: "rsassa-pkcs1-v1_5", | ||
@@ -64,3 +70,3 @@ publicExponent: new Uint8Array([1, 0, 1]), | ||
it("RSA generate RSASSA wrong modulusLength", function (done) { | ||
generateKey({ | ||
generate({ | ||
name: "rsassa-pkcs1-v1_5", | ||
@@ -73,3 +79,3 @@ modulusLength: 10, | ||
it("RSA generate RSASSA empty publicExponent", function (done) { | ||
generateKey({ | ||
generate({ | ||
name: "rsassa-pkcs1-v1_5", | ||
@@ -81,3 +87,3 @@ modulusLength: 1024, | ||
it("RSA generate RSASSA wrong publicExponent", function (done) { | ||
generateKey({ | ||
generate({ | ||
name: "rsassa-pkcs1-v1_5", | ||
@@ -90,3 +96,3 @@ modulusLength: 1024, | ||
it("RSA generate RSASSA empty hash", function (done) { | ||
generateKey({ | ||
generate({ | ||
name: "rsassa-pkcs1-v1_5", | ||
@@ -98,3 +104,3 @@ modulusLength: 1024, | ||
it("RSA generate RSASSA wrong keyUsage", function (done) { | ||
generateKey({ | ||
generate({ | ||
name: "rsassa-pkcs1-v1_5", | ||
@@ -107,3 +113,3 @@ modulusLength: 1024, | ||
it("RSA generate PSS sign,verify", function (done) { | ||
generateKey({ | ||
generate({ | ||
name: "rsa-pss", | ||
@@ -116,3 +122,3 @@ modulusLength: 1024, | ||
it("RSA generate OAEP decrypt,encrypt,wrapKey,unwrapKey", function (done) { | ||
generateKey({ | ||
generate({ | ||
name: "rsa-oaep", | ||
@@ -139,2 +145,13 @@ modulusLength: 1024, | ||
}); | ||
it("RsaSSA verify", done => { | ||
var key = { | ||
algorithm: { | ||
name: "RSASSA-PKCS1-v1_5", | ||
hash: { name: "sha-1" } | ||
}, | ||
usages: ["verify"], | ||
type: "public" | ||
}; | ||
verify({ name: "RSASSA-PKCS1-v1_5" }, key, done, false); | ||
}); | ||
it("RsaSSA wrong type", function (done) { | ||
@@ -182,3 +199,3 @@ var key = { | ||
}; | ||
sign({ name: "RSA-PSS" }, key, done, false); | ||
sign({ name: "RSA-PSS", saltLength: 8 }, key, done, false); | ||
}); | ||
@@ -194,4 +211,15 @@ it("RsaPSS verify", function (done) { | ||
}; | ||
verify({ name: "RSA-PSS" }, key, done, false); | ||
verify({ name: "RSA-PSS", saltLength: 8 }, key, done, false); | ||
}); | ||
it("RsaPSS empty salt length", function (done) { | ||
var key = { | ||
algorithm: { | ||
name: "RSA-PSS", | ||
hash: { name: "sha-1" } | ||
}, | ||
usages: ["sign"], | ||
type: "private" | ||
}; | ||
sign({ name: "RSA-PSS" }, key, done, true); | ||
}); | ||
it("RsaPSS wrong salt length", function (done) { | ||
@@ -206,3 +234,3 @@ var key = { | ||
}; | ||
sign({ name: "RSA-PSS" }, key, done, false); | ||
sign({ name: "RSA-PSS", saltLength: 9 }, key, done, true); | ||
}); | ||
@@ -213,18 +241,2 @@ }) | ||
function encrypt(func, alg, key, done, error) { | ||
var _error = true; | ||
subtle[func](alg, key, new Uint8Array([1, 2, 3])) | ||
.then(function (res) { | ||
assert.equal(res, null); | ||
_error = false; | ||
}) | ||
.catch(function (err) { | ||
assert.equal(!!err, error, err.message); | ||
}) | ||
.then(function () { | ||
assert.equal(_error, error, "Must be error"); | ||
}) | ||
.then(done, done); | ||
} | ||
it("OAEP encrypt", function (done) { | ||
@@ -245,2 +257,32 @@ var key = { | ||
}); | ||
it("OAEP encrypt label ArrayBuffer", function (done) { | ||
var key = { | ||
algorithm: { | ||
name: "RSA-OAEP", | ||
hash: { name: "sha-1" } | ||
}, | ||
usages: ["encrypt"], | ||
type: "public" | ||
}; | ||
var alg = { | ||
name: "RSA-OAEP", | ||
label: new ArrayBuffer(6) | ||
} | ||
encrypt("encrypt", alg, key, done, false); | ||
}); | ||
it("OAEP encrypt label wrong type", function (done) { | ||
var key = { | ||
algorithm: { | ||
name: "RSA-OAEP", | ||
hash: { name: "sha-1" } | ||
}, | ||
usages: ["encrypt"], | ||
type: "public" | ||
}; | ||
var alg = { | ||
name: "RSA-OAEP", | ||
label: "label" | ||
} | ||
encrypt("encrypt", alg, key, done, true); | ||
}); | ||
it("OAEP decrypt", function (done) { | ||
@@ -308,34 +350,2 @@ var key = { | ||
function wrap(format, key, wKey, alg, done, error) { | ||
var _error = true; | ||
subtle.wrapKey(format, key, wKey, alg) | ||
.then(function (res) { | ||
assert.equal(res, null); | ||
_error = false; | ||
}) | ||
.catch(function (err) { | ||
assert.equal(!!err, error, err.message); | ||
}) | ||
.then(function () { | ||
assert.equal(_error, error, "Must be error"); | ||
}) | ||
.then(done, done); | ||
} | ||
function unwrap(format, wKey, wAlg, alg, usages, done, error) { | ||
var _error = true; | ||
subtle.unwrapKey(format, new Uint8Array([1]), wKey, wAlg, alg, true, usages) | ||
.then(function (res) { | ||
assert.equal(res, null); | ||
_error = false; | ||
}) | ||
.catch(function (err) { | ||
assert.equal(!!err, error, err.message); | ||
}) | ||
.then(function () { | ||
assert.equal(_error, error, "Must be error"); | ||
}) | ||
.then(done, done); | ||
} | ||
it("OAEP wrap AES raw", function (done) { | ||
@@ -355,3 +365,3 @@ var wkey = { | ||
} | ||
wrap("raw", key, wkey, alg, done, false); | ||
wrapKey("raw", alg, key, wkey, done, false); | ||
}); | ||
@@ -372,3 +382,3 @@ it("OAEP wrap AES jwk", function (done) { | ||
} | ||
wrap("jwk", key, wkey, alg, done, false); | ||
wrapKey("jwk", alg, key, wkey, done, false); | ||
}); | ||
@@ -389,3 +399,3 @@ it("OAEP wrap AES wrong format pkcs8", function (done) { | ||
} | ||
wrap("pkcs8", key, wkey, alg, done, true); | ||
wrapKey("pkcs8", alg, key, wkey, done, true); | ||
}); | ||
@@ -406,3 +416,3 @@ it("OAEP wrap AES wrong wrap key alg", function (done) { | ||
} | ||
wrap("raw", key, wkey, alg, done, true); | ||
wrapKey("raw", alg, key, wkey, done, true); | ||
}); | ||
@@ -421,3 +431,3 @@ it("OAEP unwrap AES", function (done) { | ||
} | ||
unwrap("raw", wkey, walg, alg, ["sign"], done, false); | ||
unwrapKey("raw", new ArrayBuffer(3), wkey, walg, alg, true, ["sign"], done, false); | ||
}); | ||
@@ -429,39 +439,5 @@ | ||
function exportKey(format, key, done, error) { | ||
var _error = true; | ||
subtle.exportKey(format, key) | ||
.then(function (res) { | ||
assert.equal(res, null); | ||
_error = false; | ||
}) | ||
.catch(function (err) { | ||
assert.equal(!!err, error, err.message); | ||
}) | ||
.then(function () { | ||
assert.equal(_error, error, "Must be error"); | ||
}) | ||
.then(done, done); | ||
} | ||
function importKey(format, keyData, alg, keyUsages, done, error) { | ||
var _error = true; | ||
subtle.importKey(format, keyData, alg, true, keyUsages) | ||
.then(function (res) { | ||
assert.equal(res, null); | ||
_error = false; | ||
}) | ||
.catch(function (err) { | ||
assert.equal(!!err, error, err.message); | ||
}) | ||
.then(function () { | ||
assert.equal(_error, error, "Must be error"); | ||
}) | ||
.then(done, done); | ||
} | ||
["RSASSA-PKCS1-v1_5", "RSA-PSS", "RSA-OAEP"].forEach((alg) => { | ||
var algs = ["RSASSA-PKCS1-v1_5", "RSA-PSS", "RSA-OAEP"]; | ||
for (var i in algs) { | ||
var alg = algs[i]; | ||
context(alg, function () { | ||
it("export jwk publicKey", function (done) { | ||
@@ -518,4 +494,11 @@ var key = { | ||
}) | ||
} | ||
}); | ||
it("import RSA without hash param", function (done) { | ||
var alg = { | ||
name: "RSASSA-PKCS1-v1_5", | ||
} | ||
importKey("pkcs8", new Uint8Array([1]), alg, ["sign"], done, true); | ||
}); | ||
it("import pkcs8 RSASSA-PKCS1-v1_5", function (done) { | ||
@@ -522,0 +505,0 @@ var alg = { |
"use strict"; | ||
var webcrypto = require("../build/index"); | ||
var webcrypto = require("../"); | ||
var assert = require("assert"); | ||
@@ -4,0 +4,0 @@ |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Install scripts
Supply chain riskInstall scripts are run when the package is installed. The majority of malware in npm is hidden in install scripts.
Found 1 instance in 1 package
219717
2
5090
0
9
17
66
1
- Removedtypescript@^2
- Removedtypescript@2.9.2(transitive)