Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(AutoIt) Import a PFX/P12 into the Windows Certificate StoresDemonstrates how to import the certificates contained in a .pfx/.p12 to the Windows certificate stores.
$oPrimaryCert = ObjCreate("Chilkat.Cert") ; Load a PFX file into a certificate object. ; The cert object will contain the certificate from the PFX that has a private key. ; The certs in the chain of authentication (if contained in the PFX) are also loaded, ; and can be accessed by getting the certificate chain (see below). ; If the PFX did not include the issuer certs in the chain of authentication, then Chilkat will ; automatically try to construct the issuer chain from the CA and intermedicate CA certs ; already installed on the Windows system. Local $sPfxPassword = "myPfxPassword" Local $bSuccess = $oPrimaryCert.LoadPfxFile("qa_data/pfx/somePfx.p12",$sPfxPassword) If ($bSuccess = False) Then ConsoleWrite($oPrimaryCert.LastErrorText & @CRLF) Exit EndIf Local $oCertChain = $oPrimaryCert.GetCertChain() If ($oPrimaryCert.LastMethodSuccess = False) Then ConsoleWrite($oPrimaryCert.LastErrorText & @CRLF) Exit EndIf ; If the certificate chain reaches the root CA cert, then the last cert in the chain ; is the root CA cert. Local $bChainReachesRoot = $oCertChain.ReachesRoot If ($bChainReachesRoot = True) Then ConsoleWrite("The certificate chain reaches the root CA cert." & @CRLF) EndIf Local $oCert Local $i = 0 Local $iNumCerts = $oCertChain.NumCerts While $i < $iNumCerts $oCert = $oCertChain.GetCert($i) ConsoleWrite("SubjectDN " & $i & ": " & $oCert.SubjectDN & @CRLF) ConsoleWrite("IssuerDN " & $i & ": " & $oCert.IssuerDN & @CRLF) ConsoleWrite("--" & @CRLF) $i = $i + 1 Wend ; The primary cert having the private key will be imported into the Current User "My" certificate store. ; Any intermediate root certificates will be imported into certificate store for intermediate certificate authorities. ; The root CA cert will be imported into the Root CA cert store. ; Let's open each of these 3 certificate stores.. $oCertStoreCU = ObjCreate("Chilkat.CertStore") $oCertStoreCA = ObjCreate("Chilkat.CertStore") $oCertStoreRootCA = ObjCreate("Chilkat.CertStore") Local $bReadOnlyFlag = False ; "CurrentUser" and "My" are the exact keywords to select your user account's certificate store. $bSuccess = $oCertStoreCU.OpenWindowsStore("CurrentUser","My",$bReadOnlyFlag) If ($bSuccess = False) Then ConsoleWrite("Failed to open the CurrentUser/My certificate store for read/write." & @CRLF) Exit EndIf ; Certificate store for intermediate certification authorities (CAs). $bSuccess = $oCertStoreCA.OpenWindowsStore("CurrentUser","CertificationAuthority",$bReadOnlyFlag) If ($bSuccess = False) Then ConsoleWrite("Failed to open the CurrentUser/CertificationAuthority certificate store for read/write." & @CRLF) Exit EndIf ; Certificate store for trusted root certification authorities (CAs). $bSuccess = $oCertStoreRootCA.OpenWindowsStore("CurrentUser","Root",$bReadOnlyFlag) If ($bSuccess = False) Then ConsoleWrite("Failed to open the CurrentUser/Root certificate store for read/write." & @CRLF) Exit EndIf ; Iterate over the certs in the chain and import each into the desired certificate store. Local $bAllSuccess = True $i = 0 While $i < $iNumCerts $oCert = $oCertChain.GetCert($i) If ($i = 0) Then ; Import the primary certificate into the CurrentUser/My certificate store. $bSuccess = $oCertStoreCU.AddCertificate($oCert) If ($bSuccess = False) Then ConsoleWrite($oCertStoreCU.LastErrorText & @CRLF) $bAllSuccess = False EndIf Else If (($i = ($iNumCerts - 1)) And ($bChainReachesRoot = True)) Then ; Add the root CA certificate to the CurrentUser/Root certificate store. ; (Your application can obviously choose whether this should be done or not. Perhaps you prompt the user.) ; Note: If the root CA cert is already present in the Windows certificate store, Windows will display ; a dialog to ask if it should be deleted. Chilkat does not explicitly display dialogs. $bSuccess = $oCertStoreRootCA.AddCertificate($oCert) If ($bSuccess = False) Then ConsoleWrite($oCertStoreRootCA.LastErrorText & @CRLF) $bAllSuccess = False EndIf Else ; This is an intermediate CA certificate. $bSuccess = $oCertStoreCA.AddCertificate($oCert) If ($bSuccess = False) Then ConsoleWrite($oCertStoreCA.LastErrorText & @CRLF) $bAllSuccess = False EndIf EndIf EndIf If ($bSuccess = False) Then ConsoleWrite("Failed to import certificate." & @CRLF) EndIf $i = $i + 1 Wend ConsoleWrite("allSuccess = " & $bAllSuccess & @CRLF) |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.