Sample code for 30+ languages & platforms
Java Requires Chilkat v11.0.0+

Send a Signed Email using RSASSA-PSS with SHA256

See more SMTP Examples

Demonstrates how to sign and send an email using the RSASSA-PSS signing algorithm with the SHA256 hash algorithm. .

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.Cert;
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Email;
import com.chilkatsoft.chilkat2.MailMan;
import com.chilkatsoft.chilkat2.Pfx;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        // Get a digital certificate with private key from a .pfx
        // (Chilkat has many different ways to provide a cert + private key for siging.
        // Using a PFX is just one possible option.)
        Pfx pfx = new Pfx();
        try {
            pfx.loadPfxFile("qa_data/rsassa-pss/privatekey.pfx", "PFX_PASSWORD");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        Email email = new Email();

        // Create a simple email.
        email.setSubject("Sample RSASSA-PSS Signed Email");
        email.setBody("Sample RSASSA-PSS Signed Email");
        email.setFrom("from_name@mydomain.com");
        // Add one ore more recipients..
        email.addTo("Chilkat Support", "support@chilkatsoft.com");
        email.addTo("Chilkat GMail", "chilkat.support@gmail.com");

        // Indicate that the email is to be signed, and that we want to use RSASSA-PSS.
        email.setSendSigned(true);
        email.setSigningAlg("pss");
        email.setSigningHashAlg("sha256");

        // Get the certificate to be used for signing.
        // (The typical case for a PFX is that it contains a cert with an associated private key,
        // as well as other certificates in the chain of authentication.  The cert with the private
        // key should be in the first position at index 0.)

        Cert cert = new Cert();
        try {
            pfx.certAt(0, cert);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Tell the email object to use this cert (and private key) for signing.
        email.setSigningCert(cert);

        MailMan mailman = new MailMan();

        // Set the SMTP settings for your email account on your mail server.
        mailman.setSmtpUsername("SMTP_LOGIN");
        mailman.setSmtpPassword("SMTP_PASSWORD");
        mailman.setSmtpHost("MY_SMTP_DOMAIN_OR_IP");
        mailman.setSmtpPort(587);
        mailman.setStartTLS(true);

        // Signed email can be sent in two different ways.
        // In a multipart/signed email, the signature is attached as a separate MIME part.
        // In an opaque email (signedData) the content of the email is encapsulated within the signature
        // and the email is sent as "application/pkcs7-mime".
        // Either should be fine, but some receiving systems might require one or the other..
        mailman.setOpaqueSigning(false);

        // Send the email.  The mailman will sign the email as directed by the
        // property settings of the email object.
        try {
            mailman.sendEmail(email);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        try {
            mailman.closeSmtpConnection();
        } catch (ChilkatException e) {
            System.out.println("Connection to SMTP server not closed cleanly.");
        }

        System.out.println("Mail Sent!");

        // -----------------------------------------------------------
        // This is the MIME of the RSASSA-PSS signed email that was sent

        //     MIME-Version: 1.0
        //     Date: Thu, 20 Apr 2017 10:14:58 -0500
        //     Message-ID: <3682A87344CB3A4FB5EB5BC9908C0C4DA01DA461@CHILKAT13>
        //     Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha256;
        //      boundary="------------050103020705000601010800"
        //     X-Priority: 3 (Normal)
        //     Subject: Sample RSASSA-PSS Signed Email
        //     From: support@chilkatsoft.com
        //     To: "Chilkat Support" <support@chilkatsoft.com>,
        //      "Chilkat GMail" <chilkat.support@gmail.com>
        //
        //     --------------050103020705000601010800
        //     Content-Type: text/plain; format=flowed
        //     Content-Transfer-Encoding: 7bit
        //
        //     Sample RSASSA-PSS Signed Email
        //     --------------050103020705000601010800
        //     Content-Transfer-Encoding: base64
        //     Content-Type: application/pkcs7-signature; name="smime.p7s"
        //     Content-Disposition: attachment; filename="smime.p7s"
        //
        //     MIIG5wYJKoZIhvcNAQcCoIIG2DCCBtQCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGg
        //     ggL4MIIC9DCCAl2gAwIBAgIJAMPsJCT11cniMA0GCSqGSIb3DQEBCwUAMIGSMQswCQYDVQQGEwJB
        //     VTERMA8GA1UECAwIVmljdG9yaWExEjAQBgNVBAcMCU1lbGJvdXJuZTEhMB8GA1UECgwYSW50ZXJu
        //     ZXQgV2lkZ2l0cyBQdHkgTHRkMQ8wDQYDVQQDDAZXaWRnZXQxKDAmBgkqhkiG9w0BCQEWGWFkbWlu
        //     QGludGVybmV0d2lkZ2V0cy5jb20wHhcNMTYxMTAxMTY1MjMyWhcNMjExMDMxMTY1MjMyWjCBkjEL
        //     MAkGA1UEBhMCQVUxETAPBgNVBAgMCFZpY3RvcmlhMRIwEAYDVQQHDAlNZWxib3VybmUxITAfBgNV
        //     BAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEPMA0GA1UEAwwGV2lkZ2V0MSgwJgYJKoZIhvcN
        //     AQkBFhlhZG1pbkBpbnRlcm5ldHdpZGdldHMuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
        //     gQDGIdoCjyavs+F/Rm0VIB4m6O7VL1j+1IqieoR9NEX2GQvu2VCdceyxf9qaw1bxipEvjLwUkw7M
        //     e+BTlLpWQbBMH87s6KpsC8MVyXhMLpP0oM8NFix/vLz2wdLhUh7CZvJA0plqkJk9bj57QIu+EO1k
        //     tUHM2DFb6sckvCL2yybD1wIDAQABo1AwTjAdBgNVHQ4EFgQUONKKu2zsXIrinWxIGT654vrcQwsw
        //     HwYDVR0jBBgwFoAUONKKu2zsXIrinWxIGT654vrcQwswDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B
        //     AQsFAAOBgQArFvdi5u9i2QF1Qw+cdC1l7w2Y3+q6RIkln2W8rWJFje00644o8hXy7v46giJCedmF
        //     ULlhm1n7XIsZGy2W3lJ77v5agn9gFwXu1h3cqkGXkoteE6SQJQXWgsW3GWPveObvTL8LF4y57fgM
        //     9ZWS+V9MJajeu44Rf/tU17TLYKjvEjGCA7MwggOvAgEBMIGgMIGSMQswCQYDVQQGEwJBVTERMA8G
        //     A1UECAwIVmljdG9yaWExEjAQBgNVBAcMCU1lbGJvdXJuZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lk
        //     Z2l0cyBQdHkgTHRkMQ8wDQYDVQQDDAZXaWRnZXQxKDAmBgkqhkiG9w0BCQEWGWFkbWluQGludGVy
        //     bmV0d2lkZ2V0cy5jb20CCQDD7CQk9dXJ4jANBglghkgBZQMEAgEFAKCCAjQwGAYJKoZIhvcNAQkD
        //     MQsGCSqGSIb3DQEHATAcBgkqhkiG9w0BCQUxDxcNMTcwNDIwMTUxNDU4WjAvBgkqhkiG9w0BCQQx
        //     IgQgoHOtpFiAgti0cwDw46C8wyYSZbhx2yJqJZ/qRE8WPSQwXwYJKoZIhvcNAQkPMVIwUDALBglg
        //     hkgBZQMEAQIwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcGBSsO
        //     AwIHMA0GCCqGSIb3DQMCAgEoMIGxBgkrBgEEAYI3EAQxgaMwgaAwgZIxCzAJBgNVBAYTAkFVMREw
        //     DwYDVQQIDAhWaWN0b3JpYTESMBAGA1UEBwwJTWVsYm91cm5lMSEwHwYDVQQKDBhJbnRlcm5ldCBX
        //     aWRnaXRzIFB0eSBMdGQxDzANBgNVBAMMBldpZGdldDEoMCYGCSqGSIb3DQEJARYZYWRtaW5AaW50
        //     ZXJuZXR3aWRnZXRzLmNvbQIJAMPsJCT11cniMIGzBgsqhkiG9w0BCRACCzGBo6CBoDCBkjELMAkG
        //     A1UEBhMCQVUxETAPBgNVBAgMCFZpY3RvcmlhMRIwEAYDVQQHDAlNZWxib3VybmUxITAfBgNVBAoM
        //     GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEPMA0GA1UEAwwGV2lkZ2V0MSgwJgYJKoZIhvcNAQkB
        //     FhlhZG1pbkBpbnRlcm5ldHdpZGdldHMuY29tAgkAw+wkJPXVyeIwPQYJKoZIhvcNAQEKMDCgDTAL
        //     BglghkgBZQMEAgGhGjAYBgkqhkiG9w0BAQgwCwYJYIZIAWUDBAIBogMCASAEgYCDQpT6vJZ9zERJ
        //     JVX69PGUfCN5Eq9pKzoOTQSrIBe1YgNDSPd5pyOPP2MN1RpI0T/GTQZw4iWy5LZq0T5sjmk3fFVB
        //     +VZjKtkTuhGaCdzMQXomVLBbI2fN4UaA4v1/Ayrqr8SY9Rsa20TpKv/bufK7oYs083UOtlcA1EHY
        //     41wQ5A==
        //
        //     --------------050103020705000601010800--
    }
}