/**
 * @license
 * The 'jsrsasign'(RSA-Sign JavaScript Library) License
 *
 * Copyright (c) 2010-2021 Kenji Urushima
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 * LICENSE: MIT License
 */
/**
 * @license
 * RSA and ECC in JavaScript
 *
 * Copyright (c) 2003-2005  Tom Wu All Rights Reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
 * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
 *
 * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
 * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER
 * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF
 * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT
 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 *
 * In addition, the following condition applies:
 *
 * All redistributions must retain an intact copy of this copyright notice
 * and disclaimer.
 *
 * http://www-cs-students.stanford.edu/~tjw/jsbn/
 * LICENSE: BSD License
 * PART: ext/{base64,jsbn,jsbn2,prgn4,rng,rsa,rsa2}
 */
/**
 * @license
 * CryptoJS
 *
 * Copyright (c) 2009-2013 Jeff Mott
 *
 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 * https://code.google.com/p/crypto-js/wiki/License
 * PART: ext/cryptojs
 */
declare function hex2b64(d: any): string;
declare function b64tohex(f: any): string;
declare function hextopem(a: any, b: any): string;
declare function pemtohex(a: any, b: any): string;

declare namespace KJUR {
    namespace crypto {
        export type DSA = any;
        export type ECDSA = any;
    }
}
interface ECCPrivateKey {
    curve: string;
    d: string;
}
interface pemtohex {
    (pem: string): string;
}
interface hextopem {
    (pem: string, shead: string): string;
}
interface b64tohex {
    (pem: string): string;
}
interface hex2b64 {
    (pem: string): string;
}
/** Tom Wu's RSA Key class and extension */
declare class RSAKey {
    constructor();
    /**
     * static method to get array of hex field values from hexadecimal PKCS#5 RSA private key.
     * @param sPEMPrivateKey PEM PKCS#1/5 s private key string
     * @return array of field hex value
     * @example
     * RSAKey.getHexValueArrayOfChildrenFromHex("3082...") → ["00", "3b42...", ...]
     */
    static getHexValueArrayOfChildrenFromHex(sPEMPrivateKey: string): string[];
    /**
     * static method to get array of field positions from hexadecimal PKCS#5 RSA private key.
     * @param sPEMPrivateKey PEM PKCS#1/5 s private key string
     * @return array of field positions
     * @example
     * RSAKey.getPosArrayOfChildrenFromHex("3082...") → [8, 32, ...]
     */
    static getPosArrayOfChildrenFromHex(sPEMPrivateKey: string): number[];
    /**
     * read an ASN.1 hexadecimal string of X.509 RSA public key certificate
     * @param h hexadecimal string of X.509 RSA public key certificate
     * @param nthPKI nth index of publicKeyInfo. (DEFAULT: 6 for X509v3)
     */
    readCertPubKeyHex(h: string, nthPKI: number): void;
    /**
     * read an ASN.1 hexadecimal string of PKCS#1/5 plain RSA private key
     * @param h hexadecimal string of PKCS#1/5 plain RSA private key
     */
    readPKCS5PrvKeyHex(h: string): void;
    /**
     * read an ASN.1 hexadecimal string of PKCS#5 RSA public key
     * @param h hexadecimal string of PKCS#5 public key
     */
    readPKCS5PubKeyHex(h: string): void;
    /**
     * read an ASN.1 hexadecimal string of PKCS#8 plain RSA private key
     * @param h hexadecimal string of PKCS#8 plain RSA private key
     */
    readPKCS8PrvKeyHex(h: string): void;
    /**
     * read an ASN.1 hexadecimal string of PKCS#8 RSA public key
     * @param h hexadecimal string of PKCS#8 public key
     */
    readPKCS8PubKeyHex(h: string): void;
    /**
     * read PKCS#1 private key from a string
     * @param keyPEM string of PKCS#1 private key.
     */
    readPrivateKeyFromPEMString(keyPEM: string): void;
    /**
     * verifies a sigature for a message string with RSA public key.
     * @param sMsg message string to be verified.
     * @param hSig hexadecimal string of signature.
     *             non-hexadecimal characters including new lines will be ignored.
     * @return returns 1 if valid, otherwise 0
     */
    verify(sMsg: string, hSig: string): 0 | 1;
    /**
     * verifies a sigature for a message string with RSA public key by PKCS#1 PSS sign.
     * @param sMsg message string to be verified.
     * @param hSig hexadecimal string of signature value
     * @param hashAlg hash algorithm name
     * @param sLen salt byte length from 0 to (keybytelen - hashbytelen - 2).
     *        There are two special values:
     *        * -1: sets the salt length to the digest length
     *        * -2: sets the salt length to maximum permissible value
     *           (i.e. keybytelen - hashbytelen - 2)
     *
     *        DEFAULT is -1. (NOTE: OpenSSL's default is -2.)
     * @return returns true if valid, otherwise false
     */
    static verifyPSS(sMsg: string, hSig: string, hashAlg: string, sLen: number): boolean;
    /**
     * verifies a sigature for a message string with RSA public key.
     * @param sHashHex hexadecimal hash value of message to be verified.
     * @param hSig hexadecimal string of signature.
     *                 non-hexadecimal charactors including new lines will be ignored.
     * @return returns 1 if valid, otherwise 0
     */
    static verifyWithMessageHash(sHashHex: string, hSig: string): 0 | 1;
    /**
     * verifies a sigature for a hash value of message string with RSA public key by PKCS#1 PSS sign.
     * @param hHash hexadecimal hash value of message string to be verified.
     * @param hSig hexadecimal string of signature value
     * @param hashAlg hash algorithm name
     * @param sLen salt byte length from 0 to (keybytelen - hashbytelen - 2).
     *        There are two special values:
     *        * -1: sets the salt length to the digest length
     *        * -2: sets the salt length to maximum permissible value
     *           (i.e. keybytelen - hashbytelen - 2)
     *
     *        DEFAULT is -1 (NOTE: OpenSSL's default is -2.)
     * @return returns true if valid, otherwise false
     */
    static verifyWithMessageHashPSS(hHash: string, hSig: string, hashAlg: string, sLen: number): boolean;
}
interface X509Extension {
    oid: string;
    critical: boolean;
    vidx: number;
}
interface PublicKeyInfoPropOfCertPEMResult {
    /** hexadecimal string of OID of asymmetric key algorithm */
    algoid: string;
    /** hexadecimal string of OID of ECC curve name or null */
    algparam: string | null;
    /** hexadecimal string of key in the certificate */
    keyhex: string;
}
declare class X509 {
    hex: string;
    static readonly version: string;
    constructor();
    /**
     * get format version (X.509v1 or v3 certificate)
     * @return 1 for X509v1, 3 for X509v3, otherwise 0
     * @description
     * This method returns a format version of X.509 certificate.
     * It returns 1 for X.509v1 certificate and 3 for v3 certificate.
     * Otherwise returns 0.
     * This method will be automatically called in
     * `X509#readCertPEM`. After then, you can use
     * `X509.version` parameter.
     * @example
     * var x = new X509();
     * x.readCertPEM(sCertPEM);
     * version = x.getVersion();    // 1 or 3
     * sn = x.getSerialNumberHex(); // return string like "01ad..."
     */
    getVersion(): number;
    /**
     * get hexadecimal string of serialNumber field of certificate.
     * @return hexadecimal string of certificate serial number
     * @example
     * var x = new X509();
     * x.readCertPEM(sCertPEM);
     * var sn = x.getSerialNumberHex(); // return string like "01ad..."
     */
    getSerialNumberHex(): string;
    /**
     * get signature algorithm name in basic field
     * @return signature algorithm name (ex. SHA1withRSA, SHA256withECDSA)
     * @description
     * This method will get a name of signature algorithm field of certificate:
     * @example
     * var x = new X509();
     * x.readCertPEM(sCertPEM);
     * algName = x.getSignatureAlgorithmField();
     */
    getSignatureAlgorithmField(): string;
    /**
     * get hexadecimal string of issuer field TLV of certificate.
     * @return hexadecial string of issuer DN ASN.1
     * @example
     * var x = new X509();
     * x.readCertPEM(sCertPEM);
     * var issuer = x.getIssuerHex(); // return string like "3013..."
     */
    getIssuerHex(): string;
    /**
     * get string of issuer field of certificate.
     * @return issuer DN string
     * @example
     * var x = new X509();
     * x.readCertPEM(sCertPEM);
     * var issuer = x.getIssuerString(); // return string like "/C=US/O=TEST"
     */
    getIssuerString(): string;
    /**
     * get hexadecimal string of subject field of certificate.
     * @return hexadecial string of subject DN ASN.1
     * @example
     * var x = new X509();
     * x.readCertPEM(sCertPEM);
     * var subject = x.getSubjectHex(); // return string like "3013..."
     */
    getSubjectHex(): string;
    /**
     * get string of subject field of certificate.
     * @return subject DN string
     * @example
     * var x = new X509();
     * x.readCertPEM(sCertPEM);
     * var subject = x.getSubjectString(); // return string like "/C=US/O=TEST"
     */
    getSubjectString(): string;
    /**
     * get notBefore field string of certificate.
     * @return not before time value (ex. "151231235959Z")
     * @example
     * var x = new X509();
     * x.readCertPEM(sCertPEM);
     * var notBefore = x.getNotBefore(); // return string like "151231235959Z"
     */
    getNotBefore(): string;
    /**
     * get notAfter field string of certificate.
     * @return not after time value (ex. "151231235959Z")
     * @example
     * var x = new X509();
     * x.readCertPEM(sCertPEM);
     * var notAfter = x.getNotAfter(); // return string like "151231235959Z"
     */
    getNotAfter(): string;
    /**
     * get a hexadecimal string of subjectPublicKeyInfo field.
     * @return ASN.1 SEQUENCE hexadecimal string of subjectPublicKeyInfo field
     * @example
     * x = new X509();
     * x.readCertPEM(sCertPEM);
     * hSPKI = x.getPublicKeyHex(); // return string like "30820122..."
     */
    getPublicKeyHex(): string;
    /**
     * get a string index of subjectPublicKeyInfo field for hexadecimal string certificate.
     * @return string index of subjectPublicKeyInfo field for hexadecimal string certificate.
     * @example
     * x = new X509();
     * x.readCertPEM(sCertPEM);
     * idx = x.getPublicKeyIdx(); // return string index in x.hex parameter
     */
    getPublicKeyIdx(): number;
    /**
     * get a string index of contents of subjectPublicKeyInfo BITSTRING value from hexadecimal certificate
     * @return string index of key contents
     * @example
     * x = new X509();
     * x.readCertPEM(sCertPEM);
     * idx = x.getPublicKeyContentIdx(); // return string index in x.hex parameter
     */
    getPublicKeyContentIdx(): number;
    /**
     * get a RSAKey/ECDSA/DSA public key object of subjectPublicKeyInfo field.
     * @return RSAKey/ECDSA/DSA public key object of subjectPublicKeyInfo field
     * @example
     * x = new X509();
     * x.readCertPEM(sCertPEM);
     * pubkey = x.getPublicKey();
     */
    getPublicKey(): RSAKey | KJUR.crypto.DSA | KJUR.crypto.ECDSA;
    /**
     * get signature algorithm name from hexadecimal certificate data
     * @param hCert hexadecimal string of X.509 certificate binary
     * @return signature algorithm name (ex. SHA1withRSA, SHA256withECDSA)
     * @description
     * This method will get signature algorithm name of certificate:
     * @example
     * var x = new X509();
     * x.readCertPEM(sCertPEM);
     * x.getSignatureAlgorithmName() → "SHA256withRSA"
     */
    getSignatureAlgorithmName(): string;
    /**
     * get signature value in hexadecimal string
     * @return signature value hexadecimal string without BitString unused bits
     * @description
     * This method will get signature value of certificate:
     * @example
     * var x = new X509();
     * x.readCertPEM(sCertPEM);
     * x.getSignatureValueHex() → "8a4c47913..."
     */
    getSignatureValueHex(): string;
    /**
     * verifies signature value by public key
     * @param pubKey public key object or hexadecimal string of X.509 certificate
     * @return true if signature value is valid otherwise false
     * @description
     * This method verifies signature value of hexadecimal string of
     * X.509 certificate by specified public key object.
     * @example
     * pubKey = KEYUTIL.getKey(pemPublicKey); // or certificate
     * x = new X509();
     * x.readCertPEM(pemCert);
     * x.verifySignature(pubKey) → true, false or raising exception
     */
    verifySignature(pubKey: string | RSAKey | KJUR.crypto.DSA | KJUR.crypto.ECDSA | ECCPrivateKey): boolean;
    /**
     * set array of X.509v3 extesion information such as extension OID, criticality and value index.
     * @description
     * This method will set an array of X.509v3 extension information having
     * following parameters:
     *
     * - oid - extension OID (ex. 2.5.29.19)
     * - critical - true or false
     * - vidx - string index for extension value
     *
     * @example
     * x = new X509();
     * x.readCertPEM(sCertPEM); // parseExt() will also be called internally.
     *
     * x.aExtInfo →
     * [ { oid: "2.5.29,19", critical: true, vidx: 2504 }, ... ]
     */
    parseExt(params: {
        oid: string;
        critical: boolean;
        vidx: number;
    }): void;
    /**
     * get a X.509v3 extesion information such as extension OID, criticality and value index for specified oid or name.
     * @param oidOrName X.509 extension oid or name (ex. keyUsage or 2.5.29.19)
     * @return X.509 extension information such as extension OID or value indx (see `X509#parseExt`)
     * @description
     * This method will get an X.509v3 extension information JSON object
     * having extension OID, criticality and value idx for specified
     * extension OID or name.
     * If there is no such extension, this returns undefined.
     * @example
     * x = new X509();
     * x.readCertPEM(sCertPEM); // parseExt() will also be called internally.
     *
     * x.getExtInfo("keyUsage") → { oid: "2.5.29.15", critical: true, vidx: 1714 }
     * x.getExtInfo("unknownExt") → undefined
     */
    getExtInfo(oidOrName: string): X509Extension;
    /**
     * get BasicConstraints extension value as object in the certificate
     * @return associative array which may have "cA" and "pathLen" parameters
     * @description
     * This method will get basic constraints extension value as object with following paramters.
     *
     * - cA - CA flag whether CA or not
     * - pathLen - maximum intermediate certificate length
     *
     * There are use cases for return values:
     *
     * - {cA:true, pathLen:3} - cA flag is true and pathLen is 3
     * - {cA:true} - cA flag is true and no pathLen
     * - {} - basic constraints has no value in case of end entity certificate
     * - undefined - there is no basic constraints extension
     *
     * @example
     * x = new X509();
     * x.readCertPEM(sCertPEM); // parseExt() will also be called internally.
     * x.getExtBasicConstraints() → { cA: true, pathLen: 3 };
     */
    getExtBasicConstraints(): {
        cA: boolean;
        pathLen: number;
    };
    /**
     * get KeyUsage extension value as binary string in the certificate
     * @return binary string of key usage bits (ex. '101')
     * @description
     * This method will get key usage extension value
     * as binary string such like '101'.
     * Key usage bits definition is in the RFC 5280.
     * If there is no key usage extension in the certificate,
     * it returns empty string (i.e. '').
     * @example
     * x = new X509();
     * x.readCertPEM(sCertPEM); // parseExt() will also be called internally.
     * x.getExtKeyUsageBin() → '101'
     * // 1 - digitalSignature
     * // 0 - nonRepudiation
     * // 1 - keyEncipherment
     */
    getExtKeyUsageBin(): string;
    /**
     * get KeyUsage extension value as names in the certificate
     * @return comma separated string of key usage
     * @description
     * This method will get key usage extension value
     * as comma separated string of usage names.
     * If there is no key usage extension in the certificate,
     * it returns empty string (i.e. '').
     * @example
     * x = new X509();
     * x.readCertPEM(sCertPEM); // parseExt() will also be called internally.
     * x.getExtKeyUsageString() → "digitalSignature,keyEncipherment"
     */
    getExtKeyUsageString(): string;
    /**
     * get subjectKeyIdentifier value as hexadecimal string in the certificate
     * @return hexadecimal string of subject key identifier or null
     * @description
     * This method will get subject key identifier extension value
     * as hexadecimal string.
     * If there is this in the certificate, it returns undefined;
     * @example
     * x = new X509();
     * x.readCertPEM(sCertPEM); // parseExt() will also be called internally.
     * x.getExtSubjectKeyIdentifier() → "1b3347ab...";
     */
    getExtSubjectKeyIdentifier(): string;
    /**
     * get authorityKeyIdentifier value as JSON object in the certificate
     * @return JSON object of authority key identifier or null
     * @description
     * This method will get authority key identifier extension value
     * as JSON object.
     * If there is this in the certificate, it returns undefined;
     *
     * NOTE: Currently this method only supports keyIdentifier so that
     * authorityCertIssuer and authorityCertSerialNumber will not
     * be return in the JSON object.
     * @example
     * x = new X509();
     * x.readCertPEM(sCertPEM); // parseExt() will also be called internally.
     * x.getExtAuthorityKeyIdentifier() → { kid: "1234abcd..." }
     */
    getExtAuthorityKeyIdentifier(): {
        kid: string;
    } | null;
    /**
     * get extKeyUsage value as array of name string in the certificate
     * @return array of extended key usage ID name or oid
     * @description
     * This method will get extended key usage extension value
     * as array of name or OID string.
     * If there is this in the certificate, it returns undefined;
     *
     * NOTE: Supported extended key usage ID names are defined in
     * name2oidList parameter in asn1x509.js file.
     * @example
     * x = new X509();
     * x.readCertPEM(sCertPEM); // parseExt() will also be called internally.
     * x.getExtExtKeyUsageName() → ["serverAuth", "clientAuth", "0.1.2.3.4.5"]
     */
    getExtExtKeyUsageName(): string[];
    /**
     * get subjectAltName value as array of string in the certificate
     * @return array of alt name array
     * @description
     * This method will get subject alt name extension value
     * as array of type and name.
     * If there is this in the certificate, it returns undefined;
     * Type of GeneralName will be shown as following:
     *
     * - "MAIL" - [1]rfc822Name
     * - "DNS"  - [2]dNSName
     * - "DN"   - [4]directoryName
     * - "URI"  - [6]uniformResourceIdentifier
     * - "IP"   - [7]iPAddress
     *
     * @example
     * x = new X509();
     * x.readCertPEM(sCertPEM); // parseExt() will also be called internally.
     * x.getExtSubjectAltName2() →
     * [["DNS",  "example.com"],
     *  ["DNS",  "example.org"],
     *  ["MAIL", "foo@example.com"],
     *  ["IP",   "192.168.1.1"],
     *  ["DN",   "/C=US/O=TEST1"]]
     */
    getExtSubjectAltName2(): string[][] | undefined;
    /**
     * get array of string for fullName URIs in cRLDistributionPoints(CDP) in the certificate
     * @return array of fullName URIs of CDP of the certificate
     * @description
     * This method will get all fullName URIs of cRLDistributionPoints extension
     * in the certificate as array of URI string.
     * If there is this in the certificate, it returns undefined;
     *
     * NOTE: Currently this method supports only fullName URI so that
     * other parameters will not be returned.
     * @example
     * x = new X509();
     * x.readCertPEM(sCertPEM); // parseExt() will also be called internally.
     * x.getExtCRLDistributionPointsURI() →
     * ["http://example.com/aaa.crl", "http://example.org/aaa.crl"]
     */
    getExtCRLDistributionPointsURI(): string[] | undefined;
    /**
     * get AuthorityInfoAccess extension value in the certificate as associative array
     * @return associative array of AIA extension properties
     * @description
     * This method will get authority info access value
     * as associate array which has following properties:
     *
     * - ocsp - array of string for OCSP responder URL
     * - caissuer - array of string for caIssuer value (i.e. CA certificates URL)
     *
     * If there is this in the certificate, it returns undefined;
     * @example
     * x = new X509();
     * x.readCertPEM(sCertPEM); // parseExt() will also be called internally.
     * x.getExtAIAInfo(hCert) →
     * { ocsp:     ["http://ocsp.foo.com"],
     *   caissuer: ["http://rep.foo.com/aaa.p8m"] }
     */
    getExtAIAInfo(): {
        caissuer: string[];
        ocsp: string[];
    } | undefined;
    /**
     * get CertificatePolicies extension value in the certificate as array
     * @return array of PolicyInformation JSON object
     * @description
     * This method will get certificate policies value
     * as an array of JSON object which has following properties:
     *
     * - id -
     * - cps - URI of certification practice statement
     * - unotice - string of UserNotice explicitText
     *
     * If there is this extension in the certificate,
     * it returns undefined;
     * @example
     * x = new X509();
     * x.readCertPEM(sCertPEM); // parseExt() will also be called internally.
     * x.getExtCertificatePolicies →
     * [{ id: 1.2.3.4,
     *    cps: "http://example.com/cps",
     *    unotice: "explicit text" }]
     */
    getExtCertificatePolicies(): {
        cps: string;
        id: string;
        unotice: string;
    } | undefined;
    /**
     * read PEM formatted X.509 certificate from string.
     * @param sCertPEM string for PEM formatted X.509 certificate
     * @example
     * x = new X509();
     * x.readCertPEM(sCertPEM); // read certificate
     */
    readCertPEM(sCertPEM: string): void;
    /**
     * read a hexadecimal string of X.509 certificate
     * @param sCertHex hexadecimal string of X.509 certificate
     * @description
     * NOTE: `X509#parseExt` will be called internally since jsrsasign 7.2.0.
     * @example
     * x = new X509();
     * x.readCertHex("3082..."); // read certificate
     */
    readCertHex(sCertHex: string): void;
    /**
     * get certificate information as string.
     * @return certificate information string
     * @example
     * x = new X509();
     * x.readCertPEM(certPEM);
     * console.log(x.getInfo());
     * // this shows as following
     * Basic Fields
     *   serial number: 02ac5c266a0b409b8f0b79f2ae462577
     *   signature algorithm: SHA1withRSA
     *   issuer: /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
     *   notBefore: 061110000000Z
     *   notAfter: 311110000000Z
     *   subject: /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA
     *   subject public key info:
     *     key algorithm: RSA
     *     n=c6cce573e6fbd4bb...
     *     e=10001
     * X509v3 Extensions:
     *   keyUsage CRITICAL:
     *     digitalSignature,keyCertSign,cRLSign
     *   basicConstraints CRITICAL:
     *     cA=true
     *   subjectKeyIdentifier :
     *     b13ec36903f8bf4701d498261a0802ef63642bc3
     *   authorityKeyIdentifier :
     *     kid=b13ec36903f8bf4701d498261a0802ef63642bc3
     * signature algorithm: SHA1withRSA
     * signature: 1c1a0697dcd79c9f...
     */
    getInfo(): string;
    /**
     * get distinguished name string in OpenSSL online format from hexadecimal string of ASN.1 DER X.500 name
     * @param hex hexadecimal string of ASN.1 DER distinguished name
     * @param idx index of hexadecimal string (DEFAULT=0)
     * @return OpenSSL online format distinguished name
     * @description
     * This static method converts from a hexadecimal string of
     * distinguished name (DN)
     * specified by 'hex' and 'idx' to OpenSSL oneline string representation (ex. /C=US/O=a).
     * @example
     * X509.hex2dn("3031310b3...") → /C=US/O=a/CN=b2+OU=b1
     */
    static hex2dn(hex: string, idx: number): string;
    /**
     * get relative distinguished name string in OpenSSL online format from hexadecimal string of ASN.1 DER RDN
     * @param hex hexadecimal string of ASN.1 DER concludes relative distinguished name
     * @param idx index of hexadecimal string (DEFAULT=0)
     * @return OpenSSL online format relative distinguished name
     * @description
     * This static method converts from a hexadecimal string of
     * relative distinguished name (RDN)
     * specified by 'hex' and 'idx' to LDAP string representation (ex. O=test+CN=test).
     * NOTE: Multi-valued RDN is supported since jsnrsasign 6.2.2 x509 1.1.10.
     * @example
     * X509.hex2rdn("310a3008060355040a0c0161") → O=a
     * X509.hex2rdn("31143008060355040a0c01613008060355040a0c0162") → O=a+O=b
     */
    static hex2rdn(hex: string, idx: number): string;
    /**
     * get string from hexadecimal string of ASN.1 DER AttributeTypeAndValue
     * @param hex hexadecimal string of ASN.1 DER concludes AttributeTypeAndValue
     * @param idx index of hexadecimal string (DEFAULT=0)
     * @return string representation of AttributeTypeAndValue (ex. C=US)
     * @description
     * This static method converts from a hexadecimal string of AttributeTypeAndValue
     * specified by 'hex' and 'idx' to LDAP string representation (ex. C=US).
     * @example
     * X509.hex2attrTypeValue("3008060355040a0c0161") → O=a
     * X509.hex2attrTypeValue("300806035504060c0161") → C=a
     * X509.hex2attrTypeValue("...3008060355040a0c0161...", 128) → O=a
     */
    static hex2attrTypeValue(hex: string, idx: number): string;
    /**
     * get RSA/DSA/ECDSA public key object from X.509 certificate hexadecimal string
     * @param h hexadecimal string of X.509 certificate for RSA/ECDSA/DSA public key
     * @return returns RSAKey/KJUR.crypto.{ECDSA,DSA} object of public key
     */
    static getPublicKeyFromCertHex(h: string): RSAKey | KJUR.crypto.DSA | KJUR.crypto.ECDSA;
    /**
     * get RSA/DSA/ECDSA public key object from PEM certificate string
     * @param sCertPEM PEM formatted RSA/ECDSA/DSA X.509 certificate
     * @return returns RSAKey/KJUR.crypto.{ECDSA,DSA} object of public key
     * @description
     * NOTE: DSA is also supported since x509 1.1.2.
     */
    static getPublicKeyFromCertPEM(sCertPEM: string): RSAKey | KJUR.crypto.DSA | KJUR.crypto.ECDSA;
    /**
     * get public key information from PEM certificate
     * @param sCertPEM string of PEM formatted certificate
     * @return hash of information for public key
     * @description
     * Resulted associative array has following properties:
     *
     * - algoid - hexadecimal string of OID of asymmetric key algorithm
     * - algparam - hexadecimal string of OID of ECC curve name or null
     * - keyhex - hexadecimal string of key in the certificate
     *
     * NOTE: X509v1 certificate is also supported since x509.js 1.1.9.
     */
    static getPublicKeyInfoPropOfCertPEM(sCertPEM: string): PublicKeyInfoPropOfCertPEMResult;
}
declare function sha256(message: string): string;
export { X509, RSAKey, sha256, pemtohex, hextopem, b64tohex, hex2b64 };
