Sample code for 30+ languages & platforms
PowerBuilder

Encrypt/Decrypt using PFX to produce -----BEGIN PKCS7----- ... -----END PKCS7-----

See more Encryption Examples

First we encrypt using a certificate + public key to produce output such as:
-----BEGIN PKCS7-----
MIIHPwYJKoZIhvcNAQcEoIIHMDCCBywC ...
...
...
-----END PKCS7-----
Then we decrypt using the cert + private key.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
long li_Success
oleobject loo_Crypt
oleobject loo_Cert
string ls_ToBeEncrypted
string ls_EncryptedStr
oleobject loo_Sb
string ls_OutStr
long li_BCrlf
oleobject loo_Decrypt
string ls_DecryptedText

li_Success = 0

//  This example requires the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

loo_Crypt = create oleobject
li_rc = loo_Crypt.ConnectToNewObject("Chilkat.Crypt2")
if li_rc < 0 then
    destroy loo_Crypt
    MessageBox("Error","Connecting to COM object failed")
    return
end if

//  Specify the encryption to be used.
//  "pki" indicates "Public Key Infrastructure" and will create a PKCS7 encrypted (enveloped) message.
loo_Crypt.CryptAlgorithm = "pki"
loo_Crypt.Pkcs7CryptAlg = "aes"
loo_Crypt.KeyLength = 128
loo_Crypt.OaepHash = "sha256"
loo_Crypt.OaepPadding = 1

//  A certificate is needed as the encryption key.
//  Althought the PFX contains the associated private key, we don't need it for encryption.
//  (A certificate usually contains the public key by default.)
loo_Cert = create oleobject
li_rc = loo_Cert.ConnectToNewObject("Chilkat.Cert")

li_Success = loo_Cert.LoadPfxFile("qa_data/pfx/cert_test123.pfx","test123")
if li_Success <> 1 then
    Write-Debug loo_Cert.LastErrorText
    destroy loo_Crypt
    destroy loo_Cert
    return
end if

//  Tell the crypt object to use the certificate.
loo_Crypt.SetEncryptCert(loo_Cert)

ls_ToBeEncrypted = "This string is to be encrypted."

//  Get the result in multi-line BASE64 MIME format.
loo_Crypt.EncodingMode = "base64_mime"

ls_EncryptedStr = loo_Crypt.EncryptStringENC(ls_ToBeEncrypted)
if li_Success <> 1 then
    Write-Debug loo_Crypt.LastErrorText
    destroy loo_Crypt
    destroy loo_Cert
    return
end if

//  Make a "-----BEGIN PKCS7-----" ... "-----END PKCS7-----" sandwich...
loo_Sb = create oleobject
li_rc = loo_Sb.ConnectToNewObject("Chilkat.StringBuilder")

loo_Sb.AppendLine("-----BEGIN PKCS7-----",1)
loo_Sb.Append(ls_EncryptedStr)
loo_Sb.AppendLine("-----END PKCS7-----",1)

ls_OutStr = loo_Sb.GetAsString()

Write-Debug ls_OutStr

//  Sample output:

//  -----BEGIN PKCS7-----
//  MIICXAYJKoZIhvcNAQcDoIICTTCCAkkCAQAxggH0MIIB8AIBADCBrDCBlzELMAkGA1UEBhMCR0Ix
//  GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
//  Q09NT0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0
//  aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEB6M1ZwZdZU7LrAIdurulmUwOAYJKoZIhvcNAQEHMCug
//  DzANBglghkgBZQMEAgEFAKEYMBYGCSqGSIb3DQEBCDAJBgUrDgMCGgUABIIBAK/BZG/iXJ8az7zL
//  8EQ77mc+oDPQ4w1hyytK2ip4djkPVvTfYhcoDQ+G/DBU+urJfrVBi5H9gmpXwYyfKlyUxBVRVEJl
//  V/V5QQi4JmNTFbmgWh5tp9zDS98l6A2Va4Zs0Wy/owGLfvwitlxd1dsfVAV2hmBYS24BMpNcty5/
//  0atcKYmSou13G78ztTKdMy1tECgZy8kerMsPdDQbSxEZkT3KpQ8C5uEQqYF3bIVaeZzha/Ywieh/
//  tvO0T4aAmeJufwkNdVECmU7kuhnNaVPXknFl7jeibTl6zA/VcJKBKcIYT9FRC7KjdooI8q+jtQ/V
//  k6RP4POaowkFg1QWRPEWeqIwTAYJKoZIhvcNAQcBMB0GCWCGSAFlAwQBAgQQEEFQduqeJqXQXzy4
//  JpkoDoAgdldJDB9zEkpMpgr5/fR2iLvh5kC6BPfhOYjsawBY4Ok=
//  -----END PKCS7-----

//  ----------------------------------------------------------------------------------------
//  Let's Decrypt the above string.

//  Start with what was produced above..
loo_Sb.Clear()
li_BCrlf = 1
loo_Sb.AppendLine("-----BEGIN PKCS7-----",li_BCrlf)
loo_Sb.AppendLine("MIICXAYJKoZIhvcNAQcDoIICTTCCAkkCAQAxggH0MIIB8AIBADCBrDCBlzELMAkGA1UEBhMCR0Ix",li_BCrlf)
loo_Sb.AppendLine("GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR",li_BCrlf)
loo_Sb.AppendLine("Q09NT0RPIENBIExpbWl0ZWQxPTA7BgNVBAMTNENPTU9ETyBSU0EgQ2xpZW50IEF1dGhlbnRpY2F0",li_BCrlf)
loo_Sb.AppendLine("aW9uIGFuZCBTZWN1cmUgRW1haWwgQ0ECEB6M1ZwZdZU7LrAIdurulmUwOAYJKoZIhvcNAQEHMCug",li_BCrlf)
loo_Sb.AppendLine("DzANBglghkgBZQMEAgEFAKEYMBYGCSqGSIb3DQEBCDAJBgUrDgMCGgUABIIBAK/BZG/iXJ8az7zL",li_BCrlf)
loo_Sb.AppendLine("8EQ77mc+oDPQ4w1hyytK2ip4djkPVvTfYhcoDQ+G/DBU+urJfrVBi5H9gmpXwYyfKlyUxBVRVEJl",li_BCrlf)
loo_Sb.AppendLine("V/V5QQi4JmNTFbmgWh5tp9zDS98l6A2Va4Zs0Wy/owGLfvwitlxd1dsfVAV2hmBYS24BMpNcty5/",li_BCrlf)
loo_Sb.AppendLine("0atcKYmSou13G78ztTKdMy1tECgZy8kerMsPdDQbSxEZkT3KpQ8C5uEQqYF3bIVaeZzha/Ywieh/",li_BCrlf)
loo_Sb.AppendLine("tvO0T4aAmeJufwkNdVECmU7kuhnNaVPXknFl7jeibTl6zA/VcJKBKcIYT9FRC7KjdooI8q+jtQ/V",li_BCrlf)
loo_Sb.AppendLine("k6RP4POaowkFg1QWRPEWeqIwTAYJKoZIhvcNAQcBMB0GCWCGSAFlAwQBAgQQEEFQduqeJqXQXzy4",li_BCrlf)
loo_Sb.AppendLine("JpkoDoAgdldJDB9zEkpMpgr5/fR2iLvh5kC6BPfhOYjsawBY4Ok=",li_BCrlf)
loo_Sb.AppendLine("-----END PKCS7-----",li_BCrlf)

loo_Decrypt = create oleobject
li_rc = loo_Decrypt.ConnectToNewObject("Chilkat.Crypt2")

loo_Decrypt.CryptAlgorithm = "pki"

//  Use the same cert + private key from the PFX above.
//  For decryption, we need the private key.  Given that the certificate was loaded from a PFX,
//  we should already have it.
li_Success = loo_Decrypt.SetDecryptCert(loo_Cert)

loo_Decrypt.EncodingMode = "base64"
ls_DecryptedText = loo_Decrypt.DecryptStringENC(loo_Sb.GetBetween("-----BEGIN PKCS7-----","-----END PKCS7-----"))

Write-Debug ls_DecryptedText


destroy loo_Crypt
destroy loo_Cert
destroy loo_Sb
destroy loo_Decrypt