Sample code for 30+ languages & platforms
DataFlex

Import a PFX/P12 into the Windows Certificate Stores

See more Certificates Examples

Demonstrates how to import the certificates contained in a .pfx/.p12 to the Windows certificate stores.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoPfx
    Boolean iExportable
    Boolean iUserProtected
    Boolean iMachineKeyset
    Boolean iAllowOverwriteKey
    Boolean iAllowExport
    String sLeafStore
    String sIntermediateStore
    String sRootStore
    Variant vJson
    Handle hoJson
    String sTemp1

    Move False To iSuccess

    Get Create (RefClass(cComChilkatPfx)) To hoPfx
    If (Not(IsComObjectCreated(hoPfx))) Begin
        Send CreateComObject of hoPfx
    End

    Get ComLoadPfxFile Of hoPfx "qa_data/pfx/example.p12" "p12Password" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoPfx To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // See the online reference documentation for more information about the ImportToWindows method.

    // Mark imported privae keys as exportable.
    Move True To iExportable

    // If userProtected is True, the user is to be notified through a dialog box or other method when certain attempts to use this key are made. 
    Move False To iUserProtected

    // If machineKeyset is True, the private keys are stored under the local computer and not under the current user. 
    Move False To iMachineKeyset

    // If allowOverwriteKey is True, allow overwrite of the existing key. 
    Move False To iAllowOverwriteKey

    // If allowExport is True, then the imported key can later be exported back to a PFX.
    // (It also allows for applications to directly access the private key material.)
    Move True To iAllowExport

    // Indicate where to import types of certs.
    Move "My" To sLeafStore
    Move "CertificationAuthority" To sIntermediateStore
    Move "AuthRoot" To sRootStore

    Get ComImportToWindows Of hoPfx iExportable iUserProtected iMachineKeyset iAllowOverwriteKey iAllowExport sLeafStore sIntermediateStore sRootStore "" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoPfx To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // Show information about the certificates imported
    Get Create (RefClass(cComChilkatJsonObject)) To hoJson
    If (Not(IsComObjectCreated(hoJson))) Begin
        Send CreateComObject of hoJson
    End
    Get pvComObject of hoJson to vJson
    Send ComGetLastJsonData To hoPfx vJson

    Set ComEmitCompact Of hoJson To False
    Get ComEmit Of hoJson To sTemp1
    Showln sTemp1

    // Sample of the last JSON data:

    // {
    //   "exportable": true,
    //   "userProtected": false,
    //   "machineKeyset": false,
    //   "allowOverwriteKey": false,
    //   "allowExport": true,
    //   "key": [
    //     {
    //       "name": "{F09B755A-1E90-444D-9851-02B86CA14961}",
    //       "storageProvider": "Microsoft Software Key Storage Provider"
    //     }
    //   ],
    //   "cert": [
    //     {
    //       "DN": "...",
    //       "type": "intermediate",
    //       "storeName": "CertificationAuthority",
    //       "imported": true
    //     },
    //     {
    //       "DN": "...",
    //       "type": "root",
    //       "storeName": "AuthRoot",
    //       "imported": true
    //     },
    //     {
    //       "DN": "....",
    //       "type": "leaf",
    //       "storeName": "My",
    //       "keyContainer": "{345D4EAD-B8DD-4150-9A1F-4BC6437E77A2}",
    //       "machineKeyset": true,
    //       "imported": true
    //     }
    //   ]
    // }

    Showln "Success."


End_Procedure