Java 类java.security.cert.CertificateParsingException 实例源码

项目:springboot-shiro-cas-mybatis    文件:X509SubjectAlternativeNameUPNPrincipalResolver.java   
/**
 * Retrieves Subject Alternative Name UPN extension as a principal id String.
 *
 * @param certificate X.509 certificate credential.
 *
 * @return Resolved principal ID or null if no SAN UPN extension is available in provided certificate.
 *
 * @see AbstractX509PrincipalResolver#resolvePrincipalInternal(java.security.cert.X509Certificate)
 * @see java.security.cert.X509Certificate#getSubjectAlternativeNames()
 */
@Override
protected String resolvePrincipalInternal(final X509Certificate certificate) {
    logger.debug("Resolving principal from Subject Alternative Name UPN for {}", certificate);
    try {
        final Collection<List<?>> subjectAltNames = certificate.getSubjectAlternativeNames();
        if (subjectAltNames != null) {
            for (final List<?> sanItem : subjectAltNames) {
                final ASN1Sequence seq = getAltnameSequence(sanItem);
                final String upnString = getUPNStringFromSequence(seq);
                if (upnString != null) {
                    return upnString;
                }
            }
        }
    } catch (final CertificateParsingException e) {
        logger.error("Error is encountered while trying to retrieve subject alternative names collection from certificate", e);
        logger.debug("Returning null principal id...");
        return null;
    }
    logger.debug("Returning null principal id...");
    return null;
}
项目:springboot-shiro-cas-mybatis    文件:X509SubjectAlternativeNameUPNPrincipalResolver.java   
/**
 * Retrieves Subject Alternative Name UPN extension as a principal id String.
 *
 * @param certificate X.509 certificate credential.
 *
 * @return Resolved principal ID or null if no SAN UPN extension is available in provided certificate.
 *
 * @see AbstractX509PrincipalResolver#resolvePrincipalInternal(java.security.cert.X509Certificate)
 * @see java.security.cert.X509Certificate#getSubjectAlternativeNames()
 */
@Override
protected String resolvePrincipalInternal(final X509Certificate certificate) {
    logger.debug("Resolving principal from Subject Alternative Name UPN for {}", certificate);
    try {
        final Collection<List<?>> subjectAltNames = certificate.getSubjectAlternativeNames();
        if (subjectAltNames != null) {
            for (final List<?> sanItem : subjectAltNames) {
                final ASN1Sequence seq = getAltnameSequence(sanItem);
                final String upnString = getUPNStringFromSequence(seq);
                if (upnString != null) {
                    return upnString;
                }
            }
        }
    } catch (final CertificateParsingException e) {
        logger.error("Error is encountered while trying to retrieve subject alternative names collection from certificate", e);
        logger.debug("Returning null principal id...");
        return null;
    }
    logger.debug("Returning null principal id...");
    return null;
}
项目:cas-5.1.0    文件:X509SubjectAlternativeNameUPNPrincipalResolver.java   
/**
 * Retrieves Subject Alternative Name UPN extension as a principal id String.
 *
 * @param certificate X.509 certificate credential.
 * @return Resolved principal ID or null if no SAN UPN extension is available in provided certificate.
 * @see AbstractX509PrincipalResolver#resolvePrincipalInternal(java.security.cert.X509Certificate)
 * @see java.security.cert.X509Certificate#getSubjectAlternativeNames()
 */
@Override
protected String resolvePrincipalInternal(final X509Certificate certificate) {
    LOGGER.debug("Resolving principal from Subject Alternative Name UPN for [{}]", certificate);
    try {
        final Collection<List<?>> subjectAltNames = certificate.getSubjectAlternativeNames();
        if (subjectAltNames != null) {
            for (final List<?> sanItem : subjectAltNames) {
                final ASN1Sequence seq = getAltnameSequence(sanItem);
                final String upnString = getUPNStringFromSequence(seq);
                if (upnString != null) {
                    return upnString;
                }
            }
        }
    } catch (final CertificateParsingException e) {
        LOGGER.error("Error is encountered while trying to retrieve subject alternative names collection from certificate", e);
        LOGGER.debug("Returning null principal...");
        return null;
    }
    LOGGER.debug("Returning null principal id...");
    return null;
}
项目:ipack    文件:AttributeCertificateHolder.java   
public AttributeCertificateHolder(X509Certificate cert)
    throws CertificateParsingException
{
    X509Principal name;

    try
    {
        name = PrincipalUtil.getIssuerX509Principal(cert);
    }
    catch (Exception e)
    {
        throw new CertificateParsingException(e.getMessage());
    }

    holder = new Holder(new IssuerSerial(generateGeneralNames(name),
        new ASN1Integer(cert.getSerialNumber())));
}
项目:ipack    文件:X509V1CertificateGenerator.java   
private X509Certificate generateJcaObject(TBSCertificate tbsCert, byte[] signature)
    throws CertificateEncodingException
{
    ASN1EncodableVector v = new ASN1EncodableVector();

    v.add(tbsCert);
    v.add(sigAlgId);
    v.add(new DERBitString(signature));

    try
    {
        return new X509CertificateObject(Certificate.getInstance(new DERSequence(v)));
    }
    catch (CertificateParsingException e)
    {
        throw new ExtCertificateEncodingException("exception producing certificate object", e);
    }
}
项目:ipack    文件:X509V3CertificateGenerator.java   
/**
 * add a given extension field for the standard extensions tag (tag 3)
 * copying the extension value from another certificate.
 * @throws CertificateParsingException if the extension cannot be extracted.
 */
public void copyAndAddExtension(
    String          oid,
    boolean         critical,
    X509Certificate cert) 
    throws CertificateParsingException
{
    byte[] extValue = cert.getExtensionValue(oid);

    if (extValue == null)
    {
        throw new CertificateParsingException("extension " + oid + " not present");
    }

    try
    {
        ASN1Encodable value = X509ExtensionUtil.fromExtensionValue(extValue);

        this.addExtension(oid, critical, value);
    }
    catch (IOException e)
    {
        throw new CertificateParsingException(e.toString());
    }
}
项目:ipack    文件:CertPathValidatorUtilities.java   
protected static void addAdditionalStoresFromAltNames(
    X509Certificate cert,
    ExtendedPKIXParameters pkixParams)
    throws CertificateParsingException
{
    // if in the IssuerAltName extension an URI
    // is given, add an additinal X.509 store
    if (cert.getIssuerAlternativeNames() != null)
    {
        Iterator it = cert.getIssuerAlternativeNames().iterator();
        while (it.hasNext())
        {
            // look for URI
            List list = (List)it.next();
            if (list.get(0).equals(Integers.valueOf(GeneralName.uniformResourceIdentifier)))
            {
                // found
                String temp = (String)list.get(1);
                CertPathValidatorUtilities.addAdditionalStoreFromLocation(temp, pkixParams);
            }
        }
    }
}
项目:ipack    文件:X509CertParser.java   
private Certificate readDERCertificate(
    InputStream in)
    throws IOException, CertificateParsingException
{
    ASN1InputStream dIn = new ASN1InputStream(in);
    ASN1Sequence seq = (ASN1Sequence)dIn.readObject();

    if (seq.size() > 1
            && seq.getObjectAt(0) instanceof DERObjectIdentifier)
    {
        if (seq.getObjectAt(0).equals(PKCSObjectIdentifiers.signedData))
        {
            sData = new SignedData(ASN1Sequence.getInstance(
                            (ASN1TaggedObject)seq.getObjectAt(1), true)).getCertificates();

            return getCertificate();
        }
    }

    return new X509CertificateObject(
                        org.bouncycastle.asn1.x509.Certificate.getInstance(seq));
}
项目:ipack    文件:X509CertParser.java   
private Certificate getCertificate()
    throws CertificateParsingException
{
    if (sData != null)
    {
        while (sDataObjectCount < sData.size())
        {
            Object obj = sData.getObjectAt(sDataObjectCount++);

            if (obj instanceof ASN1Sequence)
            {
               return new X509CertificateObject(
                                org.bouncycastle.asn1.x509.Certificate.getInstance(obj));
            }
        }
    }

    return null;
}
项目:ipack    文件:CertificateFactory.java   
private java.security.cert.Certificate readDERCertificate(
    ASN1InputStream dIn)
    throws IOException, CertificateParsingException
{
    ASN1Sequence seq = (ASN1Sequence)dIn.readObject();

    if (seq.size() > 1
            && seq.getObjectAt(0) instanceof ASN1ObjectIdentifier)
    {
        if (seq.getObjectAt(0).equals(PKCSObjectIdentifiers.signedData))
        {
            sData = SignedData.getInstance(ASN1Sequence.getInstance(
                (ASN1TaggedObject)seq.getObjectAt(1), true)).getCertificates();

            return getCertificate();
        }
    }

    return new X509CertificateObject(
                        Certificate.getInstance(seq));
}
项目:ipack    文件:CertificateFactory.java   
private java.security.cert.Certificate getCertificate()
    throws CertificateParsingException
{
    if (sData != null)
    {
        while (sDataObjectCount < sData.size())
        {
            Object obj = sData.getObjectAt(sDataObjectCount++);

            if (obj instanceof ASN1Sequence)
            {
               return new X509CertificateObject(
                                Certificate.getInstance(obj));
            }
        }
    }

    return null;
}
项目:JCurl    文件:JCurl.java   
/**
 * Process response data and, if applicable, HTTPS information. The {@link org.symphonyoss.symphony.jcurl.JCurl.Response} object returned can be printed
 * out with response.print().
 *
 * @param con a {@link java.net.HttpURLConnection} object.
 * @return a {@link org.symphonyoss.symphony.jcurl.JCurl.Response} object.
 * @throws java.io.IOException if any.
 * @throws java.security.cert.CertificateParsingException if any.
 */
public Response processResponse(HttpURLConnection con) throws IOException, CertificateParsingException {
  Response response = new Response();

  long startTime = System.nanoTime();
  con.connect();
  long endTime = System.nanoTime();

  response.timeTaken = endTime - startTime;

  processResponseHeaders(con, response);
  processResponseCode(con, response);
  processResponseCertificates(con, response);
  processResponseOutput(con, response);
  processResponseTags(response);

  return response;
}
项目:cas-server-4.2.1    文件:X509SubjectAlternativeNameUPNPrincipalResolver.java   
/**
 * Retrieves Subject Alternative Name UPN extension as a principal id String.
 *
 * @param certificate X.509 certificate credential.
 *
 * @return Resolved principal ID or null if no SAN UPN extension is available in provided certificate.
 *
 * @see AbstractX509PrincipalResolver#resolvePrincipalInternal(java.security.cert.X509Certificate)
 * @see java.security.cert.X509Certificate#getSubjectAlternativeNames()
 */
@Override
protected String resolvePrincipalInternal(final X509Certificate certificate) {
    logger.debug("Resolving principal from Subject Alternative Name UPN for {}", certificate);
    try {
        final Collection<List<?>> subjectAltNames = certificate.getSubjectAlternativeNames();
        if (subjectAltNames != null) {
            for (final List<?> sanItem : subjectAltNames) {
                final ASN1Sequence seq = getAltnameSequence(sanItem);
                final String upnString = getUPNStringFromSequence(seq);
                if (upnString != null) {
                    return upnString;
                }
            }
        }
    } catch (final CertificateParsingException e) {
        logger.error("Error is encountered while trying to retrieve subject alternative names collection from certificate", e);
        logger.debug("Returning null principal id...");
        return null;
    }
    logger.debug("Returning null principal id...");
    return null;
}
项目:OpenJSharp    文件:ClientHandshaker.java   
private static Object getSubjectAltName(X509Certificate cert, int type) {
    Collection<List<?>> subjectAltNames;

    try {
        subjectAltNames = cert.getSubjectAlternativeNames();
    } catch (CertificateParsingException cpe) {
        if (debug != null && Debug.isOn("handshake")) {
            System.out.println(
                    "Attempt to obtain subjectAltNames extension failed!");
        }
        return null;
    }

    if (subjectAltNames != null) {
        for (List<?> subjectAltName : subjectAltNames) {
            int subjectAltNameType = (Integer)subjectAltName.get(0);
            if (subjectAltNameType == type) {
                return subjectAltName.get(1);
            }
        }
    }

    return null;
}
项目:revolution-irc    文件:ServerCertificateManager.java   
public static String buildCertAppliesToString(X509Certificate cert) {
    List<String> elements = new ArrayList<>();
    try {
        Collection<List<?>> altNames = cert.getSubjectAlternativeNames();
        if (altNames != null) {
            for (List<?> altName : altNames) {
                Integer altNameType = (Integer) altName.get(0);
                if (altNameType != 2 && altNameType != 7) // dns or ip
                    continue;
                elements.add((String) altName.get(1));
            }
        }
    } catch (CertificateParsingException ignored) {
    }

    if (elements.size() == 0)
        return "none";
    return TextUtils.join(",", elements.toArray());
}
项目:boohee_v5.6    文件:OkHostnameVerifier.java   
private static List<String> getSubjectAltNames(X509Certificate certificate, int type) {
    List<String> result = new ArrayList();
    try {
        Collection<?> subjectAltNames = certificate.getSubjectAlternativeNames();
        if (subjectAltNames == null) {
            return Collections.emptyList();
        }
        Iterator it = subjectAltNames.iterator();
        while (it.hasNext()) {
            List<?> entry = (List) it.next();
            if (entry != null && entry.size() >= 2) {
                Integer altNameType = (Integer) entry.get(0);
                if (altNameType != null && altNameType.intValue() == type) {
                    String altName = (String) entry.get(1);
                    if (altName != null) {
                        result.add(altName);
                    }
                }
            }
        }
        return result;
    } catch (CertificateParsingException e) {
        return Collections.emptyList();
    }
}
项目:nifi-registry    文件:CertificateUtils.java   
/**
 * Returns a list of subject alternative names. Any name that is represented as a String by X509Certificate.getSubjectAlternativeNames() is converted to lowercase and returned.
 *
 * @param certificate a certificate
 * @return a list of subject alternative names; list is never null
 * @throws CertificateParsingException if parsing the certificate failed
 */
public static List<String> getSubjectAlternativeNames(final X509Certificate certificate) throws CertificateParsingException {

    final Collection<List<?>> altNames = certificate.getSubjectAlternativeNames();
    if (altNames == null) {
        return new ArrayList<>();
    }

    final List<String> result = new ArrayList<>();
    for (final List<?> generalName : altNames) {
        /**
         * generalName has the name type as the first element a String or byte array for the second element. We return any general names that are String types.
         *
         * We don't inspect the numeric name type because some certificates incorrectly put IPs and DNS names under the wrong name types.
         */
        final Object value = generalName.get(1);
        if (value instanceof String) {
            result.add(((String) value).toLowerCase());
        }

    }

    return result;
}
项目:messengerxmpp    文件:CryptoHelper.java   
public static Pair<Jid,String> extractJidAndName(X509Certificate certificate) throws CertificateEncodingException, InvalidJidException, CertificateParsingException {
    Collection<List<?>> alternativeNames = certificate.getSubjectAlternativeNames();
    List<String> emails = new ArrayList<>();
    if (alternativeNames != null) {
        for(List<?> san : alternativeNames) {
            Integer type = (Integer) san.get(0);
            if (type == 1) {
                emails.add((String) san.get(1));
            }
        }
    }
    X500Name x500name = new JcaX509CertificateHolder(certificate).getSubject();
    if (emails.size() == 0) {
        emails.add(IETFUtils.valueToString(x500name.getRDNs(BCStyle.EmailAddress)[0].getFirst().getValue()));
    }
    String name = IETFUtils.valueToString(x500name.getRDNs(BCStyle.CN)[0].getFirst().getValue());
    if (emails.size() >= 1) {
        return new Pair<>(Jid.fromString(emails.get(0)), name);
    } else {
        return null;
    }
}
项目:milo    文件:CertificateValidationUtil.java   
public static boolean validateSubjectAltNameField(X509Certificate certificate, int field,
                                                  Predicate<Object> fieldValidator) throws UaException {

    try {
        Collection<List<?>> subjectAltNames = certificate.getSubjectAlternativeNames();
        if (subjectAltNames == null) subjectAltNames = Collections.emptyList();

        for (List<?> idAndValue : subjectAltNames) {
            if (idAndValue != null && idAndValue.size() == 2) {
                if (idAndValue.get(0).equals(field)) {
                    if (fieldValidator.test(idAndValue.get(1))) {
                        return true;
                    }
                }
            }
        }

        return false;
    } catch (CertificateParsingException e) {
        throw new UaException(StatusCodes.Bad_CertificateInvalid, e);
    }
}
项目:milo    文件:CertificateValidationUtil.java   
public static String getSubjectAltNameUri(X509Certificate certificate) throws UaException {
    try {
        Collection<List<?>> subjectAltNames = certificate.getSubjectAlternativeNames();
        if (subjectAltNames == null) subjectAltNames = Collections.emptyList();

        for (List<?> idAndValue : subjectAltNames) {
            if (idAndValue != null && idAndValue.size() == 2) {
                if (idAndValue.get(0).equals(SUBJECT_ALT_NAME_URI)) {
                    Object uri = idAndValue.get(1);
                    return uri != null ? uri.toString() : null;
                }
            }
        }

        return null;
    } catch (CertificateParsingException e) {
        throw new UaException(StatusCodes.Bad_CertificateInvalid, e);
    }
}
项目:milo    文件:CertificateUtil.java   
/**
 * Extract the value of a given SubjectAltName field from a {@link X509Certificate}.
 *
 * @param certificate the certificate.
 * @param field       the field number.
 * @return an {@link Optional} containing the value in the field.
 * @see #SUBJECT_ALT_NAME_IP_ADDRESS
 * @see #SUBJECT_ALT_NAME_DNS_NAME
 * @see #SUBJECT_ALT_NAME_URI
 */
public static Optional<Object> getSubjectAltNameField(X509Certificate certificate, int field) {
    try {
        Collection<List<?>> subjectAltNames = certificate.getSubjectAlternativeNames();
        if (subjectAltNames == null) subjectAltNames = Collections.emptyList();

        for (List<?> idAndValue : subjectAltNames) {
            if (idAndValue != null && idAndValue.size() == 2) {
                if (idAndValue.get(0).equals(field)) {
                    return Optional.ofNullable(idAndValue.get(1));
                }
            }
        }

        return Optional.empty();
    } catch (CertificateParsingException e) {
        return Optional.empty();
    }
}
项目:cas4.1.9    文件:X509SubjectAlternativeNameUPNPrincipalResolver.java   
/**
 * Retrieves Subject Alternative Name UPN extension as a principal id String.
 *
 * @param certificate X.509 certificate credential.
 *
 * @return Resolved principal ID or null if no SAN UPN extension is available in provided certificate.
 *
 * @see AbstractX509PrincipalResolver#resolvePrincipalInternal(java.security.cert.X509Certificate)
 * @see java.security.cert.X509Certificate#getSubjectAlternativeNames()
 */
@Override
protected String resolvePrincipalInternal(final X509Certificate certificate) {
    logger.debug("Resolving principal from Subject Alternative Name UPN for {}", certificate);
    try {
        final Collection<List<?>> subjectAltNames = certificate.getSubjectAlternativeNames();
        if (subjectAltNames != null) {
            for (final List<?> sanItem : subjectAltNames) {
                final ASN1Sequence seq = getAltnameSequence(sanItem);
                final String upnString = getUPNStringFromSequence(seq);
                if (upnString != null) {
                    return upnString;
                }
            }
        }
    } catch (final CertificateParsingException e) {
        logger.error("Error is encountered while trying to retrieve subject alternative names collection from certificate", e);
        logger.debug("Returning null principal id...");
        return null;
    }
    logger.debug("Returning null principal id...");
    return null;
}
项目:Aki-SSL    文件:CertPathValidatorUtilities.java   
protected static void addAdditionalStoresFromAltNames(
    X509Certificate cert,
    ExtendedPKIXParameters pkixParams)
    throws CertificateParsingException
{
    // if in the IssuerAltName extension an URI
    // is given, add an additional X.509 store
    if (cert.getIssuerAlternativeNames() != null)
    {
        Iterator it = cert.getIssuerAlternativeNames().iterator();
        while (it.hasNext())
        {
            // look for URI
            List list = (List)it.next();
            if (list.get(0).equals(Integers.valueOf(GeneralName.uniformResourceIdentifier)))
            {
                // found
                String temp = (String)list.get(1);
                CertPathValidatorUtilities.addAdditionalStoreFromLocation(temp, pkixParams);
            }
        }
    }
}
项目:Aki-SSL    文件:AttributeCertificateHolder.java   
public AttributeCertificateHolder(X509Certificate cert)
    throws CertificateParsingException
{
    X509Principal name;

    try
    {
        name = PrincipalUtil.getIssuerX509Principal(cert);
    }
    catch (Exception e)
    {
        throw new CertificateParsingException(e.getMessage());
    }

    holder = new Holder(new IssuerSerial(generateGeneralNames(name),
        new ASN1Integer(cert.getSerialNumber())));
}
项目:Aki-SSL    文件:X509V1CertificateGenerator.java   
private X509Certificate generateJcaObject(TBSCertificate tbsCert, byte[] signature)
    throws CertificateEncodingException
{
    ASN1EncodableVector v = new ASN1EncodableVector();

    v.add(tbsCert);
    v.add(sigAlgId);
    v.add(new DERBitString(signature));

    try
    {
        return new X509CertificateObject(Certificate.getInstance(new DERSequence(v)));
    }
    catch (CertificateParsingException e)
    {
        throw new ExtCertificateEncodingException("exception producing certificate object", e);
    }
}
项目:Aki-SSL    文件:X509V3CertificateGenerator.java   
/**
 * add a given extension field for the standard extensions tag (tag 3)
 * copying the extension value from another certificate.
 * @throws CertificateParsingException if the extension cannot be extracted.
 */
public void copyAndAddExtension(
    String          oid,
    boolean         critical,
    X509Certificate cert) 
    throws CertificateParsingException
{
    byte[] extValue = cert.getExtensionValue(oid);

    if (extValue == null)
    {
        throw new CertificateParsingException("extension " + oid + " not present");
    }

    try
    {
        ASN1Encodable value = X509ExtensionUtil.fromExtensionValue(extValue);

        this.addExtension(oid, critical, value);
    }
    catch (IOException e)
    {
        throw new CertificateParsingException(e.toString());
    }
}
项目:Aki-SSL    文件:X509CertParser.java   
private Certificate readDERCertificate(
    InputStream in)
    throws IOException, CertificateParsingException
{
    ASN1InputStream dIn = new ASN1InputStream(in);
    ASN1Sequence seq = (ASN1Sequence)dIn.readObject();

    if (seq.size() > 1
            && seq.getObjectAt(0) instanceof ASN1ObjectIdentifier)
    {
        if (seq.getObjectAt(0).equals(PKCSObjectIdentifiers.signedData))
        {
            sData = new SignedData(ASN1Sequence.getInstance(
                            (ASN1TaggedObject)seq.getObjectAt(1), true)).getCertificates();

            return getCertificate();
        }
    }

    return new X509CertificateObject(
                        org.bouncycastle.asn1.x509.Certificate.getInstance(seq));
}
项目:Aki-SSL    文件:X509CertParser.java   
private Certificate getCertificate()
    throws CertificateParsingException
{
    if (sData != null)
    {
        while (sDataObjectCount < sData.size())
        {
            Object obj = sData.getObjectAt(sDataObjectCount++);

            if (obj instanceof ASN1Sequence)
            {
               return new X509CertificateObject(
                                org.bouncycastle.asn1.x509.Certificate.getInstance(obj));
            }
        }
    }

    return null;
}
项目:Aki-SSL    文件:CertificateFactory.java   
private java.security.cert.Certificate readDERCertificate(
    ASN1InputStream dIn)
    throws IOException, CertificateParsingException
{
    ASN1Sequence seq = (ASN1Sequence)dIn.readObject();

    if (seq.size() > 1
            && seq.getObjectAt(0) instanceof ASN1ObjectIdentifier)
    {
        if (seq.getObjectAt(0).equals(PKCSObjectIdentifiers.signedData))
        {
            sData = SignedData.getInstance(ASN1Sequence.getInstance(
                (ASN1TaggedObject)seq.getObjectAt(1), true)).getCertificates();

            return getCertificate();
        }
    }

    return new X509CertificateObject(bcHelper,
                        Certificate.getInstance(seq));
}
项目:Aki-SSL    文件:CertificateFactory.java   
private java.security.cert.Certificate getCertificate()
    throws CertificateParsingException
{
    if (sData != null)
    {
        while (sDataObjectCount < sData.size())
        {
            Object obj = sData.getObjectAt(sDataObjectCount++);

            if (obj instanceof ASN1Sequence)
            {
               return new X509CertificateObject(bcHelper,
                                Certificate.getInstance(obj));
            }
        }
    }

    return null;
}
项目:javify    文件:X509Certificate.java   
public Collection<List<?>> getSubjectAlternativeNames()
  throws CertificateParsingException
{
  Extension e = getExtension(SubjectAlternativeNames.ID);
  if (e != null)
    {
      List<GeneralName> names
        = ((SubjectAlternativeNames) e.getValue()).getNames();
      List<List<?>> list = new ArrayList<List<?>>(names.size());
      for (GeneralName name : names)
        {
          List<Object> n = new ArrayList<Object>(2);
          n.add(name.kind().tag());
          n.add(name.name());
          list.add(n);
        }
      return list;
    }
  return null;
}
项目:javify    文件:X509Certificate.java   
public Collection<List<?>> getIssuerAlternativeNames()
  throws CertificateParsingException
{
  Extension e = getExtension(IssuerAlternativeNames.ID);
  if (e != null)
    {
      List<GeneralName> names
        = ((IssuerAlternativeNames) e.getValue()).getNames();
      List<List<?>> list = new ArrayList<List<?>>(names.size());
      for (GeneralName name : names)
        {
          List<Object> n = new ArrayList<Object>(2);
          n.add(name.kind().tag());
          n.add(name.name());
          list.add(n);
        }
      return list;
    }
  return null;
}
项目:nomad-java-sdk    文件:NomadHostnameVerifier.java   
private boolean hasNomadAgentAltName(final SSLSession session) {
    try {
        final X509Certificate certificate = (X509Certificate) session.getPeerCertificates()[0];
        final Collection<List<?>> entries = certificate.getSubjectAlternativeNames();
        if (entries == null) {
            return false;
        }
        for (List<?> entry : entries) {
            if (entry.size() >= 2 && (Integer) entry.get(0) == 2) {
                final String name = (String) entry.get(1);
                if (NOMAD_ALT_NAME_PATTERN.matcher(name).matches()) {
                    return true;
                }
            }
        }
    } catch (final SSLException | CertificateParsingException ignored) {
    }
    return false;
}
项目:purecloud-iot    文件:DefaultHostnameVerifier.java   
static List<String> extractSubjectAlts(final X509Certificate cert, final int subjectType) {
    Collection<List<?>> c = null;
    try {
        c = cert.getSubjectAlternativeNames();
    } catch(final CertificateParsingException ignore) {
    }
    List<String> subjectAltList = null;
    if (c != null) {
        for (final List<?> aC : c) {
            final List<?> list = aC;
            final int type = ((Integer) list.get(0)).intValue();
            if (type == subjectType) {
                final String s = (String) list.get(1);
                if (subjectAltList == null) {
                    subjectAltList = new ArrayList<String>();
                }
                subjectAltList.add(s);
            }
        }
    }
    return subjectAltList;
}
项目:Lucee    文件:AbsDefaultHostnameVerifier.java   
static List<String> extractSubjectAlts(final X509Certificate cert, final int subjectType) {
    Collection<List<?>> c = null;
    try {
        c = cert.getSubjectAlternativeNames();
    } catch(final CertificateParsingException ignore) {
    }
    List<String> subjectAltList = null;
    if (c != null) {
        for (final List<?> aC : c) {
            final List<?> list = aC;
            final int type = ((Integer) list.get(0)).intValue();
            if (type == subjectType) {
                final String s = (String) list.get(1);
                if (subjectAltList == null) {
                    subjectAltList = new ArrayList<String>();
                }
                subjectAltList.add(s);
            }
        }
    }
    return subjectAltList;
}
项目:OpenUnison    文件:X509ExtensionParsingUtil.java   
/**
 * Extract a {@link ASN1OctetString} that represents the value of a given extension
 *
 * @param cert is X509 certificate out of which an extension should be extracted
 * @param Oid is the Object IDentifier for the extension
 * @return a {@link ASN1OctetString} that represents an extension or {@code null} if no such
 * extension is found.
 * @throws CertificateParsingException if a parsing error occurs
 */
public static ASN1OctetString extractExtensionValue(X509Certificate cert, String Oid)
    throws CertificateParsingException {
  byte[] extensionValue = cert.getExtensionValue(Oid);

  if (extensionValue == null || extensionValue.length == 0) {
    // Did not find extension
    return null;
  }

  ASN1Object asn1Object = getAsn1Object(extensionValue);
  if (asn1Object == null || !(asn1Object instanceof ASN1OctetString)) {
    throw new CertificateParsingException("Expected ASN1OctetString.");
  }

  return (ASN1OctetString) asn1Object;
}
项目:OpenUnison    文件:AndroidKeyStoreAttestation.java   
private static ASN1Sequence getKeyDescriptionSequence(ASN1OctetString octet)
    throws CertificateParsingException {
  // Read out the Sequence
  ASN1Object asn1Object = X509ExtensionParsingUtil.getAsn1Object(octet.getOctets());
  if (asn1Object == null || !(asn1Object instanceof ASN1Sequence)) {
    throw new CertificateParsingException("Expected KeyDescription Sequence.");
  }
  ASN1Sequence sequence = (ASN1Sequence) asn1Object;

  if (sequence.size() != DESCRIPTION_LENGTH) {
    throw new CertificateParsingException("KeyDescription Sequence has " + sequence.size()
        + " elements.  Expected " + DESCRIPTION_LENGTH + " elements ");
  }

  return sequence;
}
项目:OpenUnison    文件:AndroidKeyStoreAttestation.java   
private static <T> List<T> getListFromTaggedObjectSet(
    HashMap<Integer, ASN1Primitive> taggedObjects, int tag, Class<T> type)
    throws CertificateParsingException {
  ASN1Primitive asn1Primitive = taggedObjects.get(tag);
  if (asn1Primitive == null) {
    // No tagged object mode found
    return null;
  }

  if (!(asn1Primitive instanceof ASN1Set)) {
    throw new CertificateParsingException("Expected ASN1Set");
  }

  ASN1Set set = (ASN1Set) asn1Primitive;
  List<T> list = new ArrayList<T>();
  for (ASN1Encodable asn1Encodable : set.toArray()) {
    list.add(buildTypeFromInt(X509ExtensionParsingUtil.getInt(asn1Encodable), type));
  }

  return list;
}
项目:SAMLRaider    文件:BurpCertificate.java   
public List<String> getSubjectAlternativeNames() {
    List<String> subjectAlternativeNames = new LinkedList<String>();

    try {
        if (certificate.getSubjectAlternativeNames() == null) {
            return subjectAlternativeNames;
        }

        for (List<?> i : certificate.getSubjectAlternativeNames()) {
            subjectAlternativeNames.add(i.get(1) + " (" + ObjectIdentifier.getSubjectAlternativeNames((Integer) i.get(0)) + ")");
        }
    } catch (CertificateParsingException e) {
        e.printStackTrace();
    }

    return subjectAlternativeNames;
}
项目:SAMLRaider    文件:BurpCertificate.java   
public List<String> getIssuerAlternativeNames() {
    List<String> issuerAlternativeNames = new LinkedList<String>();

    try {
        if (certificate.getIssuerAlternativeNames() == null) {
            return issuerAlternativeNames;
        }

        for (List<?> i : certificate.getIssuerAlternativeNames()) {
            issuerAlternativeNames.add(i.get(1) + " (" + ObjectIdentifier.getSubjectAlternativeNames((Integer) i.get(0)) + ")");
        }
    } catch (CertificateParsingException e) {
        e.printStackTrace();
    }

    return issuerAlternativeNames;
}