Sample code for 30+ languages & platforms
PureBasic

Transition from Crypt2.GetSignerCertChain to Crypt2.LastSignerCert

Provides instructions for replacing deprecated GetSignerCertChain method calls with LastSignerCert.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkCert.pb"
IncludeFile "CkCertChain.pb"
IncludeFile "CkCrypt2.pb"

Procedure ChilkatExample()

    success.i = 0

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

    ; ...
    ; ...
    index.i = 0

    ; ------------------------------------------------------------------------
    ; The GetSignerCertChain method is deprecated:

    certchainObj.i = CkCrypt2::ckGetSignerCertChain(crypt2,index)
    If CkCrypt2::ckLastMethodSuccess(crypt2) = 0
        Debug CkCrypt2::ckLastErrorText(crypt2)
        CkCrypt2::ckDispose(crypt2)
        ProcedureReturn
    EndIf

    ; ...
    ; ...

    CkCertChain::ckDispose(certchainObj)

    ; ------------------------------------------------------------------------
    ; Do the equivalent using LastSignerCert, and then get the certificate chain from the cert.
    ; Your application creates a new, empty Cert object which is passed 
    ; in the last argument and filled upon success.

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

    success = CkCrypt2::ckLastSignerCert(crypt2,index,signerCert)
    If success = 0
        Debug CkCrypt2::ckLastErrorText(crypt2)
        CkCrypt2::ckDispose(crypt2)
        CkCert::ckDispose(signerCert)
        ProcedureReturn
    EndIf

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

    success = CkCert::ckBuildCertChain(signerCert,certChain)
    If success = 0
        Debug CkCert::ckLastErrorText(signerCert)
        CkCrypt2::ckDispose(crypt2)
        CkCert::ckDispose(signerCert)
        CkCertChain::ckDispose(certChain)
        ProcedureReturn
    EndIf



    CkCrypt2::ckDispose(crypt2)
    CkCert::ckDispose(signerCert)
    CkCertChain::ckDispose(certChain)


    ProcedureReturn
EndProcedure