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
(Delphi ActiveX) Export a Certificate's Private Key to Various FormatsLoads a digital certificate and private key from a PFX file (also known as PKCS#12) and exports the private key to various formats: (1) PKCS8 Encrypted, (2) PKCS8 Encrypted PEM, (3) PKCS8 unencrypted, (4) PKCS8 PEM unencrypted, (5) RSA DER unencrypted, (6) RSA PEM unencrypted, (7) XML.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB; ... procedure TForm1.Button1Click(Sender: TObject); var cert: TChilkatCert; pfxFilename: WideString; pfxPassword: WideString; success: Integer; privKey: IPrivateKey; password: WideString; path: WideString; begin cert := TChilkatCert.Create(Self); // Load from the PFX file pfxFilename := '/Users/chilkat/testData/pfx/chilkat_ssl_pwd_is_test.pfx'; pfxPassword := 'test'; // A PFX typically contains certificates in the chain of authentication. // The Chilkat cert object will choose the certificate w/ // private key farthest from the root authority cert. // To access all the certificates in a PFX, use the // Chilkat certificate store object instead. success := cert.LoadPfxFile(pfxFilename,pfxPassword); if (success <> 1) then begin Memo1.Lines.Add(cert.LastErrorText); Exit; end; // Get the private key... privKey := cert.ExportPrivateKey(); if (cert.LastMethodSuccess = 0) then begin Memo1.Lines.Add(cert.LastErrorText); Exit; end; // Export to various formats: password := 'secret'; // PKCS8 Encrypted DER path := '/Users/chilkat/testData/privkeys/chilkat_pkcs8_enc.der'; success := privKey.SavePkcs8EncryptedFile(password,path); if (success <> 1) then begin Memo1.Lines.Add(privKey.LastErrorText); Exit; end; // PKCS8 Encrypted PEM path := '/Users/chilkat/testData/privkeys/chilkat_pkcs8_enc.pem'; success := privKey.SavePkcs8EncryptedPemFile(password,path); if (success <> 1) then begin Memo1.Lines.Add(privKey.LastErrorText); Exit; end; // PKCS8 Unencrypted DER path := '/Users/chilkat/testData/privkeys/chilkat_pkcs8.der'; success := privKey.SavePkcs8File(path); if (success <> 1) then begin Memo1.Lines.Add(privKey.LastErrorText); Exit; end; // PKCS8 Unencrypted PEM path := '/Users/chilkat/testData/privkeys/chilkat_pkcs8.pem'; success := privKey.SavePkcs8PemFile(path); if (success <> 1) then begin Memo1.Lines.Add(privKey.LastErrorText); Exit; end; // RSA DER (unencrypted) path := '/Users/chilkat/testData/privkeys/chilkat_rsa.der'; success := privKey.SavePkcs1File(path); if (success <> 1) then begin Memo1.Lines.Add(privKey.LastErrorText); Exit; end; // RSA PEM (unencrypted) path := '/Users/chilkat/testData/privkeys/chilkat_rsa.pem'; success := privKey.SavePemFile(path); if (success <> 1) then begin Memo1.Lines.Add(privKey.LastErrorText); Exit; end; // XML (unencrypted) path := '/Users/chilkat/testData/privkeys/chilkat.xml'; success := privKey.SaveXmlFile(path); if (success <> 1) then begin Memo1.Lines.Add(privKey.LastErrorText); Exit; end; Memo1.Lines.Add('Private key exported to all formats.'); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.