Sample code for 30+ languages & platforms
PureBasic Requires Chilkat v11.0.0+

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