Example usage for org.bouncycastle.asn1 ASN1EncodableVector get

List of usage examples for org.bouncycastle.asn1 ASN1EncodableVector get

Introduction

In this page you can find the example usage for org.bouncycastle.asn1 ASN1EncodableVector get.

Prototype

public ASN1Encodable get(int i) 

Source Link

Document

Return the object at position i in this vector.

Usage

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);
}