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) Get Public Key from CSRDemonstrates how to get the public key from a CSR.
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 pem: TChilkatPem; noPassword: WideString; success: Integer; strBase64: WideString; asn: TChilkatAsn; xml: TChilkatXml; strModulusHex: WideString; bd: TChilkatBinData; modulus64: WideString; xmlPubKey: TChilkatXml; pubkey: TPublicKey; preferPkcs1: Integer; begin // This requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. pem := TChilkatPem.Create(Self); // No password is required. Pass an empty password string.. noPassword := ''; success := pem.LoadPemFile('qa_data/csr/csr2.pem',noPassword); if (success <> 1) then begin Memo1.Lines.Add(pem.LastErrorText); Exit; end; strBase64 := pem.GetEncodedItem('csr','','base64',0); asn := TChilkatAsn.Create(Self); success := asn.LoadEncoded(strBase64,'base64'); if (success <> 1) then begin Memo1.Lines.Add(asn.LastErrorText); Exit; end; // Convert the ASN.1 to XML. xml := TChilkatXml.Create(Self); success := xml.LoadXml(asn.AsnToXml()); Memo1.Lines.Add(xml.GetXml()); Memo1.Lines.Add('----'); strModulusHex := xml.GetChildContent('bits'); Memo1.Lines.Add('strModulusHex = ' + strModulusHex); Memo1.Lines.Add('----'); // We need the modulus as base64. bd := TChilkatBinData.Create(Self); bd.AppendEncoded(strModulusHex,'hex'); modulus64 := bd.GetEncoded('base64'); Memo1.Lines.Add('modulus64 = ' + modulus64); Memo1.Lines.Add('----'); // Build the XML for the public key. xmlPubKey := TChilkatXml.Create(Self); xmlPubKey.Tag := 'RSAPublicKey'; xmlPubKey.UpdateChildContent('Modulus',modulus64); // The RSA exponent will always be decimal 65537 (base64 = AQAB) xmlPubKey.UpdateChildContent('Exponent','AQAB'); Memo1.Lines.Add('RSA public key as XML:'); Memo1.Lines.Add(xmlPubKey.GetXml()); Memo1.Lines.Add('----'); // Load the XML into a Chilkat public key object. pubkey := TPublicKey.Create(Self); success := pubkey.LoadFromString(xmlPubKey.GetXml()); if (success <> 1) then begin Memo1.Lines.Add(pubkey.LastErrorText); Exit; end; // Show the public key as PEM. preferPkcs1 := 1; Memo1.Lines.Add(pubkey.GetPem(preferPkcs1)); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.