| var _a; | 
| import { b64tohex, hex2b64 } from "./lib/jsbn/base64"; | 
| import { JSEncryptRSAKey } from "./JSEncryptRSAKey"; | 
| var version = typeof process !== 'undefined' | 
|     ? (_a = process.env) === null || _a === void 0 ? void 0 : _a.npm_package_version | 
|     : undefined; | 
| /** | 
|  * | 
|  * @param {Object} [options = {}] - An object to customize JSEncrypt behaviour | 
|  * possible parameters are: | 
|  * - default_key_size        {number}  default: 1024 the key size in bit | 
|  * - default_public_exponent {string}  default: '010001' the hexadecimal representation of the public exponent | 
|  * - log                     {boolean} default: false whether log warn/error or not | 
|  * @constructor | 
|  */ | 
| var JSEncrypt = /** @class */ (function () { | 
|     function JSEncrypt(options) { | 
|         if (options === void 0) { options = {}; } | 
|         options = options || {}; | 
|         this.default_key_size = options.default_key_size | 
|             ? parseInt(options.default_key_size, 10) | 
|             : 1024; | 
|         this.default_public_exponent = options.default_public_exponent || "010001"; // 65537 default openssl public exponent for rsa key type | 
|         this.log = options.log || false; | 
|         // The private and public key. | 
|         this.key = null; | 
|     } | 
|     /** | 
|      * Method to set the rsa key parameter (one method is enough to set both the public | 
|      * and the private key, since the private key contains the public key paramenters) | 
|      * Log a warning if logs are enabled | 
|      * @param {Object|string} key the pem encoded string or an object (with or without header/footer) | 
|      * @public | 
|      */ | 
|     JSEncrypt.prototype.setKey = function (key) { | 
|         if (this.log && this.key) { | 
|             console.warn("A key was already set, overriding existing."); | 
|         } | 
|         this.key = new JSEncryptRSAKey(key); | 
|     }; | 
|     /** | 
|      * Proxy method for setKey, for api compatibility | 
|      * @see setKey | 
|      * @public | 
|      */ | 
|     JSEncrypt.prototype.setPrivateKey = function (privkey) { | 
|         // Create the key. | 
|         this.setKey(privkey); | 
|     }; | 
|     /** | 
|      * Proxy method for setKey, for api compatibility | 
|      * @see setKey | 
|      * @public | 
|      */ | 
|     JSEncrypt.prototype.setPublicKey = function (pubkey) { | 
|         // Sets the public key. | 
|         this.setKey(pubkey); | 
|     }; | 
|     /** | 
|      * Proxy method for RSAKey object's decrypt, decrypt the string using the private | 
|      * components of the rsa key object. Note that if the object was not set will be created | 
|      * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor | 
|      * @param {string} str base64 encoded crypted string to decrypt | 
|      * @return {string} the decrypted string | 
|      * @public | 
|      */ | 
|     JSEncrypt.prototype.decrypt = function (str) { | 
|         // Return the decrypted string. | 
|         try { | 
|             return this.getKey().decrypt(b64tohex(str)); | 
|         } | 
|         catch (ex) { | 
|             return false; | 
|         } | 
|     }; | 
|     /** | 
|      * Proxy method for RSAKey object's encrypt, encrypt the string using the public | 
|      * components of the rsa key object. Note that if the object was not set will be created | 
|      * on the fly (by the getKey method) using the parameters passed in the JSEncrypt constructor | 
|      * @param {string} str the string to encrypt | 
|      * @return {string} the encrypted string encoded in base64 | 
|      * @public | 
|      */ | 
|     JSEncrypt.prototype.encrypt = function (str) { | 
|         // Return the encrypted string. | 
|         try { | 
|             return hex2b64(this.getKey().encrypt(str)); | 
|         } | 
|         catch (ex) { | 
|             return false; | 
|         } | 
|     }; | 
|     /** | 
|      * Proxy method for RSAKey object's sign. | 
|      * @param {string} str the string to sign | 
|      * @param {function} digestMethod hash method | 
|      * @param {string} digestName the name of the hash algorithm | 
|      * @return {string} the signature encoded in base64 | 
|      * @public | 
|      */ | 
|     JSEncrypt.prototype.sign = function (str, digestMethod, digestName) { | 
|         // return the RSA signature of 'str' in 'hex' format. | 
|         try { | 
|             return hex2b64(this.getKey().sign(str, digestMethod, digestName)); | 
|         } | 
|         catch (ex) { | 
|             return false; | 
|         } | 
|     }; | 
|     /** | 
|      * Proxy method for RSAKey object's verify. | 
|      * @param {string} str the string to verify | 
|      * @param {string} signature the signature encoded in base64 to compare the string to | 
|      * @param {function} digestMethod hash method | 
|      * @return {boolean} whether the data and signature match | 
|      * @public | 
|      */ | 
|     JSEncrypt.prototype.verify = function (str, signature, digestMethod) { | 
|         // Return the decrypted 'digest' of the signature. | 
|         try { | 
|             return this.getKey().verify(str, b64tohex(signature), digestMethod); | 
|         } | 
|         catch (ex) { | 
|             return false; | 
|         } | 
|     }; | 
|     /** | 
|      * Getter for the current JSEncryptRSAKey object. If it doesn't exists a new object | 
|      * will be created and returned | 
|      * @param {callback} [cb] the callback to be called if we want the key to be generated | 
|      * in an async fashion | 
|      * @returns {JSEncryptRSAKey} the JSEncryptRSAKey object | 
|      * @public | 
|      */ | 
|     JSEncrypt.prototype.getKey = function (cb) { | 
|         // Only create new if it does not exist. | 
|         if (!this.key) { | 
|             // Get a new private key. | 
|             this.key = new JSEncryptRSAKey(); | 
|             if (cb && {}.toString.call(cb) === "[object Function]") { | 
|                 this.key.generateAsync(this.default_key_size, this.default_public_exponent, cb); | 
|                 return; | 
|             } | 
|             // Generate the key. | 
|             this.key.generate(this.default_key_size, this.default_public_exponent); | 
|         } | 
|         return this.key; | 
|     }; | 
|     /** | 
|      * Returns the pem encoded representation of the private key | 
|      * If the key doesn't exists a new key will be created | 
|      * @returns {string} pem encoded representation of the private key WITH header and footer | 
|      * @public | 
|      */ | 
|     JSEncrypt.prototype.getPrivateKey = function () { | 
|         // Return the private representation of this key. | 
|         return this.getKey().getPrivateKey(); | 
|     }; | 
|     /** | 
|      * Returns the pem encoded representation of the private key | 
|      * If the key doesn't exists a new key will be created | 
|      * @returns {string} pem encoded representation of the private key WITHOUT header and footer | 
|      * @public | 
|      */ | 
|     JSEncrypt.prototype.getPrivateKeyB64 = function () { | 
|         // Return the private representation of this key. | 
|         return this.getKey().getPrivateBaseKeyB64(); | 
|     }; | 
|     /** | 
|      * Returns the pem encoded representation of the public key | 
|      * If the key doesn't exists a new key will be created | 
|      * @returns {string} pem encoded representation of the public key WITH header and footer | 
|      * @public | 
|      */ | 
|     JSEncrypt.prototype.getPublicKey = function () { | 
|         // Return the private representation of this key. | 
|         return this.getKey().getPublicKey(); | 
|     }; | 
|     /** | 
|      * Returns the pem encoded representation of the public key | 
|      * If the key doesn't exists a new key will be created | 
|      * @returns {string} pem encoded representation of the public key WITHOUT header and footer | 
|      * @public | 
|      */ | 
|     JSEncrypt.prototype.getPublicKeyB64 = function () { | 
|         // Return the private representation of this key. | 
|         return this.getKey().getPublicBaseKeyB64(); | 
|     }; | 
|     JSEncrypt.version = version; | 
|     return JSEncrypt; | 
| }()); | 
| export { JSEncrypt }; |