| import { RSAKey } from "./lib/jsbn/rsa"; | 
| /** | 
|  * Create a new JSEncryptRSAKey that extends Tom Wu's RSA key object. | 
|  * This object is just a decorator for parsing the key parameter | 
|  * @param {string|Object} key - The key in string format, or an object containing | 
|  * the parameters needed to build a RSAKey object. | 
|  * @constructor | 
|  */ | 
| export declare class JSEncryptRSAKey extends RSAKey { | 
|     constructor(key?: string); | 
|     /** | 
|      * Method to parse a pem encoded string containing both a public or private key. | 
|      * The method will translate the pem encoded string in a der encoded string and | 
|      * will parse private key and public key parameters. This method accepts public key | 
|      * in the rsaencryption pkcs #1 format (oid: 1.2.840.113549.1.1.1). | 
|      * | 
|      * @todo Check how many rsa formats use the same format of pkcs #1. | 
|      * | 
|      * The format is defined as: | 
|      * PublicKeyInfo ::= SEQUENCE { | 
|      *   algorithm       AlgorithmIdentifier, | 
|      *   PublicKey       BIT STRING | 
|      * } | 
|      * Where AlgorithmIdentifier is: | 
|      * AlgorithmIdentifier ::= SEQUENCE { | 
|      *   algorithm       OBJECT IDENTIFIER,     the OID of the enc algorithm | 
|      *   parameters      ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1) | 
|      * } | 
|      * and PublicKey is a SEQUENCE encapsulated in a BIT STRING | 
|      * RSAPublicKey ::= SEQUENCE { | 
|      *   modulus           INTEGER,  -- n | 
|      *   publicExponent    INTEGER   -- e | 
|      * } | 
|      * it's possible to examine the structure of the keys obtained from openssl using | 
|      * an asn.1 dumper as the one used here to parse the components: http://lapo.it/asn1js/ | 
|      * @argument {string} pem the pem encoded string, can include the BEGIN/END header/footer | 
|      * @private | 
|      */ | 
|     parseKey(pem: string): boolean; | 
|     /** | 
|      * Translate rsa parameters in a hex encoded string representing the rsa key. | 
|      * | 
|      * The translation follow the ASN.1 notation : | 
|      * RSAPrivateKey ::= SEQUENCE { | 
|      *   version           Version, | 
|      *   modulus           INTEGER,  -- n | 
|      *   publicExponent    INTEGER,  -- e | 
|      *   privateExponent   INTEGER,  -- d | 
|      *   prime1            INTEGER,  -- p | 
|      *   prime2            INTEGER,  -- q | 
|      *   exponent1         INTEGER,  -- d mod (p1) | 
|      *   exponent2         INTEGER,  -- d mod (q-1) | 
|      *   coefficient       INTEGER,  -- (inverse of q) mod p | 
|      * } | 
|      * @returns {string}  DER Encoded String representing the rsa private key | 
|      * @private | 
|      */ | 
|     getPrivateBaseKey(): string; | 
|     /** | 
|      * base64 (pem) encoded version of the DER encoded representation | 
|      * @returns {string} pem encoded representation without header and footer | 
|      * @public | 
|      */ | 
|     getPrivateBaseKeyB64(): string; | 
|     /** | 
|      * Translate rsa parameters in a hex encoded string representing the rsa public key. | 
|      * The representation follow the ASN.1 notation : | 
|      * PublicKeyInfo ::= SEQUENCE { | 
|      *   algorithm       AlgorithmIdentifier, | 
|      *   PublicKey       BIT STRING | 
|      * } | 
|      * Where AlgorithmIdentifier is: | 
|      * AlgorithmIdentifier ::= SEQUENCE { | 
|      *   algorithm       OBJECT IDENTIFIER,     the OID of the enc algorithm | 
|      *   parameters      ANY DEFINED BY algorithm OPTIONAL (NULL for PKCS #1) | 
|      * } | 
|      * and PublicKey is a SEQUENCE encapsulated in a BIT STRING | 
|      * RSAPublicKey ::= SEQUENCE { | 
|      *   modulus           INTEGER,  -- n | 
|      *   publicExponent    INTEGER   -- e | 
|      * } | 
|      * @returns {string} DER Encoded String representing the rsa public key | 
|      * @private | 
|      */ | 
|     getPublicBaseKey(): string; | 
|     /** | 
|      * base64 (pem) encoded version of the DER encoded representation | 
|      * @returns {string} pem encoded representation without header and footer | 
|      * @public | 
|      */ | 
|     getPublicBaseKeyB64(): string; | 
|     /** | 
|      * wrap the string in block of width chars. The default value for rsa keys is 64 | 
|      * characters. | 
|      * @param {string} str the pem encoded string without header and footer | 
|      * @param {Number} [width=64] - the length the string has to be wrapped at | 
|      * @returns {string} | 
|      * @private | 
|      */ | 
|     static wordwrap(str: string, width?: number): string; | 
|     /** | 
|      * Retrieve the pem encoded private key | 
|      * @returns {string} the pem encoded private key with header/footer | 
|      * @public | 
|      */ | 
|     getPrivateKey(): string; | 
|     /** | 
|      * Retrieve the pem encoded public key | 
|      * @returns {string} the pem encoded public key with header/footer | 
|      * @public | 
|      */ | 
|     getPublicKey(): string; | 
|     /** | 
|      * Check if the object contains the necessary parameters to populate the rsa modulus | 
|      * and public exponent parameters. | 
|      * @param {Object} [obj={}] - An object that may contain the two public key | 
|      * parameters | 
|      * @returns {boolean} true if the object contains both the modulus and the public exponent | 
|      * properties (n and e) | 
|      * @todo check for types of n and e. N should be a parseable bigInt object, E should | 
|      * be a parseable integer number | 
|      * @private | 
|      */ | 
|     static hasPublicKeyProperty(obj: object): boolean; | 
|     /** | 
|      * Check if the object contains ALL the parameters of an RSA key. | 
|      * @param {Object} [obj={}] - An object that may contain nine rsa key | 
|      * parameters | 
|      * @returns {boolean} true if the object contains all the parameters needed | 
|      * @todo check for types of the parameters all the parameters but the public exponent | 
|      * should be parseable bigint objects, the public exponent should be a parseable integer number | 
|      * @private | 
|      */ | 
|     static hasPrivateKeyProperty(obj: object): boolean; | 
|     /** | 
|      * Parse the properties of obj in the current rsa object. Obj should AT LEAST | 
|      * include the modulus and public exponent (n, e) parameters. | 
|      * @param {Object} obj - the object containing rsa parameters | 
|      * @private | 
|      */ | 
|     parsePropertiesFrom(obj: any): void; | 
| } |