Unicode C
Unicode C
FTPS with Client Cert from Windows Certificate Store
See more FTP Examples
Demonstrates how to do mutual TLS authentication using a client certificate installed in the Windows certificate store.Chilkat Unicode C Downloads
#include <C_CkFtp2W.h>
#include <C_CkCertW.h>
void ChilkatSample(void)
{
BOOL success;
HCkFtp2W ftp;
HCkCertW cert;
success = FALSE;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
ftp = CkFtp2W_Create();
CkFtp2W_putHostname(ftp,L"ftp.example.com");
// If using implicit TLS, you probably want port 990..
CkFtp2W_putPort(ftp,990);
// Set this to FALSE for implicit TLS, otherwise set to TRUE for explicit TLS (where port is typically 21).
CkFtp2W_putAuthTls(ftp,FALSE);
// Set this to TRUE for implicit TLS, otherwise set to FALSE.
CkFtp2W_putSsl(ftp,TRUE);
cert = CkCertW_Create();
success = CkCertW_LoadByCommonName(cert,L"The common name of your certificate");
if (success == FALSE) {
wprintf(L"%s\n",CkCertW_lastErrorText(cert));
CkFtp2W_Dispose(ftp);
CkCertW_Dispose(cert);
return;
}
// Use this certificate for our TLS mutually authenticated connection:
success = CkFtp2W_SetSslClientCert(ftp,cert);
if (success == FALSE) {
wprintf(L"%s\n",CkCertW_lastErrorText(cert));
CkFtp2W_Dispose(ftp);
CkCertW_Dispose(cert);
return;
}
// Establish the TLS connection with the FTP server.
success = CkFtp2W_ConnectOnly(ftp);
if (success == FALSE) {
wprintf(L"%s\n",CkFtp2W_lastErrorText(ftp));
CkFtp2W_Dispose(ftp);
CkCertW_Dispose(cert);
return;
}
// If a login is required, then login with the FTP account login/password.
CkFtp2W_putUsername(ftp,L"myLogin");
CkFtp2W_putPassword(ftp,L"myPassword");
success = CkFtp2W_LoginAfterConnectOnly(ftp);
if (success == FALSE) {
wprintf(L"%s\n",CkFtp2W_lastErrorText(ftp));
CkFtp2W_Dispose(ftp);
CkCertW_Dispose(cert);
return;
}
// Do whatever you're doing to do ...
// upload files, download files, etc...
// .....
// .....
success = CkFtp2W_Disconnect(ftp);
CkFtp2W_Dispose(ftp);
CkCertW_Dispose(cert);
}