@nodesuite/crypto
Version:
Encryption and decryption library.
19 lines (16 loc) • 13.3 kB
JavaScript
;
var crypto = require('crypto');
var util = require('util');
var n=e=>typeof e=="object"&&e!==null&&["Int8Array","Uint8Array","Uint8ClampedArray"].includes(Object.prototype.toString.call(e).slice(8,-1));var A=new util.TextEncoder,u=new util.TextDecoder,y=e=>n(e)?e:A.encode(JSON.stringify(e)),p=e=>JSON.parse(u.decode(e));var c=12,s=(e=c)=>{let r=[];for(let t=0;t++;t<e)r.push(Math.random());return new Uint8Array(r)},C=(e,r=c)=>new util.TextEncoder().encode(e.padEnd(r,"_").substring(0,r));var i={name:"AES-GCM",tagLength:256},P=async({key:e,iv:r,data:t})=>(r=r??s(),{iv:r,key:e,data:await crypto.subtle.encrypt({...i,iv:r},e,y(t))}),G=async({key:e,iv:r,data:t})=>({key:e,iv:r,data:p(await crypto.subtle.decrypt({...i,iv:r},e,t))});var m={name:"AES-GCM",length:256},d="jwk",g=async()=>crypto.subtle.generateKey(m,!0,["encrypt","decrypt"]),k=async()=>crypto.subtle.exportKey(d,await g()),B=async e=>crypto.subtle.importKey(d,typeof e=="string"?{kty:"oct",k:e,alg:"A256GCM",ext:!0}:e,m,!1,["encrypt","decrypt"]);
exports.decode = p;
exports.decrypt = G;
exports.encode = y;
exports.encrypt = P;
exports.generateInsecureIv = C;
exports.generateJsonWebKey = k;
exports.generateKey = g;
exports.generateSecureIv = s;
exports.importJsonWebKey = B;
exports.isBuffer = n;
//# sourceMappingURL=out.js.map
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jcnlwdG8udHMiLCIuLi9zcmMvZW5jb2RpbmcudHMiLCIuLi9zcmMvdHlwZXMudHMiLCIuLi9zcmMvaXYudHMiLCIuLi9zcmMvcHJpdmF0ZS1rZXlzLnRzIl0sIm5hbWVzIjpbInN1YnRsZSIsIlRleHREZWNvZGVyIiwiVGV4dEVuY29kZXIiLCJpc0J1ZmZlciIsInZhbHVlIiwiX2VuY29kZXIiLCJfZGVjb2RlciIsImVuY29kZSIsImRhdGEiLCJkZWNvZGUiLCJJVl9MRU5HVEgiLCJnZW5lcmF0ZVNlY3VyZUl2IiwibGVuZ3RoIiwiZWxlbWVudHMiLCJpbmRleCIsImdlbmVyYXRlSW5zZWN1cmVJdiIsInNlZWQiLCJhbGdvcml0aG0iLCJlbmNyeXB0Iiwia2V5IiwiaXYiLCJkZWNyeXB0IiwiZm9ybWF0IiwiZ2VuZXJhdGVLZXkiLCJnZW5lcmF0ZUpzb25XZWJLZXkiLCJpbXBvcnRKc29uV2ViS2V5IiwicHJpdmF0ZUtleSJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBUyxVQUFBQSxNQUFjLFNDQXZCLE9BQVMsZUFBQUMsRUFBYSxlQUFBQyxNQUFtQixPQ21EbEMsSUFBTUMsRUFBWUMsR0FDdkIsT0FBT0EsR0FBVSxVQUNqQkEsSUFBVSxNQUNWLENBQUMsWUFBYSxhQUFjLG1CQUFtQixFQUFFLFNBQy9DLE9BQU8sVUFBVSxTQUFTLEtBQUtBLENBQUssRUFBRSxNQUFNLEVBQUcsRUFBRSxDQUNuRCxFRC9DRixJQUFNQyxFQUF3QixJQUFJSCxFQU81QkksRUFBd0IsSUFBSUwsRUFZckJNLEVBQVVDLEdBQ2pCTCxFQUFTSyxDQUFJLEVBQ1JBLEVBRUFILEVBQVMsT0FBTyxLQUFLLFVBQVVHLENBQUksQ0FBQyxFQVdsQ0MsRUFBYUQsR0FDeEIsS0FBSyxNQUFNRixFQUFTLE9BQU9FLENBQUksQ0FBQyxFRTVDbEMsT0FBUyxlQUFBTixNQUFtQixPQU81QixJQUFNUSxFQUFvQixHQVNiQyxFQUFtQixDQUFDQyxFQUFpQkYsSUFBMEIsQ0FDMUUsSUFBTUcsRUFBcUIsQ0FBQyxFQUM1QixRQUFTQyxFQUFRLEVBQUdBLElBQVNBLEVBQVFGLEVBQ25DQyxFQUFTLEtBQUssS0FBSyxPQUFPLENBQUMsRUFFN0IsT0FBTyxJQUFJLFdBQVdBLENBQVEsQ0FDaEMsRUFjYUUsRUFBcUIsQ0FDaENDLEVBQ0FKLEVBQWlCRixJQUVqQixJQUFJUixFQUFZLEVBQUUsT0FBT2MsRUFBSyxPQUFPSixFQUFRLEdBQUcsRUFBRSxVQUFVLEVBQUdBLENBQU0sQ0FBQyxFSDdCeEUsSUFBTUssRUFBc0MsQ0FDMUMsS0FBTSxVQUNOLFVBQVcsR0FDYixFQWVhQyxFQUFVLE1BQU8sQ0FDNUIsSUFBQUMsRUFDQSxHQUFBQyxFQUNBLEtBQUFaLENBQ0YsS0FDRVksRUFBS0EsR0FBTVQsRUFBaUIsRUFDckIsQ0FDTCxHQUFBUyxFQUNBLElBQUFELEVBQ0EsS0FBTSxNQUFNbkIsRUFBTyxRQUNqQixDQUNFLEdBQUdpQixFQUNILEdBQUFHLENBQ0YsRUFDQUQsRUFDQVosRUFBT0MsQ0FBSSxDQUNiLENBQ0YsR0FnQldhLEVBQVUsTUFBVSxDQUMvQixJQUFBRixFQUNBLEdBQUFDLEVBQ0EsS0FBQVosQ0FDRixLQUF5QyxDQUN2QyxJQUFBVyxFQUNBLEdBQUFDLEVBQ0EsS0FBTVgsRUFDSixNQUFNVCxFQUFPLFFBQ1gsQ0FDRSxHQUFHaUIsRUFDSCxHQUFBRyxDQUNGLEVBQ0FELEVBQ0FYLENBQ0YsQ0FDRixDQUNGLEdJL0VBLE9BQVMsVUFBQVIsTUFBYyxTQVN2QixJQUFNaUIsRUFBNkIsQ0FDakMsS0FBTSxVQUNOLE9BQVEsR0FDVixFQU9NSyxFQUFnQixNQU9UQyxFQUFjLFNBQ3pCdkIsRUFBTyxZQUFZaUIsRUFBVyxHQUFNLENBQUMsVUFBVyxTQUFTLENBQUMsRUFPL0NPLEVBQXFCLFNBQ2hDeEIsRUFBTyxVQUFVc0IsRUFBUSxNQUFNQyxFQUFZLENBQUMsRUFZakNFLEVBQW1CLE1BQzlCQyxHQUVBMUIsRUFBTyxVQUNMc0IsRUFDQSxPQUFPSSxHQUFlLFNBQ2xCLENBQ0UsSUFBSyxNQUNMLEVBQUdBLEVBQ0gsSUFBSyxVQUNMLElBQUssRUFDUCxFQUNBQSxFQUNKVCxFQUNBLEdBQ0EsQ0FBQyxVQUFXLFNBQVMsQ0FDdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdWJ0bGUgfSBmcm9tIFwibm9kZTpjcnlwdG9cIlxuXG5pbXBvcnQgeyBkZWNvZGUsIGVuY29kZSB9IGZyb20gXCIuL2VuY29kaW5nXCJcbmltcG9ydCB7IGdlbmVyYXRlU2VjdXJlSXYgfSBmcm9tIFwiLi9pdlwiXG5pbXBvcnQgdHlwZSB7IEFlc0djbVBhcmFtcywgRGVjcnlwdGVkLCBFbmNyeXB0LCBFbmNyeXB0ZWQgfSBmcm9tIFwiLi90eXBlc1wiXG5cbi8qKlxuICogQ3VycmVudCBBRVMgcGFyYW1zLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5jb25zdCBhbGdvcml0aG06IE9taXQ8QWVzR2NtUGFyYW1zLCBcIml2XCI+ID0ge1xuICBuYW1lOiBcIkFFUy1HQ01cIixcbiAgdGFnTGVuZ3RoOiAyNTZcbn1cblxuLyoqXG4gKiBFbmNyeXB0cyBhIGRhdGEgcGF5bG9hZC5cbiAqXG4gKiBAcmVtYXJrc1xuICogQWx3YXlzIGdlbmVyYXRlIGEgbmV3IGl2IGV2ZXJ5IHRpbWUsIHJlY29tbWVuZGVkIDEyLWJ5dGUgbGVuZ3RoLlxuICogVGFnIGxlbmd0aCBvcHRpb25zIGFyZSAzMiwgNjQsIDk2LCAxMDQsIDExMiwgMTIwLCAxMjggKGRlZmF1bHQpLlxuICpcbiAqIEBwYXJhbSBkYXRhIC0gUGF5bG9hZCB0byBlbmNyeXB0LiBSZWNvbW1lbmQgb2JqZWN0LCBidXQgd2lsbCBhY2NlcHQgc2ltcGxlIHN0cmluZ3MgYXMgd2VsbC5cbiAqIEBwYXJhbSBrZXkgLSBQcml2YXRlIGtleSB0byB1c2UgZm9yIGVuY3J5cHRpb24uXG4gKiBAcGFyYW0gaXYgLSBVbmlxdWUgaW5pdGlhbGl6YXRpb24gdmVjdG9yLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGVuY3J5cHQgPSBhc3luYyAoe1xuICBrZXksXG4gIGl2LFxuICBkYXRhXG59OiBFbmNyeXB0KTogUHJvbWlzZTxFbmNyeXB0ZWQ+ID0+IHtcbiAgaXYgPSBpdiA/PyBnZW5lcmF0ZVNlY3VyZUl2KClcbiAgcmV0dXJuIHtcbiAgICBpdixcbiAgICBrZXksXG4gICAgZGF0YTogYXdhaXQgc3VidGxlLmVuY3J5cHQoXG4gICAgICB7XG4gICAgICAgIC4uLmFsZ29yaXRobSxcbiAgICAgICAgaXZcbiAgICAgIH0sXG4gICAgICBrZXksXG4gICAgICBlbmNvZGUoZGF0YSlcbiAgICApXG4gIH1cbn1cblxuLyoqXG4gKiBEZWNyeXB0cyBhIG1lc3NhZ2UgcGF5bG9hZC5cbiAqXG4gKiBAcmVtYXJrc1xuICogQWx3YXlzIGdlbmVyYXRlIGEgbmV3IGl2IGV2ZXJ5IHRpbWUsIHJlY29tbWVuZGVkIDEyLWJ5dGUgbGVuZ3RoLlxuICogVGFnIGxlbmd0aCBvcHRpb25zIGFyZSAzMiwgNjQsIDk2LCAxMDQsIDExMiwgMTIwLCAxMjggKGRlZmF1bHQpLlxuICpcbiAqIEBwYXJhbSBkYXRhIC0gUGF5bG9hZCB0byBkZWNyeXB0LlxuICogQHBhcmFtIGtleSAtIFByaXZhdGUga2V5IHRvIHVzZSBmb3IgZW5jcnlwdGlvbi5cbiAqIEBwYXJhbSBpdiAtIFVuaXF1ZSBpbml0aWFsaXphdGlvbiB2ZWN0b3IuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgZGVjcnlwdCA9IGFzeW5jIDxUPih7XG4gIGtleSxcbiAgaXYsXG4gIGRhdGFcbn06IEVuY3J5cHRlZCk6IFByb21pc2U8RGVjcnlwdGVkPFQ+PiA9PiAoe1xuICBrZXksXG4gIGl2LFxuICBkYXRhOiBkZWNvZGUoXG4gICAgYXdhaXQgc3VidGxlLmRlY3J5cHQoXG4gICAgICB7XG4gICAgICAgIC4uLmFsZ29yaXRobSxcbiAgICAgICAgaXZcbiAgICAgIH0sXG4gICAgICBrZXksXG4gICAgICBkYXRhXG4gICAgKVxuICApXG59KVxuIiwiaW1wb3J0IHsgVGV4dERlY29kZXIsIFRleHRFbmNvZGVyIH0gZnJvbSBcIm5vZGU6dXRpbFwiXG5cbmltcG9ydCB7IGlzQnVmZmVyIH0gZnJvbSBcIi4vdHlwZXNcIlxuXG4vKipcbiAqIFRleHQgZW5jb2RlciBpbnN0YW5jZS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuY29uc3QgX2VuY29kZXI6IFRleHRFbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKClcblxuLyoqXG4gKiBUZXh0IGRlY29kZXIgaW5zdGFuY2UuXG4gKlxuICogQGludGVybmFsXG4gKi9cbmNvbnN0IF9kZWNvZGVyOiBUZXh0RGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG5cbi8qKlxuICogRW5jb2RlcyBkYXRhIHRvIFVuaXQ4QXJyYXkgZm9yIGVuY3J5cHRpb24uXG4gKlxuICogQHJlbWFya3NcbiAqIElmIHZhbHVlIGlzIGFscmVhZHkgZW5jb2RlZCwgd2lsbCByZXR1cm4gb3JpZ2luYWwuXG4gKlxuICogQHBhcmFtIGRhdGEgLSBQYXlsb2FkIHRvIGVuY29kZS5cbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBlbmNvZGUgPSAoZGF0YTogb2JqZWN0IHwgc3RyaW5nIHwgVWludDhBcnJheSk6IFVpbnQ4QXJyYXkgPT4ge1xuICBpZiAoaXNCdWZmZXIoZGF0YSkpIHtcbiAgICByZXR1cm4gZGF0YVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBfZW5jb2Rlci5lbmNvZGUoSlNPTi5zdHJpbmdpZnkoZGF0YSkpXG4gIH1cbn1cblxuLyoqXG4gKiBEZWNvZGVzIGRhdGEgZnJvbSBVbml0OEFycmF5IHBheWxvYWQgcHJvZHVjZWQgYnkgZGVjcnlwdGlvbi5cbiAqXG4gKiBAcGFyYW0gZGF0YSAtIFVpbnQ4QXJyYXkgcGF5bG9hZCB0byBkZWNvZGUuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgZGVjb2RlID0gPFQ+KGRhdGE6IFVpbnQ4QXJyYXkgfCBBcnJheUJ1ZmZlcik6IFQgPT5cbiAgSlNPTi5wYXJzZShfZGVjb2Rlci5kZWNvZGUoZGF0YSkpXG4iLCJpbXBvcnQgdHlwZSB7IHdlYmNyeXB0byB9IGZyb20gXCJub2RlOmNyeXB0b1wiXG5cbi8qKlxuICogUmV0dXJuIHR5cGUgZnJvbSBhbiBlbmNyeXB0aW9uIGNhbGwuXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuY3J5cHRlZCB7XG4gIC8vIEluaXRpYWxpemF0aW9uIHZlY3Rvci5cbiAgaXY6IFVpbnQ4QXJyYXlcbiAgLy8gRW5jcnlwdGlvbiBrZXkuXG4gIGtleTogQ3J5cHRvS2V5XG4gIC8vIEVuY3J5cHRlZCBkYXRhLlxuICBkYXRhOiBCdWZmZXJTb3VyY2Vcbn1cblxuLyoqXG4gKiBSZXR1cm4gdHlwZSBmcm9tIGEgZGVjcnlwdGlvbiBjYWxsLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWNyeXB0ZWQ8VD4ge1xuICAvLyBJbml0aWFsaXphdGlvbiB2ZWN0b3IuXG4gIGl2OiBVaW50OEFycmF5XG4gIC8vIEVuY3J5cHRpb24ga2V5LlxuICBrZXk6IENyeXB0b0tleVxuICAvLyBEZWNyeXB0ZWQgZGF0YS5cbiAgZGF0YTogVFxufVxuXG4vKipcbiAqIFBhcmFtcyBmb3IgYW4gZW5jcnlwdGlvbiBjYWxsLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmNyeXB0IHtcbiAgLy8gSW5pdGlhbGl6YXRpb24gdmVjdG9yLlxuICBpdj86IFVpbnQ4QXJyYXlcbiAgLy8gRW5jcnlwdGlvbiBrZXkuXG4gIGtleTogQ3J5cHRvS2V5XG4gIC8vIERlY3J5cHRlZCBkYXRhLlxuICBkYXRhOiBzdHJpbmcgfCBvYmplY3QgfCBVaW50OEFycmF5XG59XG5cbi8qKlxuICogVHlwZSBndWFyZCB0byB0ZXN0IGlmIGEgdmFsdWUgaXMgYSB2YWxpZCBidWZmZXIuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVW5rbm93biB2YWx1ZSB0byB0ZXN0LlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgaXNCdWZmZXIgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBVaW50OEFycmF5ID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxuICB2YWx1ZSAhPT0gbnVsbCAmJlxuICBbXCJJbnQ4QXJyYXlcIiwgXCJVaW50OEFycmF5XCIsIFwiVWludDhDbGFtcGVkQXJyYXlcIl0uaW5jbHVkZXMoXG4gICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKS5zbGljZSg4LCAtMSlcbiAgKVxuXG4vKipcbiAqIE5vZGUgYHdlYmNyeXB0b2AgQWVzR2NtUGFyYW1zIHR5cGUuXG4gKlxuICogQHNlZSBodHRwczovL25vZGVqcy5vcmcvYXBpL3dlYmNyeXB0by5odG1sXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBBZXNHY21QYXJhbXMgPSB3ZWJjcnlwdG8uQWVzR2NtUGFyYW1zXG5cbi8qKlxuICogTm9kZSBgd2ViY3J5cHRvYCBDcnlwdG9LZXkgdHlwZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvd2ViY3J5cHRvLmh0bWxcbiAqXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCB0eXBlIENyeXB0b0tleSA9IHdlYmNyeXB0by5DcnlwdG9LZXlcblxuLyoqXG4gKiBOb2RlIGB3ZWJjcnlwdG9gIEJ1ZmZlclNvdXJjZSB0eXBlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS93ZWJjcnlwdG8uaHRtbFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgQnVmZmVyU291cmNlID0gd2ViY3J5cHRvLkJ1ZmZlclNvdXJjZVxuXG4vKipcbiAqIE5vZGUgYHdlYmNyeXB0b2AgQWVzS2V5QWxnb3JpdGhtIHR5cGUuXG4gKlxuICogQHNlZSBodHRwczovL25vZGVqcy5vcmcvYXBpL3dlYmNyeXB0by5odG1sXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBBZXNLZXlBbGdvcml0aG0gPSB3ZWJjcnlwdG8uQWVzS2V5QWxnb3JpdGhtXG5cbi8qKlxuICogTm9kZSBgd2ViY3J5cHRvYCBKc29uV2ViS2V5IHR5cGUuXG4gKlxuICogQHNlZSBodHRwczovL25vZGVqcy5vcmcvYXBpL3dlYmNyeXB0by5odG1sXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgdHlwZSBKc29uV2ViS2V5ID0gd2ViY3J5cHRvLkpzb25XZWJLZXlcbiIsImltcG9ydCB7IFRleHRFbmNvZGVyIH0gZnJvbSBcIm5vZGU6dXRpbFwiXG5cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsaXphdGlvbiB2ZWN0b3IgbGVuZ3RoLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5jb25zdCBJVl9MRU5HVEg6IG51bWJlciA9IDEyXG5cbi8qKlxuICogR2VuZXJhdGVzIGEgcmFuZG9tIElWIGZvciBjYXNlcyByZXF1aXJpbmcgcmVndWxhciBBRVMgc2VjdXJpdHkuXG4gKlxuICogQHBhcmFtIGxlbmd0aCAtIExlbmd0aCBvZiB1aW50OCBhcnJheSB0byBnZW5lcmF0ZSwgcmVjb21tZW5kIDEyLWJ5dGUgbGVuZ3RoLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlU2VjdXJlSXYgPSAobGVuZ3RoOiBudW1iZXIgPSBJVl9MRU5HVEgpOiBVaW50OEFycmF5ID0+IHtcbiAgY29uc3QgZWxlbWVudHM6IG51bWJlcltdID0gW11cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCsrOyBpbmRleCA8IGxlbmd0aCkge1xuICAgIGVsZW1lbnRzLnB1c2goTWF0aC5yYW5kb20oKSlcbiAgfVxuICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZWxlbWVudHMpXG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgY29uc2lzdGVudCBJViB1c2luZyBhIHBlcnNpc3RlbnQgc2VlZC5cbiAqXG4gKiBAcmVtYXJrc1xuICogSW4gbm9ybWFsIGNpcmN1bXN0YW5jZXMgeW91IHdvdWxkIG5ldmVyIHJldXNlIGFuZCBJVi5cbiAqIEhvd2V2ZXIsIGluIHRoaXMgY2FzZSB3ZSBkbyBub3QgcmVxdWlyZSBoaWdoIHNlY3VyaXR5LCBqdXN0IGVhc3kgcmV2ZXJzaWJpbGl0eS5cbiAqXG4gKiBAcGFyYW0gc2VlZCAtIFBlcnNpc3RlbnQgdG9rZW4gdG8gcHJvZHVjZSBpdiBmcm9tLlxuICogQHBhcmFtIGxlbmd0aCAtIExlbmd0aCBvZiBkZXNpcmVkIHVpbnQ4IGFycmF5LlxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlSW5zZWN1cmVJdiA9IChcbiAgc2VlZDogc3RyaW5nLFxuICBsZW5ndGg6IG51bWJlciA9IElWX0xFTkdUSFxuKTogVWludDhBcnJheSA9PlxuICBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoc2VlZC5wYWRFbmQobGVuZ3RoLCBcIl9cIikuc3Vic3RyaW5nKDAsIGxlbmd0aCkpXG4iLCJpbXBvcnQgeyBzdWJ0bGUgfSBmcm9tIFwibm9kZTpjcnlwdG9cIlxuXG5pbXBvcnQgdHlwZSB7IEFlc0tleUFsZ29yaXRobSwgQ3J5cHRvS2V5LCBKc29uV2ViS2V5IH0gZnJvbSBcIi4vdHlwZXNcIlxuXG4vKipcbiAqIEN1cnJlbnQga2V5IGdlbmVyYXRpb24gLyBpbXBvcnQgcGFyYW1zLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5jb25zdCBhbGdvcml0aG06IEFlc0tleUFsZ29yaXRobSA9IHtcbiAgbmFtZTogXCJBRVMtR0NNXCIsXG4gIGxlbmd0aDogMjU2XG59XG5cbi8qKlxuICogSnNvbiB3ZWIga2V5IGZvcm1hdC5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuY29uc3QgZm9ybWF0OiBcImp3a1wiID0gXCJqd2tcIlxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHByaXZhdGUga2V5IG9iamVjdC5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlS2V5ID0gYXN5bmMgKCk6IFByb21pc2U8Q3J5cHRvS2V5PiA9PlxuICBzdWJ0bGUuZ2VuZXJhdGVLZXkoYWxnb3JpdGhtLCB0cnVlLCBbXCJlbmNyeXB0XCIsIFwiZGVjcnlwdFwiXSlcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBwcml2YXRlIGtleSBhbmQgZXhwb3J0cyBhcyBqc29uIHdlYiBrZXkuXG4gKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUpzb25XZWJLZXkgPSBhc3luYyAoKTogUHJvbWlzZTxKc29uV2ViS2V5PiA9PlxuICBzdWJ0bGUuZXhwb3J0S2V5KGZvcm1hdCwgYXdhaXQgZ2VuZXJhdGVLZXkoKSlcblxuLyoqXG4gKiBMb2FkcyBleGlzdGluZyBwcml2YXRlIGtleS5cbiAqXG4gKiBAcmVtYXJrc1xuICogS2V5IGNhbiBiZSBwcm92aWRlZCBhcyBhIGZ1bGwganNvbiB3ZWIga2V5LCBvciBhbHRlcm5hdGl2ZWx5IHRoZSB1bmlxdWUgYGtgIHZhbHVlLlxuICpcbiAqIEBwYXJhbSBwcml2YXRlS2V5IC0gT25lLXRpbWUgZ2VuZXJhdGVkIHByaXZhdGUgZW5jcnlwdGlvbiBrZXkuXG4gKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBpbXBvcnRKc29uV2ViS2V5ID0gYXN5bmMgKFxuICBwcml2YXRlS2V5OiBzdHJpbmcgfCBKc29uV2ViS2V5XG4pOiBQcm9taXNlPENyeXB0b0tleT4gPT5cbiAgc3VidGxlLmltcG9ydEtleShcbiAgICBmb3JtYXQsXG4gICAgdHlwZW9mIHByaXZhdGVLZXkgPT09IFwic3RyaW5nXCJcbiAgICAgID8ge1xuICAgICAgICAgIGt0eTogXCJvY3RcIixcbiAgICAgICAgICBrOiBwcml2YXRlS2V5LFxuICAgICAgICAgIGFsZzogXCJBMjU2R0NNXCIsXG4gICAgICAgICAgZXh0OiB0cnVlXG4gICAgICAgIH1cbiAgICAgIDogcHJpdmF0ZUtleSxcbiAgICBhbGdvcml0aG0sXG4gICAgZmFsc2UsXG4gICAgW1wiZW5jcnlwdFwiLCBcImRlY3J5cHRcIl1cbiAgKVxuIl19