Sample code for 30+ languages & platforms
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

Objective-C
#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...