Sample code for 30+ languages & platforms
Unicode C

Transition from Crypt2.GetSignerCertChain to Crypt2.LastSignerCert

Provides instructions for replacing deprecated GetSignerCertChain method calls with LastSignerCert.

Chilkat Unicode C Downloads

Unicode C
#include <C_CkCrypt2W.h>
#include <C_CkCertChainW.h>
#include <C_CkCertW.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkCrypt2W crypt2;
    int index;
    HCkCertChainW certchainObj;
    HCkCertW signerCert;
    HCkCertChainW certChain;

    success = FALSE;

    crypt2 = CkCrypt2W_Create();

    //  ...
    //  ...
    index = 0;

    //  ------------------------------------------------------------------------
    //  The GetSignerCertChain method is deprecated:

    certchainObj = CkCrypt2W_GetSignerCertChain(crypt2,index);
    if (CkCrypt2W_getLastMethodSuccess(crypt2) == FALSE) {
        wprintf(L"%s\n",CkCrypt2W_lastErrorText(crypt2));
        CkCrypt2W_Dispose(crypt2);
        return;
    }

    //  ...
    //  ...

    CkCertChainW_Dispose(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 = CkCertW_Create();
    success = CkCrypt2W_LastSignerCert(crypt2,index,signerCert);
    if (success == FALSE) {
        wprintf(L"%s\n",CkCrypt2W_lastErrorText(crypt2));
        CkCrypt2W_Dispose(crypt2);
        CkCertW_Dispose(signerCert);
        return;
    }

    certChain = CkCertChainW_Create();
    success = CkCertW_BuildCertChain(signerCert,certChain);
    if (success == FALSE) {
        wprintf(L"%s\n",CkCertW_lastErrorText(signerCert));
        CkCrypt2W_Dispose(crypt2);
        CkCertW_Dispose(signerCert);
        CkCertChainW_Dispose(certChain);
        return;
    }



    CkCrypt2W_Dispose(crypt2);
    CkCertW_Dispose(signerCert);
    CkCertChainW_Dispose(certChain);

    }