List of usage examples for org.bouncycastle.asn1 ASN1EncodableVector get
public ASN1Encodable get(int i)
From source file:org.votingsystem.signature.util.CMSUtils.java
License:Open Source License
public static DERObject getSingleValuedSignedAttribute(AttributeTable signedAttrTable, DERObjectIdentifier attrOID, String printableName) throws CMSException { if (signedAttrTable == null) return null; ASN1EncodableVector vector = signedAttrTable.getAll(attrOID); switch (vector.size()) { case 0://from w ww . jav a 2s.co m return null; case 1: Attribute t = (Attribute) vector.get(0); ASN1Set attrValues = t.getAttrValues(); if (attrValues.size() != 1) throw new CMSException("A " + printableName + " attribute MUST have a single attribute value"); return attrValues.getObjectAt(0).getDERObject(); default: throw new CMSException( "The SignedAttributes in a signerInfo MUST NOT include multiple instances of the " + printableName + " attribute"); } }
From source file:org.votingsystem.signature.util.CMSUtils.java
License:Open Source License
public static byte[] getDigestToken(TimeStampToken timeStampToken) { if (timeStampToken == null) return null; CMSSignedData tokenCMSSignedData = timeStampToken.toCMSSignedData(); Collection signers = tokenCMSSignedData.getSignerInfos().getSigners(); SignerInformation tsaSignerInfo = (SignerInformation) signers.iterator().next(); AttributeTable signedAttrTable = tsaSignerInfo.getSignedAttributes(); ASN1EncodableVector v = signedAttrTable.getAll(CMSAttributes.messageDigest); Attribute t = (Attribute) v.get(0); ASN1Set attrValues = t.getAttrValues(); DERObject validMessageDigest = attrValues.getObjectAt(0).getDERObject(); ASN1OctetString signedMessageDigest = (ASN1OctetString) validMessageDigest; byte[] digestToken = signedMessageDigest.getOctets(); //String digestTokenStr = new String(Base64.encode(digestToken)); return digestToken; }
From source file:se.tillvaxtverket.ttsigvalws.ttwssigvalidation.pdf.PdfSignatureVerifier.java
License:Open Source License
private static void checkTimestamps(CMSSignedDataParser sp, CMSSigVerifyResult sigResult) throws CMSException { List<TimeStampResult> timeStampResultList = sigResult.getTimStampResultList(); sigResult.setTimStampResultList(timeStampResultList); SignerInformationStore signers = sp.getSignerInfos(); Collection c = signers.getSigners(); Iterator it = c.iterator();//from www.java 2 s .co m if (!it.hasNext()) { return; } SignerInformation signer = (SignerInformation) it.next(); //Collect and check time stamps AttributeTable unsignedAttributes = signer.getUnsignedAttributes(); if (unsignedAttributes == null) { return; } ASN1EncodableVector timeStamps = unsignedAttributes .getAll(new ASN1ObjectIdentifier("1.2.840.113549.1.9.16.2.14")); if (timeStamps.size() == 0) { return; } for (int i = 0; i < timeStamps.size(); i++) { try { Attribute timestampAttr = Attribute.getInstance(timeStamps.get(i)); byte[] timeStampBytes = timestampAttr.getAttrValues().getObjectAt(0).toASN1Primitive().getEncoded(); TimeStampResult tsResult = new TimeStampResult(); tsResult.setTimestamp(timeStampBytes); timeStampResultList.add(tsResult); InputStream tsis = new ByteArrayInputStream(timeStampBytes); CMSSignedDataParser tsSp = new CMSSignedDataParser(new BcDigestCalculatorProvider(), tsis); byte[] tsInfoBytes = IOUtils.toByteArray(tsSp.getSignedContent().getContentStream()); TimeStampData timeStampData = PdfBoxSigUtil.getTimeStampData(tsInfoBytes); tsResult.setTsData(timeStampData); //Compare TimeStamp data hash with signature hash byte[] sigHash = getDigest(timeStampData.getImprintHashAlgo(), signer.getSignature()); tsResult.setTimestampMatch(Arrays.equals(sigHash, timeStampData.getImprintDigest())); CMSSigVerifyResult tsSigResult = new CMSSigVerifyResult(); tsSigResult.setSignedData(timeStampBytes); tsResult.setSignatureVerification(tsSigResult); verifyCMSSignature(tsSp, tsSigResult); } catch (Exception e) { } } sigResult.setTimStampResultList(timeStampResultList); }