Objective-C
Objective-C
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 Objective-C Downloads
#import <CkoCert.h>
#import <NSString.h>
#import <CkoPrivateKey.h>
#import <CkoSshKey.h>
#import <CkoSFtp.h>
BOOL success = NO;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
CkoCert *cert = [[CkoCert alloc] init];
NSString *pfxFilepath = @"qa_data/pfx/my.pfx";
NSString *pfxPassword = @"secret";
// 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.
success = [cert LoadPfxFile: pfxFilepath password: pfxPassword];
if (success == NO) {
NSLog(@"%@",cert.LastErrorText);
return;
}
// Get the private key.
CkoPrivateKey *privKey = [[CkoPrivateKey alloc] init];
success = [cert GetPrivateKey: privKey];
if (success == NO) {
NSLog(@"%@",cert.LastErrorText);
return;
}
NSString *privKeyPem = [privKey GetPkcs8Pem];
if (privKey.LastMethodSuccess == NO) {
NSLog(@"%@",privKey.LastErrorText);
return;
}
CkoSshKey *sshKey = [[CkoSshKey alloc] init];
success = [sshKey FromOpenSshPrivateKey: privKeyPem];
if (success == NO) {
NSLog(@"%@",sshKey.LastErrorText);
return;
}
// Connect to an SSH/SFTP server
CkoSFtp *sftp = [[CkoSFtp alloc] init];
success = [sftp Connect: @"sftp.example.com" port: [NSNumber numberWithInt: 22]];
if (success == NO) {
NSLog(@"%@",sftp.LastErrorText);
return;
}
// 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 = [sftp AuthenticatePk: @"mySshLogin" privateKey: sshKey];
if (success == NO) {
NSLog(@"%@",sftp.LastErrorText);
return;
}
NSLog(@"%@",@"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...