|
IAIK CMS/SMIME Toolkit Demo API Documentation
Version 6.1 |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectdemo.smime.ecc.SMimeEccSuiteBDemo
public class SMimeEccSuiteBDemo
This class demonstrates the usage of the IAIK S/MIME implementation to create and
parse ECDSA signed and/or ECDH based encrypted S/MIMEv3 messages according to
RFC 5008 "Suite B in Secure/Multipurpose Internet Mail Extensions (S/MIME)".
The following algorithms are required by Suite B of the United States Security Agency
(NSA) for use of ECC in S/MIME (see RFC 5008):
Security Level 1 Security Level 2 ---------------- ---------------- Message Digest: SHA-256 SHA-384 Signature: ECDSA with P-256 ECDSA with P-384 Security Level 1 Security Level 2 ---------------- ---------------- Key Agreement: ECDH with P-256 ECDH with P-384 Key Derivation: SHA-256 SHA-384 Key Wrap: AES-128 Key Wrap AES-256 Key Wrap Content Encryption: AES-128 CBC AES-256 CBC
dhSinglePass-stdDH-sha256kdf-scheme
for Security Level 1 and
dhSinglePass-stdDH-sha384kdf-scheme
for Security Level 2.
Any keys/certificates required for this demo are read from a keystore
file "cmsecc.keystore" located in your current working directory. If
the keystore file does not exist you can create it by running the
SetupCMSEccKeyStore
program.
Additionally to iaik_cms.jar
you also must have
iaik_jce_(full).jar
(IAIK-JCE,
https://sic.tech/products/core-crypto-toolkits/jca-jce/),
and iaik_eccelarate.jar
(IAIK-ECCelerateTM,
https://sic.tech/products/core-crypto-toolkits/eccelerate/)
in your classpath.
To run this demo the following packages are required:
iaik_cms.jar
iaik_jce(_full).jar
(IAIK-JCE Core Crypto Library).
iaik_eccelerate.jar
(IAIK ECC Library).
mail.jar
(JavaMail API).
activation.jar
(Java Activation Framework; required for JDK versions < 1.6).
SetupCMSEccKeyStore
,
SignedContent
,
EncryptedContent
Constructor Summary | |
---|---|
SMimeEccSuiteBDemo()
Default constructor. |
Method Summary | |
---|---|
javax.mail.Message |
createEncryptedMessage(javax.mail.Session session,
iaik.asn1.structures.AlgorithmID contentEA,
int keyLength,
iaik.asn1.structures.AlgorithmID keyEA,
iaik.asn1.structures.AlgorithmID keyWrapAlg,
int kekLength,
iaik.x509.X509Certificate recipientCertificate,
iaik.x509.X509Certificate encryptionCertOfSender)
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 |
createSignedAndEncryptedMessage(javax.mail.Session session,
javax.activation.DataHandler dataHandler,
boolean implicit,
iaik.asn1.structures.AlgorithmID hashAlgorithm,
iaik.asn1.structures.AlgorithmID signatureAlgorithm,
java.security.PrivateKey signerPrivateKey,
iaik.x509.X509Certificate[] signerCertificates,
iaik.x509.X509Certificate encryptionCertOfSigner,
iaik.asn1.structures.AlgorithmID contentEA,
int keyLength,
iaik.asn1.structures.AlgorithmID keyEA,
iaik.asn1.structures.AlgorithmID keyWrapAlgorithm,
int kekLength,
iaik.x509.X509Certificate recipientCertificate)
Creates a signed and encrypted message. |
javax.mail.Message |
createSignedMessage(javax.mail.Session session,
javax.activation.DataHandler dataHandler,
boolean implicit,
iaik.asn1.structures.AlgorithmID hashAlgorithm,
iaik.asn1.structures.AlgorithmID signatureAlgorithm,
java.security.PrivateKey signerPrivateKey,
iaik.x509.X509Certificate[] signerCertificates,
iaik.x509.X509Certificate encryptionCertOfSigner)
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 |
---|
public SMimeEccSuiteBDemo()
Method Detail |
---|
public void start() throws java.io.IOException
java.io.IOException
- if an I/O related error occurspublic javax.mail.Message createMessage(javax.mail.Session session, java.lang.String subject) throws javax.mail.MessagingException
session
- the mail sesionsubject
- the subject of the message
javax.mail.MessagingException
- if the message cannot be createdpublic javax.mail.Message createSignedMessage(javax.mail.Session session, javax.activation.DataHandler dataHandler, boolean implicit, iaik.asn1.structures.AlgorithmID hashAlgorithm, iaik.asn1.structures.AlgorithmID signatureAlgorithm, java.security.PrivateKey signerPrivateKey, iaik.x509.X509Certificate[] signerCertificates, iaik.x509.X509Certificate encryptionCertOfSigner) throws javax.mail.MessagingException
session
- the mail sessiondataHandler
- the content of the message to be signedimplicit
- whether to use implicit (application/pkcs7-mime) or explicit
(multipart/signed) signinghashAlgorithm
- the hash algorithm to be usedsignatureAlgorithm
- the signature algorithm to be usedsignerPrivateKey
- the private key of the signersignerCertificates
- the certificate chain of the signerencryptionCertOfSigner
- the encryption certificate of the signer
(to be announced within the SignerInfo)
javax.mail.MessagingException
- if an error occurs when creating the messagepublic javax.mail.Message createEncryptedMessage(javax.mail.Session session, iaik.asn1.structures.AlgorithmID contentEA, int keyLength, iaik.asn1.structures.AlgorithmID keyEA, iaik.asn1.structures.AlgorithmID keyWrapAlg, int kekLength, iaik.x509.X509Certificate recipientCertificate, iaik.x509.X509Certificate encryptionCertOfSender) throws javax.mail.MessagingException
session
- the mail sessioncontentEA
- the content encryption algorithm to be usedkeyLength
- the length of the secret content encryption key to be created and usedkeyEA
- the key encryption algorithm to be usedkeyWrapAlg
- the key wrap algorithm to be usedkekLength
- the length of the key encryption algorithmrecipientCertificate
- the encryption certificate of the recipientencryptionCertOfSender
- the encryption certificate of the sender
javax.mail.MessagingException
- if an error occurs when creating the messagepublic javax.mail.Message createSignedAndEncryptedMessage(javax.mail.Session session, javax.activation.DataHandler dataHandler, boolean implicit, iaik.asn1.structures.AlgorithmID hashAlgorithm, iaik.asn1.structures.AlgorithmID signatureAlgorithm, java.security.PrivateKey signerPrivateKey, iaik.x509.X509Certificate[] signerCertificates, iaik.x509.X509Certificate encryptionCertOfSigner, iaik.asn1.structures.AlgorithmID contentEA, int keyLength, iaik.asn1.structures.AlgorithmID keyEA, iaik.asn1.structures.AlgorithmID keyWrapAlgorithm, int kekLength, iaik.x509.X509Certificate recipientCertificate) throws javax.mail.MessagingException
session
- the mail sessiondataHandler
- the content of the message to be signed and encryptedimplicit
- whether to use implicit (application/pkcs7-mime) or explicit
(multipart/signed) signinghashAlgorithm
- the hash algorithm to be usedsignatureAlgorithm
- the signature algorithm to be usedsignerPrivateKey
- the private key of the signersignerCertificates
- the certificate chain of the signerencryptionCertOfSigner
- the encryption certificate of the signer
(to be announced within the SignerInfo)contentEA
- the content encryption algorithm to be usedkeyLength
- the length of the secret content encryption key to be created and usedkeyEA
- the key encryption algorithm to be usedkeyWrapAlgorithm
- the key wrap algorithm to be usedkekLength
- the length of the key encryption algorithmrecipientCertificate
- the encryption certificate of the recipient
javax.mail.MessagingException
- if an error occurs when creating the messagepublic static void main(java.lang.String[] argv) throws java.lang.Exception
java.lang.Exception
|
IAIK CMS/SMIME Toolkit Demo API Documentation
Version 6.1 |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
![]() |
v6.1 (c) 2002 IAIK, (c) 2003 - 2025 SIC |
![]() |