org.bouncycastle.mail.smime

Class 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(MimeMultipart message)
base constructor using a defaultContentTransferEncoding of 7bit
SMIMESignedParser(MimeMultipart message, String defaultContentTransferEncoding)
base constructor with settable contentTransferEncoding
SMIMESignedParser(Part message)
base constructor for a signed message with encapsulated content.
SMIMESignedParser(Part message, File file)
Constructor for a signed message with encapsulated content.

Method Summary

MimeBodyPart
getContent()
return the content that was signed.
MimeMessage
getContentAsMimeMessage(Session session)
Return the content that was signed as a mime message.
Object
getContentWithSignature()
return the content that was signed - depending on whether this was unencapsulated or not it will return a MimeMultipart or a MimeBodyPart

Methods inherited from class org.bouncycastle.cms.CMSSignedDataParser

getCertificatesAndCRLs, getSignedContent, getSignerInfos

Methods inherited from class org.bouncycastle.cms.CMSContentInfoParser

close

Constructor Details

SMIMESignedParser

public SMIMESignedParser(MimeMultipart message)
            throws MessagingException,
                   CMSException
base constructor using a defaultContentTransferEncoding of 7bit
Throws:
CMSException - if some other problem occurs.

SMIMESignedParser

public SMIMESignedParser(MimeMultipart message,
                         String defaultContentTransferEncoding)
            throws MessagingException,
                   CMSException
base constructor with settable contentTransferEncoding
Parameters:
message - the signed message
defaultContentTransferEncoding - new default to use
Throws:
CMSException - if some other problem occurs.

SMIMESignedParser

public SMIMESignedParser(Part message)
            throws 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.

Throws:
SMIMEException - if the body part encapsulated in the message cannot be extracted.
CMSException - if some other problem occurs.

SMIMESignedParser

public SMIMESignedParser(Part message,
                         File file)
            throws 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:
SMIMEException - if the body part encapsulated in the message cannot be extracted.
CMSException - if some other problem occurs.

Method Details

getContent

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

getContentAsMimeMessage

public MimeMessage getContentAsMimeMessage(Session session)
            throws MessagingException,
                   IOException
Return the content that was signed as a mime message.
Parameters:
session -
Returns:
a MimeMessage holding the content.

getContentWithSignature

public Object getContentWithSignature()
return the content that was signed - depending on whether this was unencapsulated or not it will return a MimeMultipart or a MimeBodyPart