Sample code for 30+ languages & platforms
Unicode C

Export Digital Certificate's Public Key

See more Certificates Examples

The ExportPublicKey method can be called to get a certificate's public key. It can then be saved to any of a number of formats: (1) OpenSSL DER, (2) OpenSSL PEM, (3) RSA DER, (4) XML.

Chilkat Unicode C Downloads

Unicode C
#include <C_CkCertW.h>
#include <C_CkPublicKeyW.h>

void ChilkatSample(void)
    {
    BOOL success;
    HCkCertW cert;
    HCkPublicKeyW pubkey;

    success = FALSE;

    cert = CkCertW_Create();

    // LoadFromFile will load virtually any certificate format file.
    // It will auto-recognize the format and load appropiately.
    success = CkCertW_LoadFromFile(cert,L"/Users/chilkat/testData/cer/chilkat.cer");
    if (success == FALSE) {
        wprintf(L"%s\n",CkCertW_lastErrorText(cert));
        CkCertW_Dispose(cert);
        return;
    }

    // Get the public key:
    pubkey = CkPublicKeyW_Create();
    CkCertW_GetPublicKey(cert,pubkey);

    // Save to various formats:
    success = CkPublicKeyW_SaveDerFile(pubkey,FALSE,L"/Users/chilkat/testData/pubkeys/chilkat_pkcs8.der");
    if (success != TRUE) {
        wprintf(L"%s\n",CkPublicKeyW_lastErrorText(pubkey));
        CkCertW_Dispose(cert);
        CkPublicKeyW_Dispose(pubkey);
        return;
    }

    success = CkPublicKeyW_SavePemFile(pubkey,FALSE,L"/Users/chilkat/testData/pubkeys/chilkat.pem");
    if (success != TRUE) {
        wprintf(L"%s\n",CkPublicKeyW_lastErrorText(pubkey));
        CkCertW_Dispose(cert);
        CkPublicKeyW_Dispose(pubkey);
        return;
    }

    success = CkPublicKeyW_SaveDerFile(pubkey,TRUE,L"/Users/chilkat/testData/pubkeys/chilkat_pkcs1.der");
    if (success != TRUE) {
        wprintf(L"%s\n",CkPublicKeyW_lastErrorText(pubkey));
        CkCertW_Dispose(cert);
        CkPublicKeyW_Dispose(pubkey);
        return;
    }

    success = CkPublicKeyW_SaveXmlFile(pubkey,L"/Users/chilkat/testData/pubkeys/chilkat.xml");
    if (success != TRUE) {
        wprintf(L"%s\n",CkPublicKeyW_lastErrorText(pubkey));
        CkCertW_Dispose(cert);
        CkPublicKeyW_Dispose(pubkey);
        return;
    }

    wprintf(L"Public key exported to all file formats.\n");


    CkCertW_Dispose(cert);
    CkPublicKeyW_Dispose(pubkey);

    }