user1349407
user1349407

Reputation: 622

Error on creating and verifying signed data

I'm using some example code from Wrox Beginning Cryptography with Java. Line 24 of the code (below) shows me an error in Eclipse.

X509CertSelector signerConstraints = signer.getSID();

Eclipse error:

Type mismatch: cannot convert from SignerId to X509CertSelector

Here is the full example:

package chapter9;

import java.security.cert.*;
import java.util.Iterator;

import org.bouncycastle.cms.CMSSignedData;
import org.bouncycastle.cms.SignerInformation;
import org.bouncycastle.cms.SignerInformationStore;

/**
 * Base class for signed examples.
 */
public class SignedDataProcessor {
    /**
     * Return a boolean array representing keyUsage with digitalSignature set.
     */
    static boolean[] getKeyUsageForSignature() {
        boolean[] val = new boolean[9];
        val[0] = true;

        return val;
    }

    /**
     * Take a CMS SignedData message and a trust anchor and determine if
     * the message is signed with a valid signature from a end entity
     * entity certificate recognized by the trust anchor rootCert.
     */
     public static boolean isValid(
         CMSSignedData   signedData,
         X509Certificate rootCert) throws Exception {
        CertStore certsAndCRLs = signedData.getCertificatesAndCRLs("Collection", "BC");
        SignerInformationStore  signers = signedData.getSignerInfos();
        Iterator it = signers.getSigners().iterator();

        if (it.hasNext()) {
            SignerInformation signer = (SignerInformation)it.next();
            X509CertSelector signerConstraints = signer.getSID();

            signerConstraints.setKeyUsage(getKeyUsageForSignature());

            PKIXCertPathBuilderResult result = 
                Utils.buildPath(rootCert, signer.getSID(), certsAndCRLs);

            return signer.verify(result.getPublicKey(), "BC");
        }

        return false;
    }
}

Upvotes: 3

Views: 493

Answers (1)

user1349407
user1349407

Reputation: 622

I found the answer: Just upgrade to bcprov-jdk16-145.jar, bcmail-jdk16-145.jar..

Upvotes: 1

Related Questions