IAIK CMS/SMIME Toolkit Demo API Documentation
Version 6.1

demo.smime.basic
Class SMimeV3Demo

java.lang.Object
  extended by demo.smime.basic.SMimeV3Demo
Direct Known Subclasses:
SMimeV3CamelliaDemo

public class SMimeV3Demo
extends java.lang.Object

This class demonstrates the usage of the IAIK S/MIME implementation. It shows how to create signed and/or encrypted S/MIMEv3 messages and how to parse them and verify the signatures and decrypt the content, respectively.

To run this demo the following packages are required:

You also will need the ESDH implementation of IAIK-JCE contained in iaik_esdh.jar or iaik_jce_full.jar; the first may be used in addition to iaik_jce.jar, the second instead of iaik_jce.jar.


Constructor Summary
SMimeV3Demo()
          Default constructor.
 
Method Summary
 javax.mail.Message createAuthEncryptedMessage(javax.mail.Session session, iaik.asn1.structures.AlgorithmID contentEA, int keyLength, iaik.asn1.structures.AlgorithmID keyEA, iaik.asn1.structures.AlgorithmID keyWrapAlgorithm, int kekLength)
          Creates an authenticated encrypted message.
 javax.mail.Message createCertsOnlyMessage(javax.mail.Session session)
          Creates a certs-only message.
 javax.mail.Message createCertsOnlyMultiPartMessage(javax.mail.Session session)
          Creates a certs-only message where the certificate list is transferred as attachment.
 javax.mail.Message createCompressedMessage(javax.mail.Session session, javax.activation.DataHandler dataHandler, iaik.asn1.structures.AlgorithmID algorithm)
          Creates a compressed message.
 javax.mail.Message createEncryptedMessage(javax.mail.Session session, iaik.asn1.structures.AlgorithmID contentEA, int keyLength, iaik.asn1.structures.AlgorithmID keyEA, iaik.asn1.structures.AlgorithmID keyWrapAlgorithm, int kekLength)
          Creates an encrypted message.
 javax.mail.Message createMessage(javax.mail.Session session, java.lang.String subject)
          Creates a MIME message container with the given subject for the given session.
 javax.mail.Message createPKCS10Message(javax.mail.Session session)
          Creates a PKCS#10 certificate request message.
 javax.mail.Message createPKCS10MultiPartMessage(javax.mail.Session session)
          Creates a PKCS#10 message where the certificate request is transferred as attachment.
 javax.mail.Message createPlainMessage(javax.mail.Session session, javax.activation.DataHandler dataHandler)
          Creates a simple plain (neither signed nor encrypted) message.
 javax.mail.Message createSignedAndEncryptedMessage(javax.mail.Session session, iaik.asn1.structures.AlgorithmID algorithm, javax.activation.DataHandler dataHandler, boolean implicit)
          Creates a signed and encrypted message.
 javax.mail.Message createSignedMessage(javax.mail.Session session, javax.activation.DataHandler dataHandler, boolean implicit, iaik.asn1.structures.AlgorithmID digestAlgorithm, iaik.asn1.structures.AlgorithmID signatureAlgorithm)
          Creates a signed message.
static void main(java.lang.String[] argv)
          The main method.
 void start()
          Starts the demo.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SMimeV3Demo

public SMimeV3Demo()
Default constructor. Reads certificates and keys from the demo keystore.

Method Detail

start

public void start()
           throws java.io.IOException
Starts the demo.

Throws:
java.io.IOException - if an I/O related error occurs

createMessage

public javax.mail.Message createMessage(javax.mail.Session session,
                                        java.lang.String subject)
                                 throws javax.mail.MessagingException
Creates a MIME message container with the given subject for the given session.

Parameters:
session - the mail sesion
subject - the subject of the message
Returns:
the MIME message with FROM, TO, DATE and SUBJECT headers (without content)
Throws:
javax.mail.MessagingException - if the message cannot be created

createPlainMessage

public javax.mail.Message createPlainMessage(javax.mail.Session session,
                                             javax.activation.DataHandler dataHandler)
                                      throws javax.mail.MessagingException
Creates a simple plain (neither signed nor encrypted) message.

Parameters:
session - the mail session
dataHandler - the content of the message
Returns:
the plain message
Throws:
javax.mail.MessagingException - if an error occurs when creating the message

createSignedAndEncryptedMessage

public javax.mail.Message createSignedAndEncryptedMessage(javax.mail.Session session,
                                                          iaik.asn1.structures.AlgorithmID algorithm,
                                                          javax.activation.DataHandler dataHandler,
                                                          boolean implicit)
                                                   throws javax.mail.MessagingException
Creates a signed and encrypted message.

Parameters:
session - the mail session
algorithm - the content encryption algorithm to be used
dataHandler - the content of the message to be signed and encrypted
implicit - whether to use implicit (application/pkcs7-mime) or explicit (multipart/signed) signing
Returns:
the signed and encrypted message
Throws:
javax.mail.MessagingException - if an error occurs when creating the message

createSignedMessage

public javax.mail.Message createSignedMessage(javax.mail.Session session,
                                              javax.activation.DataHandler dataHandler,
                                              boolean implicit,
                                              iaik.asn1.structures.AlgorithmID digestAlgorithm,
                                              iaik.asn1.structures.AlgorithmID signatureAlgorithm)
                                       throws javax.mail.MessagingException
Creates a signed message.

Parameters:
session - the mail session
dataHandler - the content of the message to be signed
implicit - whether to use implicit (application/pkcs7-mime) or explicit (multipart/signed) signing
digestAlgorithm - the digest algorithm to be used
signatureAlgorithm - the signature algorithm to be used
Returns:
the signed message
Throws:
javax.mail.MessagingException - if an error occurs when creating the message

createEncryptedMessage

public javax.mail.Message createEncryptedMessage(javax.mail.Session session,
                                                 iaik.asn1.structures.AlgorithmID contentEA,
                                                 int keyLength,
                                                 iaik.asn1.structures.AlgorithmID keyEA,
                                                 iaik.asn1.structures.AlgorithmID keyWrapAlgorithm,
                                                 int kekLength)
                                          throws javax.mail.MessagingException
Creates an encrypted message.

Parameters:
session - the mail session
contentEA - the content encryption algorithm to be used
keyLength - the length of the secret content encryption key to be created and used
keyEA - the key encryption algorithm to be used
keyWrapAlgorithm - the key wrap algorithm to be used
kekLength - the length of the key encryption algorithm
Returns:
the encrypted message
Throws:
javax.mail.MessagingException - if an error occurs when creating the message

createAuthEncryptedMessage

public javax.mail.Message createAuthEncryptedMessage(javax.mail.Session session,
                                                     iaik.asn1.structures.AlgorithmID contentEA,
                                                     int keyLength,
                                                     iaik.asn1.structures.AlgorithmID keyEA,
                                                     iaik.asn1.structures.AlgorithmID keyWrapAlgorithm,
                                                     int kekLength)
                                              throws javax.mail.MessagingException
Creates an authenticated encrypted message.

Parameters:
session - the mail session
contentEA - the content encryption algorithm to be used
keyLength - the length of the secret content encryption key to be created and used
keyEA - the key encryption algorithm to be used
keyWrapAlgorithm - the key wrap algorithm to be used
kekLength - the length of the key encryption algorithm
Returns:
the encrypted message
Throws:
javax.mail.MessagingException - if an error occurs when creating the message

createCertsOnlyMessage

public javax.mail.Message createCertsOnlyMessage(javax.mail.Session session)
                                          throws javax.mail.MessagingException
Creates a certs-only message.

Parameters:
session - the mail session
Returns:
the certs-only message
Throws:
javax.mail.MessagingException - if an error occurs when creating the message

createCertsOnlyMultiPartMessage

public javax.mail.Message createCertsOnlyMultiPartMessage(javax.mail.Session session)
                                                   throws javax.mail.MessagingException
Creates a certs-only message where the certificate list is transferred as attachment.

Parameters:
session - the mail session
Returns:
the certs-only message
Throws:
javax.mail.MessagingException - if an error occurs when creating the message

createCompressedMessage

public javax.mail.Message createCompressedMessage(javax.mail.Session session,
                                                  javax.activation.DataHandler dataHandler,
                                                  iaik.asn1.structures.AlgorithmID algorithm)
                                           throws javax.mail.MessagingException
Creates a compressed message.

Parameters:
session - the mail session
dataHandler - the datahandler supplying the content to be compressed
algorithm - the compression algorithm to be used
Returns:
the compressed message
Throws:
javax.mail.MessagingException - if an error occurs when creating the message

createPKCS10Message

public javax.mail.Message createPKCS10Message(javax.mail.Session session)
                                       throws javax.mail.MessagingException
Creates a PKCS#10 certificate request message.

Parameters:
session - the mail session
Returns:
the PKCS#10 certificate request message
Throws:
javax.mail.MessagingException - if an error occurs when creating the message

createPKCS10MultiPartMessage

public javax.mail.Message createPKCS10MultiPartMessage(javax.mail.Session session)
                                                throws javax.mail.MessagingException
Creates a PKCS#10 message where the certificate request is transferred as attachment.

Parameters:
session - the mail session
Returns:
the PKCS#10 certificate request message
Throws:
javax.mail.MessagingException - if an error occurs when creating the message

main

public static void main(java.lang.String[] argv)
                 throws java.io.IOException
The main method.

Throws:
java.io.IOException

IAIK CMS/SMIME Toolkit Demo API Documentation
Version 6.1

v6.1
(c) 2002 IAIK, (c) 2003 - 2025 SIC