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 DLL) SFTP use Cert's Private Key for Authentication (Windows)Demonstrates how to use the private key of a pre-installed certificate (on Windows) for SFTP authentication. The certificate's private key must be marked as "exportable" when originally installed.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, SshKey, PrivateKey, Cert, SFtp; ... procedure TForm1.Button1Click(Sender: TObject); var cert: HCkCert; success: Boolean; privKey: HCkPrivateKey; privKeyPem: PWideChar; sshKey: HCkSshKey; sftp: HCkSFtp; begin // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. cert := CkCert_Create(); // Load the certificate from the Windows certificate store success := CkCert_LoadByCommonName(cert,'my_cert_common_name'); if (success = False) then begin Memo1.Lines.Add(CkCert__lastErrorText(cert)); Exit; end; // Get the private key. privKey := CkCert_ExportPrivateKey(cert); if (CkCert_getLastMethodSuccess(cert) = False) then begin Memo1.Lines.Add(CkCert__lastErrorText(cert)); Exit; end; privKeyPem := CkPrivateKey__getPkcs8Pem(privKey); if (CkPrivateKey_getLastMethodSuccess(privKey) = False) then begin Memo1.Lines.Add(CkPrivateKey__lastErrorText(privKey)); Exit; end; sshKey := CkSshKey_Create(); success := CkSshKey_FromOpenSshPrivateKey(sshKey,privKeyPem); if (success = False) then begin Memo1.Lines.Add(CkSshKey__lastErrorText(sshKey)); Exit; end; // Connect to an SSH/SFTP server sftp := CkSFtp_Create(); success := CkSFtp_Connect(sftp,'sftp.example.com',22); if (success = False) then begin Memo1.Lines.Add(CkSFtp__lastErrorText(sftp)); Exit; end; // Authenticate with the SSH server using a username + private key. // (The private key serves as the password. The username identifies // the SSH user account on the server.) success := CkSFtp_AuthenticatePk(sftp,'mySshLogin',sshKey); if (success = False) then begin Memo1.Lines.Add(CkSFtp__lastErrorText(sftp)); Exit; end; Memo1.Lines.Add('OK, the connection and authentication with the SSH server is completed.'); // This example is only to show the connection + authentication using a private key associated with a certificate in the Windows certificate store... CkCert_Dispose(cert); CkSshKey_Dispose(sshKey); CkSFtp_Dispose(sftp); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.