public class SmimeMultipartSigned extends MimeMultipart implements SmimeSignedObject
Please do not create wrapped messages containing a multipart signed message.
| Constructor and Description |
|---|
SmimeMultipartSigned(javax.activation.DataSource ds)
Create a new
SmimeMultipartSigned by reading from a DataSource. |
SmimeMultipartSigned(MimeBodyPart bodyPart,
AlgorithmIdentifier digestAlgID)
Create a new
SmimeMultipartSigned with the given body and algorithm identifier. |
| Modifier and Type | Method and Description |
|---|---|
void |
addCertificate(java.security.cert.X509Certificate cert)
Add a Certificate.
|
void |
addCRL(CRL crl)
Add a CRL.
|
void |
addSignature(java.security.PrivateKey signerKey,
java.security.cert.X509Certificate signerCert)
Add a Signature.
|
void |
addSignature(java.security.PrivateKey signerKey,
java.security.cert.X509Certificate signerCert,
AlgorithmIdentifier digestAlgID,
AttributeSet signedAttributes)
Add a Signature.
|
void |
addSignature(java.security.PrivateKey signerKey,
java.security.cert.X509Certificate signerCert,
java.util.Date timeStamp)
Add a Signature.
|
void |
addSignature(java.security.PrivateKey signerKey,
java.security.cert.X509Certificate signerCert,
java.util.Date timeStamp,
SmimeCapabilities smimeCaps)
Add a Signature.
|
void |
addSignature(java.security.PrivateKey signerKey,
java.security.cert.X509Certificate signerCert,
SmimeCapabilities smimeCaps)
Add a Signature.
|
java.lang.String |
generateContentType()
Returns the content type.
|
java.lang.String |
generateContentType(AlgorithmIdentifier digestAlgId)
Returns the content type.
|
java.lang.String |
generateContentType(boolean useStandardContentTypes)
Returns the content type.
|
java.lang.String |
generateContentType(boolean useStandardContentTypes,
AlgorithmIdentifier digestAlgId)
Returns the content type.
|
java.util.Vector |
getCertificates()
Returns the list of X509 certificates included with this signed data object.
|
java.lang.String |
getContentType()
Returns the content type.
|
java.util.Vector |
getCRLs()
Returns the list of CRLs included with this signed data object.
|
MimeBodyPart |
getEnclosedBodyPart()
Returns the message content that was signed.
|
EquivalentLabels |
getEquivalentLabels(java.security.cert.X509Certificate signerCert)
Returns the
EquivalentLabels if present or null. |
ESSSecurityLabel |
getESSSecurityLabel(java.security.cert.X509Certificate signerCert)
Returns the
ESSSecurityLabel if present or null. |
MLExpansionHistory |
getMLExpansionHistory(java.security.cert.X509Certificate signerCert)
Returns the
MLExpansionHistory attribute if present or null. |
ReceiptRequest |
getReceiptRequest(java.security.cert.X509Certificate signerCert)
Returns the
ReceiptRequest attribute if present or null. |
SigningCertificate |
getSigningCertificate(java.security.cert.X509Certificate signerCert)
Returns the
SigningCertificate Attribute if present or null. |
java.util.Enumeration |
signers()
Returns the list of signers.
|
protected void |
updateHeaders() |
void |
verify(CertificateTrustPolicy trustPolicy)
Verify the Signature using the specified trust policy.
|
void |
verify(CertificateTrustPolicy trustPolicy,
Address[] senderAddresses)
Verify the Signature using the specified trust policy and list of email addresses.
|
void |
verifySignature(java.security.cert.X509Certificate signerCert)
Verify the Signature using the specified certificate.
|
void |
verifySignature(java.security.cert.X509Certificate signerCert,
Address[] senderAddresses)
Verify the Signature using the specified certificate and list of email addresses.
|
void |
writeTo(java.io.OutputStream os,
java.lang.String contentType)
Writes this
SmimeMultipartSigned to the given output stream. |
public SmimeMultipartSigned(MimeBodyPart bodyPart,
AlgorithmIdentifier digestAlgID)
throws MessagingException
SmimeMultipartSigned with the given body and algorithm identifier.
Relevant canonicalizations, such as transforming text line-breaks to CRLF, are
applied to the body.bodyPart - The message content.digestAlgID - The digest algorithm.MessagingException - An error occurred while setting the message content.public SmimeMultipartSigned(javax.activation.DataSource ds)
throws MessagingException,
java.io.IOException
SmimeMultipartSigned by reading from a DataSource.ds - The data source.java.io.IOException - An I/O error error occurred or the message format is not correct.MessagingException - An error occurred while initializing the message content.public void addSignature(java.security.PrivateKey signerKey,
java.security.cert.X509Certificate signerCert)
throws java.security.NoSuchAlgorithmException,
java.security.InvalidKeyException,
java.io.IOException,
java.security.cert.CertificateEncodingException,
java.security.SignatureException
Note the changes in the method signature
Previously : public void addSignature (oracle.security.crypto.core.PrivateKey, X509 )
Now : public void addSignature (java.security.PrivateKey, X509Certificate )
Note the changes in the exceptions
Exceptions introduced -- NoSuchAlgorithmException,IOException,CertificateEncodingException,java.security.InvalidKeyException, java.security.SignatureException
Exceptions no longer thrown-- AlgorithmIdentifierException , oracle.security.crypto.core.InvalidKeyException, oracle.security.crypto.core.signatureException
signerKey - The private key of the signer.signerCert - The X509 certificate of the signer.java.security.NoSuchAlgorithmException - Algorithm is not supported.java.security.InvalidKeyException - Private Key format is not valid.java.security.SignatureException - An error occurred while adding the signature.java.security.cert.CertificateEncodingException - Specifies an encoding errorjava.io.IOException - Input/Output Exception while instantiating X509 from an inputstreampublic void addSignature(java.security.PrivateKey signerKey,
java.security.cert.X509Certificate signerCert,
java.util.Date timeStamp)
throws java.security.NoSuchAlgorithmException,
java.security.InvalidKeyException,
java.security.SignatureException,
java.io.IOException,
java.security.cert.CertificateEncodingException
Note the changes in the method signature
Previously : public void addSignature (oracle.security.crypto.core.PrivateKey, X509,Date )
Now : public void addSignature (java.security.PrivateKey, X509Certificate ,Date )/
Note the changes in the exceptions
Exceptions introduced -- NoSuchAlgorithmException,IOException,CertificateEncodingException,java.security.InvalidKeyException, java.security.SignatureException
Exceptions no longer thrown-- AlgorithmIdentifierException , oracle.security.crypto.core.InvalidKeyException, oracle.security.crypto.core.signatureException
signerKey - The private key of the signer.signerCert - The X509 certificate of the signer.timeStamp - The signingTime attriibute value.java.security.NoSuchAlgorithmException - Algorithm is not supported.java.security.InvalidKeyException - Private Key format is not valid.java.security.SignatureException - An error occurred while adding the signature.java.security.cert.CertificateEncodingException - Specifies an encoding errorjava.io.IOException - Input/Output Exception while instantiating X509 from an inputstreampublic void addSignature(java.security.PrivateKey signerKey,
java.security.cert.X509Certificate signerCert,
SmimeCapabilities smimeCaps)
throws java.security.NoSuchAlgorithmException,
java.security.InvalidKeyException,
java.security.SignatureException,
java.io.IOException,
java.security.cert.CertificateEncodingException
Note the changes in the method signature
Previously : public void addSignature (oracle.security.crypto.core.PrivateKey, X509,SmimeCapabilities )
Now : public void addSignature (java.security.PrivateKey, X509Certificate ,SmimeCapabilities )
Note the changes in the exceptions
Exceptions introduced -- NoSuchAlgorithmException,IOException,CertificateEncodingException,java.security.InvalidKeyException, java.security.SignatureException
Exceptions no longer thrown-- AlgorithmIdentifierException , oracle.security.crypto.core.InvalidKeyException, oracle.security.crypto.core.signatureException
signerKey - The private key of the signer.signerCert - The X509 certificate of the signer.smimeCaps - The SmimeCapabilities attribute value.java.security.NoSuchAlgorithmException - Algorithm is not supported.java.security.InvalidKeyException - Private Key format is not valid.java.security.SignatureException - An error occurred while adding the signature.java.security.cert.CertificateEncodingException - Specifies an encoding errorjava.io.IOException - Input/Output Exception while instantiating X509 from an inputstreampublic void addSignature(java.security.PrivateKey signerKey,
java.security.cert.X509Certificate signerCert,
java.util.Date timeStamp,
SmimeCapabilities smimeCaps)
throws java.security.NoSuchAlgorithmException,
java.security.InvalidKeyException,
java.security.SignatureException,
java.io.IOException,
java.security.cert.CertificateEncodingException
Note the changes in the method signature
Previously : public void addSignature (oracle.security.crypto.core.PrivateKey, X509,Date,SmimeCapabilities )
Now : public void addSignature (java.security.PrivateKey, X509Certificate ,Date,SmimeCapabilities )
Note the changes in the exceptions
Exceptions introduced -- NoSuchAlgorithmException,IOException,CertificateEncodingException,java.security.InvalidKeyException, java.security.SignatureException
Exceptions no longer thrown-- AlgorithmIdentifierException , oracle.security.crypto.core.InvalidKeyException, oracle.security.crypto.core.signatureException
signerKey - The private key of the signer.signerCert - The X509 certificate of the signer.timeStamp - The signingTime attriibute value.smimeCaps - The SmimeCapabilities attribute value.java.security.NoSuchAlgorithmException - Algorithm is not supported.java.security.InvalidKeyException - Private Key format is not valid.java.security.SignatureException - An error occurred while adding the signature.java.security.cert.CertificateEncodingException - Specifies an encoding errorjava.io.IOException - Input/Output Exception while instantiating X509 from an inputstreampublic void addSignature(java.security.PrivateKey signerKey,
java.security.cert.X509Certificate signerCert,
AlgorithmIdentifier digestAlgID,
AttributeSet signedAttributes)
throws java.security.NoSuchAlgorithmException,
java.security.InvalidKeyException,
java.security.SignatureException,
java.io.IOException,
java.security.cert.CertificateEncodingException
The contentType and messageDigest must not be present in the AttributeSet signedAttributes.
Note the changes in the method signature
Previously : public void addSignature (oracle.security.crypto.core.PrivateKey, X509,AlgorithmIdentifier,AtrributeSet)
Now : public void addSignature (java.security.PrivateKey, X509Certificate ,AlgorithmIdentifier,AtrributeSet)
Note the changes in the exceptions
Exceptions introduced -- NoSuchAlgorithmException,IOException,CertificateEncodingException,java.security.InvalidKeyException, java.security.SignatureException
Exceptions no longer thrown-- AlgorithmIdentifierException , oracle.security.crypto.core.InvalidKeyException, oracle.security.crypto.core.signatureException
signerKey - The private key of the signer.signerCert - The X509 certificate of the signer.signedAttributes - The set of Signed Attributes.java.security.NoSuchAlgorithmException - Algorithm is not supported.java.security.InvalidKeyException - Private Key format is not valid.java.security.SignatureException - An error occurred while adding the signature.java.security.cert.CertificateEncodingException - Specifies an encoding errorjava.io.IOException - Input/Output Exception while instantiating X509 from an inputstreampublic void addCertificate(java.security.cert.X509Certificate cert)
Note the changes in the method signature
Previously : public void addCertificate (X509)
Now : public void addCertificate (X509Certificate )
cert - The X509 certificate.public void addCRL(CRL crl)
crl - The CRL.public MimeBodyPart getEnclosedBodyPart()
throws InvalidInputException,
MessagingException
getEnclosedBodyPart in interface SmimeSignedObjectMimeBodyPart.InvalidInputException - The message content type is not correct.MessagingException - An error occurred while initializing the content.public java.util.Enumeration signers()
signers in interface SmimeSignedObjectVector containing CMSSignerInfo objects.public java.util.Vector getCertificates()
getCertificates in interface SmimeSignedObjectVector containing X509 objects
or null if no list of certificates is present.public java.util.Vector getCRLs()
getCRLs in interface SmimeSignedObjectVector containing CRL objects
or null if no list of CRLs is present.public void verifySignature(java.security.cert.X509Certificate signerCert)
throws AuthenticationException,
java.security.SignatureException
Note the changes in the method signature
Previously : public void addCertificate (X509)
Now : public void addCertificate (X509Certificate )
verifySignature in interface SmimeSignedObjectsignerCert - The X509 certificate.AuthenticationException - Signature verification failed.java.security.SignatureException - The specified certificate does not belong to any of the message signers.public void verifySignature(java.security.cert.X509Certificate signerCert,
Address[] senderAddresses)
throws AuthenticationException,
java.security.SignatureException
Note the changes in the method signature
Previously : public void verifySignature (X509, Address[] )
Now :public void verifySignature (X509Certificate , Address[])
verifySignature in interface SmimeSignedObjectsignerCert - The X509 certificate.AuthenticationException - Signature verification failed or the email address in the certificate
did not match any in the email address list.java.security.SignatureException - The specified certificate does not belong to any of the message signers.public void verify(CertificateTrustPolicy trustPolicy) throws AuthenticationException
verify in interface SmimeSignedObjecttrustPolicy - The certificate trust policy.AuthenticationException - Signature verification failed.public void verify(CertificateTrustPolicy trustPolicy, Address[] senderAddresses) throws AuthenticationException
verify in interface SmimeSignedObjecttrustPolicy - The certificate trust policy.AuthenticationException - Signature verification failed or the email address in the certificate
did not match any in the email address list.public ESSSecurityLabel getESSSecurityLabel(java.security.cert.X509Certificate signerCert) throws AuthenticationException, java.security.SignatureException
ESSSecurityLabel if present or null.
The signature of the SignerInfo that covers the ESSSecurityLabel is first verified. Then, it verifies that all the ESSSecurityLabels in the signed message are identical.
Note the changes in the method signature
Previously : public ESSSecurityLabel getESSSecurityLabel(X509)
Now :public ESSSecurityLabel getESSSecurityLabel(X509Certificate)
getESSSecurityLabel in interface SmimeSignedObjectAuthenticationException - Signature verification did not succeed on any SignerInfo.java.security.SignatureException - No valid security label could be found.public EquivalentLabels getEquivalentLabels(java.security.cert.X509Certificate signerCert) throws AuthenticationException, java.security.SignatureException
EquivalentLabels if present or null.
The signature of the SignerInfo that covers the EquivalentLabels is first verified. Then, it verifies that all the EquivalentLabel's in the signed message are identical.
Note the changes in the method signature
Previously : public EquivalentLabels getEquivalentLabels(X509)
Now : public EquivalentLabels getEquivalentLabels(X509Certificate)
getEquivalentLabels in interface SmimeSignedObjectAuthenticationException - Signature verification did not succeed on any SignerInfo.java.security.SignatureException - No valid equivalent labels could be found.public SigningCertificate getSigningCertificate(java.security.cert.X509Certificate signerCert) throws AuthenticationException, java.security.SignatureException
SigningCertificate Attribute if present or null.
The signature of the SignerInfo that covers the SigningCertificate is verified.
Note the changes in the method signature
Previously : public SigningCertificate getSigningCertificate (X509)
Now : public SigningCertificate getSigningCertificate (X509Certificate)
getSigningCertificate in interface SmimeSignedObjectAuthenticationException - Signature verification did not succeed on any SignerInfo.java.security.SignatureException - No valid signing certificate could be found.public MLExpansionHistory getMLExpansionHistory(java.security.cert.X509Certificate signerCert) throws AuthenticationException, java.security.SignatureException
MLExpansionHistory attribute if present or null.
The signature of the SignerInfo that covers the MLExpansionHistory is first verified. Then, it verifies that all the MLExpansionHistory's in the signed message are identical.
Note the changes in the method signature
Previously : public MLExpansionHistory getMLExpansionHistory(X509)
Now : public MLExpansionHistory getMLExpansionHistory(X509Certificate )
getMLExpansionHistory in interface SmimeSignedObjectAuthenticationException - Signature verification did not succeed on any SignerInfo.java.security.SignatureException - No valid mailing list expansion history could be found.public ReceiptRequest getReceiptRequest(java.security.cert.X509Certificate signerCert) throws AuthenticationException, java.security.SignatureException
ReceiptRequest attribute if present or null.
The signature of the SignerInfo that covers the ReceiptRequest is first verified. Then, it verifies that all the ReceiptRequest's in the signed message are identical.
Note the changes in the method signature
Previously : public ReceiptRequest getReceiptRequest (X509)
Now : public ReceiptRequest getReceiptRequest (X509Certificate )
getReceiptRequest in interface SmimeSignedObjectAuthenticationException - Signature verification did not succeed on any SignerInfo.java.security.SignatureException - No valid receipt request could be found.public java.lang.String generateContentType(boolean useStandardContentTypes)
generateContentType in interface SmimeObjectuseStandardContentTypes - If true the standard content type
is generated; If false the experimental content type is generated. * @return The content type string.public java.lang.String generateContentType()
generateContentType in interface SmimeObjectpublic java.lang.String generateContentType(boolean useStandardContentTypes,
AlgorithmIdentifier digestAlgId)
throws java.security.NoSuchAlgorithmException
useStandardContentTypes - If true the standard content type is generated; If false the experimental content type is generated.digestAlgId - Digest algorithm to be used.java.security.NoSuchAlgorithmException - Thrown if provided digest algorithm is not supported.public java.lang.String generateContentType(AlgorithmIdentifier digestAlgId)
throws java.security.NoSuchAlgorithmException
generateContentType in interface SmimeObjectdigestAlgId - Digest algorithm to be used.java.security.NoSuchAlgorithmException - Thrown if provided digest algorithm is not supported.public java.lang.String getContentType()
protected void updateHeaders()
public void writeTo(java.io.OutputStream os,
java.lang.String contentType)
throws java.io.IOException,
MessagingException
SmimeMultipartSigned to the given output stream.writeTo in interface SmimeObjectos - The output stream to which this SmimeMultipartSigned will be written.contentType - The content type for this SmimeMultipartSigned.java.io.IOException - An I/O error occurred.MessagingException - An error occurred while writing the smime message.