Sample code for 30+ languages & platforms
Java

S/MIME Encrypt using Certificate in Apple Keychain

See more Apple Keychain Examples

Encrypts MIME to creates S/MIME using a certificate found in the Apple Keychain.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.Cert;
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Mime;

public class ChilkatExample {

    public static void main(String[] args) {
        Cert cert = new Cert();

        // Load the certificate by the Subject Common Name
        // On MacOS and iOS, Chilkat will search the Keychain(s) for the matching certificate.
        try {
            cert.loadByCommonName("My Cert");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Note: The private key is not needed for encryption.
        // Only the certificate is needed.

        // Create a simple MIME message to encrypt.
        Mime mime = new Mime();
        mime.addHeaderField("Subject", "test");
        mime.addHeaderField("SomeHeader", "123");
        mime.addHeaderField("Content-Type", "text/plain");
        mime.setBody("This is the body.");

        System.out.println(mime.getMime());
        System.out.println("----");

        // Here's the MIME to be encrypted:

        // Subject: test
        // SomeHeader: 123
        // Content-Type: text/plain
        //
        // This is the body.

        // -------------------------------------
        // Encrypt the MIME.
        try {
            mime.encrypt(cert);
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Show the encrypted MIME (S/MIME)
        System.out.println(mime.getMime());

        // Save the encrypted MIME to a file.
        mime.saveMime("./encrypted.mime");

        // Here's the S/MIME

        // Subject: test
        // SomeHeader: 123
        // Content-Type: application/x-pkcs7-mime; name="smime.p7m"; smime-type="enveloped-data"
        // Content-Disposition: attachment; filename="smime.p7m"
        // Content-Transfer-Encoding: base64
        //
        // MIICSwYJKoZIhvcNAQcDoIICPDCCAjgCAQAxggGzMIIBrwIBADCBljCBgTELMAkGA1UEBhMCSVQx
        // EDAOBgNVBAgMB0JlcmdhbW8xGTAXBgNVBAcMEFBvbnRlIFNhbiBQaWV0cm8xFzAVBgNVBAoMDkFj
        // dGFsaXMgUy5wLkEuMSwwKgYDVQQDDCNBY3RhbGlzIENsaWVudCBBdXRoZW50aWNhdGlvbiBDQSBH
        // MwIQPCWvkSv8oQ7xRmEHJ6TzEDANBgkqhkiG9w0BAQEFAASCAQB3VZvHRE5EWxug7Sckpcz1ucDZ
        // YiTKiqmyPt75MhzNRQLtKFx/jWwlemUwnPMzeu6yutCkZ74Bdn7MBsfDqV3bUz43wAu+fRBteGvF
        // mTc00MfY8L7o8dkpj4AqAOCj4hKQzbSE99GvSzyXcPE2Gm5NrOPtKxqfFqbBRTCb4fBZP84LaL+x
        // rnYfrM4qXTppixyN8iFYCd4maEbMu/GA5o+j0BkDDnx42pILDoAGV/ERyx55Y3Nc2Mhm/cITBMNn
        // g7uS9KPrlYizNaqVu09Hi9jg4gdZaRiTjUqg05tSOk/YqIQxTgfscwSPY92/ewpI6e1EHtLt8Q33
        // gWCbERptSntUMHwGCSqGSIb3DQEHATAdBglghkgBZQMEAQIEENm1AxeXlEMx7p6McjHIj5CAUEQj
        // 0GuJ5LnTqiqIjOiwmwNidl1N1TRluxX5vAQvwBuYE6bQK4+i04yn2Av3cucW4kvxgP2Nmni+XgQt
        // aPPKlasaVceEeZ15IYjw77/m3YYn
    }
}