Example usage for org.bouncycastle.asn1 ASN1TaggedObject getInstance

List of usage examples for org.bouncycastle.asn1 ASN1TaggedObject getInstance

Introduction

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

Prototype

static public ASN1TaggedObject getInstance(Object obj) 

Source Link

Usage

From source file:com.guardtime.asn1.CertToken.java

License:Apache License

public Asn1CertToken(ASN1Sequence seq) {
    Enumeration en = seq.getObjects();

    // Required elements
    version = ASN1Integer.getInstance(en.nextElement());
    history = ASN1OctetString.getInstance(en.nextElement());
    publishedData = Asn1PublishedData.getInstance(en.nextElement());
    pubReference = ASN1Set.getInstance(en.nextElement());

    // Optional elements
    while (en.hasMoreElements()) {
        ASN1TaggedObject obj = ASN1TaggedObject.getInstance(en.nextElement());
        if (obj.getTagNo() == 0 && extensions == null) {
            extensions = Extensions.getInstance(obj, true);
        } else {/*  ww  w.j  ava  2  s. com*/
            throw new IllegalArgumentException("invalid object in factory: " + obj);
        }
    }
}

From source file:com.guardtime.asn1.CertTokenRequest.java

License:Apache License

public Asn1CertTokenRequest(ASN1Sequence seq) {
    Enumeration en = seq.getObjects();

    // Required elements
    version = ASN1Integer.getInstance(en.nextElement());
    historyIdentifier = ASN1Integer.getInstance(en.nextElement());

    // Optional elements
    while (en.hasMoreElements()) {
        ASN1TaggedObject obj = ASN1TaggedObject.getInstance(en.nextElement());
        if (obj.getTagNo() == 0 && extensions == null) {
            extensions = Extensions.getInstance(obj, true);
        } else {/*from   w  ww  .  j  a  v  a  2  s  .  c o m*/
            throw new IllegalArgumentException("invalid object in factory: " + obj);
        }
    }
}

From source file:com.guardtime.asn1.CertTokenResponse.java

License:Apache License

public Asn1CertTokenResponse(ASN1Sequence seq) {
    Enumeration en = seq.getObjects();

    // Required elements
    status = PKIStatusInfo.getInstance(en.nextElement());

    // Optional elements
    while (en.hasMoreElements()) {
        ASN1TaggedObject obj = ASN1TaggedObject.getInstance(en.nextElement());
        if (obj.getTagNo() == 0 && certToken == null) {
            certToken = Asn1CertToken.getInstance(obj, false);
        } else {/*from w ww .  j a va 2  s .c o m*/
            throw new IllegalArgumentException("invalid object in factory: " + obj);
        }
    }
}

From source file:com.guardtime.asn1.SignatureInfo.java

License:Apache License

public Asn1SignatureInfo(ASN1Sequence seq) {
    Enumeration en = seq.getObjects();

    // Required elements
    signatureAlgorithm = AlgorithmIdentifier.getInstance(en.nextElement());
    signatureValue = ASN1OctetString.getInstance(en.nextElement());

    // Optional elements
    while (en.hasMoreElements()) {
        ASN1TaggedObject obj = ASN1TaggedObject.getInstance(en.nextElement());
        if (obj.getTagNo() == 0 && pkiReferences == null) {
            pkiReferences = ASN1Set.getInstance(obj, false);
        } else {/*from   w  ww  .  j  av a2s  .c  o  m*/
            throw new IllegalArgumentException("invalid object in factory: " + obj);
        }
    }
}

From source file:com.guardtime.asn1.TimeSignature.java

License:Apache License

public Asn1TimeSignature(ASN1Sequence seq) {
    Enumeration en = seq.getObjects();

    // Required elements
    location = ASN1OctetString.getInstance(en.nextElement());
    history = ASN1OctetString.getInstance(en.nextElement());
    publishedData = Asn1PublishedData.getInstance(en.nextElement());

    // Optional elements
    while (en.hasMoreElements()) {
        ASN1TaggedObject obj = ASN1TaggedObject.getInstance(en.nextElement());
        int tag = obj.getTagNo();
        if (tag == 0 && pkSignature == null) {
            pkSignature = Asn1SignatureInfo.getInstance(obj, false);
        } else if (tag == 1 && pubReferences == null) {
            pubReferences = ASN1Set.getInstance(obj, false);
        } else {/* ww  w.  j  a  va2 s. c o m*/
            throw new IllegalArgumentException("invalid object in factory: " + obj);
        }
    }
}

From source file:com.zimbra.cs.service.authenticator.CertUtil.java

License:Open Source License

String getSubjectAltNameOtherNameUPN() {
    Collection<List<?>> generalNames = null;
    try {/*  w  w w . j a v  a2  s  .c o  m*/
        generalNames = cert.getSubjectAlternativeNames();
    } catch (CertificateParsingException e) {
        ZimbraLog.account.warn(LOG_PREFIX + "unable to get subject alternative names", e);
    }

    if (generalNames == null) {
        return null;
    }

    ASN1InputStream decoder = null;
    try {
        // Check that the certificate includes the SubjectAltName extension
        for (List<?> generalName : generalNames) {
            Integer tag = (Integer) generalName.get(0);
            if (GeneralName.otherName == tag.intValue()) {
                // Value is encoded using ASN.1
                decoder = new ASN1InputStream((byte[]) generalName.toArray()[1]);
                DEREncodable encoded = decoder.readObject();
                DERSequence derSeq = (DERSequence) encoded;

                DERObjectIdentifier typeId = DERObjectIdentifier.getInstance(derSeq.getObjectAt(0));
                String oid = typeId.getId();

                String value = null;
                ASN1TaggedObject otherNameValue = ASN1TaggedObject.getInstance(derSeq.getObjectAt(1));
                if (OID_UPN.equals(oid)) {
                    ASN1TaggedObject upnValue = ASN1TaggedObject.getInstance(otherNameValue.getObject());
                    DERUTF8String str = DERUTF8String.getInstance(upnValue.getObject());
                    value = str.getString();
                    return value;
                }
            }
        }
    } catch (IOException e) {
        ZimbraLog.account.warn(LOG_PREFIX + "unable to process ASN.1 data", e);
    } finally {
        ByteUtil.closeStream(decoder);
    }

    return null;
}

From source file:com.zimbra.cs.service.authenticator.CertUtil.java

License:Open Source License

private void printSubjectAlternativeNames(PrintStream outStream) throws Exception {

    final String UPN_DISPLAY = "Principal Name";
    final String RFC822NAME_DISPLAY = "RFC822 Name";
    final String DNSNAME_DISPLAY = "DNS Name";

    outStream.format("X509v3 Subject Alternative Name: \n");

    ASN1InputStream decoder = null;
    try {/*from w ww .ja  v a 2 s .  co m*/
        Collection<List<?>> generalNames = cert.getSubjectAlternativeNames();
        // Check that the certificate includes the SubjectAltName extension
        if (generalNames == null) {
            return;
        }

        /*
           OtherName ::= SEQUENCE {
          type-id    OBJECT IDENTIFIER,
          value      [0] EXPLICIT ANY DEFINED BY type-id }
         */

        for (List<?> generalName : generalNames) {
            Integer tag = (Integer) generalName.get(0);
            if (GeneralName.otherName == tag.intValue()) {
                // Value is encoded using ASN.1
                decoder = new ASN1InputStream((byte[]) generalName.toArray()[1]);
                DEREncodable encoded = decoder.readObject();
                DERSequence derSeq = (DERSequence) encoded;

                DERObjectIdentifier typeId = DERObjectIdentifier.getInstance(derSeq.getObjectAt(0));
                String oid = typeId.getId();

                String value = null;
                ASN1TaggedObject otherNameValue = ASN1TaggedObject.getInstance(derSeq.getObjectAt(1));
                if (OID_UPN.equals(oid)) {
                    ASN1TaggedObject upnValue = ASN1TaggedObject.getInstance(otherNameValue.getObject());
                    DERUTF8String str = DERUTF8String.getInstance(upnValue.getObject());
                    value = str.getString();
                }

                outStream.format("    [%d] %s(%s) = %s\n", tag, oid, UPN_DISPLAY, value);
            } else if (GeneralName.rfc822Name == tag.intValue()) {
                String value = (String) generalName.get(1);
                outStream.format("    [%d] %s = %s\n", tag, RFC822NAME_DISPLAY, value);
            } else if (GeneralName.dNSName == tag.intValue()) {
                String value = (String) generalName.get(1);
                outStream.format("    [%d] %s = %s\n", tag, DNSNAME_DISPLAY, value);
            } else {
                outStream.format("    [%d] - not yet supported\n", tag);
            }

        }
    } catch (CertificateParsingException e) {
        e.printStackTrace();
    } finally {
        ByteUtil.closeStream(decoder);
    }
}

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

License:Open Source License

private PolicyConstraints(ASN1Sequence seq) {
    if (seq.size() > 2) {
        throw new IllegalArgumentException("sequence length > 2");
    }// w w w  .  ja  v a 2s  . c  o  m

    for (int i = 0; i < seq.size(); i++) {
        ASN1TaggedObject taggedObj = ASN1TaggedObject.getInstance(seq.getObjectAt(i));
        switch (taggedObj.getTagNo()) {
        case 0:
            requireExplicitPolicy = ASN1Integer.getInstance(taggedObj.getObject()).getValue().intValue();
            break;
        case 1:
            inhibitPolicyMapping = ASN1Integer.getInstance(taggedObj.getObject()).getValue().intValue();
            break;
        default:
            throw new IllegalArgumentException("wrong tag number");
        }
    }
}

From source file:org.cesecore.util.CertTools.java

License:Open Source License

/**
 * Helper method for the above method/*from   w w  w. j a  v  a2 s. c  o  m*/
 * 
 * @param seq the OtherName sequence
 */
private static String getUPNStringFromSequence(ASN1Sequence seq) {
    if (seq != null) {
        // First in sequence is the object identifier, that we must check
        ASN1ObjectIdentifier id = ASN1ObjectIdentifier.getInstance(seq.getObjectAt(0));
        if (id.getId().equals(CertTools.UPN_OBJECTID)) {
            ASN1TaggedObject oobj = (ASN1TaggedObject) seq.getObjectAt(1);
            // Due to bug in java cert.getSubjectAltName regarding OtherName, it can be tagged an extra time...
            ASN1Primitive obj = oobj.getObject();
            if (obj instanceof ASN1TaggedObject) {
                obj = ASN1TaggedObject.getInstance(obj).getObject();
            }
            DERUTF8String str = DERUTF8String.getInstance(obj);
            return str.getString();
        }
    }
    return null;
}

From source file:org.cesecore.util.CertTools.java

License:Open Source License

/**
 * (This method intentionally has package level visibility to be able to be invoked from JUnit tests.)
 * @param seq/*  ww w  . j  a va2 s  . c  o  m*/
 * @return The extension values encoded as an permanentIdentifierString
 */
static String getPermanentIdentifierStringFromSequence(ASN1Sequence seq) {
    if (seq != null) {
        // First in sequence is the object identifier, that we must check
        ASN1ObjectIdentifier id = ASN1ObjectIdentifier.getInstance(seq.getObjectAt(0));
        if (id.getId().equals(CertTools.PERMANENTIDENTIFIER_OBJECTID)) {
            String identifierValue = null;
            String assigner = null;

            // Get the PermanentIdentifier sequence
            ASN1TaggedObject oobj = (ASN1TaggedObject) seq.getObjectAt(1);
            // Due to bug in java cert.getSubjectAltName regarding OtherName, it can be tagged an extra time...
            ASN1Primitive obj = oobj.getObject();
            if (obj instanceof ASN1TaggedObject) {
                obj = ASN1TaggedObject.getInstance(obj).getObject();
            }
            ASN1Sequence piSeq = ASN1Sequence.getInstance(obj);

            Enumeration<?> e = piSeq.getObjects();
            if (e.hasMoreElements()) {
                Object element = e.nextElement();
                if (element instanceof DERUTF8String) {
                    identifierValue = ((DERUTF8String) element).getString();
                    if (e.hasMoreElements()) {
                        element = e.nextElement();
                    }
                }
                if (element instanceof ASN1ObjectIdentifier) {
                    assigner = ((ASN1ObjectIdentifier) element).getId();
                }
            }

            StringBuilder buff = new StringBuilder();
            if (identifierValue != null) {
                buff.append(escapePermanentIdentifierValue(identifierValue));
            }
            buff.append(PERMANENTIDENTIFIER_SEP);
            if (assigner != null) {
                buff.append(assigner);
            }
            return buff.toString();
        }
    }
    return null;
}