B4X
B4X
S/MIME Decrypt using Certificate and Private Key in Apple Keychain
See more Apple Keychain Examples
Decrypts S/MIME using a certificate with private key found in the Apple Keychain.Chilkat B4X Downloads
Dim success As Boolean = False
Dim cert As ChilkatCert
cert.Initialize("cert")
' Load the certificate to be used for decryption by the Subject Common Name
' On MacOS and iOS, Chilkat will search the Keychain(s) for the matching certificate.
' Note: The private key must be present to decrypt.
success = cert.LoadByCommonName("My Cert")
If success = False Then
Log(cert.LastErrorText)
Return
End If
Log("Cert has private key: " & cert.HasPrivateKey)
' Load the MIME to be decrypted.
' We encrypted using this example: S/MIME Encrypt using Certificate in Apple Keychain
Dim mime As ChilkatMime
mime.Initialize
success = mime.LoadMimeFile("./encrypted.mime")
If success = False Then
Log(mime.LastErrorText)
Return
End If
Log(mime.GetMime)
Log("----")
' Here's the encrypted 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
' -------------------------------------
' Decrypt the MIME.
success = mime.DecryptUsingCert(cert)
If success = False Then
Log(mime.LastErrorText)
Return
End If
' -------------------------------------
' Note: A password dialog may be shown, possibly twice, when accessing the private key.
' See the following blog post explaining how to suppress the dialog:
' Suppress Password Dialog when Accessing Private Key in Apple Keychain
' Show the unencrypted MIME
Log(mime.GetMime)
' Here's the decrypted MIME
' Subject: test
' SomeHeader: 123
' Content-Type: text/plain
'
' This is the body.