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; 
 | 
} 
 |