PureBasic
PureBasic
Install PFX Certificates and Private Keys to Windows
See more PFX/P12 Examples
Demonstrates how to install the certificates and private keys contained in a PFX to the Windows certificate stores.Chilkat PureBasic Downloads
IncludeFile "CkPfx.pb"
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
pfx.i = CkPfx::ckCreate()
If pfx.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkPfx::ckLoadPfxFile(pfx,"qa_data/pfx/test_secret.pfx","secret")
If success = 0
Debug CkPfx::ckLastErrorText(pfx)
CkPfx::ckDispose(pfx)
ProcedureReturn
EndIf
; See the online reference documentation for more information about the ImportToWindows method.
; Mark imported privae keys as exportable.
exportable.i = 1
; If userProtected is 1, the user is to be notified through a dialog box or other method when certain attempts to use this key are made.
userProtected.i = 0
; If machineKeyset is 1, the private keys are stored under the local computer and not under the current user.
machineKeyset.i = 0
; If allowOverwriteKey is 1, allow overwrite of the existing key.
allowOverwriteKey.i = 0
; If allowExport is 1, then the imported key can later be exported back to a PFX.
; (It also allows for applications to directly access the private key material.)
allowExport.i = 1
; Indicate where to import types of certs.
leafStore.s = "My"
intermediateStore.s = "CertificationAuthority"
rootStore.s = "AuthRoot"
success = CkPfx::ckImportToWindows(pfx,exportable,userProtected,machineKeyset,allowOverwriteKey,allowExport,leafStore,intermediateStore,rootStore,"")
If success = 0
Debug CkPfx::ckLastErrorText(pfx)
CkPfx::ckDispose(pfx)
ProcedureReturn
EndIf
; Show information about the certificates imported
json.i = CkJsonObject::ckCreate()
If json.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkPfx::ckGetLastJsonData(pfx,json)
CkJsonObject::setCkEmitCompact(json, 0)
Debug CkJsonObject::ckEmit(json)
; Sample output:
; {
; "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
; }
; ]
; }
Debug "Success."
CkPfx::ckDispose(pfx)
CkJsonObject::ckDispose(json)
ProcedureReturn
EndProcedure