Sample code for 30+ languages & platforms
PowerBuilder

Convert PEM to PKCS12 / PFX

See more PEM Examples

Converts a PEM containing private key(s) and certificates, with extended properties, into a PKCS12 / PFX. A PEM with extended properties looks like this:
Bag Attributes
    localKeyID: 01 00 00 00
    friendlyName: le-1671821e-a2cd-4772-b0e4-5258de05117d
    Microsoft CSP Name: Microsoft RSA SChannel Cryptographic Provider
Key Attributes
    X509v3 Key Usage: 10
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFHzBJBgkqhkiG9w0BBQ0wPDAbBgkqhkiG9w0BBQwwDgQIMudDGh+tZYQCAggA
MB0GCWCGSAFlAwQBAgQQ4OSsxHAEu4mVhgcA9L7shASCBNCrBP0NPFTO45uw5Myh
...
XZhOf3kcRPT9npxPV1Ez6uEiug==
-----END ENCRYPTED PRIVATE KEY-----
Bag Attributes
    localKeyID: 01 00 00 00
    friendlyName: Chilkat Software
    1.3.6.1.4.1.311.17.3.20: 7C 94 55 D2 71 0B E4 3C D6 BD D8 06 D9 BD A8 EF 36 63 25 05
subject=/OU=Domain Control Validated/CN=www.chilkatsoft.com
issuer=/C=US/ST=Arizona/L=Scottsdale/O="GoDaddy.com, Inc."/OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
-----BEGIN CERTIFICATE-----
MIIFMDCCBBigAwIBAgIHJ6r9KpNgnzANBgkqhkiG9w0BAQsFADCBtDELMAkGA1UE
BhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAY
...
wXUiw2o3eiSCmh4/iF1hwCGbCR2Mx/JhdeEY6ytITDM1tiG4
-----END CERTIFICATE-----
Bag Attributes
    friendlyName: Go Daddy Root Certificate Authority – G2
    1.3.6.1.4.1.311.17.3.29: 70 25 3F BC BD E3 2A 01 4D 38 C1 99 30 98 AD 99
    1.3.6.1.4.1.311.17.3.20: 3A 9A 85 07 10 67 28 B6 EF F6 BD 05 41 6E 20 C1 94 DA 0F DE
    1.3.6.1.4.1.311.17.3.98: 45 14 0B 32 47 EB 9C C8 C5 B4 F0 D7 B5 30 91 F7 32 92 08 9E 6E 5A 63 E2 74 9D D3 AC A9 19 8E DA
    1.3.6.1.4.1.311.17.3.83: 30 23 30 21 06 0B 60 86 48 01 86 FD 6D 01 07 17 03 30 12 30 10 06 0A 2B 06 01 04 01 82 37 3C 01 01 03 02 00 C0
    1.3.6.1.4.1.311.17.3.9: 30 52 06 08 2B 06 01 05 05 07 03 01 06 08 2B 06 01 05 05 07 03 02 06 08 2B 06 01 05 05 07 03 03 06 08 2B 06 ...
subject=/C=US/ST=Arizona/L=Scottsdale/O="GoDaddy.com, Inc."/CN=Go Daddy Root Certificate Authority - G2
-----BEGIN CERTIFICATE-----
MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMx
EDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoT
...

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Pem
string ls_Password
string ls_PemContent
oleobject loo_Pfx

li_Success = 0

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

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

// Load the PEM from a file.
// If the PEM is encrypted, provide a password.  Otherwise pass an empty string for the password.
ls_Password = "myPassword"
li_Success = loo_Pem.LoadPemFile("../myPemFiles/myPem.pem",ls_Password)
if li_Success = 0 then
    Write-Debug loo_Pem.LastErrorText
    destroy loo_Pem
    return
end if

// Note: If the app already has the PEM pre-loaded in a string variable, then load it 
// by calling LoadPem instead.  
ls_PemContent = "... the PEM contents ..."
li_Success = loo_Pem.LoadPem(ls_PemContent,ls_Password)
// Check for success as before..

// Convert to a PFX object:
loo_Pfx = create oleobject
li_rc = loo_Pfx.ConnectToNewObject("Chilkat.Pfx")

li_Success = loo_Pem.ToPfxObj(loo_Pfx)
if li_Success = 0 then
    Write-Debug loo_Pem.LastErrorText
    destroy loo_Pem
    destroy loo_Pfx
    return
end if

// Save the PFX to a file:
li_Success = loo_Pfx.ToFile("myPfxPassword","../myPfxFiles/myPfx.pfx")
if li_Success = 0 then
    Write-Debug loo_Pfx.LastErrorText
    destroy loo_Pem
    destroy loo_Pfx
    return
end if



destroy loo_Pem
destroy loo_Pfx