Sample code for 30+ languages & platforms
Unicode C

Get Certificate Subject Part by Name or OID

Demonstrates the GetSubjectPart method where a name or OID can be passed.

Chilkat Unicode C Downloads

Unicode C
#include <C_CkCertW.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkCertW cert;
    const wchar_t *serialNum;

    success = FALSE;

    cert = CkCertW_Create();

    success = CkCertW_LoadByCommonName(cert,L"myCert");
    if (success == FALSE) {
        wprintf(L"%s\n",CkCertW_lastErrorText(cert));
        CkCertW_Dispose(cert);
        return;
    }

    //  This example demonstrates getting the SERIALNUMBER part of the subject,
    //  if one such part exists in the cert's subject.
    //  Not too many certicates include the serial number in the Subject.
    //  (Chilean issued certificates for SII is one such case where the SERIALNUMBER part exists within the Subject.)
    serialNum = CkCertW_getSubjectPart(cert,L"SERIALNUMBER");
    if (CkCertW_getLastMethodSuccess(cert) == FALSE) {
        wprintf(L"No SERIALNUMBER part exists.\n");
        CkCertW_Dispose(cert);
        return;
    }

    wprintf(L"%s\n",serialNum);

    //  We could also get the part by the OID.
    //  See https://oidref.com/2.5.4.5 for a list of OID's in the 2.5.4.* range..
    //  The OID for SERIALNUMBER is "2.5.4.5"
    serialNum = CkCertW_getSubjectPart(cert,L"2.5.4.5");
    if (CkCertW_getLastMethodSuccess(cert) == FALSE) {
        wprintf(L"No SERIALNUMBER part exists.\n");
        CkCertW_Dispose(cert);
        return;
    }

    wprintf(L"%s\n",serialNum);


    CkCertW_Dispose(cert);

    }