Example usage for org.bouncycastle.asn1.x509 ExtendedKeyUsage getInstance

List of usage examples for org.bouncycastle.asn1.x509 ExtendedKeyUsage getInstance

Introduction

In this page you can find the example usage for org.bouncycastle.asn1.x509 ExtendedKeyUsage getInstance.

Prototype

public static ExtendedKeyUsage getInstance(Object obj) 

Source Link

Document

Return an ExtendedKeyUsage from the passed in object.

Usage

From source file:be.fedict.trust.constraints.CodeSigningCertificateConstraint.java

License:Open Source License

@Override
public void check(X509Certificate certificate) throws TrustLinkerResultException, Exception {
    byte[] extension = certificate.getExtensionValue(Extension.extendedKeyUsage.getId());
    if (null == extension) {
        throw new TrustLinkerResultException(TrustLinkerResultReason.CONSTRAINT_VIOLATION,
                "missing ExtendedKeyUsage extension");
    }//from  ww  w .  ja va2 s . c  om
    if (false == certificate.getCriticalExtensionOIDs().contains(Extension.extendedKeyUsage.getId())) {
        throw new TrustLinkerResultException(TrustLinkerResultReason.CONSTRAINT_VIOLATION,
                "ExtendedKeyUsage should be critical");
    }
    ASN1InputStream asn1InputStream = new ASN1InputStream(new ByteArrayInputStream(extension));
    asn1InputStream = new ASN1InputStream(
            new ByteArrayInputStream(((ASN1OctetString) asn1InputStream.readObject()).getOctets()));
    ExtendedKeyUsage extendedKeyUsage = ExtendedKeyUsage.getInstance(asn1InputStream.readObject());
    if (false == extendedKeyUsage.hasKeyPurposeId(KeyPurposeId.id_kp_codeSigning)) {
        throw new TrustLinkerResultException(TrustLinkerResultReason.CONSTRAINT_VIOLATION,
                "missing codeSigning ExtendedKeyUsage");
    }
    if (1 != extendedKeyUsage.size()) {
        throw new TrustLinkerResultException(TrustLinkerResultReason.CONSTRAINT_VIOLATION,
                "ExtendedKeyUsage not solely codeSigning");
    }
}

From source file:net.sf.keystore_explorer.crypto.x509.X509Ext.java

License:Open Source License

private String getExtendedKeyUsageStringValue(byte[] value) throws IOException {
    // @formatter:off

    /*/*from  w  w w . java2 s.  c o m*/
     * ExtendedKeyUsage ::= ASN1Sequence SIZE (1..MAX) OF KeyPurposeId
     *
     * KeyPurposeId ::= OBJECT IDENTIFIER
     */

    // @formatter:on

    StringBuilder sb = new StringBuilder();

    ExtendedKeyUsage extendedKeyUsage = ExtendedKeyUsage.getInstance(value);

    for (KeyPurposeId keyPurposeId : extendedKeyUsage.getUsages()) {
        String oid = keyPurposeId.getId();

        ExtendedKeyUsageType type = ExtendedKeyUsageType.resolveOid(oid);

        if (type != null) {
            sb.append(type.friendly());
        } else {
            // Unrecognised key purpose ID
            sb.append(oid);
        }

        sb.append(NEWLINE);
    }

    return sb.toString();
}

From source file:net.sf.keystore_explorer.gui.dialogs.extensions.DExtendedKeyUsage.java

License:Open Source License

private void prepopulateWithValue(byte[] value) throws IOException {
    ExtendedKeyUsage extendedKeyUsage = ExtendedKeyUsage.getInstance(value);

    for (KeyPurposeId keyPurposeId : extendedKeyUsage.getUsages()) {
        ASN1ObjectIdentifier oid = (ASN1ObjectIdentifier) keyPurposeId.toASN1Primitive();

        ExtendedKeyUsageType type = ExtendedKeyUsageType.resolveOid(oid.getId());

        if (type == SERVER_AUTH) {
            jcbTlsWebServerAuthentication.setSelected(true);
        } else if (type == CLIENT_AUTH) {
            jcbTlsWebClientAuthentication.setSelected(true);
        } else if (type == CODE_SIGNING) {
            jcbCodeSigning.setSelected(true);
        } else if (type == DOCUMENT_SIGNING) {
            jcbDocumentSigning.setSelected(true);
        } else if (type == ADOBE_PDF_SIGNING) {
            jcbAdobePDFSigning.setSelected(true);
        } else if (type == EMAIL_PROTECTION) {
            jcbEmailProtection.setSelected(true);
        } else if (type == ENCRYPTED_FILE_SYSTEM) {
            jcbEncryptedFileSystem.setSelected(true);
        } else if (type == IPSEC_END_SYSTEM) {
            jcbIpSecurityEndSystem.setSelected(true);
        } else if (type == IPSEC_TUNNEL) {
            jcbIpSecurityTunnelTermination.setSelected(true);
        } else if (type == IPSEC_USER) {
            jcbIpSecurityUser.setSelected(true);
        } else if (type == SMARTCARD_LOGON) {
            jcbSmartcardLogon.setSelected(true);
        } else if (type == TIME_STAMPING) {
            jcbTimeStamping.setSelected(true);
        } else if (type == OCSP_SIGNING) {
            jcbOcspStamping.setSelected(true);
        } else if (type == ANY_EXTENDED_KEY_USAGE) {
            jcbAnyExtendedKeyUsage.setSelected(true);
        }//from ww w .j a  v  a2s .  c om
    }
}

From source file:net.sf.portecle.crypto.X509Ext.java

License:Open Source License

/**
 * Get Extended Key Usage (2.5.29.37) extension value as a string.
 * //w w  w  .  j ava2 s  . c  om
 * <pre>
 * ExtendedKeyUsage ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId
 * KeyPurposeId ::= OBJECT IDENTIFIER
 * </pre>
 * 
 * @param bValue The octet string value
 * @return Extension value as a string
 * @throws IOException If an I/O problem occurs
 */
private String getExtendedKeyUsageStringValue(byte[] bValue) throws IOException {
    StringBuilder strBuff = new StringBuilder();

    ExtendedKeyUsage eku = ExtendedKeyUsage.getInstance(bValue);
    KeyPurposeId[] usages = eku.getUsages();

    for (KeyPurposeId usage : usages) {
        if (strBuff.length() != 0) {
            strBuff.append("<br><br>");
        }
        String sOid = usage.getId();
        String sEku = getRes(sOid, "UnrecognisedExtKeyUsageString");
        strBuff.append(MessageFormat.format(sEku, sOid));
    }

    return strBuff.toString();
}

From source file:net.wstech2.me.httpsclient.CertificateValidatorUtils.java

License:Apache License

private static Boolean isHostAunthenticationCertificate(Certificate cert) throws IOException {

    Extension extKeyUsageExtension = cert.getTBSCertificate().getExtensions()
            .getExtension(Extension.extendedKeyUsage);
    if (extKeyUsageExtension == null) {
        return Boolean.FALSE;
    }//from w w w.  jav  a2  s.co m
    ASN1OctetString oct = extKeyUsageExtension.getExtnValue();
    ASN1InputStream extIn = new ASN1InputStream(new ByteArrayInputStream(oct.getOctets()));
    ExtendedKeyUsage extKeyUsages = ExtendedKeyUsage.getInstance(extIn.readObject());
    extIn.close();
    KeyPurposeId[] keyPurposeIds = extKeyUsages.getUsages();
    for (int i = 0; i < keyPurposeIds.length; i++) {
        if (keyPurposeIds[i].equals(KeyPurposeId.id_kp_serverAuth)) {
            return Boolean.TRUE;
        }
    }
    return Boolean.FALSE;
}

From source file:org.ejbca.core.protocol.cmp.CrmfRAPbeMultipleKeyIdRequestTest.java

License:Open Source License

@Test
public void test07ExtensionOverride() throws Exception {

    byte[] nonce = CmpMessageHelper.createSenderNonce();
    byte[] transid = CmpMessageHelper.createSenderNonce();

    // Create some crazy extensions to see that we get them when using
    // extension override.
    // We should not get our values when not using extension override
    ExtensionsGenerator extgen = new ExtensionsGenerator();
    // SubjectAltName
    GeneralNames san = CertTools.getGeneralNamesFromAltName("dnsName=foo.bar.com");
    extgen.addExtension(Extension.subjectAlternativeName, false, san);
    // KeyUsage/*from www . ja  va2s.  c  om*/
    int bcku = 0;
    bcku = X509KeyUsage.decipherOnly;
    X509KeyUsage ku = new X509KeyUsage(bcku);
    extgen.addExtension(Extension.keyUsage, false, ku);
    // Extended Key Usage
    List<KeyPurposeId> usage = new ArrayList<KeyPurposeId>();
    usage.add(KeyPurposeId.id_kp_codeSigning);
    ExtendedKeyUsage eku = ExtendedKeyUsage.getInstance(usage);
    extgen.addExtension(Extension.extendedKeyUsage, false, eku);
    // OcspNoCheck
    extgen.addExtension(OCSPObjectIdentifiers.id_pkix_ocsp_nocheck, false, DERNull.INSTANCE);
    // Netscape cert type
    extgen.addExtension(new ASN1ObjectIdentifier("2.16.840.1.113730.1.1"), false,
            new NetscapeCertType(NetscapeCertType.objectSigningCA));
    // My completely own
    extgen.addExtension(new ASN1ObjectIdentifier("1.1.1.1.1"), false, new DERIA5String("PrimeKey"));

    // Make the complete extension package
    Extensions exts = extgen.generate();

    // First test without extension override
    PKIMessage one = genCertReq(this.issuerDN2, userDN2, this.keys, this.cacert2, nonce, transid, true, exts,
            null, null, null, null, null);
    PKIMessage req = protectPKIMessage(one, false, PBEPASSWORD, "KeyId2", 567);

    CertReqMessages ir = (CertReqMessages) req.getBody().getContent();
    int reqId = ir.toCertReqMsgArray()[0].getCertReq().getCertReqId().getValue().intValue();
    assertNotNull(req);
    ByteArrayOutputStream bao = new ByteArrayOutputStream();
    DEROutputStream out = new DEROutputStream(bao);
    out.writeObject(req);
    byte[] ba = bao.toByteArray();
    // Send request and receive response
    byte[] resp = sendCmpTcp(ba, 5);
    checkCmpResponseGeneral(resp, this.issuerDN2, userDN2, this.cacert2, nonce, transid, false, PBEPASSWORD,
            PKCSObjectIdentifiers.sha1WithRSAEncryption.getId());
    X509Certificate cert = checkCmpCertRepMessage(userDN2, this.cacert2, resp, reqId);
    String altNames = CertTools.getSubjectAlternativeName(cert);
    assertTrue(altNames.indexOf("dNSName=foo.bar.com") != -1);

    // Check key usage that it is nonRepudiation for KeyId2
    boolean[] kubits = cert.getKeyUsage();
    assertFalse(kubits[0]);
    assertTrue(kubits[1]);
    assertFalse(kubits[2]);
    assertFalse(kubits[3]);
    assertFalse(kubits[4]);
    assertFalse(kubits[5]);
    assertFalse(kubits[6]);
    assertFalse(kubits[7]);
    assertFalse(kubits[8]);
    // Our own ext should not be here
    assertNull(cert.getExtensionValue("1.1.1.1.1"));
    assertNull(cert.getExtensionValue("2.16.840.1.113730.1.1"));
    assertNull(cert.getExtensionValue(OCSPObjectIdentifiers.id_pkix_ocsp_nocheck.getId()));

    // Skip confirmation message, we have tested that several times already

    //
    // Do the same with keyId4, that has full extension override
    one = genCertReq(this.issuerDN2, userDN2, this.keys, this.cacert2, nonce, transid, true, exts, null, null,
            null, null, null);
    req = protectPKIMessage(one, false, PBEPASSWORD, "KeyId4", 567);

    ir = (CertReqMessages) req.getBody().getContent();
    reqId = ir.toCertReqMsgArray()[0].getCertReq().getCertReqId().getValue().intValue();
    assertNotNull(req);
    bao = new ByteArrayOutputStream();
    out = new DEROutputStream(bao);
    out.writeObject(req);
    ba = bao.toByteArray();
    // Send request and receive response
    resp = sendCmpTcp(ba, 5);
    checkCmpResponseGeneral(resp, this.issuerDN2, userDN2, this.cacert2, nonce, transid, false, PBEPASSWORD,
            PKCSObjectIdentifiers.sha1WithRSAEncryption.getId());
    cert = checkCmpCertRepMessage(userDN2, this.cacert2, resp, reqId);
    altNames = CertTools.getSubjectAlternativeName(cert);
    assertTrue(altNames.indexOf("dNSName=foo.bar.com") != -1);

    // Check key usage that it is decipherOnly for KeyId4
    kubits = cert.getKeyUsage();
    assertFalse(kubits[0]);
    assertFalse(kubits[1]);
    assertFalse(kubits[2]);
    assertFalse(kubits[3]);
    assertFalse(kubits[4]);
    assertFalse(kubits[5]);
    assertFalse(kubits[6]);
    assertFalse(kubits[7]);
    assertTrue(kubits[8]);
    // Our own ext should not be here
    assertNotNull(cert.getExtensionValue("1.1.1.1.1"));
    assertNotNull(cert.getExtensionValue("2.16.840.1.113730.1.1"));
    assertNotNull(cert.getExtensionValue(OCSPObjectIdentifiers.id_pkix_ocsp_nocheck.getId()));
    List<String> l = cert.getExtendedKeyUsage();
    assertEquals(1, l.size());
    String s = l.get(0);
    assertEquals(KeyPurposeId.id_kp_codeSigning.getId(), s);

    // Skip confirmation message, we have tested that several times already
}

From source file:org.opensc.pkcs15.asn1.basic.Usage.java

License:Apache License

/**
 * @param obj The ASN.1 object to decode.
 * @return An instance of CommonObjectAttributes.
 *//*from  www  .j  a v a  2  s  .co m*/
public static Usage getInstance(Object obj) {
    if (obj instanceof Usage)
        return (Usage) obj;

    if (obj instanceof ASN1Sequence) {
        ASN1Sequence seq = (ASN1Sequence) obj;

        Enumeration<Object> objs = seq.getObjects();

        Usage ret = new Usage();

        while (objs.hasMoreElements()) {

            Object o = objs.nextElement();

            if (o instanceof ASN1Sequence) {
                ret.setExtKeyUsage(ExtendedKeyUsage.getInstance(o));
            } else if (o instanceof DERBitString) {
                ret.setUsage((KeyUsage) KeyUsage.getInstance(o));
            } else
                throw new IllegalArgumentException("Invalid member [" + o + "] in Usage ASN.1 SEQUENCE.");
        }

        return ret;
    }

    throw new IllegalArgumentException("CommonKeyAttributes must be encoded as an ASN.1 SEQUENCE.");
}

From source file:org.xipki.ca.server.impl.IdentifiedX509Certprofile.java

License:Open Source License

private static void addRequestedExtKeyusage(final Set<ASN1ObjectIdentifier> usages,
        final Extensions requestExtensions, final Set<ExtKeyUsageControl> usageOccs) {
    Extension extension = requestExtensions.getExtension(Extension.extendedKeyUsage);
    if (extension == null) {
        return;//from  ww  w .  j a  va 2s  .  co  m
    }

    ExtendedKeyUsage reqKeyUsage = ExtendedKeyUsage.getInstance(extension.getParsedValue());
    for (ExtKeyUsageControl k : usageOccs) {
        if (k.isRequired()) {
            continue;
        }

        if (reqKeyUsage.hasKeyPurposeId(KeyPurposeId.getInstance(k.getExtKeyUsage()))) {
            usages.add(k.getExtKeyUsage());
        }
    }
}

From source file:org.xipki.pki.ca.server.impl.IdentifiedX509Certprofile.java

License:Open Source License

private static void addRequestedExtKeyusage(final List<ASN1ObjectIdentifier> usages,
        final Extensions requestedExtensions, final Set<ExtKeyUsageControl> usageOccs) {
    Extension extension = requestedExtensions.getExtension(Extension.extendedKeyUsage);
    if (extension == null) {
        return;//w ww.ja v a  2s .c  o m
    }

    ExtendedKeyUsage reqKeyUsage = ExtendedKeyUsage.getInstance(extension.getParsedValue());
    for (ExtKeyUsageControl k : usageOccs) {
        if (k.isRequired()) {
            continue;
        }

        if (reqKeyUsage.hasKeyPurposeId(KeyPurposeId.getInstance(k.getExtKeyUsage()))) {
            usages.add(k.getExtKeyUsage());
        }
    }
}

From source file:se.tillvaxtverket.tsltrust.weblogic.content.CertificateInformation.java

License:Open Source License

private void addCertificateExtensionInfo(AaaCertificate cert, boolean unfold) {
    InfoTableSection section = certElements.addNewSection(tm, "Extensions", unfold);
    section.setSectionHeadingClasses(CERT_INFO);
    InfoTableElements extElements = section.getElements();
    extFact.clear();//from w  w  w  . j  a  va  2s .c  o  m

    List<ExtensionInfo> extList = cert.getExtensionInfoList();
    if (extList == null) {
        return;
    }

    section.setFoldedElement(
            "Extension summary (out of " + String.valueOf(extList.size()) + " total Extensions)");
    section.setKeepFoldableElement(true);

    for (ExtensionInfo rawExt : extList) {
        //Basic Constraints
        if (rawExt.getExtensionType().equals(SupportedExtension.basicConstraints)) {
            BasicConstraints bc = BasicConstraints.getInstance(rawExt.getExtDataASN1());
            extFact.add(getExtNameAndOID(rawExt), EXT_ATTR);
            // set property
            extFact.add("cA", String.valueOf(bc.isCA()));
            extFact.addExtension(extElements);
        }
        //Key Usage
        if (rawExt.getExtensionType().equals(SupportedExtension.keyUsage)) {
            KeyUsage ku = KeyUsage.getInstance(rawExt.getExtDataASN1());
            extFact.add(getExtNameAndOID(rawExt), EXT_ATTR);
            extFact.add("Usage", DisplayCert.getKeyUsageText(ku));
            extFact.addExtension(extElements);
        }

        //QcStatements
        if (rawExt.getExtensionType().equals(SupportedExtension.qCStatements)) {
            QCStatementsExt qc = QCStatementsExt.getInstance(rawExt.getExtDataASN1());
            extFact.add(getExtNameAndOID(rawExt), EXT_ATTR);
            // set property
            if (qc.isQcCompliance()) {
                extFact.add("Qualified", "true");
            }
            if (qc.isQcSscd()) {
                extFact.add("QSSCD", "true");
            }
            extFact.addExtension(extElements);
        }

        //            //EKU
        if (rawExt.getExtensionType().equals(SupportedExtension.extendedKeyUsage)) {
            ExtendedKeyUsage eku = ExtendedKeyUsage.getInstance(rawExt.getExtDataASN1());
            extFact.add(getExtNameAndOID(rawExt), EXT_ATTR);
            // set property
            KeyPurposeId[] keyPurposeIDs = eku.getUsages();
            for (KeyPurposeId oid : keyPurposeIDs) {
                extFact.add(OidName.getName(oid.getId()), oid.getId());
            }
            extFact.addExtension(extElements);
        }

        //            //CertificatePolicies
        if (rawExt.getExtensionType().equals(SupportedExtension.certificatePolicies)) {
            CertificatePolicies cp = CertificatePolicies.getInstance(rawExt.getExtDataASN1());
            extFact.add(getExtNameAndOID(rawExt), EXT_ATTR);
            // set property
            PolicyInformation[] policyInformation = cp.getPolicyInformation();
            for (PolicyInformation pi : policyInformation) {
                ASN1ObjectIdentifier oid = pi.getPolicyIdentifier();
                extFact.add("Policy", OidName.getName(oid.getId()));
            }
            extFact.addExtension(extElements);
        }

        //            //SubjectAlterantive Name
        //            /**
        //             *    GeneralName ::= CHOICE {
        //             *    otherName                       [0]     OtherName,
        //             *    rfc822Name                      [1]     IA5String,
        //             *    dNSName                         [2]     IA5String,
        //             *    x400Address                     [3]     ORAddress,
        //             *    directoryName                   [4]     Name,
        //             *    ediPartyName                    [5]     EDIPartyName,
        //             *    uniformResourceIdentifier       [6]     IA5String,
        //             *    iPAddress                       [7]     OCTET STRING,
        //             *    registeredID                    [8]     OBJECT IDENTIFIER }
        //             */
        if (rawExt.getExtensionType().equals(SupportedExtension.subjectAlternativeName)) {
            GeneralNames san = GeneralNames.getInstance(rawExt.getExtDataASN1());
            extFact.add(getExtNameAndOID(rawExt), EXT_ATTR);
            // set property
            String[] nameType = new String[] { "otherName", "rfc822Name", "dNSName", "x400Address",
                    "directoryName", "ediPartyName", "uniformResourceIdentifier", "iPAddress", "registeredID" };
            GeneralName[] generalNames = san.getNames();
            for (GeneralName name : generalNames) {
                int type = name.getTagNo();
                if (type == 1 || type == 2 || type == 6 || type == 7) {
                    extFact.add(nameType[type], name.getName().toString());
                }
            }
            extFact.addExtension(extElements);
        }
    }
}