List of usage examples for org.bouncycastle.asn1 DERSequence getObjectAt
public ASN1Encodable getObjectAt(int index)
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; }