declare namespace jsrsasign.KJUR.crypto {
/**
* Signature class which is very similar to java.security.Signature class
* @param params parameters for constructor
* @description
* As for params of constructor's argument, it can be specify following attributes:
* - alg - signature algorithm name (ex. {MD5,SHA1,SHA224,SHA256,SHA384,SHA512,RIPEMD160}with{RSA,ECDSA,DSA})
* - provider - currently 'cryptojs/jsrsa' only
*
SUPPORTED ALGORITHMS AND PROVIDERS
* This Signature class supports following signature algorithm and provider names:
* - MD5withRSA - cryptojs/jsrsa
* - SHA1withRSA - cryptojs/jsrsa
* - SHA224withRSA - cryptojs/jsrsa
* - SHA256withRSA - cryptojs/jsrsa
* - SHA384withRSA - cryptojs/jsrsa
* - SHA512withRSA - cryptojs/jsrsa
* - RIPEMD160withRSA - cryptojs/jsrsa
* - MD5withECDSA - cryptojs/jsrsa
* - SHA1withECDSA - cryptojs/jsrsa
* - SHA224withECDSA - cryptojs/jsrsa
* - SHA256withECDSA - cryptojs/jsrsa
* - SHA384withECDSA - cryptojs/jsrsa
* - SHA512withECDSA - cryptojs/jsrsa
* - RIPEMD160withECDSA - cryptojs/jsrsa
* - MD5withRSAandMGF1 - cryptojs/jsrsa
* - SHA1withRSAandMGF1 - cryptojs/jsrsa
* - SHA224withRSAandMGF1 - cryptojs/jsrsa
* - SHA256withRSAandMGF1 - cryptojs/jsrsa
* - SHA384withRSAandMGF1 - cryptojs/jsrsa
* - SHA512withRSAandMGF1 - cryptojs/jsrsa
* - RIPEMD160withRSAandMGF1 - cryptojs/jsrsa
* - SHA1withDSA - cryptojs/jsrsa
* - SHA224withDSA - cryptojs/jsrsa
* - SHA256withDSA - cryptojs/jsrsa
* Here are supported elliptic cryptographic curve names and their aliases for ECDSA:
* - secp256k1
* - secp256r1, NIST P-256, P-256, prime256v1
* - secp384r1, NIST P-384, P-384
* NOTE1: DSA signing algorithm is also supported since crypto 1.1.5.
* EXAMPLES
* @example
* // RSA signature generation
* var sig = new KJUR.crypto.Signature({"alg": "SHA1withRSA"});
* sig.init(prvKeyPEM);
* sig.updateString('aaa');
* var hSigVal = sig.sign();
*
* // DSA signature validation
* var sig2 = new KJUR.crypto.Signature({"alg": "SHA1withDSA"});
* sig2.init(certPEM);
* sig.updateString('aaa');
* var isValid = sig2.verify(hSigVal);
*
* // ECDSA signing
* var sig = new KJUR.crypto.Signature({'alg':'SHA1withECDSA'});
* sig.init(prvKeyPEM);
* sig.updateString('aaa');
* var sigValueHex = sig.sign();
*
* // ECDSA verifying
* var sig2 = new KJUR.crypto.Signature({'alg':'SHA1withECDSA'});
* sig.init(certPEM);
* sig.updateString('aaa');
* var isValid = sig.verify(sigValueHex);
*/
class Signature {
/** Current state of this signature object whether 'SIGN', 'VERIFY' or null */
static readonly state: "SIGN" | "VERIFY" | null;
constructor(params?: { alg?: string | undefined });
/**
* set signature algorithm and provider
* @param alg signature algorithm name
* @param prov provider name
* @example
* md.setAlgAndProvider('SHA1withRSA', 'cryptojs/jsrsa');
*/
setAlgAndProvider(alg: string, prov: string): void;
/**
* Initialize this object for signing or verifying depends on key
* @param key specifying public or private key as plain/encrypted PKCS#5/8 PEM file, certificate PEM or `RSAKey`, `KJUR.crypto.DSA` or `KJUR.crypto.ECDSA` object
* @param pass (OPTION) passcode for encrypted private key
* @description
* This method is very useful initialize method for Signature class since
* you just specify key then this method will automatically initialize it
* using `KEYUTIL.getKey` method.
* As for 'key', following argument type are supported:
* __signing__
* - PEM formatted PKCS#8 encrypted RSA/ECDSA private key concluding "BEGIN ENCRYPTED PRIVATE KEY"
* - PEM formatted PKCS#5 encrypted RSA/DSA private key concluding "BEGIN RSA/DSA PRIVATE KEY" and ",ENCRYPTED"
* - PEM formatted PKCS#8 plain RSA/ECDSA private key concluding "BEGIN PRIVATE KEY"
* - PEM formatted PKCS#5 plain RSA/DSA private key concluding "BEGIN RSA/DSA PRIVATE KEY" without ",ENCRYPTED"
* - RSAKey object of private key
* - KJUR.crypto.ECDSA object of private key
* - KJUR.crypto.DSA object of private key
*
* __verification__
* - PEM formatted PKCS#8 RSA/EC/DSA public key concluding "BEGIN PUBLIC KEY"
* - PEM formatted X.509 certificate with RSA/EC/DSA public key concluding
* "BEGIN CERTIFICATE", "BEGIN X509 CERTIFICATE" or "BEGIN TRUSTED CERTIFICATE".
* - RSAKey object of public key
* - KJUR.crypto.ECDSA object of public key
* - KJUR.crypto.DSA object of public key
* @example
* sig.init(sCertPEM)
*/
init(key: string | RSAKey | DSA | ECDSA | ECCPrivateKey, pass?: string): void;
/**
* Updates the data to be signed or verified by a string
* @param str string to use for the update
* @example
* sig.updateString('aaa')
*/
updateString(str: string): void;
/**
* Updates the data to be signed or verified by a hexadecimal string
* @param hex hexadecimal string to use for the update
* @example
* sig.updateHex('1f2f3f')
*/
updateHex(hex: string): void;
/**
* Returns the signature bytes of all data updates as a hexadecimal string
* @return the signature bytes as a hexadecimal string
* @example
* var hSigValue = sig.sign()
*/
sign(): string;
/**
* performs final update on the sign using string, then returns the signature bytes of all data updates as a hexadecimal string
* @param str string to final update
* @return the signature bytes of a hexadecimal string
* @example
* var hSigValue = sig.signString('aaa')
*/
signString(str: string): string;
/**
* performs final update on the sign using hexadecimal string, then returns the signature bytes of all data updates as a hexadecimal string
* @param hex hexadecimal string to final update
* @return the signature bytes of a hexadecimal string
* @example
* var hSigValue = sig.signHex('1fdc33')
*/
signHex(hex: string): string;
/**
* verifies the passed-in signature.
* @param hSigVal string to final update
* @return true if the signature was verified, otherwise false
* @example
* var isValid = sig.verify('1fbcefdca4823a7(snip)')
*/
verify(hSigVal: string): boolean;
}
}