Example usage for org.bouncycastle.asn1 DERSequence getObjectAt

List of usage examples for org.bouncycastle.asn1 DERSequence getObjectAt

Introduction

In this page you can find the example usage for org.bouncycastle.asn1 DERSequence getObjectAt.

Prototype

public ASN1Encodable getObjectAt(int index) 

Source Link

Document

Return the object at the sequence position indicated by index.

Usage

From source file:be.fedict.eid.pkira.crypto.certificate.CertificateInfo.java

License:Open Source License

public List<String> getAlternativeNames() throws CryptoException {
    try {/*from   w  w w.  j a  va  2  s.co  m*/
        List<String> result = new ArrayList<String>();

        byte[] extensionBytes = certificate.getExtensionValue(X509Extension.subjectAlternativeName.getId());
        ASN1OctetString octs = (ASN1OctetString) ASN1Object.fromByteArray(extensionBytes);
        DERSequence extension = (DERSequence) ASN1Object.fromByteArray(octs.getOctets());

        for (int i = 0; i < extension.size(); i++) {
            GeneralName name = GeneralName.getInstance(extension.getObjectAt(i));
            if (name.getTagNo() == GeneralName.dNSName) {
                result.add(name.getName().toString());
            }
        }

        return result;
    } catch (IOException e) {
        throw new CryptoException("Could not extract SAN value.", e);
    }
}

From source file:bluecrystal.bcdeps.helper.DerEncoder.java

License:Open Source License

public static String extractHashId(byte[] sign) throws Exception {
    String ret = null;// w w  w  .ja  v a 2  s. c  o m
    ASN1InputStream is = new ASN1InputStream(new ByteArrayInputStream(sign));
    ASN1Primitive topLevel = is.readObject();
    LOG.debug("top level:" + topLevel.getClass().getName());

    if (topLevel instanceof org.bouncycastle.asn1.DLSequence) {
        DLSequence topLevelDLS = (DLSequence) topLevel;
        if (topLevelDLS.size() == 2) {
            ASN1Encodable level1 = topLevelDLS.getObjectAt(1);
            LOG.debug("level1:" + level1.getClass().getName());
            if (level1 instanceof org.bouncycastle.asn1.DERTaggedObject) {
                DERTaggedObject level1TO = (DERTaggedObject) level1;
                ASN1Primitive level2 = level1TO.getObject();
                LOG.debug("level2:" + level2.getClass().getName());
                if (level2 instanceof org.bouncycastle.asn1.DERSequence) {
                    DERSequence level2DS = (DERSequence) level2;
                    LOG.debug("level2 len:" + level2DS.size());

                    ASN1Encodable level3_1 = level2DS.getObjectAt(1);
                    LOG.debug("level3_1:" + level3_1.getClass().getName());

                    if (level3_1 instanceof org.bouncycastle.asn1.DERSet) {
                        DERSet level3_1Set = (DERSet) level3_1;
                        ASN1Encodable level4_1 = level3_1Set.getObjectAt(0);
                        LOG.debug("level4_1:" + level4_1.getClass().getName());

                        if (level4_1 instanceof org.bouncycastle.asn1.DERSequence) {
                            DERSequence level4_1Seq = (DERSequence) level4_1;
                            ASN1Encodable level5_0 = level4_1Seq.getObjectAt(0);

                            LOG.debug("level5_0:" + level5_0.getClass().getName());

                            if (level5_0 instanceof org.bouncycastle.asn1.ASN1ObjectIdentifier) {
                                ASN1ObjectIdentifier level5_0Seq = (ASN1ObjectIdentifier) level5_0;
                                LOG.debug(level5_0Seq.toString());
                                ret = level5_0Seq.toString();

                            } else {
                                throw new Exception("DER enconding error");
                            }

                        } else {
                            throw new Exception("DER enconding error");
                        }

                    } else {
                        throw new Exception("DER enconding error");
                    }
                } else {
                    throw new Exception("DER enconding error");
                }

            } else {
                throw new Exception("DER enconding error");
            }
        } else {
            throw new Exception("DER enconding error");
        }

    } else {
        throw new Exception("DER enconding error");
    }

    return ret;
}

From source file:bluecrystal.bcdeps.helper.DerEncoder.java

License:Open Source License

public static byte[] extractSignature(byte[] sign) throws Exception {
    byte[] ret = null;
    ASN1InputStream is = new ASN1InputStream(new ByteArrayInputStream(sign));
    ASN1Primitive topLevel = is.readObject();
    LOG.debug("top level:" + topLevel.getClass().getName());

    if (topLevel instanceof org.bouncycastle.asn1.DLSequence) {
        DLSequence topLevelDLS = (DLSequence) topLevel;
        if (topLevelDLS.size() == 2) {
            ASN1Encodable level1 = topLevelDLS.getObjectAt(1);
            LOG.debug("level1:" + level1.getClass().getName());
            if (level1 instanceof org.bouncycastle.asn1.DERTaggedObject) {
                DERTaggedObject level1TO = (DERTaggedObject) level1;
                ASN1Primitive level2 = level1TO.getObject();
                LOG.debug("level2:" + level2.getClass().getName());
                if (level2 instanceof org.bouncycastle.asn1.DERSequence) {
                    DERSequence level2DS = (DERSequence) level2;
                    LOG.debug("level2 len:" + level2DS.size());
                    ASN1Encodable level3_4 = level2DS.getObjectAt(level2DS.size() - 1);
                    LOG.debug("level3_4:" + level3_4.getClass().getName());
                    if (level3_4 instanceof org.bouncycastle.asn1.DERSet) {
                        DERSet level3_4DS = (DERSet) level3_4;
                        ASN1Encodable level3_4_0 = level3_4DS.getObjectAt(0);
                        LOG.debug("level3_4_0:" + level3_4_0.getClass().getName());
                        if (level3_4_0 instanceof org.bouncycastle.asn1.DERSequence) {
                            DERSequence level3_4_0DS = (DERSequence) level3_4_0;
                            LOG.debug("level3_4_0DS len:" + level3_4_0DS.size());
                            ASN1Encodable signature = level3_4_0DS.getObjectAt(level3_4_0DS.size() - 1);
                            LOG.debug("signature:" + signature.getClass().getName());
                            if (signature instanceof org.bouncycastle.asn1.DEROctetString) {
                                DEROctetString signDOS = (DEROctetString) signature;
                                ret = signDOS.getOctets();
                            }/*w  ww. j a v a 2s .com*/
                        } else {
                            throw new Exception("DER enconding error");
                        }

                    } else {
                        throw new Exception("DER enconding error");
                    }
                } else {
                    throw new Exception("DER enconding error");
                }

            } else {
                throw new Exception("DER enconding error");
            }
        } else {
            throw new Exception("DER enconding error");
        }

    } else {
        throw new Exception("DER enconding error");
    }

    return ret;
}

From source file:bluecrystal.bcdeps.helper.DerEncoder.java

License:Open Source License

public static List<byte[]> extractCertArray(DERSequence certTree) {
    List<byte[]> ret = new ArrayList<byte[]>();

    ASN1Encodable level0 = getAt(certTree, 3);
    if (level0 instanceof DERTaggedObject) {
        DERTaggedObject level0Tag = (DERTaggedObject) level0;
        ASN1Encodable level0Obj = level0Tag.getObject();
        if (level0Obj instanceof DERSequence) {
            try {
                DERSequence level0Seq = (DERSequence) level0Obj;
                if (level0Seq.getObjectAt(2) instanceof DERBitString) {
                    // achei o certificado
                    byte[] b = level0Seq.getEncoded();
                    ret.add(b);//from  www. j  av  a2 s .co  m
                } else {
                    for (int i = 0; i < level0Seq.size(); i++) {

                        ASN1Encodable objNdx = level0Seq.getObjectAt(i);
                        if (objNdx instanceof DERSequence) {
                            try {
                                DERSequence objNdx2 = (DERSequence) objNdx;
                                byte[] b = objNdx2.getEncoded();
                                ret.add(b);
                            } catch (IOException e) {
                                LOG.error("DER decoding error", e);
                            }
                        }
                    }

                }
            } catch (IOException e) {
                LOG.error("DER decoding error", e);
            }
        } else if (level0Obj instanceof ASN1Sequence) {
            ASN1Sequence level0Seq = (ASN1Sequence) level0Obj;

            for (int i = 0; i < level0Seq.size(); i++) {

                ASN1Encodable objNdx = level0Seq.getObjectAt(i);
                if (objNdx instanceof DERSequence) {
                    try {
                        DERSequence objNdx2 = (DERSequence) objNdx;
                        byte[] b = objNdx2.getEncoded();
                        ret.add(b);
                    } catch (IOException e) {
                        LOG.error("DER decoding error", e);
                    }
                }
            }
        }
    }
    return ret;
}

From source file:bluecrystal.bcdeps.helper.DerEncoder.java

License:Open Source License

public static DERTaggedObject extractSignedAttributes(DERSequence level2DS) throws Exception {
    DERTaggedObject ret = null;//from w  w  w  . j ava2s  .c  o m

    ASN1Encodable level3_4 = level2DS.getObjectAt(level2DS.size() - 1);
    LOG.debug("level3_4:" + level3_4.getClass().getName());
    if (level3_4 instanceof org.bouncycastle.asn1.DERSet) {
        DERSet level3_4DS = (DERSet) level3_4;
        ASN1Encodable level3_4_0 = level3_4DS.getObjectAt(0);
        LOG.debug("level3_4_0:" + level3_4_0.getClass().getName());
        if (level3_4_0 instanceof org.bouncycastle.asn1.DERSequence) {
            DERSequence level3_4_0DS = (DERSequence) level3_4_0;
            LOG.debug("level3_4_0DS len:" + level3_4_0DS.size());
            ASN1Encodable signedAttribs = level3_4_0DS.getObjectAt(3);
            LOG.debug("signature:" + signedAttribs.getClass().getName());
            if (signedAttribs instanceof org.bouncycastle.asn1.DERTaggedObject) {
                DERTaggedObject signedAttribsDTO = (DERTaggedObject) signedAttribs;
                ret = signedAttribsDTO;

                // trata busca da Policy OID
            } else if (signedAttribs instanceof org.bouncycastle.asn1.DERSequence) {
                ret = null;
            } else {
                throw new Exception("DER enconding error");
            }
        } else {
            throw new Exception("DER enconding error");
        }

    } else {
        throw new Exception("DER enconding error");
    }
    return ret;
}

From source file:bluecrystal.bcdeps.helper.DerEncoder.java

License:Open Source License

public static void extractSignPolicyRefFromSignedAttrib(DERTaggedObject signedAttribsDTO,
        SignCompare signCompare) throws Exception {
    //      String SignCompare = null;
    ASN1Primitive dtoObj = signedAttribsDTO.getObject();
    if (dtoObj instanceof DLSequence) {
        DLSequence topSeq = (DLSequence) dtoObj;
        List<String> signedAttribOid = new ArrayList<String>();
        signCompare.setSignedAttribs(signedAttribOid);
        for (int i = 0; i < topSeq.size(); i++) {
            // treat each SIGNED ATTRIBUTE
            ASN1Encodable objL1 = topSeq.getObjectAt(i);
            if (objL1 instanceof DERSequence) {
                DERSequence seqL1 = (DERSequence) objL1;
                ASN1Encodable objL2 = seqL1.getObjectAt(0);
                if (objL2 instanceof ASN1ObjectIdentifier) {
                    ASN1ObjectIdentifier saOid = (ASN1ObjectIdentifier) objL2;
                    String saOIdStr = saOid.toString();
                    // System.out.println(saOIdStr);
                    signedAttribOid.add(saOIdStr);

                    if (saOIdStr.compareTo(DerEncoder.ID_SIG_POLICY) == 0) {
                        ASN1Encodable objL21 = seqL1.getObjectAt(1);
                        if (objL21 instanceof DERSet) {
                            DERSet objL21Set = (DERSet) objL21;
                            ASN1Encodable objL3 = objL21Set.getObjectAt(0);
                            if (objL3 instanceof DERSequence) {
                                DERSequence objL3Seq = (DERSequence) objL3;
                                ASN1Encodable objL4 = objL3Seq.getObjectAt(0);
                                if (objL4 instanceof ASN1ObjectIdentifier) {
                                    ASN1ObjectIdentifier objL4Oid = (ASN1ObjectIdentifier) objL4;
                                    signCompare.setPsOid(objL4Oid.toString());
                                }/*from www .  j  av  a 2s.c o m*/
                                ASN1Encodable objL42 = getAt(objL3Seq, 2);
                                if (objL42 instanceof DERSequence) {
                                    DERSequence objL42DerSeq = (DERSequence) objL42;
                                    ASN1Encodable objL420 = getAt(objL42DerSeq, 0);
                                    if (objL420 instanceof DERSequence) {
                                        DERSequence objL420DerSeq = (DERSequence) objL420;
                                        ASN1Encodable psUrl = getAt(objL420DerSeq, 1);
                                        if (psUrl instanceof DERIA5String) {
                                            DERIA5String psUrlIA5 = (DERIA5String) psUrl;
                                            signCompare.setPsUrl(psUrlIA5.getString());
                                        }
                                    }
                                }

                            }
                        }
                    } else if (saOIdStr.compareTo(DerEncoder.ID_SIGNING_TIME) == 0) {
                        ASN1Encodable objL2SetTime = seqL1.getObjectAt(1);
                        if (objL2SetTime instanceof DERSet) {
                            DERSet objL2SetTimeDer = (DERSet) objL2SetTime;
                            ASN1Encodable objL2SignTime = objL2SetTimeDer.getObjectAt(0);
                            if (objL2SignTime instanceof ASN1UTCTime) {
                                ASN1UTCTime objL2SignTimeUTC = (ASN1UTCTime) objL2SignTime;
                                signCompare.setSigningTime(objL2SignTimeUTC.getDate());
                            }

                        }

                    }
                }
            }
        }
    }

}

From source file:bluecrystal.bcdeps.helper.DerEncoder.java

License:Open Source License

public static ASN1Encodable getAt(DERSequence seq, int index) {
    return seq.size() > index ? seq.getObjectAt(index) : null;
}

From source file:br.gov.frameworkdemoiselle.certificate.extension.BasicCertificate.java

License:Open Source License

/**
 * returns the ICP-BRASIL Level Certificate(A1, A2, A3, A4, S1, S2, S3,
 * S4).<br>/*from  w  ww.java 2  s .  c o  m*/
 * DOC-ICP-04 Returns the <b>null</b> value if the CertificatePolicies is
 * NOT present.
 *
 * @return String
 */
public String getNivelCertificado() {
    try {
        DERSequence seq = (DERSequence) getExtensionValue(X509Extensions.CertificatePolicies.getId());
        if (seq == null) {
            return null;
        }
        for (int pos = 0; pos < seq.size(); pos++) {
            PolicyInformation policyInformation = new PolicyInformation((ASN1Sequence) seq.getObjectAt(pos));

            String id = policyInformation.getPolicyIdentifier().getId();
            if (id == null) {
                continue;
            }

            if (id.startsWith(OID_A1_CERTIFICATE)) {
                return "A1";
            }
            if (id.startsWith(OID_A2_CERTIFICATE)) {
                return "A2";
            }
            if (id.startsWith(OID_A3_CERTIFICATE)) {
                return "A3";
            }
            if (id.startsWith(OID_A4_CERTIFICATE)) {
                return "A4";
            }
            if (id.startsWith(OID_S1_CERTIFICATE)) {
                return "S1";
            }
            if (id.startsWith(OID_S2_CERTIFICATE)) {
                return "S2";
            }
            if (id.startsWith(OID_S3_CERTIFICATE)) {
                return "S3";
            }
            if (id.startsWith(OID_S4_CERTIFICATE)) {
                return "S4";
            }
        }
        return null;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

From source file:br.gov.frameworkdemoiselle.certificate.extension.BasicCertificate.java

License:Open Source License

/**
 * Returns the AuthorityKeyIdentifier extension value on String format.<br>
 * Otherwise, returns <b>null</b>.<br>
 *
 * @return String/*from ww  w  . j  av a2  s .  c  om*/
 * @throws IOException
 */
public String getAuthorityKeyIdentifier() throws IOException {
    // TODO - Precisa validar este metodo com a RFC
    DERSequence seq = (DERSequence) getExtensionValue(X509Extensions.AuthorityKeyIdentifier.getId());
    if (seq == null || seq.size() == 0) {
        return null;
    }
    DERTaggedObject tag = (DERTaggedObject) seq.getObjectAt(0);
    DEROctetString oct = (DEROctetString) DEROctetString.getInstance(tag);

    return toString(oct.getOctets());
}

From source file:br.gov.frameworkdemoiselle.certificate.extension.BasicCertificate.java

License:Open Source License

/**
 * Returns a List of URL for Certificate Revocation List. Must have on or
 * more<br>/*from www.  jav a 2 s.  c  o  m*/
 * Otherwise, returns <b>null</b>.<br>
 *
 * @return String
 * @throws IOException
 */
public List<String> getCRLDistributionPoint() throws IOException {

    List<String> lcrS = new ArrayList<String>();
    DERObject derObj = getExtensionValue(X509Extensions.CRLDistributionPoints.getId());
    if (derObj == null) {
        return null;
    }
    CRLDistPoint crlDistPoint = CRLDistPoint.getInstance(derObj);
    DistributionPoint[] dp = crlDistPoint.getDistributionPoints();
    for (int i = 0; i < dp.length; i++) {
        DERSequence seq = (DERSequence) new ASN1InputStream(
                dp[i].getDistributionPoint().getName().getDEREncoded()).readObject();
        DERTaggedObject tag = (DERTaggedObject) seq.getObjectAt(0);
        try {
            ASN1OctetString oct = DEROctetString.getInstance(tag);
            lcrS.add(new String(oct.getOctets()));
        } catch (Exception e) {
            // No  um objeto com informao de DistributionPoint
        }

    }
    return lcrS;
}