Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/quite/humla-spongycastle.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/pkix/src
diff options
context:
space:
mode:
authorDavid Hook <dgh@cryptoworkshop.com>2013-11-13 02:46:45 +0400
committerDavid Hook <dgh@cryptoworkshop.com>2013-11-13 02:46:45 +0400
commitbf88642e2146c5f3f9d21bdfdceaca02ee8bf5e4 (patch)
treea63c8c05269085253269cde1172668f78c8fc056 /pkix/src
parent121bc248eee6bff8cfb2852485f0b1ddc580037c (diff)
removed extra files
Diffstat (limited to 'pkix/src')
-rw-r--r--pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSEnvelopedHelper.java257
-rw-r--r--pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSSignedData.java819
-rw-r--r--pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSSignedDataParser.java991
-rw-r--r--pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSSignedGenerator.java362
-rw-r--r--pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSUtils.java366
5 files changed, 0 insertions, 2795 deletions
diff --git a/pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSEnvelopedHelper.java b/pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSEnvelopedHelper.java
deleted file mode 100644
index 54dc6af7..00000000
--- a/pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSEnvelopedHelper.java
+++ /dev/null
@@ -1,257 +0,0 @@
-package org.bouncycastle.cms;
-
-import java.io.FilterInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-import java.security.Provider;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.crypto.KeyGenerator;
-
-import org.bouncycastle.asn1.ASN1Encodable;
-import org.bouncycastle.asn1.ASN1Set;
-import org.bouncycastle.asn1.cms.KEKRecipientInfo;
-import org.bouncycastle.asn1.cms.KeyAgreeRecipientInfo;
-import org.bouncycastle.asn1.cms.KeyTransRecipientInfo;
-import org.bouncycastle.asn1.cms.PasswordRecipientInfo;
-import org.bouncycastle.asn1.cms.RecipientInfo;
-import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
-import org.bouncycastle.operator.DigestCalculator;
-import org.bouncycastle.util.Integers;
-
-class CMSEnvelopedHelper
-{
- static final CMSEnvelopedHelper INSTANCE = new CMSEnvelopedHelper();
-
- private static final Map KEYSIZES = new HashMap();
- private static final Map BASE_CIPHER_NAMES = new HashMap();
- private static final Map CIPHER_ALG_NAMES = new HashMap();
- private static final Map MAC_ALG_NAMES = new HashMap();
-
- static
- {
- KEYSIZES.put(CMSEnvelopedGenerator.DES_EDE3_CBC, Integers.valueOf(192));
- KEYSIZES.put(CMSEnvelopedGenerator.AES128_CBC, Integers.valueOf(128));
- KEYSIZES.put(CMSEnvelopedGenerator.AES192_CBC, Integers.valueOf(192));
- KEYSIZES.put(CMSEnvelopedGenerator.AES256_CBC, Integers.valueOf(256));
-
- BASE_CIPHER_NAMES.put(CMSEnvelopedGenerator.DES_EDE3_CBC, "DESEDE");
- BASE_CIPHER_NAMES.put(CMSEnvelopedGenerator.AES128_CBC, "AES");
- BASE_CIPHER_NAMES.put(CMSEnvelopedGenerator.AES192_CBC, "AES");
- BASE_CIPHER_NAMES.put(CMSEnvelopedGenerator.AES256_CBC, "AES");
-
- CIPHER_ALG_NAMES.put(CMSEnvelopedGenerator.DES_EDE3_CBC, "DESEDE/CBC/PKCS5Padding");
- CIPHER_ALG_NAMES.put(CMSEnvelopedGenerator.AES128_CBC, "AES/CBC/PKCS5Padding");
- CIPHER_ALG_NAMES.put(CMSEnvelopedGenerator.AES192_CBC, "AES/CBC/PKCS5Padding");
- CIPHER_ALG_NAMES.put(CMSEnvelopedGenerator.AES256_CBC, "AES/CBC/PKCS5Padding");
-
- MAC_ALG_NAMES.put(CMSEnvelopedGenerator.DES_EDE3_CBC, "DESEDEMac");
- MAC_ALG_NAMES.put(CMSEnvelopedGenerator.AES128_CBC, "AESMac");
- MAC_ALG_NAMES.put(CMSEnvelopedGenerator.AES192_CBC, "AESMac");
- MAC_ALG_NAMES.put(CMSEnvelopedGenerator.AES256_CBC, "AESMac");
- }
-
- KeyGenerator createSymmetricKeyGenerator(
- String encryptionOID,
- Provider provider)
- throws NoSuchAlgorithmException
- {
- try
- {
- return createKeyGenerator(encryptionOID, provider);
- }
- catch (NoSuchAlgorithmException e)
- {
- try
- {
- String algName = (String)BASE_CIPHER_NAMES.get(encryptionOID);
- if (algName != null)
- {
- return createKeyGenerator(algName, provider);
- }
- }
- catch (NoSuchAlgorithmException ex)
- {
- // ignore
- }
- if (provider != null)
- {
- return createSymmetricKeyGenerator(encryptionOID, null);
- }
- throw e;
- }
- }
-
- int getKeySize(String oid)
- {
- Integer keySize = (Integer)KEYSIZES.get(oid);
-
- if (keySize == null)
- {
- throw new IllegalArgumentException("no keysize for " + oid);
- }
-
- return keySize.intValue();
- }
-
- private KeyGenerator createKeyGenerator(
- String algName,
- Provider provider)
- throws NoSuchAlgorithmException
- {
- if (provider != null)
- {
- try
- {
- return KeyGenerator.getInstance(algName, provider.getName());
- }
- catch (NoSuchProviderException e)
- {
- throw new NoSuchAlgorithmException(e.toString());
- }
- }
- else
- {
- return KeyGenerator.getInstance(algName);
- }
- }
-
- static RecipientInformationStore buildRecipientInformationStore(
- ASN1Set recipientInfos, AlgorithmIdentifier messageAlgorithm, CMSSecureReadable secureReadable)
- {
- return buildRecipientInformationStore(recipientInfos, messageAlgorithm, secureReadable, null);
- }
-
- static RecipientInformationStore buildRecipientInformationStore(
- ASN1Set recipientInfos, AlgorithmIdentifier messageAlgorithm, CMSSecureReadable secureReadable, AuthAttributesProvider additionalData)
- {
- List infos = new ArrayList();
- for (int i = 0; i != recipientInfos.size(); i++)
- {
- RecipientInfo info = RecipientInfo.getInstance(recipientInfos.getObjectAt(i));
-
- readRecipientInfo(infos, info, messageAlgorithm, secureReadable, additionalData);
- }
- return new RecipientInformationStore(infos);
- }
-
- private static void readRecipientInfo(
- List infos, RecipientInfo info, AlgorithmIdentifier messageAlgorithm, CMSSecureReadable secureReadable, AuthAttributesProvider additionalData)
- {
- ASN1Encodable recipInfo = info.getInfo();
- if (recipInfo instanceof KeyTransRecipientInfo)
- {
- infos.add(new KeyTransRecipientInformation(
- (KeyTransRecipientInfo)recipInfo, messageAlgorithm, secureReadable, additionalData));
- }
- else if (recipInfo instanceof KEKRecipientInfo)
- {
- infos.add(new KEKRecipientInformation(
- (KEKRecipientInfo)recipInfo, messageAlgorithm, secureReadable, additionalData));
- }
- else if (recipInfo instanceof KeyAgreeRecipientInfo)
- {
- KeyAgreeRecipientInformation.readRecipientInfo(infos,
- (KeyAgreeRecipientInfo)recipInfo, messageAlgorithm, secureReadable, additionalData);
- }
- else if (recipInfo instanceof PasswordRecipientInfo)
- {
- infos.add(new PasswordRecipientInformation(
- (PasswordRecipientInfo)recipInfo, messageAlgorithm, secureReadable, additionalData));
- }
- }
-
- static class CMSDigestAuthenticatedSecureReadable
- implements CMSSecureReadable
- {
- private DigestCalculator digestCalculator;
- private CMSReadable readable;
-
- public CMSDigestAuthenticatedSecureReadable(DigestCalculator digestCalculator, CMSReadable readable)
- {
- this.digestCalculator = digestCalculator;
- this.readable = readable;
- }
-
- public InputStream getInputStream()
- throws IOException, CMSException
- {
- return new FilterInputStream(readable.getInputStream())
- {
- public int read()
- throws IOException
- {
- int b = in.read();
-
- if (b >= 0)
- {
- digestCalculator.getOutputStream().write(b);
- }
-
- return b;
- }
-
- public int read(byte[] inBuf, int inOff, int inLen)
- throws IOException
- {
- int n = in.read(inBuf, inOff, inLen);
-
- if (n >= 0)
- {
- digestCalculator.getOutputStream().write(inBuf, inOff, n);
- }
-
- return n;
- }
- };
- }
-
- public byte[] getDigest()
- {
- return digestCalculator.getDigest();
- }
- }
-
- static class CMSAuthenticatedSecureReadable implements CMSSecureReadable
- {
- private AlgorithmIdentifier algorithm;
- private CMSReadable readable;
-
- CMSAuthenticatedSecureReadable(AlgorithmIdentifier algorithm, CMSReadable readable)
- {
- this.algorithm = algorithm;
- this.readable = readable;
- }
-
- public InputStream getInputStream()
- throws IOException, CMSException
- {
- return readable.getInputStream();
- }
-
- }
-
- static class CMSEnvelopedSecureReadable implements CMSSecureReadable
- {
- private AlgorithmIdentifier algorithm;
- private CMSReadable readable;
-
- CMSEnvelopedSecureReadable(AlgorithmIdentifier algorithm, CMSReadable readable)
- {
- this.algorithm = algorithm;
- this.readable = readable;
- }
-
- public InputStream getInputStream()
- throws IOException, CMSException
- {
- return readable.getInputStream();
- }
-
- }
-}
diff --git a/pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSSignedData.java b/pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSSignedData.java
deleted file mode 100644
index 4ef40100..00000000
--- a/pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSSignedData.java
+++ /dev/null
@@ -1,819 +0,0 @@
-package org.bouncycastle.cms;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-import java.security.Provider;
-import org.bouncycastle.jce.cert.CertStore;
-import org.bouncycastle.jce.cert.CertStoreException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.bouncycastle.asn1.ASN1EncodableVector;
-import org.bouncycastle.asn1.ASN1InputStream;
-import org.bouncycastle.asn1.ASN1ObjectIdentifier;
-import org.bouncycastle.asn1.ASN1OctetString;
-import org.bouncycastle.asn1.ASN1Sequence;
-import org.bouncycastle.asn1.ASN1Set;
-import org.bouncycastle.asn1.BERSequence;
-import org.bouncycastle.asn1.DERSet;
-import org.bouncycastle.asn1.cms.ContentInfo;
-import org.bouncycastle.asn1.cms.SignedData;
-import org.bouncycastle.asn1.cms.SignerInfo;
-import org.bouncycastle.cert.jcajce.JcaCertStoreBuilder;
-import org.bouncycastle.operator.DefaultSignatureAlgorithmIdentifierFinder;
-import org.bouncycastle.operator.OperatorCreationException;
-import org.bouncycastle.operator.SignatureAlgorithmIdentifierFinder;
-import org.bouncycastle.util.Store;
-import org.bouncycastle.x509.NoSuchStoreException;
-import org.bouncycastle.x509.X509Store;
-
-/**
- * general class for handling a pkcs7-signature message.
- *
- * A simple example of usage - note, in the example below the validity of
- * the certificate isn't verified, just the fact that one of the certs
- * matches the given signer...
- *
- * <pre>
- * Store certStore = s.getCertificates();
- * SignerInformationStore signers = s.getSignerInfos();
- * Collection c = signers.getSigners();
- * Iterator it = c.iterator();
- *
- * while (it.hasNext())
- * {
- * SignerInformation signer = (SignerInformation)it.next();
- * Collection certCollection = certStore.getMatches(signer.getSID());
- *
- * Iterator certIt = certCollection.iterator();
- * X509CertificateHolder cert = (X509CertificateHolder)certIt.next();
- *
- * if (signer.verify(new JcaSimpleSignerInfoVerifierBuilder().setProvider("BC").build(cert)))
- * {
- * verified++;
- * }
- * }
- * </pre>
- */
-public class CMSSignedData
-{
- private static final CMSSignedHelper HELPER = CMSSignedHelper.INSTANCE;
-
- SignedData signedData;
- ContentInfo contentInfo;
- CMSTypedData signedContent;
- SignerInformationStore signerInfoStore;
- X509Store attributeStore;
- X509Store certificateStore;
- X509Store crlStore;
- private Map hashes;
-
- private CMSSignedData(
- CMSSignedData c)
- {
- this.signedData = c.signedData;
- this.contentInfo = c.contentInfo;
- this.signedContent = c.signedContent;
- this.signerInfoStore = c.signerInfoStore;
- }
-
- public CMSSignedData(
- byte[] sigBlock)
- throws CMSException
- {
- this(CMSUtils.readContentInfo(sigBlock));
- }
-
- public CMSSignedData(
- CMSProcessable signedContent,
- byte[] sigBlock)
- throws CMSException
- {
- this(signedContent, CMSUtils.readContentInfo(sigBlock));
- }
-
- /**
- * Content with detached signature, digests precomputed
- *
- * @param hashes a map of precomputed digests for content indexed by name of hash.
- * @param sigBlock the signature object.
- */
- public CMSSignedData(
- Map hashes,
- byte[] sigBlock)
- throws CMSException
- {
- this(hashes, CMSUtils.readContentInfo(sigBlock));
- }
-
- /**
- * base constructor - content with detached signature.
- *
- * @param signedContent the content that was signed.
- * @param sigData the signature object.
- */
- public CMSSignedData(
- CMSProcessable signedContent,
- InputStream sigData)
- throws CMSException
- {
- this(signedContent, CMSUtils.readContentInfo(new ASN1InputStream(sigData)));
- }
-
- /**
- * base constructor - with encapsulated content
- */
- public CMSSignedData(
- InputStream sigData)
- throws CMSException
- {
- this(CMSUtils.readContentInfo(sigData));
- }
-
- public CMSSignedData(
- final CMSProcessable signedContent,
- ContentInfo sigData)
- throws CMSException
- {
- if (signedContent instanceof CMSTypedData)
- {
- this.signedContent = (CMSTypedData)signedContent;
- }
- else
- {
- this.signedContent = new CMSTypedData()
- {
- public ASN1ObjectIdentifier getContentType()
- {
- return signedData.getEncapContentInfo().getContentType();
- }
-
- public void write(OutputStream out)
- throws IOException, CMSException
- {
- signedContent.write(out);
- }
-
- public Object getContent()
- {
- return signedContent.getContent();
- }
- };
- }
-
- this.contentInfo = sigData;
- this.signedData = getSignedData();
- }
-
- public CMSSignedData(
- Map hashes,
- ContentInfo sigData)
- throws CMSException
- {
- this.hashes = hashes;
- this.contentInfo = sigData;
- this.signedData = getSignedData();
- }
-
- public CMSSignedData(
- ContentInfo sigData)
- throws CMSException
- {
- this.contentInfo = sigData;
- this.signedData = getSignedData();
-
- //
- // this can happen if the signed message is sent simply to send a
- // certificate chain.
- //
- if (signedData.getEncapContentInfo().getContent() != null)
- {
- this.signedContent = new CMSProcessableByteArray(signedData.getEncapContentInfo().getContentType(),
- ((ASN1OctetString)(signedData.getEncapContentInfo()
- .getContent())).getOctets());
- }
- else
- {
- this.signedContent = null;
- }
- }
-
- private SignedData getSignedData()
- throws CMSException
- {
- try
- {
- return SignedData.getInstance(contentInfo.getContent());
- }
- catch (ClassCastException e)
- {
- throw new CMSException("Malformed content.", e);
- }
- catch (IllegalArgumentException e)
- {
- throw new CMSException("Malformed content.", e);
- }
- }
-
- /**
- * Return the version number for this object
- */
- public int getVersion()
- {
- return signedData.getVersion().getValue().intValue();
- }
-
- /**
- * return the collection of signers that are associated with the
- * signatures for the message.
- */
- public SignerInformationStore getSignerInfos()
- {
- if (signerInfoStore == null)
- {
- ASN1Set s = signedData.getSignerInfos();
- List signerInfos = new ArrayList();
- SignatureAlgorithmIdentifierFinder sigAlgFinder = new DefaultSignatureAlgorithmIdentifierFinder();
-
- for (int i = 0; i != s.size(); i++)
- {
- SignerInfo info = SignerInfo.getInstance(s.getObjectAt(i));
- ASN1ObjectIdentifier contentType = signedData.getEncapContentInfo().getContentType();
-
- if (hashes == null)
- {
- signerInfos.add(new SignerInformation(info, contentType, signedContent, null));
- }
- else
- {
- Object obj = hashes.keySet().iterator().next();
- byte[] hash = (obj instanceof String) ? (byte[])hashes.get(info.getDigestAlgorithm().getAlgorithm().getId()) : (byte[])hashes.get(info.getDigestAlgorithm().getAlgorithm());
-
- signerInfos.add(new SignerInformation(info, contentType, null, hash));
- }
- }
-
- signerInfoStore = new SignerInformationStore(signerInfos);
- }
-
- return signerInfoStore;
- }
-
- /**
- * return a X509Store containing the attribute certificates, if any, contained
- * in this message.
- *
- * @param type type of store to create
- * @param provider name of provider to use
- * @return a store of attribute certificates
- * @exception NoSuchProviderException if the provider requested isn't available.
- * @exception NoSuchStoreException if the store type isn't available.
- * @exception CMSException if a general exception prevents creation of the X509Store
- * @deprecated use base Store returning method
- */
- public X509Store getAttributeCertificates(
- String type,
- String provider)
- throws NoSuchStoreException, NoSuchProviderException, CMSException
- {
- return getAttributeCertificates(type, CMSUtils.getProvider(provider));
- }
-
- /**
- * return a X509Store containing the attribute certificates, if any, contained
- * in this message.
- *
- * @param type type of store to create
- * @param provider provider to use
- * @return a store of attribute certificates
- * @exception NoSuchStoreException if the store type isn't available.
- * @exception CMSException if a general exception prevents creation of the X509Store
- * @deprecated use base Store returning method
- */
- public X509Store getAttributeCertificates(
- String type,
- Provider provider)
- throws NoSuchStoreException, CMSException
- {
- if (attributeStore == null)
- {
- attributeStore = HELPER.createAttributeStore(type, provider, this.getAttributeCertificates());
- }
-
- return attributeStore;
- }
-
- /**
- * return a X509Store containing the public key certificates, if any, contained
- * in this message.
- *
- * @param type type of store to create
- * @param provider name of provider to use
- * @return a store of public key certificates
- * @exception NoSuchProviderException if the provider requested isn't available.
- * @exception NoSuchStoreException if the store type isn't available.
- * @exception CMSException if a general exception prevents creation of the X509Store
- * @deprecated use base Store returning method
- */
- public X509Store getCertificates(
- String type,
- String provider)
- throws NoSuchStoreException, NoSuchProviderException, CMSException
- {
- return getCertificates(type, CMSUtils.getProvider(provider));
- }
-
- /**
- * return a X509Store containing the public key certificates, if any, contained
- * in this message.
- *
- * @param type type of store to create
- * @param provider provider to use
- * @return a store of public key certificates
- * @exception NoSuchStoreException if the store type isn't available.
- * @exception CMSException if a general exception prevents creation of the X509Store
- * @deprecated use base Store returning method
- */
- public X509Store getCertificates(
- String type,
- Provider provider)
- throws NoSuchStoreException, CMSException
- {
- if (certificateStore == null)
- {
- certificateStore = HELPER.createCertificateStore(type, provider, this.getCertificates());
- }
-
- return certificateStore;
- }
-
- /**
- * return a X509Store containing CRLs, if any, contained
- * in this message.
- *
- * @param type type of store to create
- * @param provider name of provider to use
- * @return a store of CRLs
- * @exception NoSuchProviderException if the provider requested isn't available.
- * @exception NoSuchStoreException if the store type isn't available.
- * @exception CMSException if a general exception prevents creation of the X509Store
- * @deprecated use base Store returning method
- */
- public X509Store getCRLs(
- String type,
- String provider)
- throws NoSuchStoreException, NoSuchProviderException, CMSException
- {
- return getCRLs(type, CMSUtils.getProvider(provider));
- }
-
- /**
- * return a X509Store containing CRLs, if any, contained
- * in this message.
- *
- * @param type type of store to create
- * @param provider provider to use
- * @return a store of CRLs
- * @exception NoSuchStoreException if the store type isn't available.
- * @exception CMSException if a general exception prevents creation of the X509Store
- * @deprecated use base Store returning method
- */
- public X509Store getCRLs(
- String type,
- Provider provider)
- throws NoSuchStoreException, CMSException
- {
- if (crlStore == null)
- {
- crlStore = HELPER.createCRLsStore(type, provider, getCRLs());
- }
-
- return crlStore;
- }
-
- /**
- * return a CertStore containing the certificates and CRLs associated with
- * this message.
- *
- * @exception NoSuchProviderException if the provider requested isn't available.
- * @exception NoSuchAlgorithmException if the cert store isn't available.
- * @exception CMSException if a general exception prevents creation of the CertStore
- * @deprecated use base Store returning method and org.bouncycastle.cert.jcajce.JcaCertStoreBuilder
- */
- public CertStore getCertificatesAndCRLs(
- String type,
- String provider)
- throws NoSuchAlgorithmException, NoSuchProviderException, CMSException
- {
- return getCertificatesAndCRLs(type, CMSUtils.getProvider(provider));
- }
-
- /**
- * return a CertStore containing the certificates and CRLs associated with
- * this message.
- *
- * @exception NoSuchAlgorithmException if the cert store isn't available.
- * @exception CMSException if a general exception prevents creation of the CertStore
- * @deprecated use base Store returning method and org.bouncycastle.cert.jcajce.JcaCertStoreBuilder
- */
- public CertStore getCertificatesAndCRLs(
- String type,
- Provider provider)
- throws NoSuchAlgorithmException, CMSException
- {
- try
- {
- JcaCertStoreBuilder certStoreBuilder = new JcaCertStoreBuilder().setType(type);
-
- if (provider != null)
- {
- certStoreBuilder.setProvider(provider);
- }
-
- certStoreBuilder.addCertificates(this.getCertificates());
- certStoreBuilder.addCRLs(this.getCRLs());
-
- return certStoreBuilder.build();
- }
- catch (NoSuchAlgorithmException e)
- {
- throw e;
- }
- catch (Exception e)
- {
- throw new CMSException("exception creating CertStore: " + e.getMessage(), e);
- }
- }
-
- /**
- * Return any X.509 certificate objects in this SignedData structure as a Store of X509CertificateHolder objects.
- *
- * @return a Store of X509CertificateHolder objects.
- */
- public Store getCertificates()
- {
- return HELPER.getCertificates(signedData.getCertificates());
- }
-
- /**
- * Return any X.509 CRL objects in this SignedData structure as a Store of X509CRLHolder objects.
- *
- * @return a Store of X509CRLHolder objects.
- */
- public Store getCRLs()
- {
- return HELPER.getCRLs(signedData.getCRLs());
- }
-
- /**
- * Return any X.509 attribute certificate objects in this SignedData structure as a Store of X509AttributeCertificateHolder objects.
- *
- * @return a Store of X509AttributeCertificateHolder objects.
- */
- public Store getAttributeCertificates()
- {
- return HELPER.getAttributeCertificates(signedData.getCertificates());
- }
-
- /**
- * Return any OtherRevocationInfo OtherRevInfo objects of the type indicated by otherRevocationInfoFormat in
- * this SignedData structure.
- *
- * @param otherRevocationInfoFormat OID of the format type been looked for.
- *
- * @return a Store of ASN1Encodable objects representing any objects of otherRevocationInfoFormat found.
- */
- public Store getOtherRevocationInfo(ASN1ObjectIdentifier otherRevocationInfoFormat)
- {
- return HELPER.getOtherRevocationInfo(otherRevocationInfoFormat, signedData.getCRLs());
- }
-
- /**
- * Return the a string representation of the OID associated with the
- * encapsulated content info structure carried in the signed data.
- *
- * @return the OID for the content type.
- */
- public String getSignedContentTypeOID()
- {
- return signedData.getEncapContentInfo().getContentType().getId();
- }
-
- public CMSTypedData getSignedContent()
- {
- return signedContent;
- }
-
- /**
- * return the ContentInfo
- * @deprecated use toASN1Structure()
- */
- public ContentInfo getContentInfo()
- {
- return contentInfo;
- }
-
- /**
- * return the ContentInfo
- */
- public ContentInfo toASN1Structure()
- {
- return contentInfo;
- }
-
- /**
- * return the ASN.1 encoded representation of this object.
- */
- public byte[] getEncoded()
- throws IOException
- {
- return contentInfo.getEncoded();
- }
-
- /**
- * Verify all the SignerInformation objects and their associated counter signatures attached
- * to this CMS SignedData object.
- *
- * @param verifierProvider a provider of SignerInformationVerifier objects.
- * @return true if all verify, false otherwise.
- * @throws CMSException if an exception occurs during the verification process.
- */
- public boolean verifySignatures(SignerInformationVerifierProvider verifierProvider)
- throws CMSException
- {
- return verifySignatures(verifierProvider, false);
- }
-
- /**
- * Verify all the SignerInformation objects and optionally their associated counter signatures attached
- * to this CMS SignedData object.
- *
- * @param verifierProvider a provider of SignerInformationVerifier objects.
- * @param ignoreCounterSignatures if true don't check counter signatures. If false check counter signatures as well.
- * @return true if all verify, false otherwise.
- * @throws CMSException if an exception occurs during the verification process.
- */
- public boolean verifySignatures(SignerInformationVerifierProvider verifierProvider, boolean ignoreCounterSignatures)
- throws CMSException
- {
- Collection signers = this.getSignerInfos().getSigners();
-
- for (Iterator it = signers.iterator(); it.hasNext();)
- {
- SignerInformation signer = (SignerInformation)it.next();
-
- try
- {
- SignerInformationVerifier verifier = verifierProvider.get(signer.getSID());
-
- if (!signer.verify(verifier))
- {
- return false;
- }
-
- if (!ignoreCounterSignatures)
- {
- Collection counterSigners = signer.getCounterSignatures().getSigners();
-
- for (Iterator cIt = counterSigners.iterator(); cIt.hasNext();)
- {
- SignerInformation counterSigner = (SignerInformation)cIt.next();
- SignerInformationVerifier counterVerifier = verifierProvider.get(signer.getSID());
-
- if (!counterSigner.verify(counterVerifier))
- {
- return false;
- }
- }
- }
- }
- catch (OperatorCreationException e)
- {
- throw new CMSException("failure in verifier provider: " + e.getMessage(), e);
- }
- }
-
- return true;
- }
-
- /**
- * Replace the SignerInformation store associated with this
- * CMSSignedData object with the new one passed in. You would
- * probably only want to do this if you wanted to change the unsigned
- * attributes associated with a signer, or perhaps delete one.
- *
- * @param signedData the signed data object to be used as a base.
- * @param signerInformationStore the new signer information store to use.
- * @return a new signed data object.
- */
- public static CMSSignedData replaceSigners(
- CMSSignedData signedData,
- SignerInformationStore signerInformationStore)
- {
- //
- // copy
- //
- CMSSignedData cms = new CMSSignedData(signedData);
-
- //
- // replace the store
- //
- cms.signerInfoStore = signerInformationStore;
-
- //
- // replace the signers in the SignedData object
- //
- ASN1EncodableVector digestAlgs = new ASN1EncodableVector();
- ASN1EncodableVector vec = new ASN1EncodableVector();
-
- Iterator it = signerInformationStore.getSigners().iterator();
- while (it.hasNext())
- {
- SignerInformation signer = (SignerInformation)it.next();
- digestAlgs.add(CMSSignedHelper.INSTANCE.fixAlgID(signer.getDigestAlgorithmID()));
- vec.add(signer.toASN1Structure());
- }
-
- ASN1Set digests = new DERSet(digestAlgs);
- ASN1Set signers = new DERSet(vec);
- ASN1Sequence sD = (ASN1Sequence)signedData.signedData.toASN1Primitive();
-
- vec = new ASN1EncodableVector();
-
- //
- // signers are the last item in the sequence.
- //
- vec.add(sD.getObjectAt(0)); // version
- vec.add(digests);
-
- for (int i = 2; i != sD.size() - 1; i++)
- {
- vec.add(sD.getObjectAt(i));
- }
-
- vec.add(signers);
-
- cms.signedData = SignedData.getInstance(new BERSequence(vec));
-
- //
- // replace the contentInfo with the new one
- //
- cms.contentInfo = new ContentInfo(cms.contentInfo.getContentType(), cms.signedData);
-
- return cms;
- }
-
- /**
- * Replace the certificate and CRL information associated with this
- * CMSSignedData object with the new one passed in.
- *
- * @param signedData the signed data object to be used as a base.
- * @param certsAndCrls the new certificates and CRLs to be used.
- * @return a new signed data object.
- * @exception CMSException if there is an error processing the CertStore
- * @deprecated use method taking Store arguments.
- */
- public static CMSSignedData replaceCertificatesAndCRLs(
- CMSSignedData signedData,
- CertStore certsAndCrls)
- throws CMSException
- {
- //
- // copy
- //
- CMSSignedData cms = new CMSSignedData(signedData);
-
- //
- // replace the certs and crls in the SignedData object
- //
- ASN1Set certs = null;
- ASN1Set crls = null;
-
- try
- {
- ASN1Set set = CMSUtils.createBerSetFromList(CMSUtils.getCertificatesFromStore(certsAndCrls));
-
- if (set.size() != 0)
- {
- certs = set;
- }
- }
- catch (CertStoreException e)
- {
- throw new CMSException("error getting certs from certStore", e);
- }
-
- try
- {
- ASN1Set set = CMSUtils.createBerSetFromList(CMSUtils.getCRLsFromStore(certsAndCrls));
-
- if (set.size() != 0)
- {
- crls = set;
- }
- }
- catch (CertStoreException e)
- {
- throw new CMSException("error getting crls from certStore", e);
- }
-
- //
- // replace the CMS structure.
- //
- cms.signedData = new SignedData(signedData.signedData.getDigestAlgorithms(),
- signedData.signedData.getEncapContentInfo(),
- certs,
- crls,
- signedData.signedData.getSignerInfos());
-
- //
- // replace the contentInfo with the new one
- //
- cms.contentInfo = new ContentInfo(cms.contentInfo.getContentType(), cms.signedData);
-
- return cms;
- }
-
- /**
- * Replace the certificate and CRL information associated with this
- * CMSSignedData object with the new one passed in.
- *
- * @param signedData the signed data object to be used as a base.
- * @param certificates the new certificates to be used.
- * @param attrCerts the new attribute certificates to be used.
- * @param crls the new CRLs to be used.
- * @return a new signed data object.
- * @exception CMSException if there is an error processing the CertStore
- */
- public static CMSSignedData replaceCertificatesAndCRLs(
- CMSSignedData signedData,
- Store certificates,
- Store attrCerts,
- Store crls)
- throws CMSException
- {
- //
- // copy
- //
- CMSSignedData cms = new CMSSignedData(signedData);
-
- //
- // replace the certs and crls in the SignedData object
- //
- ASN1Set certSet = null;
- ASN1Set crlSet = null;
-
- if (certificates != null || attrCerts != null)
- {
- List certs = new ArrayList();
-
- if (certificates != null)
- {
- certs.addAll(CMSUtils.getCertificatesFromStore(certificates));
- }
- if (attrCerts != null)
- {
- certs.addAll(CMSUtils.getAttributeCertificatesFromStore(attrCerts));
- }
-
- ASN1Set set = CMSUtils.createBerSetFromList(certs);
-
- if (set.size() != 0)
- {
- certSet = set;
- }
- }
-
- if (crls != null)
- {
- ASN1Set set = CMSUtils.createBerSetFromList(CMSUtils.getCRLsFromStore(crls));
-
- if (set.size() != 0)
- {
- crlSet = set;
- }
- }
-
- //
- // replace the CMS structure.
- //
- cms.signedData = new SignedData(signedData.signedData.getDigestAlgorithms(),
- signedData.signedData.getEncapContentInfo(),
- certSet,
- crlSet,
- signedData.signedData.getSignerInfos());
-
- //
- // replace the contentInfo with the new one
- //
- cms.contentInfo = new ContentInfo(cms.contentInfo.getContentType(), cms.signedData);
-
- return cms;
- }
-}
diff --git a/pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSSignedDataParser.java b/pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSSignedDataParser.java
deleted file mode 100644
index 87e346ac..00000000
--- a/pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSSignedDataParser.java
+++ /dev/null
@@ -1,991 +0,0 @@
-package org.bouncycastle.cms;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-import java.security.Provider;
-import org.bouncycastle.jce.cert.CertStore;
-import org.bouncycastle.jce.cert.CertStoreException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.bouncycastle.asn1.ASN1Encodable;
-import org.bouncycastle.asn1.ASN1EncodableVector;
-import org.bouncycastle.asn1.ASN1Generator;
-import org.bouncycastle.asn1.ASN1ObjectIdentifier;
-import org.bouncycastle.asn1.ASN1OctetStringParser;
-import org.bouncycastle.asn1.ASN1SequenceParser;
-import org.bouncycastle.asn1.ASN1Set;
-import org.bouncycastle.asn1.ASN1SetParser;
-import org.bouncycastle.asn1.ASN1StreamParser;
-import org.bouncycastle.asn1.BERSequenceGenerator;
-import org.bouncycastle.asn1.BERSetParser;
-import org.bouncycastle.asn1.BERTaggedObject;
-import org.bouncycastle.asn1.BERTags;
-import org.bouncycastle.asn1.DERSet;
-import org.bouncycastle.asn1.DERTaggedObject;
-import org.bouncycastle.asn1.cms.CMSObjectIdentifiers;
-import org.bouncycastle.asn1.cms.ContentInfoParser;
-import org.bouncycastle.asn1.cms.SignedDataParser;
-import org.bouncycastle.asn1.cms.SignerInfo;
-import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
-import org.bouncycastle.cert.jcajce.JcaCertStoreBuilder;
-import org.bouncycastle.operator.DigestCalculator;
-import org.bouncycastle.operator.DigestCalculatorProvider;
-import org.bouncycastle.operator.OperatorCreationException;
-import org.bouncycastle.operator.bc.BcDigestCalculatorProvider;
-import org.bouncycastle.util.Store;
-import org.bouncycastle.util.io.Streams;
-import org.bouncycastle.x509.NoSuchStoreException;
-import org.bouncycastle.x509.X509Store;
-
-/**
- * Parsing class for an CMS Signed Data object from an input stream.
- * <p>
- * Note: that because we are in a streaming mode only one signer can be tried and it is important
- * that the methods on the parser are called in the appropriate order.
- * </p>
- * <p>
- * A simple example of usage for an encapsulated signature.
- * </p>
- * <p>
- * Two notes: first, in the example below the validity of
- * the certificate isn't verified, just the fact that one of the certs
- * matches the given signer, and, second, because we are in a streaming
- * mode the order of the operations is important.
- * </p>
- * <pre>
- * CMSSignedDataParser sp = new CMSSignedDataParser(new JcaDigestCalculatorProviderBuilder().setProvider("BC").build(), encapSigData);
- *
- * sp.getSignedContent().drain();
- *
- * Store certStore = sp.getCertificates();
- * SignerInformationStore signers = sp.getSignerInfos();
- *
- * Collection c = signers.getSigners();
- * Iterator it = c.iterator();
- *
- * while (it.hasNext())
- * {
- * SignerInformation signer = (SignerInformation)it.next();
- * Collection certCollection = certStore.getMatches(signer.getSID());
- *
- * Iterator certIt = certCollection.iterator();
- * X509CertificateHolder cert = (X509CertificateHolder)certIt.next();
- *
- * System.out.println("verify returns: " + signer.verify(new JcaSimpleSignerInfoVerifierBuilder().setProvider("BC").build(cert)));
- * }
- * </pre>
- * Note also: this class does not introduce buffering - if you are processing large files you should create
- * the parser with:
- * <pre>
- * CMSSignedDataParser ep = new CMSSignedDataParser(new BufferedInputStream(encapSigData, bufSize));
- * </pre>
- * where bufSize is a suitably large buffer size.
- */
-public class CMSSignedDataParser
- extends CMSContentInfoParser
-{
- private static final CMSSignedHelper HELPER = CMSSignedHelper.INSTANCE;
-
- private SignedDataParser _signedData;
- private ASN1ObjectIdentifier _signedContentType;
- private CMSTypedStream _signedContent;
- private Map digests;
-
- private SignerInformationStore _signerInfoStore;
- private X509Store _attributeStore;
- private ASN1Set _certSet, _crlSet;
- private boolean _isCertCrlParsed;
- private X509Store _certificateStore;
- private X509Store _crlStore;
-
- /**
- * @deprecated use method taking a DigestCalculatorProvider
- */
- public CMSSignedDataParser(
- byte[] sigBlock)
- throws CMSException
- {
- this(createDefaultDigestProvider(), new ByteArrayInputStream(sigBlock));
- }
-
-
- public CMSSignedDataParser(
- DigestCalculatorProvider digestCalculatorProvider,
- byte[] sigBlock)
- throws CMSException
- {
- this(digestCalculatorProvider, new ByteArrayInputStream(sigBlock));
- }
-
- /**
- * @deprecated use method taking digest calculator provider.
- * @param signedContent
- * @param sigBlock
- * @throws CMSException
- */
- public CMSSignedDataParser(
- CMSTypedStream signedContent,
- byte[] sigBlock)
- throws CMSException
- {
- this(createDefaultDigestProvider(), signedContent, new ByteArrayInputStream(sigBlock));
- }
-
- public CMSSignedDataParser(
- DigestCalculatorProvider digestCalculatorProvider,
- CMSTypedStream signedContent,
- byte[] sigBlock)
- throws CMSException
- {
- this(digestCalculatorProvider, signedContent, new ByteArrayInputStream(sigBlock));
- }
-
- private static DigestCalculatorProvider createDefaultDigestProvider()
- throws CMSException
- {
- return new BcDigestCalculatorProvider();
- }
-
- /**
- * base constructor - with encapsulated content
- *
- * @deprecated use method taking a DigestCalculatorProvider
- */
- public CMSSignedDataParser(
- InputStream sigData)
- throws CMSException
- {
- this(createDefaultDigestProvider(), null, sigData);
- }
-
- /**
- * base constructor - with encapsulated content
- */
- public CMSSignedDataParser(
- DigestCalculatorProvider digestCalculatorProvider,
- InputStream sigData)
- throws CMSException
- {
- this(digestCalculatorProvider, null, sigData);
- }
-
- /**
- * base constructor
- *
- * @param signedContent the content that was signed.
- * @param sigData the signature object stream.
- * *
- * @deprecated use method taking a DigestCalculatorProvider
- */
- public CMSSignedDataParser(
- CMSTypedStream signedContent,
- InputStream sigData)
- throws CMSException
- {
- this(createDefaultDigestProvider(), signedContent, sigData);
- }
-
- /**
- * base constructor
- *
- * @param digestCalculatorProvider for generating accumulating digests
- * @param signedContent the content that was signed.
- * @param sigData the signature object stream.
- */
- public CMSSignedDataParser(
- DigestCalculatorProvider digestCalculatorProvider,
- CMSTypedStream signedContent,
- InputStream sigData)
- throws CMSException
- {
- super(sigData);
-
- try
- {
- _signedContent = signedContent;
- _signedData = SignedDataParser.getInstance(_contentInfo.getContent(BERTags.SEQUENCE));
- digests = new HashMap();
-
- ASN1SetParser digAlgs = _signedData.getDigestAlgorithms();
- ASN1Encodable o;
-
- while ((o = digAlgs.readObject()) != null)
- {
- AlgorithmIdentifier algId = AlgorithmIdentifier.getInstance(o);
- try
- {
- DigestCalculator calculator = digestCalculatorProvider.get(algId);
-
- if (calculator != null)
- {
- this.digests.put(algId.getAlgorithm(), calculator);
- }
- }
- catch (OperatorCreationException e)
- {
- // ignore
- }
- }
-
- //
- // If the message is simply a certificate chain message getContent() may return null.
- //
- ContentInfoParser cont = _signedData.getEncapContentInfo();
- ASN1OctetStringParser octs = (ASN1OctetStringParser)
- cont.getContent(BERTags.OCTET_STRING);
-
- if (octs != null)
- {
- CMSTypedStream ctStr = new CMSTypedStream(
- cont.getContentType().getId(), octs.getOctetStream());
-
- if (_signedContent == null)
- {
- _signedContent = ctStr;
- }
- else
- {
- //
- // content passed in, need to read past empty encapsulated content info object if present
- //
- ctStr.drain();
- }
- }
-
- if (signedContent == null)
- {
- _signedContentType = cont.getContentType();
- }
- else
- {
- _signedContentType = _signedContent.getContentType();
- }
- }
- catch (IOException e)
- {
- throw new CMSException("io exception: " + e.getMessage(), e);
- }
-
- if (digests.isEmpty())
- {
- throw new CMSException("no digests could be created for message.");
- }
- }
-
- /**
- * Return the version number for the SignedData object
- *
- * @return the version number
- */
- public int getVersion()
- {
- return _signedData.getVersion().getValue().intValue();
- }
-
- /**
- * return the collection of signers that are associated with the
- * signatures for the message.
- * @throws CMSException
- */
- public SignerInformationStore getSignerInfos()
- throws CMSException
- {
- if (_signerInfoStore == null)
- {
- populateCertCrlSets();
-
- List signerInfos = new ArrayList();
- Map hashes = new HashMap();
-
- Iterator it = digests.keySet().iterator();
- while (it.hasNext())
- {
- Object digestKey = it.next();
-
- hashes.put(digestKey, ((DigestCalculator)digests.get(digestKey)).getDigest());
- }
-
- try
- {
- ASN1SetParser s = _signedData.getSignerInfos();
- ASN1Encodable o;
-
- while ((o = s.readObject()) != null)
- {
- SignerInfo info = SignerInfo.getInstance(o.toASN1Primitive());
-
- byte[] hash = (byte[])hashes.get(info.getDigestAlgorithm().getAlgorithm());
-
- signerInfos.add(new SignerInformation(info, _signedContentType, null, hash));
- }
- }
- catch (IOException e)
- {
- throw new CMSException("io exception: " + e.getMessage(), e);
- }
-
- _signerInfoStore = new SignerInformationStore(signerInfos);
- }
-
- return _signerInfoStore;
- }
-
- /**
- * return a X509Store containing the attribute certificates, if any, contained
- * in this message.
- *
- * @param type type of store to create
- * @param provider name of provider to use
- * @return a store of attribute certificates
- * @exception NoSuchProviderException if the provider requested isn't available.
- * @exception org.bouncycastle.x509.NoSuchStoreException if the store type isn't available.
- * @exception CMSException if a general exception prevents creation of the X509Store
- * @deprecated use getAttributeCertificates()
- */
- public X509Store getAttributeCertificates(
- String type,
- String provider)
- throws NoSuchStoreException, NoSuchProviderException, CMSException
- {
- return getAttributeCertificates(type, CMSUtils.getProvider(provider));
- }
-
- /**
- * return a X509Store containing the attribute certificates, if any, contained
- * in this message.
- *
- * @param type type of store to create
- * @param provider provider to use
- * @return a store of attribute certificates
- * @exception org.bouncycastle.x509.NoSuchStoreException if the store type isn't available.
- * @exception CMSException if a general exception prevents creation of the X509Store
- * @deprecated use getAttributeCertificates()
- */
- public X509Store getAttributeCertificates(
- String type,
- Provider provider)
- throws NoSuchStoreException, CMSException
- {
- if (_attributeStore == null)
- {
- populateCertCrlSets();
-
- _attributeStore = HELPER.createAttributeStore(type, provider, this.getAttributeCertificates());
- }
-
- return _attributeStore;
- }
-
- /**
- * return a X509Store containing the public key certificates, if any, contained
- * in this message.
- *
- * @param type type of store to create
- * @param provider provider to use
- * @return a store of public key certificates
- * @exception NoSuchProviderException if the provider requested isn't available.
- * @exception NoSuchStoreException if the store type isn't available.
- * @exception CMSException if a general exception prevents creation of the X509Store
- * @deprecated use getCertificates()
- */
- public X509Store getCertificates(
- String type,
- String provider)
- throws NoSuchStoreException, NoSuchProviderException, CMSException
- {
- return getCertificates(type, CMSUtils.getProvider(provider));
- }
-
- /**
- * return a X509Store containing the public key certificates, if any, contained
- * in this message.
- *
- * @param type type of store to create
- * @param provider provider to use
- * @return a store of public key certificates
- * @exception NoSuchStoreException if the store type isn't available.
- * @exception CMSException if a general exception prevents creation of the X509Store
- * @deprecated use getCertificates()
- */
- public X509Store getCertificates(
- String type,
- Provider provider)
- throws NoSuchStoreException, CMSException
- {
- if (_certificateStore == null)
- {
- populateCertCrlSets();
-
- _certificateStore = HELPER.createCertificateStore(type, provider, this.getCertificates());
- }
-
- return _certificateStore;
- }
-
- /**
- * return a X509Store containing CRLs, if any, contained
- * in this message.
- *
- * @param type type of store to create
- * @param provider name of provider to use
- * @return a store of CRLs
- * @exception NoSuchProviderException if the provider requested isn't available.
- * @exception NoSuchStoreException if the store type isn't available.
- * @exception CMSException if a general exception prevents creation of the X509Store
- * @deprecated use getCRLs()
- */
- public X509Store getCRLs(
- String type,
- String provider)
- throws NoSuchStoreException, NoSuchProviderException, CMSException
- {
- return getCRLs(type, CMSUtils.getProvider(provider));
- }
-
- /**
- * return a X509Store containing CRLs, if any, contained
- * in this message.
- *
- * @param type type of store to create
- * @param provider provider to use
- * @return a store of CRLs
- * @exception NoSuchStoreException if the store type isn't available.
- * @exception CMSException if a general exception prevents creation of the X509Store
- * @deprecated use getCRLs()
- */
- public X509Store getCRLs(
- String type,
- Provider provider)
- throws NoSuchStoreException, CMSException
- {
- if (_crlStore == null)
- {
- populateCertCrlSets();
-
- _crlStore = HELPER.createCRLsStore(type, provider, getCRLs());
- }
-
- return _crlStore;
- }
-
- /**
- * return a CertStore containing the certificates and CRLs associated with
- * this message.
- *
- * @exception NoSuchProviderException if the provider requested isn't available.
- * @exception NoSuchAlgorithmException if the cert store isn't available.
- * @exception CMSException if a general exception prevents creation of the CertStore
- * @deprecated use getCertificates() and org.bouncycastle.cert.jcajce.JcaCertStoreBuilder
- */
- public CertStore getCertificatesAndCRLs(
- String type,
- String provider)
- throws NoSuchAlgorithmException, NoSuchProviderException, CMSException
- {
- return getCertificatesAndCRLs(type, CMSUtils.getProvider(provider));
- }
-
- /**
- * return a CertStore containing the certificates and CRLs associated with
- * this message.
- *
- * @exception NoSuchProviderException if the provider requested isn't available.
- * @exception NoSuchAlgorithmException if the cert store isn't available.
- * @exception CMSException if a general exception prevents creation of the CertStore
- * @deprecated use getCertificates() and org.bouncycastle.cert.jcajce.JcaCertStoreBuilder
- */
- public CertStore getCertificatesAndCRLs(
- String type,
- Provider provider)
- throws NoSuchAlgorithmException, NoSuchProviderException, CMSException
- {
- populateCertCrlSets();
-
- try
- {
- JcaCertStoreBuilder certStoreBuilder = new JcaCertStoreBuilder().setType(type);
-
- if (provider != null)
- {
- certStoreBuilder.setProvider(provider);
- }
-
- certStoreBuilder.addCertificates(this.getCertificates());
- certStoreBuilder.addCRLs(this.getCRLs());
-
- return certStoreBuilder.build();
- }
- catch (NoSuchAlgorithmException e)
- {
- throw e;
- }
- catch (Exception e)
- {
- throw new CMSException("exception creating CertStore: " + e.getMessage(), e);
- }
- }
-
- /**
- * Return any X.509 certificate objects in this SignedData structure as a Store of X509CertificateHolder objects.
- *
- * @return a Store of X509CertificateHolder objects.
- */
- public Store getCertificates()
- throws CMSException
- {
- populateCertCrlSets();
-
- return HELPER.getCertificates(_certSet);
- }
-
- /**
- * Return any X.509 CRL objects in this SignedData structure as a Store of X509CRLHolder objects.
- *
- * @return a Store of X509CRLHolder objects.
- */
- public Store getCRLs()
- throws CMSException
- {
- populateCertCrlSets();
-
- return HELPER.getCRLs(_crlSet);
- }
-
- /**
- * Return any X.509 attribute certificate objects in this SignedData structure as a Store of X509AttributeCertificateHolder objects.
- *
- * @return a Store of X509AttributeCertificateHolder objects.
- */
- public Store getAttributeCertificates()
- throws CMSException
- {
- populateCertCrlSets();
-
- return HELPER.getAttributeCertificates(_certSet);
- }
-
- /**
- * Return any OtherRevocationInfo OtherRevInfo objects of the type indicated by otherRevocationInfoFormat in
- * this SignedData structure.
- *
- * @param otherRevocationInfoFormat OID of the format type been looked for.
- *
- * @return a Store of ASN1Encodable objects representing any objects of otherRevocationInfoFormat found.
- */
- public Store getOtherRevocationInfo(ASN1ObjectIdentifier otherRevocationInfoFormat)
- throws CMSException
- {
- populateCertCrlSets();
-
- return HELPER.getOtherRevocationInfo(otherRevocationInfoFormat, _crlSet);
- }
-
- private void populateCertCrlSets()
- throws CMSException
- {
- if (_isCertCrlParsed)
- {
- return;
- }
-
- _isCertCrlParsed = true;
-
- try
- {
- // care! Streaming - these must be done in exactly this order.
- _certSet = getASN1Set(_signedData.getCertificates());
- _crlSet = getASN1Set(_signedData.getCrls());
- }
- catch (IOException e)
- {
- throw new CMSException("problem parsing cert/crl sets", e);
- }
- }
-
- /**
- * Return the a string representation of the OID associated with the
- * encapsulated content info structure carried in the signed data.
- *
- * @return the OID for the content type.
- */
- public String getSignedContentTypeOID()
- {
- return _signedContentType.getId();
- }
-
- public CMSTypedStream getSignedContent()
- {
- if (_signedContent == null)
- {
- return null;
- }
-
- InputStream digStream = CMSUtils.attachDigestsToInputStream(
- digests.values(), _signedContent.getContentStream());
-
- return new CMSTypedStream(_signedContent.getContentType(), digStream);
- }
-
- /**
- * Replace the signerinformation store associated with the passed
- * in message contained in the stream original with the new one passed in.
- * You would probably only want to do this if you wanted to change the unsigned
- * attributes associated with a signer, or perhaps delete one.
- * <p>
- * The output stream is returned unclosed.
- * </p>
- * @param original the signed data stream to be used as a base.
- * @param signerInformationStore the new signer information store to use.
- * @param out the stream to write the new signed data object to.
- * @return out.
- */
- public static OutputStream replaceSigners(
- InputStream original,
- SignerInformationStore signerInformationStore,
- OutputStream out)
- throws CMSException, IOException
- {
- ASN1StreamParser in = new ASN1StreamParser(original);
- ContentInfoParser contentInfo = new ContentInfoParser((ASN1SequenceParser)in.readObject());
- SignedDataParser signedData = SignedDataParser.getInstance(contentInfo.getContent(BERTags.SEQUENCE));
-
- BERSequenceGenerator sGen = new BERSequenceGenerator(out);
-
- sGen.addObject(CMSObjectIdentifiers.signedData);
-
- BERSequenceGenerator sigGen = new BERSequenceGenerator(sGen.getRawOutputStream(), 0, true);
-
- // version number
- sigGen.addObject(signedData.getVersion());
-
- // digests
- signedData.getDigestAlgorithms().toASN1Primitive(); // skip old ones
-
- ASN1EncodableVector digestAlgs = new ASN1EncodableVector();
-
- for (Iterator it = signerInformationStore.getSigners().iterator(); it.hasNext();)
- {
- SignerInformation signer = (SignerInformation)it.next();
- digestAlgs.add(CMSSignedHelper.INSTANCE.fixAlgID(signer.getDigestAlgorithmID()));
- }
-
- sigGen.getRawOutputStream().write(new DERSet(digestAlgs).getEncoded());
-
- // encap content info
- ContentInfoParser encapContentInfo = signedData.getEncapContentInfo();
-
- BERSequenceGenerator eiGen = new BERSequenceGenerator(sigGen.getRawOutputStream());
-
- eiGen.addObject(encapContentInfo.getContentType());
-
- pipeEncapsulatedOctetString(encapContentInfo, eiGen.getRawOutputStream());
-
- eiGen.close();
-
-
- writeSetToGeneratorTagged(sigGen, signedData.getCertificates(), 0);
- writeSetToGeneratorTagged(sigGen, signedData.getCrls(), 1);
-
-
- ASN1EncodableVector signerInfos = new ASN1EncodableVector();
- for (Iterator it = signerInformationStore.getSigners().iterator(); it.hasNext();)
- {
- SignerInformation signer = (SignerInformation)it.next();
-
- signerInfos.add(signer.toASN1Structure());
- }
-
- sigGen.getRawOutputStream().write(new DERSet(signerInfos).getEncoded());
-
- sigGen.close();
-
- sGen.close();
-
- return out;
- }
-
- /**
- * Replace the certificate and CRL information associated with this
- * CMSSignedData object with the new one passed in.
- * <p>
- * The output stream is returned unclosed.
- * </p>
- * @param original the signed data stream to be used as a base.
- * @param certsAndCrls the new certificates and CRLs to be used.
- * @param out the stream to write the new signed data object to.
- * @return out.
- * @exception CMSException if there is an error processing the CertStore
- * @deprecated use method that takes Store objects.
- */
- public static OutputStream replaceCertificatesAndCRLs(
- InputStream original,
- CertStore certsAndCrls,
- OutputStream out)
- throws CMSException, IOException
- {
- ASN1StreamParser in = new ASN1StreamParser(original);
- ContentInfoParser contentInfo = new ContentInfoParser((ASN1SequenceParser)in.readObject());
- SignedDataParser signedData = SignedDataParser.getInstance(contentInfo.getContent(BERTags.SEQUENCE));
-
- BERSequenceGenerator sGen = new BERSequenceGenerator(out);
-
- sGen.addObject(CMSObjectIdentifiers.signedData);
-
- BERSequenceGenerator sigGen = new BERSequenceGenerator(sGen.getRawOutputStream(), 0, true);
-
- // version number
- sigGen.addObject(signedData.getVersion());
-
- // digests
- sigGen.getRawOutputStream().write(signedData.getDigestAlgorithms().toASN1Primitive().getEncoded());
-
- // encap content info
- ContentInfoParser encapContentInfo = signedData.getEncapContentInfo();
-
- BERSequenceGenerator eiGen = new BERSequenceGenerator(sigGen.getRawOutputStream());
-
- eiGen.addObject(encapContentInfo.getContentType());
-
- pipeEncapsulatedOctetString(encapContentInfo, eiGen.getRawOutputStream());
-
- eiGen.close();
-
- //
- // skip existing certs and CRLs
- //
- getASN1Set(signedData.getCertificates());
- getASN1Set(signedData.getCrls());
-
- //
- // replace the certs and crls in the SignedData object
- //
- ASN1Set certs;
-
- try
- {
- certs = CMSUtils.createBerSetFromList(CMSUtils.getCertificatesFromStore(certsAndCrls));
- }
- catch (CertStoreException e)
- {
- throw new CMSException("error getting certs from certStore", e);
- }
-
- if (certs.size() > 0)
- {
- sigGen.getRawOutputStream().write(new DERTaggedObject(false, 0, certs).getEncoded());
- }
-
- ASN1Set crls;
-
- try
- {
- crls = CMSUtils.createBerSetFromList(CMSUtils.getCRLsFromStore(certsAndCrls));
- }
- catch (CertStoreException e)
- {
- throw new CMSException("error getting crls from certStore", e);
- }
-
- if (crls.size() > 0)
- {
- sigGen.getRawOutputStream().write(new DERTaggedObject(false, 1, crls).getEncoded());
- }
-
- sigGen.getRawOutputStream().write(signedData.getSignerInfos().toASN1Primitive().getEncoded());
-
- sigGen.close();
-
- sGen.close();
-
- return out;
- }
-
- /**
- * Replace the certificate and CRL information associated with this
- * CMSSignedData object with the new one passed in.
- * <p>
- * The output stream is returned unclosed.
- * </p>
- * @param original the signed data stream to be used as a base.
- * @param certs new certificates to be used, if any.
- * @param crls new CRLs to be used, if any.
- * @param attrCerts new attribute certificates to be used, if any.
- * @param out the stream to write the new signed data object to.
- * @return out.
- * @exception CMSException if there is an error processing the CertStore
- */
- public static OutputStream replaceCertificatesAndCRLs(
- InputStream original,
- Store certs,
- Store crls,
- Store attrCerts,
- OutputStream out)
- throws CMSException, IOException
- {
- ASN1StreamParser in = new ASN1StreamParser(original);
- ContentInfoParser contentInfo = new ContentInfoParser((ASN1SequenceParser)in.readObject());
- SignedDataParser signedData = SignedDataParser.getInstance(contentInfo.getContent(BERTags.SEQUENCE));
-
- BERSequenceGenerator sGen = new BERSequenceGenerator(out);
-
- sGen.addObject(CMSObjectIdentifiers.signedData);
-
- BERSequenceGenerator sigGen = new BERSequenceGenerator(sGen.getRawOutputStream(), 0, true);
-
- // version number
- sigGen.addObject(signedData.getVersion());
-
- // digests
- sigGen.getRawOutputStream().write(signedData.getDigestAlgorithms().toASN1Primitive().getEncoded());
-
- // encap content info
- ContentInfoParser encapContentInfo = signedData.getEncapContentInfo();
-
- BERSequenceGenerator eiGen = new BERSequenceGenerator(sigGen.getRawOutputStream());
-
- eiGen.addObject(encapContentInfo.getContentType());
-
- pipeEncapsulatedOctetString(encapContentInfo, eiGen.getRawOutputStream());
-
- eiGen.close();
-
- //
- // skip existing certs and CRLs
- //
- getASN1Set(signedData.getCertificates());
- getASN1Set(signedData.getCrls());
-
- //
- // replace the certs and crls in the SignedData object
- //
- if (certs != null || attrCerts != null)
- {
- List certificates = new ArrayList();
-
- if (certs != null)
- {
- certificates.addAll(CMSUtils.getCertificatesFromStore(certs));
- }
- if (attrCerts != null)
- {
- certificates.addAll(CMSUtils.getAttributeCertificatesFromStore(attrCerts));
- }
-
- ASN1Set asn1Certs = CMSUtils.createBerSetFromList(certificates);
-
- if (asn1Certs.size() > 0)
- {
- sigGen.getRawOutputStream().write(new DERTaggedObject(false, 0, asn1Certs).getEncoded());
- }
- }
-
- if (crls != null)
- {
- ASN1Set asn1Crls = CMSUtils.createBerSetFromList(CMSUtils.getCRLsFromStore(crls));
-
- if (asn1Crls.size() > 0)
- {
- sigGen.getRawOutputStream().write(new DERTaggedObject(false, 1, asn1Crls).getEncoded());
- }
- }
-
- sigGen.getRawOutputStream().write(signedData.getSignerInfos().toASN1Primitive().getEncoded());
-
- sigGen.close();
-
- sGen.close();
-
- return out;
- }
-
- private static void writeSetToGeneratorTagged(
- ASN1Generator asn1Gen,
- ASN1SetParser asn1SetParser,
- int tagNo)
- throws IOException
- {
- ASN1Set asn1Set = getASN1Set(asn1SetParser);
-
- if (asn1Set != null)
- {
- if (asn1SetParser instanceof BERSetParser)
- {
- asn1Gen.getRawOutputStream().write(new BERTaggedObject(false, tagNo, asn1Set).getEncoded());
- }
- else
- {
- asn1Gen.getRawOutputStream().write(new DERTaggedObject(false, tagNo, asn1Set).getEncoded());
- }
- }
- }
-
- private static ASN1Set getASN1Set(
- ASN1SetParser asn1SetParser)
- {
- return asn1SetParser == null
- ? null
- : ASN1Set.getInstance(asn1SetParser.toASN1Primitive());
- }
-
- private static void pipeEncapsulatedOctetString(ContentInfoParser encapContentInfo,
- OutputStream rawOutputStream) throws IOException
- {
- ASN1OctetStringParser octs = (ASN1OctetStringParser)
- encapContentInfo.getContent(BERTags.OCTET_STRING);
-
- if (octs != null)
- {
- pipeOctetString(octs, rawOutputStream);
- }
-
-// BERTaggedObjectParser contentObject = (BERTaggedObjectParser)encapContentInfo.getContentObject();
-// if (contentObject != null)
-// {
-// // Handle IndefiniteLengthInputStream safely
-// InputStream input = ASN1StreamParser.getSafeRawInputStream(contentObject.getContentStream(true));
-//
-// // TODO BerTaggedObjectGenerator?
-// BEROutputStream berOut = new BEROutputStream(rawOutputStream);
-// berOut.write(DERTags.CONSTRUCTED | DERTags.TAGGED | 0);
-// berOut.write(0x80);
-//
-// pipeRawOctetString(input, rawOutputStream);
-//
-// berOut.write(0x00);
-// berOut.write(0x00);
-//
-// input.close();
-// }
- }
-
- private static void pipeOctetString(
- ASN1OctetStringParser octs,
- OutputStream output)
- throws IOException
- {
- // TODO Allow specification of a specific fragment size?
- OutputStream outOctets = CMSUtils.createBEROctetOutputStream(
- output, 0, true, 0);
- Streams.pipeAll(octs.getOctetStream(), outOctets);
- outOctets.close();
- }
-
-// private static void pipeRawOctetString(
-// InputStream rawInput,
-// OutputStream rawOutput)
-// throws IOException
-// {
-// InputStream tee = new TeeInputStream(rawInput, rawOutput);
-// ASN1StreamParser sp = new ASN1StreamParser(tee);
-// ASN1OctetStringParser octs = (ASN1OctetStringParser)sp.readObject();
-// Streams.drain(octs.getOctetStream());
-// }
-}
diff --git a/pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSSignedGenerator.java b/pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSSignedGenerator.java
deleted file mode 100644
index ad06faf2..00000000
--- a/pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSSignedGenerator.java
+++ /dev/null
@@ -1,362 +0,0 @@
-package org.bouncycastle.cms;
-
-import java.io.IOException;
-import java.security.PrivateKey;
-import java.security.SecureRandom;
-import org.bouncycastle.jce.cert.CertStore;
-import org.bouncycastle.jce.cert.CertStoreException;
-import java.security.interfaces.DSAPrivateKey;
-import java.security.interfaces.RSAPrivateKey;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.bouncycastle.asn1.ASN1Encodable;
-import org.bouncycastle.asn1.ASN1ObjectIdentifier;
-import org.bouncycastle.asn1.ASN1Primitive;
-import org.bouncycastle.asn1.ASN1Set;
-import org.bouncycastle.asn1.DERSet;
-import org.bouncycastle.asn1.DERTaggedObject;
-import org.bouncycastle.asn1.cms.AttributeTable;
-import org.bouncycastle.asn1.cms.CMSObjectIdentifiers;
-import org.bouncycastle.asn1.cms.OtherRevocationInfoFormat;
-import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
-import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
-import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
-import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
-import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
-import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
-import org.bouncycastle.asn1.x509.AttributeCertificate;
-import org.bouncycastle.asn1.x9.X9ObjectIdentifiers;
-import org.bouncycastle.cert.X509AttributeCertificateHolder;
-import org.bouncycastle.cert.X509CRLHolder;
-import org.bouncycastle.cert.X509CertificateHolder;
-import org.bouncycastle.jce.interfaces.GOST3410PrivateKey;
-import org.bouncycastle.util.Store;
-import org.bouncycastle.x509.X509AttributeCertificate;
-import org.bouncycastle.x509.X509Store;
-
-public class CMSSignedGenerator
-{
- /**
- * Default type for the signed data.
- */
- public static final String DATA = CMSObjectIdentifiers.data.getId();
-
- public static final String DIGEST_SHA1 = OIWObjectIdentifiers.idSHA1.getId();
- public static final String DIGEST_SHA224 = NISTObjectIdentifiers.id_sha224.getId();
- public static final String DIGEST_SHA256 = NISTObjectIdentifiers.id_sha256.getId();
- public static final String DIGEST_SHA384 = NISTObjectIdentifiers.id_sha384.getId();
- public static final String DIGEST_SHA512 = NISTObjectIdentifiers.id_sha512.getId();
- public static final String DIGEST_MD5 = PKCSObjectIdentifiers.md5.getId();
- public static final String DIGEST_GOST3411 = CryptoProObjectIdentifiers.gostR3411.getId();
- public static final String DIGEST_RIPEMD128 = TeleTrusTObjectIdentifiers.ripemd128.getId();
- public static final String DIGEST_RIPEMD160 = TeleTrusTObjectIdentifiers.ripemd160.getId();
- public static final String DIGEST_RIPEMD256 = TeleTrusTObjectIdentifiers.ripemd256.getId();
-
- public static final String ENCRYPTION_RSA = PKCSObjectIdentifiers.rsaEncryption.getId();
- public static final String ENCRYPTION_DSA = X9ObjectIdentifiers.id_dsa_with_sha1.getId();
- public static final String ENCRYPTION_ECDSA = X9ObjectIdentifiers.ecdsa_with_SHA1.getId();
- public static final String ENCRYPTION_RSA_PSS = PKCSObjectIdentifiers.id_RSASSA_PSS.getId();
- public static final String ENCRYPTION_GOST3410 = CryptoProObjectIdentifiers.gostR3410_94.getId();
- public static final String ENCRYPTION_ECGOST3410 = CryptoProObjectIdentifiers.gostR3410_2001.getId();
-
- private static final String ENCRYPTION_ECDSA_WITH_SHA1 = X9ObjectIdentifiers.ecdsa_with_SHA1.getId();
- private static final String ENCRYPTION_ECDSA_WITH_SHA224 = X9ObjectIdentifiers.ecdsa_with_SHA224.getId();
- private static final String ENCRYPTION_ECDSA_WITH_SHA256 = X9ObjectIdentifiers.ecdsa_with_SHA256.getId();
- private static final String ENCRYPTION_ECDSA_WITH_SHA384 = X9ObjectIdentifiers.ecdsa_with_SHA384.getId();
- private static final String ENCRYPTION_ECDSA_WITH_SHA512 = X9ObjectIdentifiers.ecdsa_with_SHA512.getId();
-
- private static final Set NO_PARAMS = new HashSet();
- private static final Map EC_ALGORITHMS = new HashMap();
-
- static
- {
- NO_PARAMS.add(ENCRYPTION_DSA);
- NO_PARAMS.add(ENCRYPTION_ECDSA);
- NO_PARAMS.add(ENCRYPTION_ECDSA_WITH_SHA1);
- NO_PARAMS.add(ENCRYPTION_ECDSA_WITH_SHA224);
- NO_PARAMS.add(ENCRYPTION_ECDSA_WITH_SHA256);
- NO_PARAMS.add(ENCRYPTION_ECDSA_WITH_SHA384);
- NO_PARAMS.add(ENCRYPTION_ECDSA_WITH_SHA512);
-
- EC_ALGORITHMS.put(DIGEST_SHA1, ENCRYPTION_ECDSA_WITH_SHA1);
- EC_ALGORITHMS.put(DIGEST_SHA224, ENCRYPTION_ECDSA_WITH_SHA224);
- EC_ALGORITHMS.put(DIGEST_SHA256, ENCRYPTION_ECDSA_WITH_SHA256);
- EC_ALGORITHMS.put(DIGEST_SHA384, ENCRYPTION_ECDSA_WITH_SHA384);
- EC_ALGORITHMS.put(DIGEST_SHA512, ENCRYPTION_ECDSA_WITH_SHA512);
- }
-
- protected List certs = new ArrayList();
- protected List crls = new ArrayList();
- protected List _signers = new ArrayList();
- protected List signerGens = new ArrayList();
- protected Map digests = new HashMap();
-
- protected final SecureRandom rand;
-
- /**
- * base constructor
- */
- protected CMSSignedGenerator()
- {
- this(new SecureRandom());
- }
-
- /**
- * constructor allowing specific source of randomness
- * @param rand instance of SecureRandom to use
- */
- protected CMSSignedGenerator(
- SecureRandom rand)
- {
- this.rand = rand;
- }
-
- protected String getEncOID(
- PrivateKey key,
- String digestOID)
- {
- String encOID = null;
-
- if (key instanceof RSAPrivateKey || "RSA".equalsIgnoreCase(key.getAlgorithm()))
- {
- encOID = ENCRYPTION_RSA;
- }
- else if (key instanceof DSAPrivateKey || "DSA".equalsIgnoreCase(key.getAlgorithm()))
- {
- encOID = ENCRYPTION_DSA;
- if (!digestOID.equals(DIGEST_SHA1))
- {
- throw new IllegalArgumentException("can't mix DSA with anything but SHA1");
- }
- }
- else if ("ECDSA".equalsIgnoreCase(key.getAlgorithm()) || "EC".equalsIgnoreCase(key.getAlgorithm()))
- {
- encOID = (String)EC_ALGORITHMS.get(digestOID);
- if (encOID == null)
- {
- throw new IllegalArgumentException("can't mix ECDSA with anything but SHA family digests");
- }
- }
- else if (key instanceof GOST3410PrivateKey || "GOST3410".equalsIgnoreCase(key.getAlgorithm()))
- {
- encOID = ENCRYPTION_GOST3410;
- }
- else if ("ECGOST3410".equalsIgnoreCase(key.getAlgorithm()))
- {
- encOID = ENCRYPTION_ECGOST3410;
- }
-
- return encOID;
- }
-
- protected Map getBaseParameters(ASN1ObjectIdentifier contentType, AlgorithmIdentifier digAlgId, byte[] hash)
- {
- Map param = new HashMap();
- param.put(CMSAttributeTableGenerator.CONTENT_TYPE, contentType);
- param.put(CMSAttributeTableGenerator.DIGEST_ALGORITHM_IDENTIFIER, digAlgId);
- param.put(CMSAttributeTableGenerator.DIGEST, hash.clone());
- return param;
- }
-
- protected ASN1Set getAttributeSet(
- AttributeTable attr)
- {
- if (attr != null)
- {
- return new DERSet(attr.toASN1EncodableVector());
- }
-
- return null;
- }
-
- /**
- * add the certificates and CRLs contained in the given CertStore
- * to the pool that will be included in the encoded signature block.
- * <p>
- * Note: this assumes the CertStore will support null in the get
- * methods.
- * @param certStore CertStore containing the public key certificates and CRLs
- * @throws java.security.cert.CertStoreException if an issue occurs processing the CertStore
- * @throws CMSException if an issue occurse transforming data from the CertStore into the message
- * @deprecated use addCertificates and addCRLs
- */
- public void addCertificatesAndCRLs(
- CertStore certStore)
- throws CertStoreException, CMSException
- {
- certs.addAll(CMSUtils.getCertificatesFromStore(certStore));
- crls.addAll(CMSUtils.getCRLsFromStore(certStore));
- }
-
- /**
- * Add a certificate to the certificate set to be included with the generated SignedData message.
- *
- * @param certificate the certificate to be included.
- * @throws CMSException if the certificate cannot be encoded for adding.
- */
- public void addCertificate(
- X509CertificateHolder certificate)
- throws CMSException
- {
- certs.add(certificate.toASN1Structure());
- }
-
- /**
- * Add the certificates in certStore to the certificate set to be included with the generated SignedData message.
- *
- * @param certStore the store containing the certificates to be included.
- * @throws CMSException if the certificates cannot be encoded for adding.
- */
- public void addCertificates(
- Store certStore)
- throws CMSException
- {
- certs.addAll(CMSUtils.getCertificatesFromStore(certStore));
- }
-
- /**
- * Add a CRL to the CRL set to be included with the generated SignedData message.
- *
- * @param crl the CRL to be included.
- */
- public void addCRL(X509CRLHolder crl)
- {
- crls.add(crl.toASN1Structure());
- }
-
- /**
- * Add the CRLs in crlStore to the CRL set to be included with the generated SignedData message.
- *
- * @param crlStore the store containing the CRLs to be included.
- * @throws CMSException if the CRLs cannot be encoded for adding.
- */
- public void addCRLs(
- Store crlStore)
- throws CMSException
- {
- crls.addAll(CMSUtils.getCRLsFromStore(crlStore));
- }
-
- /**
- * Add the attribute certificates in attrStore to the certificate set to be included with the generated SignedData message.
- *
- * @param attrCert the store containing the certificates to be included.
- * @throws CMSException if the attribute certificate cannot be encoded for adding.
- */
- public void addAttributeCertificate(
- X509AttributeCertificateHolder attrCert)
- throws CMSException
- {
- certs.add(new DERTaggedObject(false, 2, attrCert.toASN1Structure()));
- }
-
- /**
- * Add the attribute certificates in attrStore to the certificate set to be included with the generated SignedData message.
- *
- * @param attrStore the store containing the certificates to be included.
- * @throws CMSException if the attribute certificate cannot be encoded for adding.
- */
- public void addAttributeCertificates(
- Store attrStore)
- throws CMSException
- {
- certs.addAll(CMSUtils.getAttributeCertificatesFromStore(attrStore));
- }
-
- /**
- * Add a single instance of otherRevocationData to the CRL set to be included with the generated SignedData message.
- *
- * @param otherRevocationInfoFormat the OID specifying the format of the otherRevocationInfo data.
- * @param otherRevocationInfo the otherRevocationInfo ASN.1 structure.
- */
- public void addOtherRevocationInfo(
- ASN1ObjectIdentifier otherRevocationInfoFormat,
- ASN1Encodable otherRevocationInfo)
- {
- crls.add(new DERTaggedObject(false, 1, new OtherRevocationInfoFormat(otherRevocationInfoFormat, otherRevocationInfo)));
- }
-
- /**
- * Add a Store of otherRevocationData to the CRL set to be included with the generated SignedData message.
- *
- * @param otherRevocationInfoFormat the OID specifying the format of the otherRevocationInfo data.
- * @param otherRevocationInfos a Store of otherRevocationInfo data to add.
- */
- public void addOtherRevocationInfo(
- ASN1ObjectIdentifier otherRevocationInfoFormat,
- Store otherRevocationInfos)
- {
- crls.addAll(CMSUtils.getOthersFromStore(otherRevocationInfoFormat, otherRevocationInfos));
- }
-
- /**
- * Add the attribute certificates contained in the passed in store to the
- * generator.
- *
- * @param store a store of Version 2 attribute certificates
- * @throws CMSException if an error occurse processing the store.
- * @deprecated use basic Store method
- */
- public void addAttributeCertificates(
- X509Store store)
- throws CMSException
- {
- try
- {
- for (Iterator it = store.getMatches(null).iterator(); it.hasNext();)
- {
- X509AttributeCertificate attrCert = (X509AttributeCertificate)it.next();
-
- certs.add(new DERTaggedObject(false, 2,
- AttributeCertificate.getInstance(ASN1Primitive.fromByteArray(attrCert.getEncoded()))));
- }
- }
- catch (IllegalArgumentException e)
- {
- throw new CMSException("error processing attribute certs", e);
- }
- catch (IOException e)
- {
- throw new CMSException("error processing attribute certs", e);
- }
- }
-
-
- /**
- * Add a store of precalculated signers to the generator.
- *
- * @param signerStore store of signers
- */
- public void addSigners(
- SignerInformationStore signerStore)
- {
- Iterator it = signerStore.getSigners().iterator();
-
- while (it.hasNext())
- {
- _signers.add(it.next());
- }
- }
-
- public void addSignerInfoGenerator(SignerInfoGenerator infoGen)
- {
- signerGens.add(infoGen);
- }
-
- /**
- * Return a map of oids and byte arrays representing the digests calculated on the content during
- * the last generate.
- *
- * @return a map of oids (as String objects) and byte[] representing digests.
- */
- public Map getGeneratedDigests()
- {
- return new HashMap(digests);
- }
-}
diff --git a/pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSUtils.java b/pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSUtils.java
deleted file mode 100644
index 1f3ee5eb..00000000
--- a/pkix/src/main/jdk1.3/org/bouncycastle/cms/CMSUtils.java
+++ /dev/null
@@ -1,366 +0,0 @@
-package org.bouncycastle.cms;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.security.NoSuchProviderException;
-import java.security.Provider;
-import java.security.Security;
-import java.security.cert.CRLException;
-import org.bouncycastle.jce.cert.CertStore;
-import org.bouncycastle.jce.cert.CertStoreException;
-import java.security.cert.CertificateEncodingException;
-import java.security.cert.X509CRL;
-import java.security.cert.X509Certificate;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-
-import org.bouncycastle.asn1.ASN1Encodable;
-import org.bouncycastle.asn1.ASN1EncodableVector;
-import org.bouncycastle.asn1.ASN1InputStream;
-import org.bouncycastle.asn1.ASN1ObjectIdentifier;
-import org.bouncycastle.asn1.ASN1Primitive;
-import org.bouncycastle.asn1.ASN1Set;
-import org.bouncycastle.asn1.BEROctetStringGenerator;
-import org.bouncycastle.asn1.BERSet;
-import org.bouncycastle.asn1.DERSet;
-import org.bouncycastle.asn1.DERTaggedObject;
-import org.bouncycastle.asn1.cms.CMSObjectIdentifiers;
-import org.bouncycastle.asn1.cms.ContentInfo;
-import org.bouncycastle.asn1.cms.IssuerAndSerialNumber;
-import org.bouncycastle.asn1.cms.OtherRecipientInfo;
-import org.bouncycastle.asn1.cms.OtherRevocationInfoFormat;
-import org.bouncycastle.asn1.ocsp.OCSPResponse;
-import org.bouncycastle.asn1.ocsp.OCSPResponseStatus;
-import org.bouncycastle.asn1.x509.Certificate;
-import org.bouncycastle.asn1.x509.CertificateList;
-import org.bouncycastle.asn1.x509.TBSCertificate;
-import org.bouncycastle.cert.X509AttributeCertificateHolder;
-import org.bouncycastle.cert.X509CRLHolder;
-import org.bouncycastle.cert.X509CertificateHolder;
-import org.bouncycastle.operator.DigestCalculator;
-import org.bouncycastle.util.Store;
-import org.bouncycastle.util.io.Streams;
-import org.bouncycastle.util.io.TeeInputStream;
-import org.bouncycastle.util.io.TeeOutputStream;
-
-class CMSUtils
-{
- static ContentInfo readContentInfo(
- byte[] input)
- throws CMSException
- {
- // enforce limit checking as from a byte array
- return readContentInfo(new ASN1InputStream(input));
- }
-
- static ContentInfo readContentInfo(
- InputStream input)
- throws CMSException
- {
- // enforce some limit checking
- return readContentInfo(new ASN1InputStream(input));
- }
-
- static List getCertificatesFromStore(CertStore certStore)
- throws CertStoreException, CMSException
- {
- List certs = new ArrayList();
-
- try
- {
- for (Iterator it = certStore.getCertificates(null).iterator(); it.hasNext();)
- {
- X509Certificate c = (X509Certificate)it.next();
-
- certs.add(Certificate.getInstance(ASN1Primitive.fromByteArray(c.getEncoded())));
- }
-
- return certs;
- }
- catch (IllegalArgumentException e)
- {
- throw new CMSException("error processing certs", e);
- }
- catch (IOException e)
- {
- throw new CMSException("error processing certs", e);
- }
- catch (CertificateEncodingException e)
- {
- throw new CMSException("error encoding certs", e);
- }
- }
-
- static List getCertificatesFromStore(Store certStore)
- throws CMSException
- {
- List certs = new ArrayList();
-
- try
- {
- for (Iterator it = certStore.getMatches(null).iterator(); it.hasNext();)
- {
- X509CertificateHolder c = (X509CertificateHolder)it.next();
-
- certs.add(c.toASN1Structure());
- }
-
- return certs;
- }
- catch (ClassCastException e)
- {
- throw new CMSException("error processing certs", e);
- }
- }
-
- static List getAttributeCertificatesFromStore(Store attrStore)
- throws CMSException
- {
- List certs = new ArrayList();
-
- try
- {
- for (Iterator it = attrStore.getMatches(null).iterator(); it.hasNext();)
- {
- X509AttributeCertificateHolder attrCert = (X509AttributeCertificateHolder)it.next();
-
- certs.add(new DERTaggedObject(false, 2, attrCert.toASN1Structure()));
- }
-
- return certs;
- }
- catch (ClassCastException e)
- {
- throw new CMSException("error processing certs", e);
- }
- }
-
- static List getCRLsFromStore(CertStore certStore)
- throws CertStoreException, CMSException
- {
- List crls = new ArrayList();
-
- try
- {
- for (Iterator it = certStore.getCRLs(null).iterator(); it.hasNext();)
- {
- X509CRL c = (X509CRL)it.next();
-
- crls.add(CertificateList.getInstance(ASN1Primitive.fromByteArray(c.getEncoded())));
- }
-
- return crls;
- }
- catch (IllegalArgumentException e)
- {
- throw new CMSException("error processing crls", e);
- }
- catch (IOException e)
- {
- throw new CMSException("error processing crls", e);
- }
- catch (CRLException e)
- {
- throw new CMSException("error encoding crls", e);
- }
- }
-
- static List getCRLsFromStore(Store crlStore)
- throws CMSException
- {
- List certs = new ArrayList();
-
- try
- {
- for (Iterator it = crlStore.getMatches(null).iterator(); it.hasNext();)
- {
- X509CRLHolder c = (X509CRLHolder)it.next();
-
- certs.add(c.toASN1Structure());
- }
-
- return certs;
- }
- catch (ClassCastException e)
- {
- throw new CMSException("error processing certs", e);
- }
- }
-
- static Collection getOthersFromStore(ASN1ObjectIdentifier otherRevocationInfoFormat, Store otherRevocationInfos)
- {
- List others = new ArrayList();
-
- for (Iterator it = otherRevocationInfos.getMatches(null).iterator(); it.hasNext();)
- {
- ASN1Encodable info = (ASN1Encodable)it.next();
-
- if (CMSObjectIdentifiers.id_ri_ocsp_response.equals(otherRevocationInfoFormat))
- {
- OCSPResponse resp = OCSPResponse.getInstance(info);
-
- if (resp.getResponseStatus().getValue().intValue() != OCSPResponseStatus.SUCCESSFUL)
- {
- throw new IllegalArgumentException("cannot add unsuccessful OCSP response to CMS SignedData");
- }
- }
-
- others.add(new DERTaggedObject(false, 1, new OtherRevocationInfoFormat(otherRevocationInfoFormat, info)));
- }
-
- return others;
- }
-
- static ASN1Set createBerSetFromList(List derObjects)
- {
- ASN1EncodableVector v = new ASN1EncodableVector();
-
- for (Iterator it = derObjects.iterator(); it.hasNext();)
- {
- v.add((ASN1Encodable)it.next());
- }
-
- return new BERSet(v);
- }
-
- static ASN1Set createDerSetFromList(List derObjects)
- {
- ASN1EncodableVector v = new ASN1EncodableVector();
-
- for (Iterator it = derObjects.iterator(); it.hasNext();)
- {
- v.add((ASN1Encodable)it.next());
- }
-
- return new DERSet(v);
- }
-
- static OutputStream createBEROctetOutputStream(OutputStream s,
- int tagNo, boolean isExplicit, int bufferSize) throws IOException
- {
- BEROctetStringGenerator octGen = new BEROctetStringGenerator(s, tagNo, isExplicit);
-
- if (bufferSize != 0)
- {
- return octGen.getOctetOutputStream(new byte[bufferSize]);
- }
-
- return octGen.getOctetOutputStream();
- }
-
- static TBSCertificate getTBSCertificateStructure(
- X509Certificate cert)
- {
- try
- {
- return TBSCertificate.getInstance(
- ASN1Primitive.fromByteArray(cert.getTBSCertificate()));
- }
- catch (Exception e)
- {
- throw new IllegalArgumentException(
- "can't extract TBS structure from this cert");
- }
- }
-
- static IssuerAndSerialNumber getIssuerAndSerialNumber(X509Certificate cert)
- {
- TBSCertificate tbsCert = getTBSCertificateStructure(cert);
- return new IssuerAndSerialNumber(tbsCert.getIssuer(), tbsCert.getSerialNumber().getValue());
- }
-
- private static ContentInfo readContentInfo(
- ASN1InputStream in)
- throws CMSException
- {
- try
- {
- return ContentInfo.getInstance(in.readObject());
- }
- catch (IOException e)
- {
- throw new CMSException("IOException reading content.", e);
- }
- catch (ClassCastException e)
- {
- throw new CMSException("Malformed content.", e);
- }
- catch (IllegalArgumentException e)
- {
- throw new CMSException("Malformed content.", e);
- }
- }
-
- public static byte[] streamToByteArray(
- InputStream in)
- throws IOException
- {
- return Streams.readAll(in);
- }
-
- public static byte[] streamToByteArray(
- InputStream in,
- int limit)
- throws IOException
- {
- return Streams.readAllLimited(in, limit);
- }
-
- public static Provider getProvider(String providerName)
- throws NoSuchProviderException
- {
- if (providerName != null)
- {
- Provider prov = Security.getProvider(providerName);
-
- if (prov != null)
- {
- return prov;
- }
-
- throw new NoSuchProviderException("provider " + providerName + " not found.");
- }
-
- return null;
- }
-
- static InputStream attachDigestsToInputStream(Collection digests, InputStream s)
- {
- InputStream result = s;
- Iterator it = digests.iterator();
- while (it.hasNext())
- {
- DigestCalculator digest = (DigestCalculator)it.next();
- result = new TeeInputStream(result, digest.getOutputStream());
- }
- return result;
- }
-
- static OutputStream attachSignersToOutputStream(Collection signers, OutputStream s)
- {
- OutputStream result = s;
- Iterator it = signers.iterator();
- while (it.hasNext())
- {
- SignerInfoGenerator signerGen = (SignerInfoGenerator)it.next();
- result = getSafeTeeOutputStream(result, signerGen.getCalculatingOutputStream());
- }
- return result;
- }
-
- static OutputStream getSafeOutputStream(OutputStream s)
- {
- return s == null ? new NullOutputStream() : s;
- }
-
- static OutputStream getSafeTeeOutputStream(OutputStream s1,
- OutputStream s2)
- {
- return s1 == null ? getSafeOutputStream(s2)
- : s2 == null ? getSafeOutputStream(s1) : new TeeOutputStream(
- s1, s2);
- }
-}