Add AES-ECB
This commit is contained in:
parent
c8b24fc624
commit
967c9e03b9
|
@ -158,15 +158,15 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "12.7.4",
|
"version": "12.7.12",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.4.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.12.tgz",
|
||||||
"integrity": "sha512-W0+n1Y+gK/8G2P/piTkBBN38Qc5Q1ZSO6B5H3QmPCUewaiXOo2GCAWZ4ElZCcNhjJuBSUSLGFUJnmlCn5+nxOQ==",
|
"integrity": "sha512-KPYGmfD0/b1eXurQ59fXD1GBzhSQfz6/lKBxkaHX9dKTzjXbK68Zt7yGUxUsCS1jeTy/8aL+d9JEr+S54mpkWQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"acorn": {
|
"acorn": {
|
||||||
"version": "7.0.0",
|
"version": "7.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
|
||||||
"integrity": "sha512-PaF/MduxijYYt7unVGRuds1vBC9bFxbNf+VWqhOClfdgy7RlVkQqt610ig1/yxTgsDIfW1cWDel5EBbOy3jdtQ==",
|
"integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"ajv": {
|
"ajv": {
|
||||||
|
@ -445,9 +445,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"coveralls": {
|
"coveralls": {
|
||||||
"version": "3.0.6",
|
"version": "3.0.7",
|
||||||
"resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.7.tgz",
|
||||||
"integrity": "sha512-Pgh4v3gCI4T/9VijVrm8Ym5v0OgjvGLKj3zTUwkvsCiwqae/p6VLzpsFNjQS2i6ewV7ef+DjFJ5TSKxYt/mCrA==",
|
"integrity": "sha512-mUuH2MFOYB2oBaA4D4Ykqi9LaEYpMMlsiOMJOrv358yAjP6enPIk55fod2fNJ8AvwoYXStWQls37rA+s5e7boA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"growl": "~> 1.10.0",
|
"growl": "~> 1.10.0",
|
||||||
|
@ -500,14 +500,6 @@
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ms": "^2.1.1"
|
"ms": "^2.1.1"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"ms": {
|
|
||||||
"version": "2.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
|
||||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
|
||||||
"dev": true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"decamelize": {
|
"decamelize": {
|
||||||
|
@ -581,17 +573,21 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"es-abstract": {
|
"es-abstract": {
|
||||||
"version": "1.13.0",
|
"version": "1.15.0",
|
||||||
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz",
|
||||||
"integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
|
"integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"es-to-primitive": "^1.2.0",
|
"es-to-primitive": "^1.2.0",
|
||||||
"function-bind": "^1.1.1",
|
"function-bind": "^1.1.1",
|
||||||
"has": "^1.0.3",
|
"has": "^1.0.3",
|
||||||
|
"has-symbols": "^1.0.0",
|
||||||
"is-callable": "^1.1.4",
|
"is-callable": "^1.1.4",
|
||||||
"is-regex": "^1.0.4",
|
"is-regex": "^1.0.4",
|
||||||
"object-keys": "^1.0.12"
|
"object-inspect": "^1.6.0",
|
||||||
|
"object-keys": "^1.1.1",
|
||||||
|
"string.prototype.trimleft": "^2.1.0",
|
||||||
|
"string.prototype.trimright": "^2.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"es-to-primitive": {
|
"es-to-primitive": {
|
||||||
|
@ -701,14 +697,6 @@
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"is-buffer": "~2.0.3"
|
"is-buffer": "~2.0.3"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"is-buffer": {
|
|
||||||
"version": "2.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
|
|
||||||
"integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==",
|
|
||||||
"dev": true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"foreground-child": {
|
"foreground-child": {
|
||||||
|
@ -819,9 +807,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"handlebars": {
|
"handlebars": {
|
||||||
"version": "4.1.2",
|
"version": "4.4.3",
|
||||||
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.3.tgz",
|
||||||
"integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==",
|
"integrity": "sha512-B0W4A2U1ww3q7VVthTKfh+epHx+q4mCt6iK+zEAzbMBpWQAwxCeKxEGpj/1oQTpzPXDNSOG7hmG14TsISH50yw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"neo-async": "^2.6.0",
|
"neo-async": "^2.6.0",
|
||||||
|
@ -941,6 +929,12 @@
|
||||||
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
|
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"is-buffer": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"is-callable": {
|
"is-callable": {
|
||||||
"version": "1.1.4",
|
"version": "1.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
|
||||||
|
@ -1359,9 +1353,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"mocha": {
|
"mocha": {
|
||||||
"version": "6.2.0",
|
"version": "6.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.1.tgz",
|
||||||
"integrity": "sha512-qwfFgY+7EKAAUAdv7VYMZQknI7YJSGesxHyhn6qD52DV8UcSZs5XwCifcZGMVIE4a5fbmhvbotxC0DLQ0oKohQ==",
|
"integrity": "sha512-VCcWkLHwk79NYQc8cxhkmI8IigTIhsCwZ6RTxQsqK6go4UvEhzJkYuHm8B2YtlSxcYq2fY+ucr4JBwoD6ci80A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-colors": "3.2.3",
|
"ansi-colors": "3.2.3",
|
||||||
|
@ -1384,18 +1378,94 @@
|
||||||
"supports-color": "6.0.0",
|
"supports-color": "6.0.0",
|
||||||
"which": "1.3.1",
|
"which": "1.3.1",
|
||||||
"wide-align": "1.1.3",
|
"wide-align": "1.1.3",
|
||||||
"yargs": "13.2.2",
|
"yargs": "13.3.0",
|
||||||
"yargs-parser": "13.0.0",
|
"yargs-parser": "13.1.1",
|
||||||
"yargs-unparser": "1.5.0"
|
"yargs-unparser": "1.6.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"ansi-regex": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
|
"cliui": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"string-width": "^3.1.0",
|
||||||
|
"strip-ansi": "^5.2.0",
|
||||||
|
"wrap-ansi": "^5.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"string-width": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"emoji-regex": "^7.0.1",
|
||||||
|
"is-fullwidth-code-point": "^2.0.0",
|
||||||
|
"strip-ansi": "^5.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"strip-ansi": {
|
||||||
|
"version": "5.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
|
||||||
|
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ansi-regex": "^4.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"wrap-ansi": {
|
||||||
|
"version": "5.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
|
||||||
|
"integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ansi-styles": "^3.2.0",
|
||||||
|
"string-width": "^3.0.0",
|
||||||
|
"strip-ansi": "^5.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"yargs": {
|
||||||
|
"version": "13.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
|
||||||
|
"integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"cliui": "^5.0.0",
|
||||||
|
"find-up": "^3.0.0",
|
||||||
|
"get-caller-file": "^2.0.1",
|
||||||
|
"require-directory": "^2.1.1",
|
||||||
|
"require-main-filename": "^2.0.0",
|
||||||
|
"set-blocking": "^2.0.0",
|
||||||
|
"string-width": "^3.0.0",
|
||||||
|
"which-module": "^2.0.0",
|
||||||
|
"y18n": "^4.0.0",
|
||||||
|
"yargs-parser": "^13.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"yargs-parser": {
|
||||||
|
"version": "13.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
|
||||||
|
"integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"camelcase": "^5.0.0",
|
||||||
|
"decamelize": "^1.2.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"ms": {
|
"ms": {
|
||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
|
||||||
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
|
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"neo-async": {
|
"neo-async": {
|
||||||
"version": "2.6.1",
|
"version": "2.6.1",
|
||||||
|
@ -1491,6 +1561,12 @@
|
||||||
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
|
"integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"object-inspect": {
|
||||||
|
"version": "1.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.6.0.tgz",
|
||||||
|
"integrity": "sha512-GJzfBZ6DgDAmnuaM3104jR4s1Myxr3Y3zfIyN4z3UdqN69oSRacNK8UhnobDdC+7J2AHCjGwxQubNJfE70SXXQ==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"object-keys": {
|
"object-keys": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
|
||||||
|
@ -1696,9 +1772,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"psl": {
|
"psl": {
|
||||||
"version": "1.3.0",
|
"version": "1.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
|
||||||
"integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==",
|
"integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"pump": {
|
"pump": {
|
||||||
|
@ -1839,14 +1915,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rollup": {
|
"rollup": {
|
||||||
"version": "1.20.3",
|
"version": "1.23.1",
|
||||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-1.20.3.tgz",
|
"resolved": "https://registry.npmjs.org/rollup/-/rollup-1.23.1.tgz",
|
||||||
"integrity": "sha512-/OMCkY0c6E8tleeVm4vQVDz24CkVgvueK3r8zTYu2AQNpjrcaPwO9hE+pWj5LTFrvvkaxt4MYIp2zha4y0lRvg==",
|
"integrity": "sha512-95C1GZQpr/NIA0kMUQmSjuMDQ45oZfPgDBcN0yZwBG7Kee//m7H68vgIyg+SPuyrTZ5PrXfyLK80OzXeKG5dAA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/estree": "0.0.39",
|
"@types/estree": "*",
|
||||||
"@types/node": "^12.7.2",
|
"@types/node": "*",
|
||||||
"acorn": "^7.0.0"
|
"acorn": "^7.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rollup-plugin-typescript": {
|
"rollup-plugin-typescript": {
|
||||||
|
@ -2016,6 +2092,26 @@
|
||||||
"strip-ansi": "^4.0.0"
|
"strip-ansi": "^4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"string.prototype.trimleft": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"define-properties": "^1.1.3",
|
||||||
|
"function-bind": "^1.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"string.prototype.trimright": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"define-properties": "^1.1.3",
|
||||||
|
"function-bind": "^1.1.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"strip-ansi": {
|
"strip-ansi": {
|
||||||
"version": "4.0.0",
|
"version": "4.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
|
||||||
|
@ -2095,9 +2191,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"ts-node": {
|
"ts-node": {
|
||||||
"version": "8.3.0",
|
"version": "8.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.4.1.tgz",
|
||||||
"integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==",
|
"integrity": "sha512-5LpRN+mTiCs7lI5EtbXmF/HfMeCjzt7DH9CZwtkr6SywStrNQC723wG+aOWFiLNn7zT3kD/RnFqi3ZUfr4l5Qw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"arg": "^4.1.0",
|
"arg": "^4.1.0",
|
||||||
|
@ -2121,16 +2217,16 @@
|
||||||
"integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ=="
|
"integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ=="
|
||||||
},
|
},
|
||||||
"tslint": {
|
"tslint": {
|
||||||
"version": "5.19.0",
|
"version": "5.20.0",
|
||||||
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.19.0.tgz",
|
"resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.0.tgz",
|
||||||
"integrity": "sha512-1LwwtBxfRJZnUvoS9c0uj8XQtAnyhWr9KlNvDIdB+oXyT+VpsOAaEhEgKi1HrZ8rq0ki/AAnbGSv4KM6/AfVZw==",
|
"integrity": "sha512-2vqIvkMHbnx8acMogAERQ/IuINOq6DFqgF8/VDvhEkBqQh/x6SP0Y+OHnKth9/ZcHQSroOZwUQSN18v8KKF0/g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/code-frame": "^7.0.0",
|
"@babel/code-frame": "^7.0.0",
|
||||||
"builtin-modules": "^1.1.1",
|
"builtin-modules": "^1.1.1",
|
||||||
"chalk": "^2.3.0",
|
"chalk": "^2.3.0",
|
||||||
"commander": "^2.12.1",
|
"commander": "^2.12.1",
|
||||||
"diff": "^3.2.0",
|
"diff": "^4.0.1",
|
||||||
"glob": "^7.1.1",
|
"glob": "^7.1.1",
|
||||||
"js-yaml": "^3.13.1",
|
"js-yaml": "^3.13.1",
|
||||||
"minimatch": "^3.0.4",
|
"minimatch": "^3.0.4",
|
||||||
|
@ -2139,6 +2235,14 @@
|
||||||
"semver": "^5.3.0",
|
"semver": "^5.3.0",
|
||||||
"tslib": "^1.8.0",
|
"tslib": "^1.8.0",
|
||||||
"tsutils": "^2.29.0"
|
"tsutils": "^2.29.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"diff": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
|
||||||
|
"integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tsutils": {
|
"tsutils": {
|
||||||
|
@ -2166,19 +2270,19 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"typescript": {
|
"typescript": {
|
||||||
"version": "3.6.2",
|
"version": "3.6.4",
|
||||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.6.4.tgz",
|
||||||
"integrity": "sha512-lmQ4L+J6mnu3xweP8+rOrUwzmN+MRAj7TgtJtDaXE5PMyX2kCrklhg3rvOsOIfNeAWMQWO2F1GPc1kMD2vLAfw==",
|
"integrity": "sha512-unoCll1+l+YK4i4F8f22TaNVPRHcD9PA3yCuZ8g5e0qGqlVlJ/8FSateOLLSagn+Yg5+ZwuPkL8LFUc0Jcvksg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"uglify-js": {
|
"uglify-js": {
|
||||||
"version": "3.6.0",
|
"version": "3.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.1.tgz",
|
||||||
"integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==",
|
"integrity": "sha512-+dSJLJpXBb6oMHP+Yvw8hUgElz4gLTh82XuX68QiJVTXaE5ibl6buzhNkQdYhBlIhozWOC9ge16wyRmjG4TwVQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"commander": "~2.20.0",
|
"commander": "2.20.0",
|
||||||
"source-map": "~0.6.1"
|
"source-map": "~0.6.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
@ -2400,52 +2504,86 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"yargs-unparser": {
|
"yargs-unparser": {
|
||||||
"version": "1.5.0",
|
"version": "1.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz",
|
||||||
"integrity": "sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw==",
|
"integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"flat": "^4.1.0",
|
"flat": "^4.1.0",
|
||||||
"lodash": "^4.17.11",
|
"lodash": "^4.17.15",
|
||||||
"yargs": "^12.0.5"
|
"yargs": "^13.3.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"get-caller-file": {
|
"ansi-regex": {
|
||||||
"version": "1.0.3",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
|
||||||
"integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
|
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"require-main-filename": {
|
"cliui": {
|
||||||
"version": "1.0.1",
|
"version": "5.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
|
||||||
"integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=",
|
"integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"yargs": {
|
|
||||||
"version": "12.0.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz",
|
|
||||||
"integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==",
|
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"cliui": "^4.0.0",
|
"string-width": "^3.1.0",
|
||||||
"decamelize": "^1.2.0",
|
"strip-ansi": "^5.2.0",
|
||||||
|
"wrap-ansi": "^5.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"string-width": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"emoji-regex": "^7.0.1",
|
||||||
|
"is-fullwidth-code-point": "^2.0.0",
|
||||||
|
"strip-ansi": "^5.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"strip-ansi": {
|
||||||
|
"version": "5.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
|
||||||
|
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ansi-regex": "^4.1.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"wrap-ansi": {
|
||||||
|
"version": "5.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
|
||||||
|
"integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"ansi-styles": "^3.2.0",
|
||||||
|
"string-width": "^3.0.0",
|
||||||
|
"strip-ansi": "^5.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"yargs": {
|
||||||
|
"version": "13.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz",
|
||||||
|
"integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"cliui": "^5.0.0",
|
||||||
"find-up": "^3.0.0",
|
"find-up": "^3.0.0",
|
||||||
"get-caller-file": "^1.0.1",
|
"get-caller-file": "^2.0.1",
|
||||||
"os-locale": "^3.0.0",
|
|
||||||
"require-directory": "^2.1.1",
|
"require-directory": "^2.1.1",
|
||||||
"require-main-filename": "^1.0.1",
|
"require-main-filename": "^2.0.0",
|
||||||
"set-blocking": "^2.0.0",
|
"set-blocking": "^2.0.0",
|
||||||
"string-width": "^2.0.0",
|
"string-width": "^3.0.0",
|
||||||
"which-module": "^2.0.0",
|
"which-module": "^2.0.0",
|
||||||
"y18n": "^3.2.1 || ^4.0.0",
|
"y18n": "^4.0.0",
|
||||||
"yargs-parser": "^11.1.1"
|
"yargs-parser": "^13.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"yargs-parser": {
|
"yargs-parser": {
|
||||||
"version": "11.1.1",
|
"version": "13.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
|
||||||
"integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==",
|
"integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"camelcase": "^5.0.0",
|
"camelcase": "^5.0.0",
|
||||||
|
|
14
package.json
14
package.json
|
@ -42,15 +42,15 @@
|
||||||
"banner": "// Copyright (c) 2019, Peculiar Ventures, All rights reserved.",
|
"banner": "// Copyright (c) 2019, Peculiar Ventures, All rights reserved.",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/mocha": "^5.2.7",
|
"@types/mocha": "^5.2.7",
|
||||||
"@types/node": "^12.7.4",
|
"@types/node": "^12.7.12",
|
||||||
"coveralls": "^3.0.6",
|
"coveralls": "^3.0.7",
|
||||||
"mocha": "^6.2.0",
|
"mocha": "^6.2.1",
|
||||||
"nyc": "^14.1.1",
|
"nyc": "^14.1.1",
|
||||||
"rollup": "^1.20.3",
|
"rollup": "^1.23.1",
|
||||||
"rollup-plugin-typescript": "^1.0.1",
|
"rollup-plugin-typescript": "^1.0.1",
|
||||||
"ts-node": "^8.3.0",
|
"ts-node": "^8.4.1",
|
||||||
"tslint": "^5.19.0",
|
"tslint": "^5.20.0",
|
||||||
"typescript": "^3.6.2"
|
"typescript": "^3.6.4"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@peculiar/asn1-schema": "^1.0.3",
|
"@peculiar/asn1-schema": "^1.0.3",
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
import * as core from "webcrypto-core";
|
||||||
|
import { AesCrypto } from "./crypto";
|
||||||
|
import { AesCryptoKey } from "./key";
|
||||||
|
|
||||||
|
export class AesEcbProvider extends core.AesEcbProvider {
|
||||||
|
|
||||||
|
public async onGenerateKey(algorithm: AesKeyGenParams, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey> {
|
||||||
|
const key = await AesCrypto.generateKey(
|
||||||
|
{
|
||||||
|
name: this.name,
|
||||||
|
length: algorithm.length,
|
||||||
|
},
|
||||||
|
extractable,
|
||||||
|
keyUsages);
|
||||||
|
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async onEncrypt(algorithm: Algorithm, key: AesCryptoKey, data: ArrayBuffer): Promise<ArrayBuffer> {
|
||||||
|
return AesCrypto.encrypt(algorithm, key, new Uint8Array(data));
|
||||||
|
}
|
||||||
|
|
||||||
|
public async onDecrypt(algorithm: Algorithm, key: AesCryptoKey, data: ArrayBuffer): Promise<ArrayBuffer> {
|
||||||
|
return AesCrypto.decrypt(algorithm, key, new Uint8Array(data));
|
||||||
|
}
|
||||||
|
|
||||||
|
public async onExportKey(format: KeyFormat, key: AesCryptoKey): Promise<JsonWebKey | ArrayBuffer> {
|
||||||
|
return AesCrypto.exportKey(format, key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async onImportKey(format: KeyFormat, keyData: JsonWebKey | ArrayBuffer, algorithm: Algorithm, extractable: boolean, keyUsages: KeyUsage[]): Promise<CryptoKey> {
|
||||||
|
return AesCrypto.importKey(format, keyData, { name: algorithm.name }, extractable, keyUsages);
|
||||||
|
}
|
||||||
|
|
||||||
|
public checkCryptoKey(key: CryptoKey, keyUsage?: KeyUsage) {
|
||||||
|
super.checkCryptoKey(key, keyUsage);
|
||||||
|
if (!(key instanceof AesCryptoKey)) {
|
||||||
|
throw new TypeError("key: Is not a AesCryptoKey");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -78,6 +78,8 @@ export class AesCrypto {
|
||||||
return this.encryptAesGCM(algorithm as AesGcmParams, key, Buffer.from(data));
|
return this.encryptAesGCM(algorithm as AesGcmParams, key, Buffer.from(data));
|
||||||
case "AES-KW":
|
case "AES-KW":
|
||||||
return this.encryptAesKW(algorithm as AesKeyAlgorithm, key, Buffer.from(data));
|
return this.encryptAesKW(algorithm as AesKeyAlgorithm, key, Buffer.from(data));
|
||||||
|
case "AES-ECB":
|
||||||
|
return this.encryptAesECB(algorithm as AesKeyAlgorithm, key, Buffer.from(data));
|
||||||
default:
|
default:
|
||||||
throw new core.OperationError("algorithm: Is not recognized");
|
throw new core.OperationError("algorithm: Is not recognized");
|
||||||
}
|
}
|
||||||
|
@ -97,6 +99,8 @@ export class AesCrypto {
|
||||||
return this.decryptAesGCM(algorithm as AesGcmParams, key, Buffer.from(data));
|
return this.decryptAesGCM(algorithm as AesGcmParams, key, Buffer.from(data));
|
||||||
case "AES-KW":
|
case "AES-KW":
|
||||||
return this.decryptAesKW(algorithm as AesKeyAlgorithm, key, Buffer.from(data));
|
return this.decryptAesKW(algorithm as AesKeyAlgorithm, key, Buffer.from(data));
|
||||||
|
case "AES-ECB":
|
||||||
|
return this.decryptAesECB(algorithm as AesKeyAlgorithm, key, Buffer.from(data));
|
||||||
default:
|
default:
|
||||||
throw new core.OperationError("algorithm: Is not recognized");
|
throw new core.OperationError("algorithm: Is not recognized");
|
||||||
}
|
}
|
||||||
|
@ -172,4 +176,19 @@ export class AesCrypto {
|
||||||
dec = Buffer.concat([dec, decipher.final()]);
|
dec = Buffer.concat([dec, decipher.final()]);
|
||||||
return new Uint8Array(dec).buffer;
|
return new Uint8Array(dec).buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async encryptAesECB(algorithm: Algorithm, key: AesCryptoKey, data: Buffer) {
|
||||||
|
const cipher = crypto.createCipheriv(`aes-${key.algorithm.length}-ecb`, key.data, new Uint8Array(0));
|
||||||
|
let enc = cipher.update(data);
|
||||||
|
enc = Buffer.concat([enc, cipher.final()]);
|
||||||
|
const res = new Uint8Array(enc).buffer;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static async decryptAesECB(algorithm: Algorithm, key: AesCryptoKey, data: Buffer) {
|
||||||
|
const decipher = crypto.createDecipheriv(`aes-${key.algorithm.length}-ecb`, key.data, new Uint8Array(0));
|
||||||
|
let dec = decipher.update(data);
|
||||||
|
dec = Buffer.concat([dec, decipher.final()]);
|
||||||
|
return new Uint8Array(dec).buffer;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,3 +4,4 @@ export * from "./aes_cmac";
|
||||||
export * from "./aes_ctr";
|
export * from "./aes_ctr";
|
||||||
export * from "./aes_gcm";
|
export * from "./aes_gcm";
|
||||||
export * from "./aes_kw";
|
export * from "./aes_kw";
|
||||||
|
export * from "./aes_ecb";
|
||||||
|
|
|
@ -22,6 +22,8 @@ export class AesCryptoKey extends SymmetricKey {
|
||||||
return `A${this.algorithm.length}KW`;
|
return `A${this.algorithm.length}KW`;
|
||||||
case "AES-CMAC":
|
case "AES-CMAC":
|
||||||
return `A${this.algorithm.length}CMAC`;
|
return `A${this.algorithm.length}CMAC`;
|
||||||
|
case "AES-ECB":
|
||||||
|
return `A${this.algorithm.length}ECB`;
|
||||||
default:
|
default:
|
||||||
throw new core.AlgorithmError("Unsupported algorithm name");
|
throw new core.AlgorithmError("Unsupported algorithm name");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import * as core from "webcrypto-core";
|
import * as core from "webcrypto-core";
|
||||||
import {
|
import {
|
||||||
AesCbcProvider, AesCmacProvider, AesCtrProvider, AesGcmProvider,
|
AesCbcProvider, AesCmacProvider, AesCtrProvider, AesEcbProvider, AesGcmProvider, AesKwProvider,
|
||||||
AesKwProvider, DesCbcProvider,
|
DesCbcProvider,
|
||||||
DesEde3CbcProvider, EcdhProvider,
|
DesEde3CbcProvider, EcdhProvider,
|
||||||
EcdsaProvider, HkdfProvider,
|
EcdsaProvider, HkdfProvider,
|
||||||
HmacProvider,
|
HmacProvider,
|
||||||
|
@ -20,6 +20,7 @@ export class SubtleCrypto extends core.SubtleCrypto {
|
||||||
this.providers.set(new AesGcmProvider());
|
this.providers.set(new AesGcmProvider());
|
||||||
this.providers.set(new AesCmacProvider());
|
this.providers.set(new AesCmacProvider());
|
||||||
this.providers.set(new AesKwProvider());
|
this.providers.set(new AesKwProvider());
|
||||||
|
this.providers.set(new AesEcbProvider());
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
//#region DES
|
//#region DES
|
||||||
|
|
181
test/aes.ts
181
test/aes.ts
|
@ -817,6 +817,187 @@ context("AES", () => {
|
||||||
},
|
},
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
|
//#region AES-ECB
|
||||||
|
{
|
||||||
|
name: "AES-128-ECB",
|
||||||
|
actions: {
|
||||||
|
generateKey: [
|
||||||
|
{
|
||||||
|
algorithm: { name: "AES-ECB", length: 128 } as AesKeyGenParams,
|
||||||
|
extractable: true,
|
||||||
|
keyUsages: ["encrypt", "decrypt"] as KeyUsage[],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
encrypt: [
|
||||||
|
{
|
||||||
|
algorithm: {
|
||||||
|
name: "AES-ECB",
|
||||||
|
} as Algorithm,
|
||||||
|
data: Convert.FromUtf8String("test message"),
|
||||||
|
encData: Convert.FromHex("c6ec2f91a9f48e10062ae41e86cb299f"),
|
||||||
|
key: {
|
||||||
|
format: "raw" as KeyFormat,
|
||||||
|
data: Convert.FromUtf8String("1234567890abcdef"),
|
||||||
|
algorithm: { name: "AES-ECB" },
|
||||||
|
extractable: true,
|
||||||
|
keyUsages: ["encrypt", "decrypt"] as KeyUsage[],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
import: [
|
||||||
|
{
|
||||||
|
name: "raw",
|
||||||
|
format: "raw" as KeyFormat,
|
||||||
|
data: Convert.FromUtf8String("1234567890abcdef"),
|
||||||
|
algorithm: "AES-ECB",
|
||||||
|
extractable: true,
|
||||||
|
keyUsages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"] as KeyUsage[],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "jwk",
|
||||||
|
format: "jwk" as KeyFormat,
|
||||||
|
data: {
|
||||||
|
kty: "oct",
|
||||||
|
alg: "A128ECB",
|
||||||
|
k: "MTIzNDU2Nzg5MGFiY2RlZg",
|
||||||
|
ext: true,
|
||||||
|
key_ops: ["encrypt", "decrypt", "wrapKey", "unwrapKey"],
|
||||||
|
},
|
||||||
|
algorithm: "AES-ECB",
|
||||||
|
extractable: true,
|
||||||
|
keyUsages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"] as KeyUsage[],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
wrapKey: [
|
||||||
|
{
|
||||||
|
key: {
|
||||||
|
format: "raw",
|
||||||
|
algorithm: "AES-ECB",
|
||||||
|
data: Convert.FromBase64("AQIDBAUGBwgJAAECAwQFBg"),
|
||||||
|
extractable: true,
|
||||||
|
keyUsages: ["wrapKey", "unwrapKey"],
|
||||||
|
},
|
||||||
|
wKey: {
|
||||||
|
format: "raw" as KeyFormat,
|
||||||
|
data: Convert.FromUtf8String("1234567890abcdef"),
|
||||||
|
algorithm: "AES-ECB",
|
||||||
|
extractable: true,
|
||||||
|
keyUsages: ["encrypt", "decrypt"],
|
||||||
|
},
|
||||||
|
algorithm: {
|
||||||
|
name: "AES-ECB",
|
||||||
|
} as Algorithm,
|
||||||
|
wrappedKey: Convert.FromHex("039ec14b350bd92efd02dac2c01cdee6ea9953cfbdc067f20f5f47bb4459da79"),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "AES-192-ECB",
|
||||||
|
actions: {
|
||||||
|
generateKey: [
|
||||||
|
{
|
||||||
|
algorithm: { name: "AES-ECB", length: 192 } as AesKeyGenParams,
|
||||||
|
extractable: true,
|
||||||
|
keyUsages: ["encrypt", "decrypt"] as KeyUsage[],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
encrypt: [
|
||||||
|
{
|
||||||
|
algorithm: {
|
||||||
|
name: "AES-ECB",
|
||||||
|
} as Algorithm,
|
||||||
|
data: Convert.FromUtf8String("test message"),
|
||||||
|
encData: Convert.FromHex("8c9f297827ad6aaa9e7501e79fb45ca5"),
|
||||||
|
key: {
|
||||||
|
format: "raw" as KeyFormat,
|
||||||
|
data: Convert.FromUtf8String("1234567890abcdef12345678"),
|
||||||
|
algorithm: { name: "AES-ECB" },
|
||||||
|
extractable: true,
|
||||||
|
keyUsages: ["encrypt", "decrypt"] as KeyUsage[],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
import: [
|
||||||
|
{
|
||||||
|
name: "raw",
|
||||||
|
format: "raw" as KeyFormat,
|
||||||
|
data: Convert.FromUtf8String("1234567890abcdef12345678"),
|
||||||
|
algorithm: "AES-ECB",
|
||||||
|
extractable: true,
|
||||||
|
keyUsages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"] as KeyUsage[],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "jwk",
|
||||||
|
format: "jwk",
|
||||||
|
data: {
|
||||||
|
kty: "oct",
|
||||||
|
alg: "A192ECB",
|
||||||
|
k: "MTIzNDU2Nzg5MGFiY2RlZjEyMzQ1Njc4",
|
||||||
|
ext: true,
|
||||||
|
key_ops: ["encrypt", "decrypt", "wrapKey", "unwrapKey"],
|
||||||
|
},
|
||||||
|
algorithm: "AES-ECB",
|
||||||
|
extractable: true,
|
||||||
|
keyUsages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "AES-256-ECB",
|
||||||
|
actions: {
|
||||||
|
generateKey: [
|
||||||
|
{
|
||||||
|
algorithm: { name: "AES-ECB", length: 256 } as AesKeyGenParams,
|
||||||
|
extractable: true,
|
||||||
|
keyUsages: ["encrypt", "decrypt"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
encrypt: [
|
||||||
|
{
|
||||||
|
algorithm: {
|
||||||
|
name: "AES-ECB",
|
||||||
|
} as Algorithm,
|
||||||
|
data: Convert.FromUtf8String("test message"),
|
||||||
|
encData: Convert.FromHex("84ccef71a364b112eb2b3b8b99587a95"),
|
||||||
|
key: {
|
||||||
|
format: "raw",
|
||||||
|
data: Convert.FromUtf8String("1234567890abcdef1234567809abcdef"),
|
||||||
|
algorithm: { name: "AES-ECB" },
|
||||||
|
extractable: true,
|
||||||
|
keyUsages: ["encrypt", "decrypt"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
import: [
|
||||||
|
{
|
||||||
|
name: "raw",
|
||||||
|
format: "raw",
|
||||||
|
data: Convert.FromUtf8String("1234567890abcdef1234567890abcdef"),
|
||||||
|
algorithm: "AES-ECB",
|
||||||
|
extractable: true,
|
||||||
|
keyUsages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "jwk",
|
||||||
|
format: "jwk",
|
||||||
|
data: {
|
||||||
|
kty: "oct",
|
||||||
|
alg: "A256ECB",
|
||||||
|
k: "MTIzNDU2Nzg5MGFiY2RlZjEyMzQ1Njc4OTBhYmNkZWY",
|
||||||
|
ext: true,
|
||||||
|
key_ops: ["encrypt", "decrypt", "wrapKey", "unwrapKey"],
|
||||||
|
},
|
||||||
|
algorithm: "AES-ECB",
|
||||||
|
extractable: true,
|
||||||
|
keyUsages: ["encrypt", "decrypt", "wrapKey", "unwrapKey"],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
//#endregion
|
||||||
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
Reference in New Issue