PureBasic
PureBasic
Encrypt using Cert to produce -----BEGIN PKCS7----- ... -----END PKCS7-----
See more Encryption Examples
Demonstrates how to encrypt using a certificate to produce output such as:-----BEGIN PKCS7----- MIIHPwYJKoZIhvcNAQcEoIIHMDCCBywC ... ... ... -----END PKCS7-----The certificate to be used is not your own, but the certificate of the intended recipient of the message.
Chilkat PureBasic Downloads
IncludeFile "CkCert.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkCrypt2.pb"
Procedure ChilkatExample()
success.i = 0
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
crypt.i = CkCrypt2::ckCreate()
If crypt.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Specify the encryption to be used.
; "pki" indicates "Public Key Infrastructure" and will create a PKCS7 encrypted (enveloped) message.
CkCrypt2::setCkCryptAlgorithm(crypt, "pki")
CkCrypt2::setCkPkcs7CryptAlg(crypt, "aes")
CkCrypt2::setCkKeyLength(crypt, 128)
CkCrypt2::setCkOaepHash(crypt, "sha256")
CkCrypt2::setCkOaepPadding(crypt, 1)
; A certificate is needed as the encryption key..
cert.i = CkCert::ckCreate()
If cert.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkCert::ckLoadFromFile(cert,"qa_data/certs/testCert.pem")
If success <> 1
Debug CkCert::ckLastErrorText(cert)
CkCrypt2::ckDispose(crypt)
CkCert::ckDispose(cert)
ProcedureReturn
EndIf
; Tell the crypt object to use the certificate.
CkCrypt2::ckSetEncryptCert(crypt,cert)
toBeEncrypted.s = "This string is to be encrypted."
; Get the result in multi-line BASE64 MIME format.
CkCrypt2::setCkEncodingMode(crypt, "base64_mime")
encryptedStr.s = CkCrypt2::ckEncryptStringENC(crypt,toBeEncrypted)
If success <> 1
Debug CkCrypt2::ckLastErrorText(crypt)
CkCrypt2::ckDispose(crypt)
CkCert::ckDispose(cert)
ProcedureReturn
EndIf
; Make a "-----BEGIN PKCS7-----" ... "-----END PKCS7-----" sandwich...
sb.i = CkStringBuilder::ckCreate()
If sb.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkStringBuilder::ckAppendLine(sb,"-----BEGIN PKCS7-----",1)
CkStringBuilder::ckAppend(sb,encryptedStr)
CkStringBuilder::ckAppendLine(sb,"-----END PKCS7-----",1)
outStr.s = CkStringBuilder::ckGetAsString(sb)
Debug outStr
; Sample output:
; -----BEGIN PKCS7-----
; MIICYQYJKoZIhvcNAQcDoIICUjCCAk4CAQAxggH5MIIB9QIBADCBsTCBmzELMAkGA1UEBhMCR0Ix
; GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
; Q09NT0RPIENBIExpbWl0ZWQxQTA/BgNVBAMTOENPTU9ETyBTSEEtMjU2IENsaWVudCBBdXRoZW50
; aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAuBl4qE2MODB05C5h53M5UDA4BgkqhkiG9w0B
; AQcwK6APMA0GCWCGSAFlAwQCAQUAoRgwFgYJKoZIhvcNAQEIMAkGBSsOAwIaBQAEggEAyZejlE37
; awl0bCWVbOCqf9yLSN17mZRamG8FHDh3nNu11G0+oyJtsPDEnSKsQig0V67MZ+hcWV+uf4ytcjyx
; H0gs5uex+LwkB+c3ZTOt18IYWFtRilg1HFy1ZN3t0D2QbxYy+i1TXOOwp3gAHL45vRCJ0FbKyQ36
; pKl0XLe+lRvp2EiJCKVjxtX8VcZOKT4xkG7yOARaCQceth6pA58Dg0yzAz7w4nD2UgAlNzrXG69X
; e+7e7yfBv47RRqFiQqDpCn+fM/PmFbUyqBppMwc64yP+fJek8VyJw2/UaXWWM4iSKSflk90tiHwf
; loEU3It4arnSv94fZQo0v129aBqpWzBMBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAECBBCohUgm5qX+
; TE6PxtPCmWi8gCBgbNg39emAB+AqLozm+vSLjZOGfg3M52gccKUJ8tg8XQ==
; -----END PKCS7-----
CkCrypt2::ckDispose(crypt)
CkCert::ckDispose(cert)
CkStringBuilder::ckDispose(sb)
ProcedureReturn
EndProcedure