Sample code for 30+ languages & platforms
PureBasic

Load Certificate from PFX (PKCS#12)

See more Certificates Examples

Loads a digital certificate (and private key, if available) from a PFX file.(also known as PKCS#12)

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkPrivateKey.pb"
IncludeFile "CkCert.pb"

Procedure ChilkatExample()

    success.i = 0

    cert.i = CkCert::ckCreate()
    If cert.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Load from the PFX file
    pfxFilename.s = "/Users/chilkat/testData/pfx/chilkat_ssl_pwd_is_test.pfx"
    pfxPassword.s = "test"

    ; A PFX typically contains certificates in the chain of authentication.
    ; The Chilkat cert object will choose the certificate w/
    ; private key farthest from the root authority cert.
    ; To access all the certificates in a PFX, use the 
    ; Chilkat certificate store object instead.
    success = CkCert::ckLoadPfxFile(cert,pfxFilename,pfxPassword)
    If success = 0
        Debug CkCert::ckLastErrorText(cert)
        CkCert::ckDispose(cert)
        ProcedureReturn
    EndIf

    ; Get some information about the digital certificate, 
    ; then get the private key...

    ; DN = "Distinguished Name"
    Debug "SubjectDN:" + CkCert::ckSubjectDN(cert)

    Debug "Common Name:" + CkCert::ckSubjectCN(cert)
    Debug "Issuer Common Name:" + CkCert::ckIssuerCN(cert)

    Debug "Serial Number:" + CkCert::ckSerialNumber(cert)

    privKey.i = CkPrivateKey::ckCreate()
    If privKey.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkCert::ckGetPrivateKey(cert,privKey)
    If success = 0
        Debug CkCert::ckLastErrorText(cert)
        CkCert::ckDispose(cert)
        CkPrivateKey::ckDispose(privKey)
        ProcedureReturn
    EndIf

    ; The private key object may be used in any Chilkat methods
    ; (in other objects/classes) that expect a private key argument.

    ; In this case, save the private key to a PKCS8 Encrypted PEM format file:
    pemPassword.s = "secret"
    pemPath.s = "/Users/chilkat/testData/pem/chilkat_privKey.pem"
    success = CkPrivateKey::ckSavePkcs8EncryptedPemFile(privKey,pemPassword,pemPath)
    If success = 0
        Debug CkPrivateKey::ckLastErrorText(privKey)
        CkCert::ckDispose(cert)
        CkPrivateKey::ckDispose(privKey)
        ProcedureReturn
    EndIf

    Debug "Private key saved to PKCS8 Encrypted PEM..."


    CkCert::ckDispose(cert)
    CkPrivateKey::ckDispose(privKey)


    ProcedureReturn
EndProcedure