webcrypto-shim
Advanced tools
+4
-4
| { | ||
| "name": "webcrypto-shim", | ||
| "main": "webcrypto-shim.js", | ||
| "version": "0.1.6", | ||
| "version": "0.1.7", | ||
| "description": "Web Cryptography API shim for legacy browsers", | ||
@@ -36,6 +36,6 @@ "license": "MIT", | ||
| "devDependencies": { | ||
| "gulp": "^4.0.0", | ||
| "gulp": "latest", | ||
| "gulp-concat": "latest", | ||
| "gulp-sourcemaps": "^2.6.5", | ||
| "gulp-uglify": "^3.0.2" | ||
| "gulp-sourcemaps": "latest", | ||
| "gulp-uglify": "latest" | ||
| }, | ||
@@ -42,0 +42,0 @@ "scripts": { |
@@ -40,2 +40,11 @@ describe( 'AES-GCM' , function () { | ||
| }); | ||
| it( "w/ default tagLength", function ( done ) { | ||
| genKeyComplete | ||
| .then( function () { | ||
| return crypto.subtle.encrypt( extend( alg, { iv: new Uint8Array(12) } ), key, new Uint8Array(16) ) | ||
| }) | ||
| .catch(fail) | ||
| .then(done); | ||
| }); | ||
| }); |
@@ -523,3 +523,3 @@ /** | ||
| if ( isIE && ( !c.byteLength || ( d && !d.byteLength ) ) ) | ||
| throw new Error("Empy input is not allowed"); | ||
| throw new Error("Empty input is not allowed"); | ||
@@ -543,2 +543,6 @@ var args = [].slice.call(arguments), | ||
| if ( isIE && ka.name === 'AES-GCM' && args[0].tagLength === undefined ) { | ||
| args[0].tagLength = 128; | ||
| } | ||
| args[1] = b._key; | ||
@@ -586,3 +590,3 @@ | ||
| if ( !b.byteLength ) | ||
| throw new Error("Empy input is not allowed"); | ||
| throw new Error("Empty input is not allowed"); | ||
@@ -589,0 +593,0 @@ var op; |
@@ -1,3 +0,3 @@ | ||
| /*! WebCrypto API shim v0.1.6, (c) 2015 Artem S Vybornov <vybornov@gmail.com>, opensource.org/licenses/MIT */ | ||
| !function(e,t){"function"==typeof define&&define.amd?define([],function(){return t(e)}):"object"==typeof module&&module.exports?module.exports=t(e):t(e)}("undefined"!=typeof self?self:this,function(e){"use strict";if("function"!=typeof Promise)throw"Promise support required";var p=e.crypto||e.msCrypto;if(p){var l=p.subtle||p.webkitSubtle;if(l){var t=e.Crypto||p.constructor||Object,r=e.SubtleCrypto||l.constructor||Object,n=(e.CryptoKey||e.Key||Object,-1<e.navigator.userAgent.indexOf("Edge/")),y=!!e.msCrypto&&!n,f=!p.subtle&&!!p.webkitSubtle;if(y||f){var s={KoZIhvcNAQEB:"1.2.840.113549.1.1.1"},c={"1.2.840.113549.1.1.1":"KoZIhvcNAQEB"};if(["generateKey","importKey","unwrapKey"].forEach(function(s){var c=l[s];l[s]=function(t,e,r){var n,a,o,i,u=[].slice.call(arguments);switch(s){case"generateKey":n=b(t),a=e,o=r;break;case"importKey":n=b(r),a=u[3],o=u[4],"jwk"===t&&((e=S(e)).alg||(e.alg=w(n)),e.key_ops||(e.key_ops="oct"!==e.kty?"d"in e?o.filter(E):o.filter(K):o.slice()),u[1]=function(e){var t=S(e);return y&&(t.extractable=t.ext,delete t.ext),A(unescape(encodeURIComponent(JSON.stringify(t)))).buffer}(e));break;case"unwrapKey":n=u[4],a=u[5],o=u[6],u[2]=r._key}if("generateKey"===s&&"HMAC"===n.name&&n.hash)return n.length=n.length||{"SHA-1":512,"SHA-256":512,"SHA-384":1024,"SHA-512":1024}[n.hash.name],l.importKey("raw",p.getRandomValues(new Uint8Array(n.length+7>>3)),n,a,o);if(f&&"generateKey"===s&&"RSASSA-PKCS1-v1_5"===n.name&&(!n.modulusLength||2048<=n.modulusLength))return(t=b(t)).name="RSAES-PKCS1-v1_5",delete t.hash,l.generateKey(t,!0,["encrypt","decrypt"]).then(function(e){return Promise.all([l.exportKey("jwk",e.publicKey),l.exportKey("jwk",e.privateKey)])}).then(function(e){return e[0].alg=e[1].alg=w(n),e[0].key_ops=o.filter(K),e[1].key_ops=o.filter(E),Promise.all([l.importKey("jwk",e[0],n,!0,e[0].key_ops),l.importKey("jwk",e[1],n,a,e[1].key_ops)])}).then(function(e){return{publicKey:e[0],privateKey:e[1]}});if((f||y&&"SHA-1"===(n.hash||{}).name)&&"importKey"===s&&"jwk"===t&&"HMAC"===n.name&&"oct"===e.kty)return l.importKey("raw",A(g(e.k)),r,u[3],u[4]);if(f&&"importKey"===s&&("spki"===t||"pkcs8"===t))return l.importKey("jwk",function(e){var t=d(e),r=!1;2<t.length&&(r=!0,t.shift());var n={ext:!0};switch(t[0][0]){case"1.2.840.113549.1.1.1":var a=["n","e","d","p","q","dp","dq","qi"],o=d(t[1]);r&&o.shift();for(var i=0;i<o.length;i++)o[i][0]||(o[i]=o[i].subarray(1)),n[a[i]]=h(m(o[i]));n.kty="RSA";break;default:throw new TypeError("Unsupported key type")}return n}(e),r,u[3],u[4]);if(y&&"unwrapKey"===s)return l.decrypt(u[3],r,e).then(function(e){return l.importKey(t,e,u[4],u[5],u[6])});try{i=c.apply(l,u)}catch(e){return Promise.reject(e)}return y&&(i=new Promise(function(t,r){i.onabort=i.onerror=function(e){r(e)},i.oncomplete=function(e){t(e.target.result)}})),i=i.then(function(e){return"HMAC"===n.name&&(n.length||(n.length=8*e.algorithm.length)),0==n.name.search("RSA")&&(n.modulusLength||(n.modulusLength=(e.publicKey||e).algorithm.modulusLength),n.publicExponent||(n.publicExponent=(e.publicKey||e).algorithm.publicExponent)),e=e.publicKey&&e.privateKey?{publicKey:new k(e.publicKey,n,a,o.filter(K)),privateKey:new k(e.privateKey,n,a,o.filter(E))}:new k(e,n,a,o)})}}),["exportKey","wrapKey"].forEach(function(o){var i=l[o];l[o]=function(t,r,n){var e,a=[].slice.call(arguments);switch(o){case"exportKey":a[1]=r._key;break;case"wrapKey":a[1]=r._key,a[2]=n._key}if((f||y&&"SHA-1"===(r.algorithm.hash||{}).name)&&"exportKey"===o&&"jwk"===t&&"HMAC"===r.algorithm.name&&(a[0]="raw"),!f||"exportKey"!==o||"spki"!==t&&"pkcs8"!==t||(a[0]="jwk"),y&&"wrapKey"===o)return l.exportKey(t,r).then(function(e){return"jwk"===t&&(e=A(unescape(encodeURIComponent(JSON.stringify(S(e)))))),l.encrypt(a[3],n,e)});try{e=i.apply(l,a)}catch(e){return Promise.reject(e)}return y&&(e=new Promise(function(t,r){e.onabort=e.onerror=function(e){r(e)},e.oncomplete=function(e){t(e.target.result)}})),"exportKey"===o&&"jwk"===t&&(e=e.then(function(e){return(f||y&&"SHA-1"===(r.algorithm.hash||{}).name)&&"HMAC"===r.algorithm.name?{kty:"oct",alg:w(r.algorithm),key_ops:r.usages.slice(),ext:!0,k:h(m(e))}:((e=S(e)).alg||(e.alg=w(r.algorithm)),e.key_ops||(e.key_ops="public"===r.type?r.usages.filter(K):"private"===r.type?r.usages.filter(E):r.usages.slice()),e)})),!f||"exportKey"!==o||"spki"!==t&&"pkcs8"!==t||(e=e.then(function(e){return e=function(e){var t,r=[["",null]],n=!1;switch(e.kty){case"RSA":for(var a=["n","e","d","p","q","dp","dq","qi"],o=[],i=0;i<a.length&&a[i]in e;i++){var u=o[i]=A(g(e[a[i]]));128&u[0]&&(o[i]=new Uint8Array(u.length+1),o[i].set(u,1))}2<o.length&&(n=!0,o.unshift(new Uint8Array([0]))),r[0][0]="1.2.840.113549.1.1.1",t=o;break;default:throw new TypeError("Unsupported key type")}return r.push(new Uint8Array(v(t)).buffer),n?r.unshift(new Uint8Array([0])):r[1]={tag:3,value:r[1]},new Uint8Array(v(r)).buffer}(S(e))})),e}}),["encrypt","decrypt","sign","verify"].forEach(function(s){var c=l[s];l[s]=function(e,t,r,n){if(y&&(!r.byteLength||n&&!n.byteLength))throw new Error("Empy input is not allowed");var a,o=[].slice.call(arguments),i=b(e);if(!y||"sign"!==s&&"verify"!==s||"RSASSA-PKCS1-v1_5"!==e&&"HMAC"!==e||(o[0]={name:e}),y&&t.algorithm.hash&&(o[0].hash=o[0].hash||t.algorithm.hash),y&&"decrypt"===s&&"AES-GCM"===i.name){var u=e.tagLength>>3;o[2]=(r.buffer||r).slice(0,r.byteLength-u),e.tag=(r.buffer||r).slice(r.byteLength-u)}o[1]=t._key;try{a=c.apply(l,o)}catch(e){return Promise.reject(e)}return y&&(a=new Promise(function(n,t){a.onabort=a.onerror=function(e){t(e)},a.oncomplete=function(e){e=e.target.result;if("encrypt"===s&&e instanceof AesGcmEncryptResult){var t=e.ciphertext,r=e.tag;(e=new Uint8Array(t.byteLength+r.byteLength)).set(new Uint8Array(t),0),e.set(new Uint8Array(r),t.byteLength),e=e.buffer}n(e)}})),a}}),y){var a=l.digest;l.digest=function(e,t){if(!t.byteLength)throw new Error("Empy input is not allowed");var n;try{n=a.call(l,e,t)}catch(e){return Promise.reject(e)}return n=new Promise(function(t,r){n.onabort=n.onerror=function(e){r(e)},n.oncomplete=function(e){t(e.target.result)}})},e.crypto=Object.create(p,{getRandomValues:{value:function(e){return p.getRandomValues(e)}},subtle:{value:l}}),e.CryptoKey=k}f&&(p.subtle=l,e.Crypto=t,e.SubtleCrypto=r,e.CryptoKey=k)}}}function h(e){return btoa(e).replace(/\=+$/,"").replace(/\+/g,"-").replace(/\//g,"_")}function g(e){return e=(e+="===").slice(0,-e.length%4),atob(e.replace(/-/g,"+").replace(/_/g,"/"))}function A(e){for(var t=new Uint8Array(e.length),r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return t}function m(e){return e instanceof ArrayBuffer&&(e=new Uint8Array(e)),String.fromCharCode.apply(String,e)}function b(e){var t={name:(e.name||e||"").toUpperCase().replace("V","v")};switch(t.name){case"SHA-1":case"SHA-256":case"SHA-384":case"SHA-512":break;case"AES-CBC":case"AES-GCM":case"AES-KW":e.length&&(t.length=e.length);break;case"HMAC":e.hash&&(t.hash=b(e.hash)),e.length&&(t.length=e.length);break;case"RSAES-PKCS1-v1_5":e.publicExponent&&(t.publicExponent=new Uint8Array(e.publicExponent)),e.modulusLength&&(t.modulusLength=e.modulusLength);break;case"RSASSA-PKCS1-v1_5":case"RSA-OAEP":e.hash&&(t.hash=b(e.hash)),e.publicExponent&&(t.publicExponent=new Uint8Array(e.publicExponent)),e.modulusLength&&(t.modulusLength=e.modulusLength);break;default:throw new SyntaxError("Bad algorithm name")}return t}function w(e){return{HMAC:{"SHA-1":"HS1","SHA-256":"HS256","SHA-384":"HS384","SHA-512":"HS512"},"RSASSA-PKCS1-v1_5":{"SHA-1":"RS1","SHA-256":"RS256","SHA-384":"RS384","SHA-512":"RS512"},"RSAES-PKCS1-v1_5":{"":"RSA1_5"},"RSA-OAEP":{"SHA-1":"RSA-OAEP","SHA-256":"RSA-OAEP-256"},"AES-KW":{128:"A128KW",192:"A192KW",256:"A256KW"},"AES-GCM":{128:"A128GCM",192:"A192GCM",256:"A256GCM"},"AES-CBC":{128:"A128CBC",192:"A192CBC",256:"A256CBC"}}[e.name][(e.hash||{}).name||e.length||""]}function S(t){(t instanceof ArrayBuffer||t instanceof Uint8Array)&&(t=JSON.parse(decodeURIComponent(escape(m(t)))));var r={kty:t.kty,alg:t.alg,ext:t.ext||t.extractable};switch(r.kty){case"oct":r.k=t.k;case"RSA":["n","e","d","p","q","dp","dq","qi","oth"].forEach(function(e){e in t&&(r[e]=t[e])});break;default:throw new TypeError("Unsupported key type")}return r}function d(e,t){if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),t||(t={pos:0,end:e.length}),t.end-t.pos<2||t.end>e.length)throw new RangeError("Malformed DER");var r,n=e[t.pos++],a=e[t.pos++];if(128<=a){if(a&=127,t.end-t.pos<a)throw new RangeError("Malformed DER");for(var o=0;a--;)o<<=8,o|=e[t.pos++];a=o}if(t.end-t.pos<a)throw new RangeError("Malformed DER");switch(n){case 2:r=e.subarray(t.pos,t.pos+=a);break;case 3:if(e[t.pos++])throw new Error("Unsupported bit string");a--;case 4:r=new Uint8Array(e.subarray(t.pos,t.pos+=a)).buffer;break;case 5:r=null;break;case 6:var i=btoa(m(e.subarray(t.pos,t.pos+=a)));if(!(i in s))throw new Error("Unsupported OBJECT ID "+i);r=s[i];break;case 48:r=[];for(var u=t.pos+a;t.pos<u;)r.push(d(e,t));break;default:throw new Error("Unsupported DER tag 0x"+n.toString(16))}return r}function v(e,t){t||(t=[]);var r=0,n=0,a=t.length+2;if(t.push(0,0),e instanceof Uint8Array){r=2,n=e.length;for(var o=0;o<n;o++)t.push(e[o])}else if(e instanceof ArrayBuffer){r=4,n=e.byteLength,e=new Uint8Array(e);for(o=0;o<n;o++)t.push(e[o])}else if(null===e)r=5,n=0;else if("string"==typeof e&&e in c){var i=A(atob(c[e]));r=6,n=i.length;for(o=0;o<n;o++)t.push(i[o])}else if(e instanceof Array){for(o=0;o<e.length;o++)v(e[o],t);r=48,n=t.length-a}else{if(!("object"==typeof e&&3===e.tag&&e.value instanceof ArrayBuffer))throw new Error("Unsupported DER value "+e);r=3,n=(e=new Uint8Array(e.value)).byteLength,t.push(0);for(o=0;o<n;o++)t.push(e[o]);n++}if(128<=n){var u=n;n=4;for(t.splice(a,0,u>>24&255,u>>16&255,u>>8&255,255&u);1<n&&!(u>>24);)u<<=8,n--;n<4&&t.splice(a,4-n),n|=128}return t.splice(a-2,2,r,n),t}function k(e,t,r,n){Object.defineProperties(this,{_key:{value:e},type:{value:e.type,enumerable:!0},extractable:{value:void 0===r?e.extractable:r,enumerable:!0},algorithm:{value:void 0===t?e.algorithm:t,enumerable:!0},usages:{value:void 0===n?e.usages:n,enumerable:!0}})}function K(e){return"verify"===e||"encrypt"===e||"wrapKey"===e}function E(e){return"sign"===e||"decrypt"===e||"unwrapKey"===e}}); | ||
| /*! WebCrypto API shim v0.1.7, (c) 2015 Artem S Vybornov <vybornov@gmail.com>, opensource.org/licenses/MIT */ | ||
| !function(e,t){"function"==typeof define&&define.amd?define([],function(){return t(e)}):"object"==typeof module&&module.exports?module.exports=t(e):t(e)}("undefined"!=typeof self?self:this,function(e){"use strict";if("function"!=typeof Promise)throw"Promise support required";var l,t,r,n,y,f,s,p,a,h=e.crypto||e.msCrypto;function g(e){return btoa(e).replace(/\=+$/,"").replace(/\+/g,"-").replace(/\//g,"_")}function A(e){return e=(e+="===").slice(0,-e.length%4),atob(e.replace(/-/g,"+").replace(/_/g,"/"))}function m(e){for(var t=new Uint8Array(e.length),r=0;r<e.length;r++)t[r]=e.charCodeAt(r);return t}function b(e){return e instanceof ArrayBuffer&&(e=new Uint8Array(e)),String.fromCharCode.apply(String,e)}function w(e){var t={name:(e.name||e||"").toUpperCase().replace("V","v")};switch(t.name){case"SHA-1":case"SHA-256":case"SHA-384":case"SHA-512":break;case"AES-CBC":case"AES-GCM":case"AES-KW":e.length&&(t.length=e.length);break;case"HMAC":e.hash&&(t.hash=w(e.hash)),e.length&&(t.length=e.length);break;case"RSAES-PKCS1-v1_5":e.publicExponent&&(t.publicExponent=new Uint8Array(e.publicExponent)),e.modulusLength&&(t.modulusLength=e.modulusLength);break;case"RSASSA-PKCS1-v1_5":case"RSA-OAEP":e.hash&&(t.hash=w(e.hash)),e.publicExponent&&(t.publicExponent=new Uint8Array(e.publicExponent)),e.modulusLength&&(t.modulusLength=e.modulusLength);break;default:throw new SyntaxError("Bad algorithm name")}return t}function S(e){return{HMAC:{"SHA-1":"HS1","SHA-256":"HS256","SHA-384":"HS384","SHA-512":"HS512"},"RSASSA-PKCS1-v1_5":{"SHA-1":"RS1","SHA-256":"RS256","SHA-384":"RS384","SHA-512":"RS512"},"RSAES-PKCS1-v1_5":{"":"RSA1_5"},"RSA-OAEP":{"SHA-1":"RSA-OAEP","SHA-256":"RSA-OAEP-256"},"AES-KW":{128:"A128KW",192:"A192KW",256:"A256KW"},"AES-GCM":{128:"A128GCM",192:"A192GCM",256:"A256GCM"},"AES-CBC":{128:"A128CBC",192:"A192CBC",256:"A256CBC"}}[e.name][(e.hash||{}).name||e.length||""]}function d(t){(t instanceof ArrayBuffer||t instanceof Uint8Array)&&(t=JSON.parse(decodeURIComponent(escape(b(t)))));var r={kty:t.kty,alg:t.alg,ext:t.ext||t.extractable};switch(r.kty){case"oct":r.k=t.k;case"RSA":["n","e","d","p","q","dp","dq","qi","oth"].forEach(function(e){e in t&&(r[e]=t[e])});break;default:throw new TypeError("Unsupported key type")}return r}function k(e,t){if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),(t=t||{pos:0,end:e.length}).end-t.pos<2||t.end>e.length)throw new RangeError("Malformed DER");var r,n=e[t.pos++],a=e[t.pos++];if(128<=a){if(a&=127,t.end-t.pos<a)throw new RangeError("Malformed DER");for(var o=0;a--;)o<<=8,o|=e[t.pos++];a=o}if(t.end-t.pos<a)throw new RangeError("Malformed DER");switch(n){case 2:r=e.subarray(t.pos,t.pos+=a);break;case 3:if(e[t.pos++])throw new Error("Unsupported bit string");a--;case 4:r=new Uint8Array(e.subarray(t.pos,t.pos+=a)).buffer;break;case 5:r=null;break;case 6:var i=btoa(b(e.subarray(t.pos,t.pos+=a)));if(!(i in s))throw new Error("Unsupported OBJECT ID "+i);r=s[i];break;case 48:r=[];for(var u=t.pos+a;t.pos<u;)r.push(k(e,t));break;default:throw new Error("Unsupported DER tag 0x"+n.toString(16))}return r}function c(e,t){var r=0,n=0,a=(t=t||[]).length+2;if(t.push(0,0),e instanceof Uint8Array){r=2,n=e.length;for(var o=0;o<n;o++)t.push(e[o])}else if(e instanceof ArrayBuffer){r=4,n=e.byteLength,e=new Uint8Array(e);for(o=0;o<n;o++)t.push(e[o])}else if(null===e)r=5,n=0;else if("string"==typeof e&&e in p){var i=m(atob(p[e])),r=6;n=i.length;for(o=0;o<n;o++)t.push(i[o])}else if(e instanceof Array){for(o=0;o<e.length;o++)c(e[o],t);r=48,n=t.length-a}else{if(!("object"==typeof e&&3===e.tag&&e.value instanceof ArrayBuffer))throw new Error("Unsupported DER value "+e);r=3,n=(e=new Uint8Array(e.value)).byteLength,t.push(0);for(o=0;o<n;o++)t.push(e[o]);n++}if(128<=n){var u=n,n=4;for(t.splice(a,0,u>>24&255,u>>16&255,u>>8&255,255&u);1<n&&!(u>>24);)u<<=8,n--;n<4&&t.splice(a,4-n),n|=128}return t.splice(a-2,2,r,n),t}function v(e,t,r,n){Object.defineProperties(this,{_key:{value:e},type:{value:e.type,enumerable:!0},extractable:{value:void 0===r?e.extractable:r,enumerable:!0},algorithm:{value:void 0===t?e.algorithm:t,enumerable:!0},usages:{value:void 0===n?e.usages:n,enumerable:!0}})}function K(e){return"verify"===e||"encrypt"===e||"wrapKey"===e}function E(e){return"sign"===e||"decrypt"===e||"unwrapKey"===e}!h||(l=h.subtle||h.webkitSubtle)&&(t=e.Crypto||h.constructor||Object,r=e.SubtleCrypto||l.constructor||Object,e.CryptoKey||e.Key||Object,n=-1<e.navigator.userAgent.indexOf("Edge/"),y=!!e.msCrypto&&!n,f=!h.subtle&&!!h.webkitSubtle,(y||f)&&(s={KoZIhvcNAQEB:"1.2.840.113549.1.1.1"},p={"1.2.840.113549.1.1.1":"KoZIhvcNAQEB"},["generateKey","importKey","unwrapKey"].forEach(function(p){var c=l[p];l[p]=function(t,e,r){var n,a,o,i,u,s=[].slice.call(arguments);switch(p){case"generateKey":n=w(t),a=e,o=r;break;case"importKey":n=w(r),a=s[3],o=s[4],"jwk"===t&&((e=d(e)).alg||(e.alg=S(n)),e.key_ops||(e.key_ops="oct"!==e.kty?"d"in e?o.filter(E):o.filter(K):o.slice()),s[1]=(i=d(e),y&&(i.extractable=i.ext,delete i.ext),m(unescape(encodeURIComponent(JSON.stringify(i)))).buffer));break;case"unwrapKey":n=s[4],a=s[5],o=s[6],s[2]=r._key}if("generateKey"===p&&"HMAC"===n.name&&n.hash)return n.length=n.length||{"SHA-1":512,"SHA-256":512,"SHA-384":1024,"SHA-512":1024}[n.hash.name],l.importKey("raw",h.getRandomValues(new Uint8Array(n.length+7>>3)),n,a,o);if(f&&"generateKey"===p&&"RSASSA-PKCS1-v1_5"===n.name&&(!n.modulusLength||2048<=n.modulusLength))return(t=w(t)).name="RSAES-PKCS1-v1_5",delete t.hash,l.generateKey(t,!0,["encrypt","decrypt"]).then(function(e){return Promise.all([l.exportKey("jwk",e.publicKey),l.exportKey("jwk",e.privateKey)])}).then(function(e){return e[0].alg=e[1].alg=S(n),e[0].key_ops=o.filter(K),e[1].key_ops=o.filter(E),Promise.all([l.importKey("jwk",e[0],n,!0,e[0].key_ops),l.importKey("jwk",e[1],n,a,e[1].key_ops)])}).then(function(e){return{publicKey:e[0],privateKey:e[1]}});if((f||y&&"SHA-1"===(n.hash||{}).name)&&"importKey"===p&&"jwk"===t&&"HMAC"===n.name&&"oct"===e.kty)return l.importKey("raw",m(A(e.k)),r,s[3],s[4]);if(f&&"importKey"===p&&("spki"===t||"pkcs8"===t))return l.importKey("jwk",function(e){var t=k(e),r=!1;2<t.length&&(r=!0,t.shift());var n={ext:!0};if("1.2.840.113549.1.1.1"!==t[0][0])throw new TypeError("Unsupported key type");var a=["n","e","d","p","q","dp","dq","qi"],o=k(t[1]);r&&o.shift();for(var i=0;i<o.length;i++)o[i][0]||(o[i]=o[i].subarray(1)),n[a[i]]=g(b(o[i]));return n.kty="RSA",n}(e),r,s[3],s[4]);if(y&&"unwrapKey"===p)return l.decrypt(s[3],r,e).then(function(e){return l.importKey(t,e,s[4],s[5],s[6])});try{u=c.apply(l,s)}catch(e){return Promise.reject(e)}return y&&(u=new Promise(function(t,r){u.onabort=u.onerror=function(e){r(e)},u.oncomplete=function(e){t(e.target.result)}})),u=u.then(function(e){return"HMAC"===n.name&&(n.length||(n.length=8*e.algorithm.length)),0==n.name.search("RSA")&&(n.modulusLength||(n.modulusLength=(e.publicKey||e).algorithm.modulusLength),n.publicExponent||(n.publicExponent=(e.publicKey||e).algorithm.publicExponent)),e=e.publicKey&&e.privateKey?{publicKey:new v(e.publicKey,n,a,o.filter(K)),privateKey:new v(e.privateKey,n,a,o.filter(E))}:new v(e,n,a,o)})}}),["exportKey","wrapKey"].forEach(function(o){var i=l[o];l[o]=function(t,r,n){var e,a=[].slice.call(arguments);switch(o){case"exportKey":a[1]=r._key;break;case"wrapKey":a[1]=r._key,a[2]=n._key}if((f||y&&"SHA-1"===(r.algorithm.hash||{}).name)&&"exportKey"===o&&"jwk"===t&&"HMAC"===r.algorithm.name&&(a[0]="raw"),!f||"exportKey"!==o||"spki"!==t&&"pkcs8"!==t||(a[0]="jwk"),y&&"wrapKey"===o)return l.exportKey(t,r).then(function(e){return"jwk"===t&&(e=m(unescape(encodeURIComponent(JSON.stringify(d(e)))))),l.encrypt(a[3],n,e)});try{e=i.apply(l,a)}catch(e){return Promise.reject(e)}return y&&(e=new Promise(function(t,r){e.onabort=e.onerror=function(e){r(e)},e.oncomplete=function(e){t(e.target.result)}})),"exportKey"===o&&"jwk"===t&&(e=e.then(function(e){return(f||y&&"SHA-1"===(r.algorithm.hash||{}).name)&&"HMAC"===r.algorithm.name?{kty:"oct",alg:S(r.algorithm),key_ops:r.usages.slice(),ext:!0,k:g(b(e))}:((e=d(e)).alg||(e.alg=S(r.algorithm)),e.key_ops||(e.key_ops="public"===r.type?r.usages.filter(K):"private"===r.type?r.usages.filter(E):r.usages.slice()),e)})),!f||"exportKey"!==o||"spki"!==t&&"pkcs8"!==t||(e=e.then(function(e){return e=function(e){var t=[["",null]],r=!1;if("RSA"!==e.kty)throw new TypeError("Unsupported key type");for(var n=["n","e","d","p","q","dp","dq","qi"],a=[],o=0;o<n.length&&n[o]in e;o++){var i=a[o]=m(A(e[n[o]]));128&i[0]&&(a[o]=new Uint8Array(i.length+1),a[o].set(i,1))}return 2<a.length&&(r=!0,a.unshift(new Uint8Array([0]))),t[0][0]="1.2.840.113549.1.1.1",t.push(new Uint8Array(c(a)).buffer),r?t.unshift(new Uint8Array([0])):t[1]={tag:3,value:t[1]},new Uint8Array(c(t)).buffer}(d(e))})),e}}),["encrypt","decrypt","sign","verify"].forEach(function(s){var p=l[s];l[s]=function(e,t,r,n){if(y&&(!r.byteLength||n&&!n.byteLength))throw new Error("Empty input is not allowed");var a,o,i=[].slice.call(arguments),u=w(e);!y||"sign"!==s&&"verify"!==s||"RSASSA-PKCS1-v1_5"!==e&&"HMAC"!==e||(i[0]={name:e}),y&&t.algorithm.hash&&(i[0].hash=i[0].hash||t.algorithm.hash),y&&"decrypt"===s&&"AES-GCM"===u.name&&(a=e.tagLength>>3,i[2]=(r.buffer||r).slice(0,r.byteLength-a),e.tag=(r.buffer||r).slice(r.byteLength-a)),y&&"AES-GCM"===u.name&&void 0===i[0].tagLength&&(i[0].tagLength=128),i[1]=t._key;try{o=p.apply(l,i)}catch(e){return Promise.reject(e)}return y&&(o=new Promise(function(n,t){o.onabort=o.onerror=function(e){t(e)},o.oncomplete=function(e){var t,r,e=e.target.result;"encrypt"===s&&e instanceof AesGcmEncryptResult&&(t=e.ciphertext,r=e.tag,(e=new Uint8Array(t.byteLength+r.byteLength)).set(new Uint8Array(t),0),e.set(new Uint8Array(r),t.byteLength),e=e.buffer),n(e)}})),o}}),y&&(a=l.digest,l.digest=function(e,t){if(!t.byteLength)throw new Error("Empty input is not allowed");var n;try{n=a.call(l,e,t)}catch(e){return Promise.reject(e)}return n=new Promise(function(t,r){n.onabort=n.onerror=function(e){r(e)},n.oncomplete=function(e){t(e.target.result)}})},e.crypto=Object.create(h,{getRandomValues:{value:function(e){return h.getRandomValues(e)}},subtle:{value:l}}),e.CryptoKey=v),f&&(h.subtle=l,e.Crypto=t,e.SubtleCrypto=r,e.CryptoKey=v)))}); | ||
| //# sourceMappingURL=webcrypto-shim.min.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["webcrypto-shim.js"],"names":["global","factory","define","amd","module","exports","self","this","Promise","_crypto","crypto","msCrypto","_subtle","subtle","webkitSubtle","_Crypto","Crypto","constructor","Object","_SubtleCrypto","SubtleCrypto","isEdge","CryptoKey","Key","navigator","userAgent","indexOf","isIE","isWebkit","oid2str","KoZIhvcNAQEB","str2oid","1.2.840.113549.1.1.1","forEach","m","_fn","a","b","c","ka","kx","ku","op","args","slice","call","arguments","alg","b2jwk","jwkAlg","key_ops","kty","filter","isPrvKeyUse","isPubKeyUse","k","jwk","ext","s2b","unescape","encodeURIComponent","JSON","stringify","buffer","jwk2b","_key","name","hash","length","SHA-1","SHA-256","SHA-384","SHA-512","importKey","getRandomValues","Uint8Array","modulusLength","generateKey","then","all","exportKey","publicKey","privateKey","keys","a2s","info","b2der","prv","shift","rsaComp","rsaKey","i","subarray","s2a","b2s","TypeError","pkcs2jwk","decrypt","apply","e","reject","res","rej","onabort","onerror","oncomplete","r","target","result","algorithm","search","publicExponent","encrypt","usages","type","key","set","unshift","push","der2b","tag","value","jwk2pkcs","d","byteLength","Error","tl","tagLength","AesGcmEncryptResult","ciphertext","t","_digest","digest","create","s","btoa","replace","atob","charCodeAt","ArrayBuffer","String","fromCharCode","toUpperCase","SyntaxError","HMAC","RSASSA-PKCS1-v1_5","RSAES-PKCS1-v1_5","","RSA-OAEP","AES-KW","128","192","256","AES-GCM","AES-CBC","parse","decodeURIComponent","escape","extractable","x","buf","ctx","pos","end","RangeError","rv","len","xlen","oid","toString","val","Array","splice","use","defineProperties","enumerable","undefined","u"],"mappings":"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","file":"webcrypto-shim.min.js","sourcesContent":["/**\n * @file Web Cryptography API shim\n * @author Artem S Vybornov <vybornov@gmail.com>\n * @license MIT\n */\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], function () {\n return factory(global);\n });\n } else if (typeof module === 'object' && module.exports) {\n // CommonJS-like environments that support module.exports\n module.exports = factory(global);\n } else {\n factory(global);\n }\n}(typeof self !== 'undefined' ? self : this, function (global) {\n 'use strict';\n\n if ( typeof Promise !== 'function' )\n throw \"Promise support required\";\n\n var _crypto = global.crypto || global.msCrypto;\n if ( !_crypto ) return;\n\n var _subtle = _crypto.subtle || _crypto.webkitSubtle;\n if ( !_subtle ) return;\n\n var _Crypto = global.Crypto || _crypto.constructor || Object,\n _SubtleCrypto = global.SubtleCrypto || _subtle.constructor || Object,\n _CryptoKey = global.CryptoKey || global.Key || Object;\n\n var isEdge = global.navigator.userAgent.indexOf('Edge/') > -1;\n var isIE = !!global.msCrypto && !isEdge;\n var isWebkit = !_crypto.subtle && !!_crypto.webkitSubtle;\n if ( !isIE && !isWebkit ) return;\n\n function s2a ( s ) {\n return btoa(s).replace(/\\=+$/, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n }\n\n function a2s ( s ) {\n s += '===', s = s.slice( 0, -s.length % 4 );\n return atob( s.replace(/-/g, '+').replace(/_/g, '/') );\n }\n\n function s2b ( s ) {\n var b = new Uint8Array(s.length);\n for ( var i = 0; i < s.length; i++ ) b[i] = s.charCodeAt(i);\n return b;\n }\n\n function b2s ( b ) {\n if ( b instanceof ArrayBuffer ) b = new Uint8Array(b);\n return String.fromCharCode.apply( String, b );\n }\n\n function alg ( a ) {\n var r = { 'name': (a.name || a || '').toUpperCase().replace('V','v') };\n switch ( r.name ) {\n case 'SHA-1':\n case 'SHA-256':\n case 'SHA-384':\n case 'SHA-512':\n break;\n case 'AES-CBC':\n case 'AES-GCM':\n case 'AES-KW':\n if ( a.length ) r['length'] = a.length;\n break;\n case 'HMAC':\n if ( a.hash ) r['hash'] = alg(a.hash);\n if ( a.length ) r['length'] = a.length;\n break;\n case 'RSAES-PKCS1-v1_5':\n if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent);\n if ( a.modulusLength ) r['modulusLength'] = a.modulusLength;\n break;\n case 'RSASSA-PKCS1-v1_5':\n case 'RSA-OAEP':\n if ( a.hash ) r['hash'] = alg(a.hash);\n if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent);\n if ( a.modulusLength ) r['modulusLength'] = a.modulusLength;\n break;\n default:\n throw new SyntaxError(\"Bad algorithm name\");\n }\n return r;\n };\n\n function jwkAlg ( a ) {\n return {\n 'HMAC': {\n 'SHA-1': 'HS1',\n 'SHA-256': 'HS256',\n 'SHA-384': 'HS384',\n 'SHA-512': 'HS512',\n },\n 'RSASSA-PKCS1-v1_5': {\n 'SHA-1': 'RS1',\n 'SHA-256': 'RS256',\n 'SHA-384': 'RS384',\n 'SHA-512': 'RS512',\n },\n 'RSAES-PKCS1-v1_5': {\n '': 'RSA1_5',\n },\n 'RSA-OAEP': {\n 'SHA-1': 'RSA-OAEP',\n 'SHA-256': 'RSA-OAEP-256',\n },\n 'AES-KW': {\n '128': 'A128KW',\n '192': 'A192KW',\n '256': 'A256KW',\n },\n 'AES-GCM': {\n '128': 'A128GCM',\n '192': 'A192GCM',\n '256': 'A256GCM',\n },\n 'AES-CBC': {\n '128': 'A128CBC',\n '192': 'A192CBC',\n '256': 'A256CBC',\n },\n }[a.name][ ( a.hash || {} ).name || a.length || '' ];\n }\n\n function b2jwk ( k ) {\n if ( k instanceof ArrayBuffer || k instanceof Uint8Array ) k = JSON.parse( decodeURIComponent( escape( b2s(k) ) ) );\n var jwk = { 'kty': k.kty, 'alg': k.alg, 'ext': k.ext || k.extractable };\n switch ( jwk.kty ) {\n case 'oct':\n jwk.k = k.k;\n case 'RSA':\n [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi', 'oth' ].forEach( function ( x ) { if ( x in k ) jwk[x] = k[x] } );\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n return jwk;\n }\n\n function jwk2b ( k ) {\n var jwk = b2jwk(k);\n if ( isIE ) jwk['extractable'] = jwk.ext, delete jwk.ext;\n return s2b( unescape( encodeURIComponent( JSON.stringify(jwk) ) ) ).buffer;\n }\n\n function pkcs2jwk ( k ) {\n var info = b2der(k), prv = false;\n if ( info.length > 2 ) prv = true, info.shift(); // remove version from PKCS#8 PrivateKeyInfo structure\n var jwk = { 'ext': true };\n switch ( info[0][0] ) {\n case '1.2.840.113549.1.1.1':\n var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ],\n rsaKey = b2der( info[1] );\n if ( prv ) rsaKey.shift(); // remove version from PKCS#1 RSAPrivateKey structure\n for ( var i = 0; i < rsaKey.length; i++ ) {\n if ( !rsaKey[i][0] ) rsaKey[i] = rsaKey[i].subarray(1);\n jwk[ rsaComp[i] ] = s2a( b2s( rsaKey[i] ) );\n }\n jwk['kty'] = 'RSA';\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n return jwk;\n }\n\n function jwk2pkcs ( k ) {\n var key, info = [ [ '', null ] ], prv = false;\n switch ( k.kty ) {\n case 'RSA':\n var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ],\n rsaKey = [];\n for ( var i = 0; i < rsaComp.length; i++ ) {\n if ( !( rsaComp[i] in k ) ) break;\n var b = rsaKey[i] = s2b( a2s( k[ rsaComp[i] ] ) );\n if ( b[0] & 0x80 ) rsaKey[i] = new Uint8Array(b.length + 1), rsaKey[i].set( b, 1 );\n }\n if ( rsaKey.length > 2 ) prv = true, rsaKey.unshift( new Uint8Array([0]) ); // add version to PKCS#1 RSAPrivateKey structure\n info[0][0] = '1.2.840.113549.1.1.1';\n key = rsaKey;\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n info.push( new Uint8Array( der2b(key) ).buffer );\n if ( !prv ) info[1] = { 'tag': 0x03, 'value': info[1] };\n else info.unshift( new Uint8Array([0]) ); // add version to PKCS#8 PrivateKeyInfo structure\n return new Uint8Array( der2b(info) ).buffer;\n }\n\n var oid2str = { 'KoZIhvcNAQEB': '1.2.840.113549.1.1.1' },\n str2oid = { '1.2.840.113549.1.1.1': 'KoZIhvcNAQEB' };\n\n function b2der ( buf, ctx ) {\n if ( buf instanceof ArrayBuffer ) buf = new Uint8Array(buf);\n if ( !ctx ) ctx = { pos: 0, end: buf.length };\n\n if ( ctx.end - ctx.pos < 2 || ctx.end > buf.length ) throw new RangeError(\"Malformed DER\");\n\n var tag = buf[ctx.pos++],\n len = buf[ctx.pos++];\n\n if ( len >= 0x80 ) {\n len &= 0x7f;\n if ( ctx.end - ctx.pos < len ) throw new RangeError(\"Malformed DER\");\n for ( var xlen = 0; len--; ) xlen <<= 8, xlen |= buf[ctx.pos++];\n len = xlen;\n }\n\n if ( ctx.end - ctx.pos < len ) throw new RangeError(\"Malformed DER\");\n\n var rv;\n\n switch ( tag ) {\n case 0x02: // Universal Primitive INTEGER\n rv = buf.subarray( ctx.pos, ctx.pos += len );\n break;\n case 0x03: // Universal Primitive BIT STRING\n if ( buf[ctx.pos++] ) throw new Error( \"Unsupported bit string\" );\n len--;\n case 0x04: // Universal Primitive OCTET STRING\n rv = new Uint8Array( buf.subarray( ctx.pos, ctx.pos += len ) ).buffer;\n break;\n case 0x05: // Universal Primitive NULL\n rv = null;\n break;\n case 0x06: // Universal Primitive OBJECT IDENTIFIER\n var oid = btoa( b2s( buf.subarray( ctx.pos, ctx.pos += len ) ) );\n if ( !( oid in oid2str ) ) throw new Error( \"Unsupported OBJECT ID \" + oid );\n rv = oid2str[oid];\n break;\n case 0x30: // Universal Constructed SEQUENCE\n rv = [];\n for ( var end = ctx.pos + len; ctx.pos < end; ) rv.push( b2der( buf, ctx ) );\n break;\n default:\n throw new Error( \"Unsupported DER tag 0x\" + tag.toString(16) );\n }\n\n return rv;\n }\n\n function der2b ( val, buf ) {\n if ( !buf ) buf = [];\n\n var tag = 0, len = 0,\n pos = buf.length + 2;\n\n buf.push( 0, 0 ); // placeholder\n\n if ( val instanceof Uint8Array ) { // Universal Primitive INTEGER\n tag = 0x02, len = val.length;\n for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n }\n else if ( val instanceof ArrayBuffer ) { // Universal Primitive OCTET STRING\n tag = 0x04, len = val.byteLength, val = new Uint8Array(val);\n for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n }\n else if ( val === null ) { // Universal Primitive NULL\n tag = 0x05, len = 0;\n }\n else if ( typeof val === 'string' && val in str2oid ) { // Universal Primitive OBJECT IDENTIFIER\n var oid = s2b( atob( str2oid[val] ) );\n tag = 0x06, len = oid.length;\n for ( var i = 0; i < len; i++ ) buf.push( oid[i] );\n }\n else if ( val instanceof Array ) { // Universal Constructed SEQUENCE\n for ( var i = 0; i < val.length; i++ ) der2b( val[i], buf );\n tag = 0x30, len = buf.length - pos;\n }\n else if ( typeof val === 'object' && val.tag === 0x03 && val.value instanceof ArrayBuffer ) { // Tag hint\n val = new Uint8Array(val.value), tag = 0x03, len = val.byteLength;\n buf.push(0); for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n len++;\n }\n else {\n throw new Error( \"Unsupported DER value \" + val );\n }\n\n if ( len >= 0x80 ) {\n var xlen = len, len = 4;\n buf.splice( pos, 0, (xlen >> 24) & 0xff, (xlen >> 16) & 0xff, (xlen >> 8) & 0xff, xlen & 0xff );\n while ( len > 1 && !(xlen >> 24) ) xlen <<= 8, len--;\n if ( len < 4 ) buf.splice( pos, 4 - len );\n len |= 0x80;\n }\n\n buf.splice( pos - 2, 2, tag, len );\n\n return buf;\n }\n\n function CryptoKey ( key, alg, ext, use ) {\n Object.defineProperties( this, {\n _key: {\n value: key\n },\n type: {\n value: key.type,\n enumerable: true,\n },\n extractable: {\n value: (ext === undefined) ? key.extractable : ext,\n enumerable: true,\n },\n algorithm: {\n value: (alg === undefined) ? key.algorithm : alg,\n enumerable: true,\n },\n usages: {\n value: (use === undefined) ? key.usages : use,\n enumerable: true,\n },\n });\n }\n\n function isPubKeyUse ( u ) {\n return u === 'verify' || u === 'encrypt' || u === 'wrapKey';\n }\n\n function isPrvKeyUse ( u ) {\n return u === 'sign' || u === 'decrypt' || u === 'unwrapKey';\n }\n\n [ 'generateKey', 'importKey', 'unwrapKey' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c ) {\n var args = [].slice.call(arguments),\n ka, kx, ku;\n\n switch ( m ) {\n case 'generateKey':\n ka = alg(a), kx = b, ku = c;\n break;\n case 'importKey':\n ka = alg(c), kx = args[3], ku = args[4];\n if ( a === 'jwk' ) {\n b = b2jwk(b);\n if ( !b.alg ) b.alg = jwkAlg(ka);\n if ( !b.key_ops ) b.key_ops = ( b.kty !== 'oct' ) ? ( 'd' in b ) ? ku.filter(isPrvKeyUse) : ku.filter(isPubKeyUse) : ku.slice();\n args[1] = jwk2b(b);\n }\n break;\n case 'unwrapKey':\n ka = args[4], kx = args[5], ku = args[6];\n args[2] = c._key;\n break;\n }\n\n if ( m === 'generateKey' && ka.name === 'HMAC' && ka.hash ) {\n ka.length = ka.length || { 'SHA-1': 512, 'SHA-256': 512, 'SHA-384': 1024, 'SHA-512': 1024 }[ka.hash.name];\n return _subtle.importKey( 'raw', _crypto.getRandomValues( new Uint8Array( (ka.length+7)>>3 ) ), ka, kx, ku );\n }\n\n if ( isWebkit && m === 'generateKey' && ka.name === 'RSASSA-PKCS1-v1_5' && ( !ka.modulusLength || ka.modulusLength >= 2048 ) ) {\n a = alg(a), a.name = 'RSAES-PKCS1-v1_5', delete a.hash;\n return _subtle.generateKey( a, true, [ 'encrypt', 'decrypt' ] )\n .then( function ( k ) {\n return Promise.all([\n _subtle.exportKey( 'jwk', k.publicKey ),\n _subtle.exportKey( 'jwk', k.privateKey ),\n ]);\n })\n .then( function ( keys ) {\n keys[0].alg = keys[1].alg = jwkAlg(ka);\n keys[0].key_ops = ku.filter(isPubKeyUse), keys[1].key_ops = ku.filter(isPrvKeyUse);\n return Promise.all([\n _subtle.importKey( 'jwk', keys[0], ka, true, keys[0].key_ops ),\n _subtle.importKey( 'jwk', keys[1], ka, kx, keys[1].key_ops ),\n ]);\n })\n .then( function ( keys ) {\n return {\n publicKey: keys[0],\n privateKey: keys[1],\n };\n });\n }\n\n if ( ( isWebkit || ( isIE && ( ka.hash || {} ).name === 'SHA-1' ) )\n && m === 'importKey' && a === 'jwk' && ka.name === 'HMAC' && b.kty === 'oct' ) {\n return _subtle.importKey( 'raw', s2b( a2s(b.k) ), c, args[3], args[4] );\n }\n\n if ( isWebkit && m === 'importKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n return _subtle.importKey( 'jwk', pkcs2jwk(b), c, args[3], args[4] );\n }\n\n if ( isIE && m === 'unwrapKey' ) {\n return _subtle.decrypt( args[3], c, b )\n .then( function ( k ) {\n return _subtle.importKey( a, k, args[4], args[5], args[6] );\n });\n }\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n }\n\n op = op.then( function ( k ) {\n if ( ka.name === 'HMAC' ) {\n if ( !ka.length ) ka.length = 8 * k.algorithm.length;\n }\n if ( ka.name.search('RSA') == 0 ) {\n if ( !ka.modulusLength ) ka.modulusLength = (k.publicKey || k).algorithm.modulusLength;\n if ( !ka.publicExponent ) ka.publicExponent = (k.publicKey || k).algorithm.publicExponent;\n }\n if ( k.publicKey && k.privateKey ) {\n k = {\n publicKey: new CryptoKey( k.publicKey, ka, kx, ku.filter(isPubKeyUse) ),\n privateKey: new CryptoKey( k.privateKey, ka, kx, ku.filter(isPrvKeyUse) ),\n };\n }\n else {\n k = new CryptoKey( k, ka, kx, ku );\n }\n return k;\n });\n\n return op;\n }\n });\n\n [ 'exportKey', 'wrapKey' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c ) {\n var args = [].slice.call(arguments);\n\n switch ( m ) {\n case 'exportKey':\n args[1] = b._key;\n break;\n case 'wrapKey':\n args[1] = b._key, args[2] = c._key;\n break;\n }\n\n if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) )\n && m === 'exportKey' && a === 'jwk' && b.algorithm.name === 'HMAC' ) {\n args[0] = 'raw';\n }\n\n if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n args[0] = 'jwk';\n }\n\n if ( isIE && m === 'wrapKey' ) {\n return _subtle.exportKey( a, b )\n .then( function ( k ) {\n if ( a === 'jwk' ) k = s2b( unescape( encodeURIComponent( JSON.stringify( b2jwk(k) ) ) ) );\n return _subtle.encrypt( args[3], c, k );\n });\n }\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n }\n\n if ( m === 'exportKey' && a === 'jwk' ) {\n op = op.then( function ( k ) {\n if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) )\n && b.algorithm.name === 'HMAC') {\n return { 'kty': 'oct', 'alg': jwkAlg(b.algorithm), 'key_ops': b.usages.slice(), 'ext': true, 'k': s2a( b2s(k) ) };\n }\n k = b2jwk(k);\n if ( !k.alg ) k['alg'] = jwkAlg(b.algorithm);\n if ( !k.key_ops ) k['key_ops'] = ( b.type === 'public' ) ? b.usages.filter(isPubKeyUse) : ( b.type === 'private' ) ? b.usages.filter(isPrvKeyUse) : b.usages.slice();\n return k;\n });\n }\n\n if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n op = op.then( function ( k ) {\n k = jwk2pkcs( b2jwk(k) );\n return k;\n });\n }\n\n return op;\n }\n });\n\n [ 'encrypt', 'decrypt', 'sign', 'verify' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c, d ) {\n if ( isIE && ( !c.byteLength || ( d && !d.byteLength ) ) )\n throw new Error(\"Empy input is not allowed\");\n\n var args = [].slice.call(arguments),\n ka = alg(a);\n\n if ( isIE && ( m === 'sign' || m === 'verify') && ( a === 'RSASSA-PKCS1-v1_5' || a === 'HMAC' ) ) {\n args[0] = { name: a };\n }\n\n if ( isIE && b.algorithm.hash ) {\n args[0].hash = args[0].hash || b.algorithm.hash;\n }\n\n if ( isIE && m === 'decrypt' && ka.name === 'AES-GCM' ) {\n var tl = a.tagLength >> 3;\n args[2] = (c.buffer || c).slice( 0, c.byteLength - tl ),\n a.tag = (c.buffer || c).slice( c.byteLength - tl );\n }\n\n args[1] = b._key;\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) {\n rej(e);\n };\n\n op.oncomplete = function ( r ) {\n var r = r.target.result;\n\n if ( m === 'encrypt' && r instanceof AesGcmEncryptResult ) {\n var c = r.ciphertext, t = r.tag;\n r = new Uint8Array( c.byteLength + t.byteLength );\n r.set( new Uint8Array(c), 0 );\n r.set( new Uint8Array(t), c.byteLength );\n r = r.buffer;\n }\n\n res(r);\n };\n });\n }\n\n return op;\n }\n });\n\n if ( isIE ) {\n var _digest = _subtle.digest;\n\n _subtle['digest'] = function ( a, b ) {\n if ( !b.byteLength )\n throw new Error(\"Empy input is not allowed\");\n\n var op;\n try {\n op = _digest.call( _subtle, a, b );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n\n return op;\n };\n\n global.crypto = Object.create( _crypto, {\n getRandomValues: { value: function ( a ) { return _crypto.getRandomValues(a) } },\n subtle: { value: _subtle },\n });\n\n global.CryptoKey = CryptoKey;\n }\n\n if ( isWebkit ) {\n _crypto.subtle = _subtle;\n\n global.Crypto = _Crypto;\n global.SubtleCrypto = _SubtleCrypto;\n global.CryptoKey = CryptoKey;\n }\n}));\n"]} | ||
| {"version":3,"sources":["webcrypto-shim.js"],"names":["global","factory","define","amd","module","exports","self","this","Promise","_subtle","_Crypto","_SubtleCrypto","isEdge","isIE","isWebkit","oid2str","str2oid","_digest","_crypto","crypto","msCrypto","s2a","s","btoa","replace","a2s","slice","length","atob","s2b","b","Uint8Array","i","charCodeAt","b2s","ArrayBuffer","String","fromCharCode","apply","alg","a","r","name","toUpperCase","hash","publicExponent","modulusLength","SyntaxError","jwkAlg","HMAC","SHA-1","SHA-256","SHA-384","SHA-512","RSASSA-PKCS1-v1_5","RSAES-PKCS1-v1_5","","RSA-OAEP","AES-KW","128","192","256","AES-GCM","AES-CBC","b2jwk","k","JSON","parse","decodeURIComponent","escape","jwk","kty","ext","extractable","forEach","x","TypeError","b2der","buf","ctx","pos","end","RangeError","rv","tag","len","xlen","subarray","Error","buffer","oid","push","toString","der2b","val","byteLength","Array","value","splice","CryptoKey","key","use","Object","defineProperties","_key","type","enumerable","undefined","algorithm","usages","isPubKeyUse","u","isPrvKeyUse","subtle","webkitSubtle","Crypto","constructor","SubtleCrypto","Key","navigator","userAgent","indexOf","KoZIhvcNAQEB","1.2.840.113549.1.1.1","m","_fn","c","ka","kx","ku","op","args","call","arguments","key_ops","filter","unescape","encodeURIComponent","stringify","importKey","getRandomValues","generateKey","then","all","exportKey","publicKey","privateKey","keys","info","prv","shift","rsaComp","rsaKey","pkcs2jwk","decrypt","e","reject","res","rej","onabort","onerror","oncomplete","target","result","search","encrypt","set","unshift","jwk2pkcs","d","tl","tagLength","t","AesGcmEncryptResult","ciphertext","digest","create"],"mappings":"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","file":"webcrypto-shim.min.js","sourcesContent":["/**\n * @file Web Cryptography API shim\n * @author Artem S Vybornov <vybornov@gmail.com>\n * @license MIT\n */\n(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([], function () {\n return factory(global);\n });\n } else if (typeof module === 'object' && module.exports) {\n // CommonJS-like environments that support module.exports\n module.exports = factory(global);\n } else {\n factory(global);\n }\n}(typeof self !== 'undefined' ? self : this, function (global) {\n 'use strict';\n\n if ( typeof Promise !== 'function' )\n throw \"Promise support required\";\n\n var _crypto = global.crypto || global.msCrypto;\n if ( !_crypto ) return;\n\n var _subtle = _crypto.subtle || _crypto.webkitSubtle;\n if ( !_subtle ) return;\n\n var _Crypto = global.Crypto || _crypto.constructor || Object,\n _SubtleCrypto = global.SubtleCrypto || _subtle.constructor || Object,\n _CryptoKey = global.CryptoKey || global.Key || Object;\n\n var isEdge = global.navigator.userAgent.indexOf('Edge/') > -1;\n var isIE = !!global.msCrypto && !isEdge;\n var isWebkit = !_crypto.subtle && !!_crypto.webkitSubtle;\n if ( !isIE && !isWebkit ) return;\n\n function s2a ( s ) {\n return btoa(s).replace(/\\=+$/, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n }\n\n function a2s ( s ) {\n s += '===', s = s.slice( 0, -s.length % 4 );\n return atob( s.replace(/-/g, '+').replace(/_/g, '/') );\n }\n\n function s2b ( s ) {\n var b = new Uint8Array(s.length);\n for ( var i = 0; i < s.length; i++ ) b[i] = s.charCodeAt(i);\n return b;\n }\n\n function b2s ( b ) {\n if ( b instanceof ArrayBuffer ) b = new Uint8Array(b);\n return String.fromCharCode.apply( String, b );\n }\n\n function alg ( a ) {\n var r = { 'name': (a.name || a || '').toUpperCase().replace('V','v') };\n switch ( r.name ) {\n case 'SHA-1':\n case 'SHA-256':\n case 'SHA-384':\n case 'SHA-512':\n break;\n case 'AES-CBC':\n case 'AES-GCM':\n case 'AES-KW':\n if ( a.length ) r['length'] = a.length;\n break;\n case 'HMAC':\n if ( a.hash ) r['hash'] = alg(a.hash);\n if ( a.length ) r['length'] = a.length;\n break;\n case 'RSAES-PKCS1-v1_5':\n if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent);\n if ( a.modulusLength ) r['modulusLength'] = a.modulusLength;\n break;\n case 'RSASSA-PKCS1-v1_5':\n case 'RSA-OAEP':\n if ( a.hash ) r['hash'] = alg(a.hash);\n if ( a.publicExponent ) r['publicExponent'] = new Uint8Array(a.publicExponent);\n if ( a.modulusLength ) r['modulusLength'] = a.modulusLength;\n break;\n default:\n throw new SyntaxError(\"Bad algorithm name\");\n }\n return r;\n };\n\n function jwkAlg ( a ) {\n return {\n 'HMAC': {\n 'SHA-1': 'HS1',\n 'SHA-256': 'HS256',\n 'SHA-384': 'HS384',\n 'SHA-512': 'HS512',\n },\n 'RSASSA-PKCS1-v1_5': {\n 'SHA-1': 'RS1',\n 'SHA-256': 'RS256',\n 'SHA-384': 'RS384',\n 'SHA-512': 'RS512',\n },\n 'RSAES-PKCS1-v1_5': {\n '': 'RSA1_5',\n },\n 'RSA-OAEP': {\n 'SHA-1': 'RSA-OAEP',\n 'SHA-256': 'RSA-OAEP-256',\n },\n 'AES-KW': {\n '128': 'A128KW',\n '192': 'A192KW',\n '256': 'A256KW',\n },\n 'AES-GCM': {\n '128': 'A128GCM',\n '192': 'A192GCM',\n '256': 'A256GCM',\n },\n 'AES-CBC': {\n '128': 'A128CBC',\n '192': 'A192CBC',\n '256': 'A256CBC',\n },\n }[a.name][ ( a.hash || {} ).name || a.length || '' ];\n }\n\n function b2jwk ( k ) {\n if ( k instanceof ArrayBuffer || k instanceof Uint8Array ) k = JSON.parse( decodeURIComponent( escape( b2s(k) ) ) );\n var jwk = { 'kty': k.kty, 'alg': k.alg, 'ext': k.ext || k.extractable };\n switch ( jwk.kty ) {\n case 'oct':\n jwk.k = k.k;\n case 'RSA':\n [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi', 'oth' ].forEach( function ( x ) { if ( x in k ) jwk[x] = k[x] } );\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n return jwk;\n }\n\n function jwk2b ( k ) {\n var jwk = b2jwk(k);\n if ( isIE ) jwk['extractable'] = jwk.ext, delete jwk.ext;\n return s2b( unescape( encodeURIComponent( JSON.stringify(jwk) ) ) ).buffer;\n }\n\n function pkcs2jwk ( k ) {\n var info = b2der(k), prv = false;\n if ( info.length > 2 ) prv = true, info.shift(); // remove version from PKCS#8 PrivateKeyInfo structure\n var jwk = { 'ext': true };\n switch ( info[0][0] ) {\n case '1.2.840.113549.1.1.1':\n var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ],\n rsaKey = b2der( info[1] );\n if ( prv ) rsaKey.shift(); // remove version from PKCS#1 RSAPrivateKey structure\n for ( var i = 0; i < rsaKey.length; i++ ) {\n if ( !rsaKey[i][0] ) rsaKey[i] = rsaKey[i].subarray(1);\n jwk[ rsaComp[i] ] = s2a( b2s( rsaKey[i] ) );\n }\n jwk['kty'] = 'RSA';\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n return jwk;\n }\n\n function jwk2pkcs ( k ) {\n var key, info = [ [ '', null ] ], prv = false;\n switch ( k.kty ) {\n case 'RSA':\n var rsaComp = [ 'n', 'e', 'd', 'p', 'q', 'dp', 'dq', 'qi' ],\n rsaKey = [];\n for ( var i = 0; i < rsaComp.length; i++ ) {\n if ( !( rsaComp[i] in k ) ) break;\n var b = rsaKey[i] = s2b( a2s( k[ rsaComp[i] ] ) );\n if ( b[0] & 0x80 ) rsaKey[i] = new Uint8Array(b.length + 1), rsaKey[i].set( b, 1 );\n }\n if ( rsaKey.length > 2 ) prv = true, rsaKey.unshift( new Uint8Array([0]) ); // add version to PKCS#1 RSAPrivateKey structure\n info[0][0] = '1.2.840.113549.1.1.1';\n key = rsaKey;\n break;\n default:\n throw new TypeError(\"Unsupported key type\");\n }\n info.push( new Uint8Array( der2b(key) ).buffer );\n if ( !prv ) info[1] = { 'tag': 0x03, 'value': info[1] };\n else info.unshift( new Uint8Array([0]) ); // add version to PKCS#8 PrivateKeyInfo structure\n return new Uint8Array( der2b(info) ).buffer;\n }\n\n var oid2str = { 'KoZIhvcNAQEB': '1.2.840.113549.1.1.1' },\n str2oid = { '1.2.840.113549.1.1.1': 'KoZIhvcNAQEB' };\n\n function b2der ( buf, ctx ) {\n if ( buf instanceof ArrayBuffer ) buf = new Uint8Array(buf);\n if ( !ctx ) ctx = { pos: 0, end: buf.length };\n\n if ( ctx.end - ctx.pos < 2 || ctx.end > buf.length ) throw new RangeError(\"Malformed DER\");\n\n var tag = buf[ctx.pos++],\n len = buf[ctx.pos++];\n\n if ( len >= 0x80 ) {\n len &= 0x7f;\n if ( ctx.end - ctx.pos < len ) throw new RangeError(\"Malformed DER\");\n for ( var xlen = 0; len--; ) xlen <<= 8, xlen |= buf[ctx.pos++];\n len = xlen;\n }\n\n if ( ctx.end - ctx.pos < len ) throw new RangeError(\"Malformed DER\");\n\n var rv;\n\n switch ( tag ) {\n case 0x02: // Universal Primitive INTEGER\n rv = buf.subarray( ctx.pos, ctx.pos += len );\n break;\n case 0x03: // Universal Primitive BIT STRING\n if ( buf[ctx.pos++] ) throw new Error( \"Unsupported bit string\" );\n len--;\n case 0x04: // Universal Primitive OCTET STRING\n rv = new Uint8Array( buf.subarray( ctx.pos, ctx.pos += len ) ).buffer;\n break;\n case 0x05: // Universal Primitive NULL\n rv = null;\n break;\n case 0x06: // Universal Primitive OBJECT IDENTIFIER\n var oid = btoa( b2s( buf.subarray( ctx.pos, ctx.pos += len ) ) );\n if ( !( oid in oid2str ) ) throw new Error( \"Unsupported OBJECT ID \" + oid );\n rv = oid2str[oid];\n break;\n case 0x30: // Universal Constructed SEQUENCE\n rv = [];\n for ( var end = ctx.pos + len; ctx.pos < end; ) rv.push( b2der( buf, ctx ) );\n break;\n default:\n throw new Error( \"Unsupported DER tag 0x\" + tag.toString(16) );\n }\n\n return rv;\n }\n\n function der2b ( val, buf ) {\n if ( !buf ) buf = [];\n\n var tag = 0, len = 0,\n pos = buf.length + 2;\n\n buf.push( 0, 0 ); // placeholder\n\n if ( val instanceof Uint8Array ) { // Universal Primitive INTEGER\n tag = 0x02, len = val.length;\n for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n }\n else if ( val instanceof ArrayBuffer ) { // Universal Primitive OCTET STRING\n tag = 0x04, len = val.byteLength, val = new Uint8Array(val);\n for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n }\n else if ( val === null ) { // Universal Primitive NULL\n tag = 0x05, len = 0;\n }\n else if ( typeof val === 'string' && val in str2oid ) { // Universal Primitive OBJECT IDENTIFIER\n var oid = s2b( atob( str2oid[val] ) );\n tag = 0x06, len = oid.length;\n for ( var i = 0; i < len; i++ ) buf.push( oid[i] );\n }\n else if ( val instanceof Array ) { // Universal Constructed SEQUENCE\n for ( var i = 0; i < val.length; i++ ) der2b( val[i], buf );\n tag = 0x30, len = buf.length - pos;\n }\n else if ( typeof val === 'object' && val.tag === 0x03 && val.value instanceof ArrayBuffer ) { // Tag hint\n val = new Uint8Array(val.value), tag = 0x03, len = val.byteLength;\n buf.push(0); for ( var i = 0; i < len; i++ ) buf.push( val[i] );\n len++;\n }\n else {\n throw new Error( \"Unsupported DER value \" + val );\n }\n\n if ( len >= 0x80 ) {\n var xlen = len, len = 4;\n buf.splice( pos, 0, (xlen >> 24) & 0xff, (xlen >> 16) & 0xff, (xlen >> 8) & 0xff, xlen & 0xff );\n while ( len > 1 && !(xlen >> 24) ) xlen <<= 8, len--;\n if ( len < 4 ) buf.splice( pos, 4 - len );\n len |= 0x80;\n }\n\n buf.splice( pos - 2, 2, tag, len );\n\n return buf;\n }\n\n function CryptoKey ( key, alg, ext, use ) {\n Object.defineProperties( this, {\n _key: {\n value: key\n },\n type: {\n value: key.type,\n enumerable: true,\n },\n extractable: {\n value: (ext === undefined) ? key.extractable : ext,\n enumerable: true,\n },\n algorithm: {\n value: (alg === undefined) ? key.algorithm : alg,\n enumerable: true,\n },\n usages: {\n value: (use === undefined) ? key.usages : use,\n enumerable: true,\n },\n });\n }\n\n function isPubKeyUse ( u ) {\n return u === 'verify' || u === 'encrypt' || u === 'wrapKey';\n }\n\n function isPrvKeyUse ( u ) {\n return u === 'sign' || u === 'decrypt' || u === 'unwrapKey';\n }\n\n [ 'generateKey', 'importKey', 'unwrapKey' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c ) {\n var args = [].slice.call(arguments),\n ka, kx, ku;\n\n switch ( m ) {\n case 'generateKey':\n ka = alg(a), kx = b, ku = c;\n break;\n case 'importKey':\n ka = alg(c), kx = args[3], ku = args[4];\n if ( a === 'jwk' ) {\n b = b2jwk(b);\n if ( !b.alg ) b.alg = jwkAlg(ka);\n if ( !b.key_ops ) b.key_ops = ( b.kty !== 'oct' ) ? ( 'd' in b ) ? ku.filter(isPrvKeyUse) : ku.filter(isPubKeyUse) : ku.slice();\n args[1] = jwk2b(b);\n }\n break;\n case 'unwrapKey':\n ka = args[4], kx = args[5], ku = args[6];\n args[2] = c._key;\n break;\n }\n\n if ( m === 'generateKey' && ka.name === 'HMAC' && ka.hash ) {\n ka.length = ka.length || { 'SHA-1': 512, 'SHA-256': 512, 'SHA-384': 1024, 'SHA-512': 1024 }[ka.hash.name];\n return _subtle.importKey( 'raw', _crypto.getRandomValues( new Uint8Array( (ka.length+7)>>3 ) ), ka, kx, ku );\n }\n\n if ( isWebkit && m === 'generateKey' && ka.name === 'RSASSA-PKCS1-v1_5' && ( !ka.modulusLength || ka.modulusLength >= 2048 ) ) {\n a = alg(a), a.name = 'RSAES-PKCS1-v1_5', delete a.hash;\n return _subtle.generateKey( a, true, [ 'encrypt', 'decrypt' ] )\n .then( function ( k ) {\n return Promise.all([\n _subtle.exportKey( 'jwk', k.publicKey ),\n _subtle.exportKey( 'jwk', k.privateKey ),\n ]);\n })\n .then( function ( keys ) {\n keys[0].alg = keys[1].alg = jwkAlg(ka);\n keys[0].key_ops = ku.filter(isPubKeyUse), keys[1].key_ops = ku.filter(isPrvKeyUse);\n return Promise.all([\n _subtle.importKey( 'jwk', keys[0], ka, true, keys[0].key_ops ),\n _subtle.importKey( 'jwk', keys[1], ka, kx, keys[1].key_ops ),\n ]);\n })\n .then( function ( keys ) {\n return {\n publicKey: keys[0],\n privateKey: keys[1],\n };\n });\n }\n\n if ( ( isWebkit || ( isIE && ( ka.hash || {} ).name === 'SHA-1' ) )\n && m === 'importKey' && a === 'jwk' && ka.name === 'HMAC' && b.kty === 'oct' ) {\n return _subtle.importKey( 'raw', s2b( a2s(b.k) ), c, args[3], args[4] );\n }\n\n if ( isWebkit && m === 'importKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n return _subtle.importKey( 'jwk', pkcs2jwk(b), c, args[3], args[4] );\n }\n\n if ( isIE && m === 'unwrapKey' ) {\n return _subtle.decrypt( args[3], c, b )\n .then( function ( k ) {\n return _subtle.importKey( a, k, args[4], args[5], args[6] );\n });\n }\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n }\n\n op = op.then( function ( k ) {\n if ( ka.name === 'HMAC' ) {\n if ( !ka.length ) ka.length = 8 * k.algorithm.length;\n }\n if ( ka.name.search('RSA') == 0 ) {\n if ( !ka.modulusLength ) ka.modulusLength = (k.publicKey || k).algorithm.modulusLength;\n if ( !ka.publicExponent ) ka.publicExponent = (k.publicKey || k).algorithm.publicExponent;\n }\n if ( k.publicKey && k.privateKey ) {\n k = {\n publicKey: new CryptoKey( k.publicKey, ka, kx, ku.filter(isPubKeyUse) ),\n privateKey: new CryptoKey( k.privateKey, ka, kx, ku.filter(isPrvKeyUse) ),\n };\n }\n else {\n k = new CryptoKey( k, ka, kx, ku );\n }\n return k;\n });\n\n return op;\n }\n });\n\n [ 'exportKey', 'wrapKey' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c ) {\n var args = [].slice.call(arguments);\n\n switch ( m ) {\n case 'exportKey':\n args[1] = b._key;\n break;\n case 'wrapKey':\n args[1] = b._key, args[2] = c._key;\n break;\n }\n\n if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) )\n && m === 'exportKey' && a === 'jwk' && b.algorithm.name === 'HMAC' ) {\n args[0] = 'raw';\n }\n\n if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n args[0] = 'jwk';\n }\n\n if ( isIE && m === 'wrapKey' ) {\n return _subtle.exportKey( a, b )\n .then( function ( k ) {\n if ( a === 'jwk' ) k = s2b( unescape( encodeURIComponent( JSON.stringify( b2jwk(k) ) ) ) );\n return _subtle.encrypt( args[3], c, k );\n });\n }\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n }\n\n if ( m === 'exportKey' && a === 'jwk' ) {\n op = op.then( function ( k ) {\n if ( ( isWebkit || ( isIE && ( b.algorithm.hash || {} ).name === 'SHA-1' ) )\n && b.algorithm.name === 'HMAC') {\n return { 'kty': 'oct', 'alg': jwkAlg(b.algorithm), 'key_ops': b.usages.slice(), 'ext': true, 'k': s2a( b2s(k) ) };\n }\n k = b2jwk(k);\n if ( !k.alg ) k['alg'] = jwkAlg(b.algorithm);\n if ( !k.key_ops ) k['key_ops'] = ( b.type === 'public' ) ? b.usages.filter(isPubKeyUse) : ( b.type === 'private' ) ? b.usages.filter(isPrvKeyUse) : b.usages.slice();\n return k;\n });\n }\n\n if ( isWebkit && m === 'exportKey' && ( a === 'spki' || a === 'pkcs8' ) ) {\n op = op.then( function ( k ) {\n k = jwk2pkcs( b2jwk(k) );\n return k;\n });\n }\n\n return op;\n }\n });\n\n [ 'encrypt', 'decrypt', 'sign', 'verify' ]\n .forEach( function ( m ) {\n var _fn = _subtle[m];\n\n _subtle[m] = function ( a, b, c, d ) {\n if ( isIE && ( !c.byteLength || ( d && !d.byteLength ) ) )\n throw new Error(\"Empty input is not allowed\");\n\n var args = [].slice.call(arguments),\n ka = alg(a);\n\n if ( isIE && ( m === 'sign' || m === 'verify') && ( a === 'RSASSA-PKCS1-v1_5' || a === 'HMAC' ) ) {\n args[0] = { name: a };\n }\n\n if ( isIE && b.algorithm.hash ) {\n args[0].hash = args[0].hash || b.algorithm.hash;\n }\n\n if ( isIE && m === 'decrypt' && ka.name === 'AES-GCM' ) {\n var tl = a.tagLength >> 3;\n args[2] = (c.buffer || c).slice( 0, c.byteLength - tl ),\n a.tag = (c.buffer || c).slice( c.byteLength - tl );\n }\n\n if ( isIE && ka.name === 'AES-GCM' && args[0].tagLength === undefined ) {\n args[0].tagLength = 128;\n }\n\n args[1] = b._key;\n\n var op;\n try {\n op = _fn.apply( _subtle, args );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n if ( isIE ) {\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) {\n rej(e);\n };\n\n op.oncomplete = function ( r ) {\n var r = r.target.result;\n\n if ( m === 'encrypt' && r instanceof AesGcmEncryptResult ) {\n var c = r.ciphertext, t = r.tag;\n r = new Uint8Array( c.byteLength + t.byteLength );\n r.set( new Uint8Array(c), 0 );\n r.set( new Uint8Array(t), c.byteLength );\n r = r.buffer;\n }\n\n res(r);\n };\n });\n }\n\n return op;\n }\n });\n\n if ( isIE ) {\n var _digest = _subtle.digest;\n\n _subtle['digest'] = function ( a, b ) {\n if ( !b.byteLength )\n throw new Error(\"Empty input is not allowed\");\n\n var op;\n try {\n op = _digest.call( _subtle, a, b );\n }\n catch ( e ) {\n return Promise.reject(e);\n }\n\n op = new Promise( function ( res, rej ) {\n op.onabort =\n op.onerror = function ( e ) { rej(e) };\n op.oncomplete = function ( r ) { res(r.target.result) };\n });\n\n return op;\n };\n\n global.crypto = Object.create( _crypto, {\n getRandomValues: { value: function ( a ) { return _crypto.getRandomValues(a) } },\n subtle: { value: _subtle },\n });\n\n global.CryptoKey = CryptoKey;\n }\n\n if ( isWebkit ) {\n _crypto.subtle = _subtle;\n\n global.Crypto = _Crypto;\n global.SubtleCrypto = _SubtleCrypto;\n global.CryptoKey = CryptoKey;\n }\n}));\n"]} |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
436390
0.13%4398
0.25%