Perl Examples

ChilkatHOMEASPVisual BasicVB.NETC#Visual C++CMFCDelphiFoxProJavaPerlPHPPythonRubySQL ServerVBScript

Perl Examples

Quick Start
Perl Unicode
Perl Byte Array
Perl Certs
Perl Email
Perl Encryption
Perl FTP
HTML-to-XML
Perl HTTP
Perl IMAP
Perl MHT
Perl MIME
Perl RSA
Perl S/MIME
Perl Signatures
Perl Socket
Perl Spider
Perl Tar
Perl Upload
Perl XML
Perl XMP
Perl Zip

More Examples...
String
Email Object
POP3
SMTP
RSS
Atom
Self-Extractor

Unreleased...
Service
PPMD
Deflate
Bzip2
LZW
Bz2
DH Key Exchange
DSA
Icon

 

 

 

 

 

 

 

Extract Public/Private Keys and Certs from PFX into String Variables

Demonstrates how to export certificates and public/private keys from a PFX file into in-memory strings.

Chilkat Module for Perl 5.8.*

Chilkat Module for Perl 5.10.*

use chilkat;


$certStore = new chilkat::CkCertStore();

#  Load the PFX file into a certificate store object

$password = "*myPassword2*";
$success = $certStore->LoadPfxFile("chilkat.pfx",$password);
if ($success != 1) {
    print $certStore->lastErrorText() . "\n";
    exit;
}

$numCerts = $certStore->get_NumCertificates();

#  Loop over each certificate in the PFX.

for ($i = 0; $i <= $numCerts - 1; $i++) {

    $cert = $certStore->GetCertificate($i);

    print $cert->subjectDN() . "\r\n";
    print "---" . "\r\n";

    $encodedCert = $cert->getEncoded();

    #  This string may now be stored in a relational database string field.
    #  To re-create the cert, do this:
    $cert2 = new chilkat::CkCert();
    $cert2->SetFromEncoded($encodedCert);

    #  Does this cert have a private key?
    if ($cert->HasPrivateKey() == 1) {

        #  Get the private key.

        $pvkey = $cert->ExportPrivateKey();

        #  The private key can be exported into
        #  a string in PKCS8, RSA PEM, or XML format:

        $pemPvKey = $pvkey->getRsaPem();
        $pkcs8PvKey = $pvkey->getPkcs8Pem();
        $xmlPvKey = $pvkey->getXml();

        print $pemPvKey . "\r\n";
        print $pkcs8PvKey . "\r\n";
        print $xmlPvKey . "\r\n";

        #  Any of these formatted strings may
        #  be stored in a relational database field.
        #  to restore, call LoadPem or LoadXml
        #  LoadPem accepts either RSA PEM or
        #  PKCS8 PEM:
        $pvKey2 = new chilkat::CkPrivateKey();

        $pvKey2->LoadPem($pemPvKey);
        $pvKey2->LoadPem($pkcs8PvKey);
        $pvKey2->LoadXml($xmlPvKey);

    }

    #  Now for the public key:

    $pubkey = $cert->ExportPublicKey();

    #  It can be exported to a string as OpenSSL PEM
    #  or XML:

    $pubKeyPem = $pubkey->getOpenSslPem();
    $pubKeyXml = $pubkey->getXml();

    print $pubKeyPem . "\r\n";
    print $pubKeyXml . "\r\n";

    #  To re-load a PublicKey object, call LoadXml
    #  or LoadOpenSslPem:
    $pubKey2 = new chilkat::CkPublicKey();

    $pubKey2->LoadOpenSslPem($pubKeyPem);
    $pubKey2->LoadXml($pubKeyXml);
    $fname = "pubkey" . $i . "_openSsl.der";
    $pubkey->SaveOpenSslDerFile($fname);

}

#  The Chilkat Certificate, Certificate Store, Private Key,
#  Public Key, and Key Container classes / objects are freeware.

#  They are used by and included with the Chilkat Email,
#  Crypt, S/MIME, and other commercial Chilkat components.

 

Need a specific example? Send a request to support@chilkatsoft.com

© 2000-2007 Chilkat Software, Inc. All Rights Reserved.