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