Bouncy Castle Cryptography 1.46

org.bouncycastle.mail.smime
Class SMIMESignedParser

java.lang.Object
  extended by org.bouncycastle.cms.CMSContentInfoParser
      extended by org.bouncycastle.cms.CMSSignedDataParser
          extended by org.bouncycastle.mail.smime.SMIMESignedParser

public class SMIMESignedParser
extends CMSSignedDataParser

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...

  CertStore               certs = s.getCertificates("Collection", "BC");
  SignerInformationStore  signers = s.getSignerInfos();
  Collection              c = signers.getSigners();
  Iterator                it = c.iterator();
  
  while (it.hasNext())
  {
      SignerInformation   signer = (SignerInformation)it.next();
      Collection          certCollection = certs.getCertificates(signer.getSID());
  
      Iterator        certIt = certCollection.iterator();
      X509Certificate cert = (X509Certificate)certIt.next();
  
      if (signer.verify(cert.getPublicKey()))
      {
          verified++;
      }   
  }
 

Note: if you are using this class with AS2 or some other protocol that does not use 7bit as the default content transfer encoding you will need to use the constructor that allows you to specify the default content transfer encoding, such as "binary".


Field Summary
 
Fields inherited from class org.bouncycastle.cms.CMSContentInfoParser
_contentInfo, _data
 
Constructor Summary
SMIMESignedParser(javax.mail.internet.MimeMultipart message)
          base constructor using a defaultContentTransferEncoding of 7bit.
SMIMESignedParser(javax.mail.internet.MimeMultipart message, java.io.File backingFile)
          base constructor using a defaultContentTransferEncoding of 7bit and a specified backing file.
SMIMESignedParser(javax.mail.internet.MimeMultipart message, java.lang.String defaultContentTransferEncoding)
          base constructor with settable contentTransferEncoding.
SMIMESignedParser(javax.mail.internet.MimeMultipart message, java.lang.String defaultContentTransferEncoding, java.io.File backingFile)
          base constructor with settable contentTransferEncoding and a specified backing file.
SMIMESignedParser(javax.mail.Part message)
          base constructor for a signed message with encapsulated content.
SMIMESignedParser(javax.mail.Part message, java.io.File file)
          Constructor for a signed message with encapsulated content.
 
Method Summary
 javax.mail.internet.MimeBodyPart getContent()
          return the content that was signed.
 javax.mail.internet.MimeMessage getContentAsMimeMessage(javax.mail.Session session)
          Return the content that was signed as a mime message.
 java.lang.Object getContentWithSignature()
          return the content that was signed with its signature attached.
 
Methods inherited from class org.bouncycastle.cms.CMSSignedDataParser
getAttributeCertificates, getAttributeCertificates, getAttributeCertificates, getCertificates, getCertificates, getCertificates, getCertificatesAndCRLs, getCertificatesAndCRLs, getCRLs, getCRLs, getCRLs, getSignedContent, getSignedContentTypeOID, getSignerInfos, getVersion, replaceCertificatesAndCRLs, replaceCertificatesAndCRLs, replaceSigners
 
Methods inherited from class org.bouncycastle.cms.CMSContentInfoParser
close
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SMIMESignedParser

public SMIMESignedParser(javax.mail.internet.MimeMultipart message)
                  throws javax.mail.MessagingException,
                         CMSException
base constructor using a defaultContentTransferEncoding of 7bit. A temporary backing file will be created for the signed data.

Parameters:
message - signed message with signature.
Throws:
javax.mail.MessagingException - on an error extracting the signature or otherwise processing the message.
CMSException - if some other problem occurs.

SMIMESignedParser

public SMIMESignedParser(javax.mail.internet.MimeMultipart message,
                         java.io.File backingFile)
                  throws javax.mail.MessagingException,
                         CMSException
base constructor using a defaultContentTransferEncoding of 7bit and a specified backing file.

Parameters:
message - signed message with signature.
backingFile - the temporary file to use to back the signed data.
Throws:
javax.mail.MessagingException - on an error extracting the signature or otherwise processing the message.
CMSException - if some other problem occurs.

SMIMESignedParser

public SMIMESignedParser(javax.mail.internet.MimeMultipart message,
                         java.lang.String defaultContentTransferEncoding)
                  throws javax.mail.MessagingException,
                         CMSException
base constructor with settable contentTransferEncoding. A temporary backing file will be created to contain the signed data.

Parameters:
message - the signed message with signature.
defaultContentTransferEncoding - new default to use.
Throws:
javax.mail.MessagingException - on an error extracting the signature or otherwise processing the message.
CMSException - if some other problem occurs.

SMIMESignedParser

public SMIMESignedParser(javax.mail.internet.MimeMultipart message,
                         java.lang.String defaultContentTransferEncoding,
                         java.io.File backingFile)
                  throws javax.mail.MessagingException,
                         CMSException
base constructor with settable contentTransferEncoding and a specified backing file.

Parameters:
message - the signed message with signature.
defaultContentTransferEncoding - new default to use.
backingFile - the temporary file to use to back the signed data.
Throws:
javax.mail.MessagingException - on an error extracting the signature or otherwise processing the message.
CMSException - if some other problem occurs.

SMIMESignedParser

public SMIMESignedParser(javax.mail.Part message)
                  throws javax.mail.MessagingException,
                         CMSException,
                         SMIMEException
base constructor for a signed message with encapsulated content.

Note: in this case the encapsulated MimeBody part will only be suitable for a single writeTo - once writeTo has been called the file containing the body part will be deleted. If writeTo is not called the file will be left in the temp directory.

Parameters:
message - the message containing the encapsulated signed data.
Throws:
javax.mail.MessagingException - on an error extracting the signature or otherwise processing the message.
SMIMEException - if the body part encapsulated in the message cannot be extracted.
CMSException - if some other problem occurs.

SMIMESignedParser

public SMIMESignedParser(javax.mail.Part message,
                         java.io.File file)
                  throws javax.mail.MessagingException,
                         CMSException,
                         SMIMEException
Constructor for a signed message with encapsulated content. The encapsulated content, if it exists, is written to the file represented by the File object passed in.

Parameters:
message - the Part containing the signed content.
file - the file the encapsulated part is to be written to after it has been decoded.
Throws:
javax.mail.MessagingException - on an error extracting the signature or otherwise processing the message.
SMIMEException - if the body part encapsulated in the message cannot be extracted.
CMSException - if some other problem occurs.
Method Detail

getContent

public javax.mail.internet.MimeBodyPart getContent()
return the content that was signed.

Returns:
the signed body part in this message.

getContentAsMimeMessage

public javax.mail.internet.MimeMessage getContentAsMimeMessage(javax.mail.Session session)
                                                        throws javax.mail.MessagingException,
                                                               java.io.IOException
Return the content that was signed as a mime message.

Parameters:
session - the session to base the MimeMessage around.
Returns:
a MimeMessage holding the content.
Throws:
javax.mail.MessagingException - if there is an issue creating the MimeMessage.
java.io.IOException - if there is an issue reading the content.

getContentWithSignature

public java.lang.Object getContentWithSignature()
return the content that was signed with its signature attached.

Returns:
depending on whether this was unencapsulated or not it will return a MimeMultipart or a MimeBodyPart

Bouncy Castle Cryptography 1.46