DataFlex
DataFlex
SFTP use Cert's Private Key from PFX (.pfx/.p12)
See more SFTP Examples
Demonstrates how to use the private key associated with a certificate from a .pfx/.p12 file.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoCert
String sPfxFilepath
String sPfxPassword
Variant vPrivKey
Handle hoPrivKey
String sPrivKeyPem
Variant vSshKey
Handle hoSshKey
Handle hoSftp
String sTemp1
Boolean bTemp1
Move False To iSuccess
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatCert)) To hoCert
If (Not(IsComObjectCreated(hoCert))) Begin
Send CreateComObject of hoCert
End
Move "qa_data/pfx/my.pfx" To sPfxFilepath
Move "secret" To sPfxPassword
// 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.
Get ComLoadPfxFile Of hoCert sPfxFilepath sPfxPassword To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoCert To sTemp1
Showln sTemp1
Procedure_Return
End
// Get the private key.
Get Create (RefClass(cComChilkatPrivateKey)) To hoPrivKey
If (Not(IsComObjectCreated(hoPrivKey))) Begin
Send CreateComObject of hoPrivKey
End
Get pvComObject of hoPrivKey to vPrivKey
Get ComGetPrivateKey Of hoCert vPrivKey To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoCert To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComGetPkcs8Pem Of hoPrivKey To sPrivKeyPem
Get ComLastMethodSuccess Of hoPrivKey To bTemp1
If (bTemp1 = False) Begin
Get ComLastErrorText Of hoPrivKey To sTemp1
Showln sTemp1
Procedure_Return
End
Get Create (RefClass(cComChilkatSshKey)) To hoSshKey
If (Not(IsComObjectCreated(hoSshKey))) Begin
Send CreateComObject of hoSshKey
End
Get ComFromOpenSshPrivateKey Of hoSshKey sPrivKeyPem To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoSshKey To sTemp1
Showln sTemp1
Procedure_Return
End
// Connect to an SSH/SFTP server
Get Create (RefClass(cComChilkatSFtp)) To hoSftp
If (Not(IsComObjectCreated(hoSftp))) Begin
Send CreateComObject of hoSftp
End
Get ComConnect Of hoSftp "sftp.example.com" 22 To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoSftp To sTemp1
Showln sTemp1
Procedure_Return
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.)
Get pvComObject of hoSshKey to vSshKey
Get ComAuthenticatePk Of hoSftp "mySshLogin" vSshKey To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoSftp To sTemp1
Showln sTemp1
Procedure_Return
End
Showln "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...
End_Procedure