C
C
FTPS with Mutual TLS Authentication (TLS Client Certificate)
See more FTP Examples
Demonstrates how to do mutual TLS authentication (using a client certificate from a .pfx/.p12).Chilkat C Downloads
#include <C_CkFtp2.h>
#include <C_CkCert.h>
void ChilkatSample(void)
{
BOOL success;
HCkFtp2 ftp;
HCkCert cert;
success = FALSE;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
ftp = CkFtp2_Create();
CkFtp2_putHostname(ftp,"ftp.example.com");
CkFtp2_putPort(ftp,21);
// If using implicit TLS, you probably want port 990..
CkFtp2_putPort(ftp,990);
// Set this to FALSE for implicit TLS, otherwise set to TRUE for explicit TLS (where port is typically 21).
CkFtp2_putAuthTls(ftp,FALSE);
// Set this to TRUE for implicit TLS, otherwise set to FALSE.
CkFtp2_putSsl(ftp,TRUE);
cert = CkCert_Create();
success = CkCert_LoadPfxFile(cert,"qa_data/pfx/example.pfx","pfx_password");
if (success == FALSE) {
printf("%s\n",CkCert_lastErrorText(cert));
CkFtp2_Dispose(ftp);
CkCert_Dispose(cert);
return;
}
// Use this certificate for our TLS mutually authenticated connection:
success = CkFtp2_SetSslClientCert(ftp,cert);
if (success == FALSE) {
printf("%s\n",CkCert_lastErrorText(cert));
CkFtp2_Dispose(ftp);
CkCert_Dispose(cert);
return;
}
// Establish the TLS connection with the FTP server.
success = CkFtp2_ConnectOnly(ftp);
if (success == FALSE) {
printf("%s\n",CkFtp2_lastErrorText(ftp));
CkFtp2_Dispose(ftp);
CkCert_Dispose(cert);
return;
}
// If a login is required, then login with the FTP account login/password.
CkFtp2_putUsername(ftp,"myLogin");
CkFtp2_putPassword(ftp,"myPassword");
success = CkFtp2_LoginAfterConnectOnly(ftp);
if (success == FALSE) {
printf("%s\n",CkFtp2_lastErrorText(ftp));
CkFtp2_Dispose(ftp);
CkCert_Dispose(cert);
return;
}
// Do whatever you're doing to do ...
// upload files, download files, etc...
// .....
// .....
success = CkFtp2_Disconnect(ftp);
CkFtp2_Dispose(ftp);
CkCert_Dispose(cert);
}