java.security.cert.PKIXReason Java Examples

The following examples show how to use java.security.cert.PKIXReason. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: ConstraintsChecker.java    From openjdk-8 with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Internal method to check the name constraints against a cert
 */
private void verifyNameConstraints(X509Certificate currCert)
    throws CertPathValidatorException
{
    String msg = "name constraints";
    if (debug != null) {
        debug.println("---checking " + msg + "...");
    }

    // check name constraints only if there is a previous name constraint
    // and either the currCert is the final cert or the currCert is not
    // self-issued
    if (prevNC != null && ((i == certPathLength) ||
            !X509CertImpl.isSelfIssued(currCert))) {
        if (debug != null) {
            debug.println("prevNC = " + prevNC);
            debug.println("currDN = " + currCert.getSubjectX500Principal());
        }

        try {
            if (!prevNC.verify(currCert)) {
                throw new CertPathValidatorException(msg + " check failed",
                    null, null, -1, PKIXReason.INVALID_NAME);
            }
        } catch (IOException ioe) {
            throw new CertPathValidatorException(ioe);
        }
    }

    // merge name constraints regardless of whether cert is self-issued
    prevNC = mergeNameConstraints(currCert, prevNC);

    if (debug != null)
        debug.println(msg + " verified.");
}
 
Example #2
Source File: ConstraintsChecker.java    From jdk8u-jdk with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Internal method to check the name constraints against a cert
 */
private void verifyNameConstraints(X509Certificate currCert)
    throws CertPathValidatorException
{
    String msg = "name constraints";
    if (debug != null) {
        debug.println("---checking " + msg + "...");
    }

    // check name constraints only if there is a previous name constraint
    // and either the currCert is the final cert or the currCert is not
    // self-issued
    if (prevNC != null && ((i == certPathLength) ||
            !X509CertImpl.isSelfIssued(currCert))) {
        if (debug != null) {
            debug.println("prevNC = " + prevNC +
                ", currDN = " + currCert.getSubjectX500Principal());
        }

        try {
            if (!prevNC.verify(currCert)) {
                throw new CertPathValidatorException(msg + " check failed",
                    null, null, -1, PKIXReason.INVALID_NAME);
            }
        } catch (IOException ioe) {
            throw new CertPathValidatorException(ioe);
        }
    }

    // merge name constraints regardless of whether cert is self-issued
    prevNC = mergeNameConstraints(currCert, prevNC);

    if (debug != null)
        debug.println(msg + " verified.");
}
 
Example #3
Source File: BasicChecker.java    From jdk8u_jdk with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Internal method to check that cert has a valid DN to be next in a chain
 */
private void verifyNameChaining(X509Certificate cert)
    throws CertPathValidatorException
{
    if (prevSubject != null) {

        String msg = "subject/issuer name chaining";
        if (debug != null)
            debug.println("---checking " + msg + "...");

        X500Principal currIssuer = cert.getIssuerX500Principal();

        // reject null or empty issuer DNs
        if (X500Name.asX500Name(currIssuer).isEmpty()) {
            throw new CertPathValidatorException
                (msg + " check failed: " +
                 "empty/null issuer DN in certificate is invalid", null,
                 null, -1, PKIXReason.NAME_CHAINING);
        }

        if (!(currIssuer.equals(prevSubject))) {
            throw new CertPathValidatorException
                (msg + " check failed", null, null, -1,
                 PKIXReason.NAME_CHAINING);
        }

        if (debug != null)
            debug.println(msg + " verified.");
    }
}
 
Example #4
Source File: ConstraintsChecker.java    From jdk8u_jdk with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Internal method to check the name constraints against a cert
 */
private void verifyNameConstraints(X509Certificate currCert)
    throws CertPathValidatorException
{
    String msg = "name constraints";
    if (debug != null) {
        debug.println("---checking " + msg + "...");
    }

    // check name constraints only if there is a previous name constraint
    // and either the currCert is the final cert or the currCert is not
    // self-issued
    if (prevNC != null && ((i == certPathLength) ||
            !X509CertImpl.isSelfIssued(currCert))) {
        if (debug != null) {
            debug.println("prevNC = " + prevNC +
                ", currDN = " + currCert.getSubjectX500Principal());
        }

        try {
            if (!prevNC.verify(currCert)) {
                throw new CertPathValidatorException(msg + " check failed",
                    null, null, -1, PKIXReason.INVALID_NAME);
            }
        } catch (IOException ioe) {
            throw new CertPathValidatorException(ioe);
        }
    }

    // merge name constraints regardless of whether cert is self-issued
    prevNC = mergeNameConstraints(currCert, prevNC);

    if (debug != null)
        debug.println(msg + " verified.");
}
 
Example #5
Source File: KeyChecker.java    From jdk8u_jdk with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Verifies the key usage extension in a CA cert.
 * The key usage extension, if present, must assert the keyCertSign bit.
 * The extended key usage extension is not checked (see CR 4776794 for
 * more information).
 */
static void verifyCAKeyUsage(X509Certificate cert)
        throws CertPathValidatorException {
    String msg = "CA key usage";
    if (debug != null) {
        debug.println("KeyChecker.verifyCAKeyUsage() ---checking " + msg
                      + "...");
    }

    boolean[] keyUsageBits = cert.getKeyUsage();

    // getKeyUsage returns null if the KeyUsage extension is not present
    // in the certificate - in which case there is nothing to check
    if (keyUsageBits == null) {
        return;
    }

    // throw an exception if the keyCertSign bit is not set
    if (!keyUsageBits[KEY_CERT_SIGN]) {
        throw new CertPathValidatorException
            (msg + " check failed: keyCertSign bit is not set", null,
             null, -1, PKIXReason.INVALID_KEY_USAGE);
    }

    if (debug != null) {
        debug.println("KeyChecker.verifyCAKeyUsage() " + msg
                      + " verified.");
    }
}
 
Example #6
Source File: ValidateCertPath.java    From jdk8u_jdk with GNU General Public License v2.0 5 votes vote down vote up
public static void main(String[] args) throws Exception {

        try {
            parseArgs(args);
            validate(path, params);
            throw new Exception("Successfully validated invalid path.");
        } catch (CertPathValidatorException e) {
            if (e.getReason() != PKIXReason.INVALID_NAME) {
                throw new Exception("unexpected reason: " + e.getReason());
            }
            System.out.println("Path rejected as expected: " + e);
        }
    }
 
Example #7
Source File: KeyChecker.java    From jdk8u-dev-jdk with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Verifies the key usage extension in a CA cert.
 * The key usage extension, if present, must assert the keyCertSign bit.
 * The extended key usage extension is not checked (see CR 4776794 for
 * more information).
 */
static void verifyCAKeyUsage(X509Certificate cert)
        throws CertPathValidatorException {
    String msg = "CA key usage";
    if (debug != null) {
        debug.println("KeyChecker.verifyCAKeyUsage() ---checking " + msg
                      + "...");
    }

    boolean[] keyUsageBits = cert.getKeyUsage();

    // getKeyUsage returns null if the KeyUsage extension is not present
    // in the certificate - in which case there is nothing to check
    if (keyUsageBits == null) {
        return;
    }

    // throw an exception if the keyCertSign bit is not set
    if (!keyUsageBits[KEY_CERT_SIGN]) {
        throw new CertPathValidatorException
            (msg + " check failed: keyCertSign bit is not set", null,
             null, -1, PKIXReason.INVALID_KEY_USAGE);
    }

    if (debug != null) {
        debug.println("KeyChecker.verifyCAKeyUsage() " + msg
                      + " verified.");
    }
}
 
Example #8
Source File: ConstraintsChecker.java    From jdk8u-dev-jdk with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Internal method to check the name constraints against a cert
 */
private void verifyNameConstraints(X509Certificate currCert)
    throws CertPathValidatorException
{
    String msg = "name constraints";
    if (debug != null) {
        debug.println("---checking " + msg + "...");
    }

    // check name constraints only if there is a previous name constraint
    // and either the currCert is the final cert or the currCert is not
    // self-issued
    if (prevNC != null && ((i == certPathLength) ||
            !X509CertImpl.isSelfIssued(currCert))) {
        if (debug != null) {
            debug.println("prevNC = " + prevNC +
                ", currDN = " + currCert.getSubjectX500Principal());
        }

        try {
            if (!prevNC.verify(currCert)) {
                throw new CertPathValidatorException(msg + " check failed",
                    null, null, -1, PKIXReason.INVALID_NAME);
            }
        } catch (IOException ioe) {
            throw new CertPathValidatorException(ioe);
        }
    }

    // merge name constraints regardless of whether cert is self-issued
    prevNC = mergeNameConstraints(currCert, prevNC);

    if (debug != null)
        debug.println(msg + " verified.");
}
 
Example #9
Source File: BasicChecker.java    From jdk8u-dev-jdk with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Internal method to check that cert has a valid DN to be next in a chain
 */
private void verifyNameChaining(X509Certificate cert)
    throws CertPathValidatorException
{
    if (prevSubject != null) {

        String msg = "subject/issuer name chaining";
        if (debug != null)
            debug.println("---checking " + msg + "...");

        X500Principal currIssuer = cert.getIssuerX500Principal();

        // reject null or empty issuer DNs
        if (X500Name.asX500Name(currIssuer).isEmpty()) {
            throw new CertPathValidatorException
                (msg + " check failed: " +
                 "empty/null issuer DN in certificate is invalid", null,
                 null, -1, PKIXReason.NAME_CHAINING);
        }

        if (!(currIssuer.equals(prevSubject))) {
            throw new CertPathValidatorException
                (msg + " check failed", null, null, -1,
                 PKIXReason.NAME_CHAINING);
        }

        if (debug != null)
            debug.println(msg + " verified.");
    }
}
 
Example #10
Source File: ValidateCertPath.java    From jdk8u-dev-jdk with GNU General Public License v2.0 5 votes vote down vote up
public static void main(String[] args) throws Exception {

        try {
            parseArgs(args);
            validate(path, params);
            throw new Exception("Successfully validated invalid path.");
        } catch (CertPathValidatorException e) {
            if (e.getReason() != PKIXReason.INVALID_NAME) {
                throw new Exception("unexpected reason: " + e.getReason());
            }
            System.out.println("Path rejected as expected: " + e);
        }
    }
 
Example #11
Source File: KeyChecker.java    From j2objc with Apache License 2.0 5 votes vote down vote up
/**
 * Verifies the key usage extension in a CA cert.
 * The key usage extension, if present, must assert the keyCertSign bit.
 * The extended key usage extension is not checked (see CR 4776794 for
 * more information).
 */
static void verifyCAKeyUsage(X509Certificate cert)
        throws CertPathValidatorException {
    String msg = "CA key usage";
    if (debug != null) {
        debug.println("KeyChecker.verifyCAKeyUsage() ---checking " + msg
                      + "...");
    }

    boolean[] keyUsageBits = cert.getKeyUsage();

    // getKeyUsage returns null if the KeyUsage extension is not present
    // in the certificate - in which case there is nothing to check
    if (keyUsageBits == null) {
        return;
    }

    // throw an exception if the keyCertSign bit is not set
    if (!keyUsageBits[KEY_CERT_SIGN]) {
        throw new CertPathValidatorException
            (msg + " check failed: keyCertSign bit is not set", null,
             null, -1, PKIXReason.INVALID_KEY_USAGE);
    }

    if (debug != null) {
        debug.println("KeyChecker.verifyCAKeyUsage() " + msg
                      + " verified.");
    }
}
 
Example #12
Source File: ConstraintsChecker.java    From j2objc with Apache License 2.0 5 votes vote down vote up
/**
 * Internal method to check the name constraints against a cert
 */
private void verifyNameConstraints(X509Certificate currCert)
    throws CertPathValidatorException
{
    String msg = "name constraints";
    if (debug != null) {
        debug.println("---checking " + msg + "...");
    }

    // check name constraints only if there is a previous name constraint
    // and either the currCert is the final cert or the currCert is not
    // self-issued
    if (prevNC != null && ((i == certPathLength) ||
            !X509CertImpl.isSelfIssued(currCert))) {
        if (debug != null) {
            debug.println("prevNC = " + prevNC +
                ", currDN = " + currCert.getSubjectX500Principal());
        }

        try {
            if (!prevNC.verify(currCert)) {
                throw new CertPathValidatorException(msg + " check failed",
                    null, null, -1, PKIXReason.INVALID_NAME);
            }
        } catch (IOException ioe) {
            throw new CertPathValidatorException(ioe);
        }
    }

    // merge name constraints regardless of whether cert is self-issued
    prevNC = mergeNameConstraints(currCert, prevNC);

    if (debug != null)
        debug.println(msg + " verified.");
}
 
Example #13
Source File: BasicChecker.java    From j2objc with Apache License 2.0 5 votes vote down vote up
/**
 * Internal method to check that cert has a valid DN to be next in a chain
 */
private void verifyNameChaining(X509Certificate cert)
    throws CertPathValidatorException
{
    if (prevSubject != null) {

        String msg = "subject/issuer name chaining";
        if (debug != null)
            debug.println("---checking " + msg + "...");

        X500Principal currIssuer = cert.getIssuerX500Principal();

        // reject null or empty issuer DNs
        if (X500Name.asX500Name(currIssuer).isEmpty()) {
            throw new CertPathValidatorException
                (msg + " check failed: " +
                 "empty/null issuer DN in certificate is invalid", null,
                 null, -1, PKIXReason.NAME_CHAINING);
        }

        if (!(currIssuer.equals(prevSubject))) {
            throw new CertPathValidatorException
                (msg + " check failed", null, null, -1,
                 PKIXReason.NAME_CHAINING);
        }

        if (debug != null)
            debug.println(msg + " verified.");
    }
}
 
Example #14
Source File: ValidateCertPath.java    From jdk8u-jdk with GNU General Public License v2.0 5 votes vote down vote up
public static void main(String[] args) throws Exception {

        try {
            parseArgs(args);
            validate(path, params);
            throw new Exception("Successfully validated invalid path.");
        } catch (CertPathValidatorException e) {
            if (e.getReason() != PKIXReason.INVALID_NAME) {
                throw new Exception("unexpected reason: " + e.getReason());
            }
            System.out.println("Path rejected as expected: " + e);
        }
    }
 
Example #15
Source File: BasicChecker.java    From openjdk-8 with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Internal method to check that cert has a valid DN to be next in a chain
 */
private void verifyNameChaining(X509Certificate cert)
    throws CertPathValidatorException
{
    if (prevSubject != null) {

        String msg = "subject/issuer name chaining";
        if (debug != null)
            debug.println("---checking " + msg + "...");

        X500Principal currIssuer = cert.getIssuerX500Principal();

        // reject null or empty issuer DNs
        if (X500Name.asX500Name(currIssuer).isEmpty()) {
            throw new CertPathValidatorException
                (msg + " check failed: " +
                 "empty/null issuer DN in certificate is invalid", null,
                 null, -1, PKIXReason.NAME_CHAINING);
        }

        if (!(currIssuer.equals(prevSubject))) {
            throw new CertPathValidatorException
                (msg + " check failed", null, null, -1,
                 PKIXReason.NAME_CHAINING);
        }

        if (debug != null)
            debug.println(msg + " verified.");
    }
}
 
Example #16
Source File: ValidateCertPath.java    From openjdk-8 with GNU General Public License v2.0 5 votes vote down vote up
public static void main(String[] args) throws Exception {

        try {
            parseArgs(args);
            validate(path, params);
            throw new Exception("Successfully validated invalid path.");
        } catch (CertPathValidatorException e) {
            if (e.getReason() != PKIXReason.INVALID_NAME) {
                throw new Exception("unexpected reason: " + e.getReason());
            }
            System.out.println("Path rejected as expected: " + e);
        }
    }
 
Example #17
Source File: KeyChecker.java    From openjdk-8 with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Verifies the key usage extension in a CA cert.
 * The key usage extension, if present, must assert the keyCertSign bit.
 * The extended key usage extension is not checked (see CR 4776794 for
 * more information).
 */
static void verifyCAKeyUsage(X509Certificate cert)
        throws CertPathValidatorException {
    String msg = "CA key usage";
    if (debug != null) {
        debug.println("KeyChecker.verifyCAKeyUsage() ---checking " + msg
                      + "...");
    }

    boolean[] keyUsageBits = cert.getKeyUsage();

    // getKeyUsage returns null if the KeyUsage extension is not present
    // in the certificate - in which case there is nothing to check
    if (keyUsageBits == null) {
        return;
    }

    // throw an exception if the keyCertSign bit is not set
    if (!keyUsageBits[KEY_CERT_SIGN]) {
        throw new CertPathValidatorException
            (msg + " check failed: keyCertSign bit is not set", null,
             null, -1, PKIXReason.INVALID_KEY_USAGE);
    }

    if (debug != null) {
        debug.println("KeyChecker.verifyCAKeyUsage() " + msg
                      + " verified.");
    }
}
 
Example #18
Source File: ValidateCertPath.java    From openjdk-8-source with GNU General Public License v2.0 5 votes vote down vote up
public static void main(String[] args) throws Exception {

        try {
            parseArgs(args);
            validate(path, params);
            throw new Exception("Successfully validated invalid path.");
        } catch (CertPathValidatorException e) {
            if (e.getReason() != PKIXReason.INVALID_NAME) {
                throw new Exception("unexpected reason: " + e.getReason());
            }
            System.out.println("Path rejected as expected: " + e);
        }
    }
 
Example #19
Source File: BasicChecker.java    From openjdk-8-source with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Internal method to check that cert has a valid DN to be next in a chain
 */
private void verifyNameChaining(X509Certificate cert)
    throws CertPathValidatorException
{
    if (prevSubject != null) {

        String msg = "subject/issuer name chaining";
        if (debug != null)
            debug.println("---checking " + msg + "...");

        X500Principal currIssuer = cert.getIssuerX500Principal();

        // reject null or empty issuer DNs
        if (X500Name.asX500Name(currIssuer).isEmpty()) {
            throw new CertPathValidatorException
                (msg + " check failed: " +
                 "empty/null issuer DN in certificate is invalid", null,
                 null, -1, PKIXReason.NAME_CHAINING);
        }

        if (!(currIssuer.equals(prevSubject))) {
            throw new CertPathValidatorException
                (msg + " check failed", null, null, -1,
                 PKIXReason.NAME_CHAINING);
        }

        if (debug != null)
            debug.println(msg + " verified.");
    }
}
 
Example #20
Source File: ConstraintsChecker.java    From openjdk-8-source with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Internal method to check the name constraints against a cert
 */
private void verifyNameConstraints(X509Certificate currCert)
    throws CertPathValidatorException
{
    String msg = "name constraints";
    if (debug != null) {
        debug.println("---checking " + msg + "...");
    }

    // check name constraints only if there is a previous name constraint
    // and either the currCert is the final cert or the currCert is not
    // self-issued
    if (prevNC != null && ((i == certPathLength) ||
            !X509CertImpl.isSelfIssued(currCert))) {
        if (debug != null) {
            debug.println("prevNC = " + prevNC);
            debug.println("currDN = " + currCert.getSubjectX500Principal());
        }

        try {
            if (!prevNC.verify(currCert)) {
                throw new CertPathValidatorException(msg + " check failed",
                    null, null, -1, PKIXReason.INVALID_NAME);
            }
        } catch (IOException ioe) {
            throw new CertPathValidatorException(ioe);
        }
    }

    // merge name constraints regardless of whether cert is self-issued
    prevNC = mergeNameConstraints(currCert, prevNC);

    if (debug != null)
        debug.println(msg + " verified.");
}
 
Example #21
Source File: KeyChecker.java    From openjdk-8-source with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Verifies the key usage extension in a CA cert.
 * The key usage extension, if present, must assert the keyCertSign bit.
 * The extended key usage extension is not checked (see CR 4776794 for
 * more information).
 */
static void verifyCAKeyUsage(X509Certificate cert)
        throws CertPathValidatorException {
    String msg = "CA key usage";
    if (debug != null) {
        debug.println("KeyChecker.verifyCAKeyUsage() ---checking " + msg
                      + "...");
    }

    boolean[] keyUsageBits = cert.getKeyUsage();

    // getKeyUsage returns null if the KeyUsage extension is not present
    // in the certificate - in which case there is nothing to check
    if (keyUsageBits == null) {
        return;
    }

    // throw an exception if the keyCertSign bit is not set
    if (!keyUsageBits[KEY_CERT_SIGN]) {
        throw new CertPathValidatorException
            (msg + " check failed: keyCertSign bit is not set", null,
             null, -1, PKIXReason.INVALID_KEY_USAGE);
    }

    if (debug != null) {
        debug.println("KeyChecker.verifyCAKeyUsage() " + msg
                      + " verified.");
    }
}
 
Example #22
Source File: ValidateCertPath.java    From hottub with GNU General Public License v2.0 5 votes vote down vote up
public static void main(String[] args) throws Exception {

        try {
            parseArgs(args);
            validate(path, params);
            throw new Exception("Successfully validated invalid path.");
        } catch (CertPathValidatorException e) {
            if (e.getReason() != PKIXReason.INVALID_NAME) {
                throw new Exception("unexpected reason: " + e.getReason());
            }
            System.out.println("Path rejected as expected: " + e);
        }
    }
 
Example #23
Source File: BasicChecker.java    From hottub with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Internal method to check that cert has a valid DN to be next in a chain
 */
private void verifyNameChaining(X509Certificate cert)
    throws CertPathValidatorException
{
    if (prevSubject != null) {

        String msg = "subject/issuer name chaining";
        if (debug != null)
            debug.println("---checking " + msg + "...");

        X500Principal currIssuer = cert.getIssuerX500Principal();

        // reject null or empty issuer DNs
        if (X500Name.asX500Name(currIssuer).isEmpty()) {
            throw new CertPathValidatorException
                (msg + " check failed: " +
                 "empty/null issuer DN in certificate is invalid", null,
                 null, -1, PKIXReason.NAME_CHAINING);
        }

        if (!(currIssuer.equals(prevSubject))) {
            throw new CertPathValidatorException
                (msg + " check failed", null, null, -1,
                 PKIXReason.NAME_CHAINING);
        }

        if (debug != null)
            debug.println(msg + " verified.");
    }
}
 
Example #24
Source File: ConstraintsChecker.java    From hottub with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Internal method to check the name constraints against a cert
 */
private void verifyNameConstraints(X509Certificate currCert)
    throws CertPathValidatorException
{
    String msg = "name constraints";
    if (debug != null) {
        debug.println("---checking " + msg + "...");
    }

    // check name constraints only if there is a previous name constraint
    // and either the currCert is the final cert or the currCert is not
    // self-issued
    if (prevNC != null && ((i == certPathLength) ||
            !X509CertImpl.isSelfIssued(currCert))) {
        if (debug != null) {
            debug.println("prevNC = " + prevNC +
                ", currDN = " + currCert.getSubjectX500Principal());
        }

        try {
            if (!prevNC.verify(currCert)) {
                throw new CertPathValidatorException(msg + " check failed",
                    null, null, -1, PKIXReason.INVALID_NAME);
            }
        } catch (IOException ioe) {
            throw new CertPathValidatorException(ioe);
        }
    }

    // merge name constraints regardless of whether cert is self-issued
    prevNC = mergeNameConstraints(currCert, prevNC);

    if (debug != null)
        debug.println(msg + " verified.");
}
 
Example #25
Source File: KeyChecker.java    From hottub with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Verifies the key usage extension in a CA cert.
 * The key usage extension, if present, must assert the keyCertSign bit.
 * The extended key usage extension is not checked (see CR 4776794 for
 * more information).
 */
static void verifyCAKeyUsage(X509Certificate cert)
        throws CertPathValidatorException {
    String msg = "CA key usage";
    if (debug != null) {
        debug.println("KeyChecker.verifyCAKeyUsage() ---checking " + msg
                      + "...");
    }

    boolean[] keyUsageBits = cert.getKeyUsage();

    // getKeyUsage returns null if the KeyUsage extension is not present
    // in the certificate - in which case there is nothing to check
    if (keyUsageBits == null) {
        return;
    }

    // throw an exception if the keyCertSign bit is not set
    if (!keyUsageBits[KEY_CERT_SIGN]) {
        throw new CertPathValidatorException
            (msg + " check failed: keyCertSign bit is not set", null,
             null, -1, PKIXReason.INVALID_KEY_USAGE);
    }

    if (debug != null) {
        debug.println("KeyChecker.verifyCAKeyUsage() " + msg
                      + " verified.");
    }
}
 
Example #26
Source File: ValidateCertPath.java    From jdk8u-jdk with GNU General Public License v2.0 5 votes vote down vote up
public static void main(String[] args) throws Exception {

        try {
            parseArgs(args);
            validate(path, params);
            throw new Exception("Successfully validated invalid path.");
        } catch (CertPathValidatorException e) {
            if (e.getReason() != PKIXReason.INVALID_NAME) {
                throw new Exception("unexpected reason: " + e.getReason());
            }
            System.out.println("Path rejected as expected: " + e);
        }
    }
 
Example #27
Source File: KeyChecker.java    From dragonwell8_jdk with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Verifies the key usage extension in a CA cert.
 * The key usage extension, if present, must assert the keyCertSign bit.
 * The extended key usage extension is not checked (see CR 4776794 for
 * more information).
 */
static void verifyCAKeyUsage(X509Certificate cert)
        throws CertPathValidatorException {
    String msg = "CA key usage";
    if (debug != null) {
        debug.println("KeyChecker.verifyCAKeyUsage() ---checking " + msg
                      + "...");
    }

    boolean[] keyUsageBits = cert.getKeyUsage();

    // getKeyUsage returns null if the KeyUsage extension is not present
    // in the certificate - in which case there is nothing to check
    if (keyUsageBits == null) {
        return;
    }

    // throw an exception if the keyCertSign bit is not set
    if (!keyUsageBits[KEY_CERT_SIGN]) {
        throw new CertPathValidatorException
            (msg + " check failed: keyCertSign bit is not set", null,
             null, -1, PKIXReason.INVALID_KEY_USAGE);
    }

    if (debug != null) {
        debug.println("KeyChecker.verifyCAKeyUsage() " + msg
                      + " verified.");
    }
}
 
Example #28
Source File: ConstraintsChecker.java    From jdk8u-jdk with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Internal method to check the name constraints against a cert
 */
private void verifyNameConstraints(X509Certificate currCert)
    throws CertPathValidatorException
{
    String msg = "name constraints";
    if (debug != null) {
        debug.println("---checking " + msg + "...");
    }

    // check name constraints only if there is a previous name constraint
    // and either the currCert is the final cert or the currCert is not
    // self-issued
    if (prevNC != null && ((i == certPathLength) ||
            !X509CertImpl.isSelfIssued(currCert))) {
        if (debug != null) {
            debug.println("prevNC = " + prevNC +
                ", currDN = " + currCert.getSubjectX500Principal());
        }

        try {
            if (!prevNC.verify(currCert)) {
                throw new CertPathValidatorException(msg + " check failed",
                    null, null, -1, PKIXReason.INVALID_NAME);
            }
        } catch (IOException ioe) {
            throw new CertPathValidatorException(ioe);
        }
    }

    // merge name constraints regardless of whether cert is self-issued
    prevNC = mergeNameConstraints(currCert, prevNC);

    if (debug != null)
        debug.println(msg + " verified.");
}
 
Example #29
Source File: KeyChecker.java    From jdk8u-jdk with GNU General Public License v2.0 5 votes vote down vote up
/**
 * Verifies the key usage extension in a CA cert.
 * The key usage extension, if present, must assert the keyCertSign bit.
 * The extended key usage extension is not checked (see CR 4776794 for
 * more information).
 */
static void verifyCAKeyUsage(X509Certificate cert)
        throws CertPathValidatorException {
    String msg = "CA key usage";
    if (debug != null) {
        debug.println("KeyChecker.verifyCAKeyUsage() ---checking " + msg
                      + "...");
    }

    boolean[] keyUsageBits = cert.getKeyUsage();

    // getKeyUsage returns null if the KeyUsage extension is not present
    // in the certificate - in which case there is nothing to check
    if (keyUsageBits == null) {
        return;
    }

    // throw an exception if the keyCertSign bit is not set
    if (!keyUsageBits[KEY_CERT_SIGN]) {
        throw new CertPathValidatorException
            (msg + " check failed: keyCertSign bit is not set", null,
             null, -1, PKIXReason.INVALID_KEY_USAGE);
    }

    if (debug != null) {
        debug.println("KeyChecker.verifyCAKeyUsage() " + msg
                      + " verified.");
    }
}
 
Example #30
Source File: ValidateCertPath.java    From openjdk-jdk9 with GNU General Public License v2.0 5 votes vote down vote up
public static void main(String[] args) throws Exception {

        try {
            parseArgs(args);
            validate(path, params);
            throw new Exception("Successfully validated invalid path.");
        } catch (CertPathValidatorException e) {
            if (e.getReason() != PKIXReason.INVALID_NAME) {
                throw new Exception("unexpected reason: " + e.getReason());
            }
            System.out.println("Path rejected as expected: " + e);
        }
    }