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

 

 

 

 

 

 

 

Use Certificate and Private Key PEM Files to Create a Digital Signature

Demonstrates how to load a digital certificate from a PEM file, load it's corresponding private key from a PEM file, save the private key to a key container (if necessary), link the certificate to the key container, and use it to create a digital signature.

Chilkat Module for Perl 5.8.*

Chilkat Module for Perl 5.10.*

use chilkat;

$cert = new chilkat::CkCert();

#  Load the cert from a PEM file;
$cert->LoadFromFile("cert.pem");

$pkey = new chilkat::CkPrivateKey();

#  Load the private key from an RSA PEM file:
$pkey->LoadPemFile("pkey_rsa.pem");

#  If the "chilkat" key container does not already exist,
#  we'll create it and import the private key:
$container = new chilkat::CkKeyContainer();
$needPrivateKeyAccess = 1;
$machineKeyset = 0;
if ($container->OpenContainer("chilkat",$needPrivateKeyAccess,$machineKeyset) == 0) {

    #  We need to create the key container and import
    #  the private key:
    $success = $container->CreateContainer("chilkat",$machineKeyset);
    if ($success == 1) {
        $isKeyExchangePair = 0;
        $success = $container->ImportPrivateKey($pkey,$isKeyExchangePair);
        if ($success == 0) {
            print "Failed to import private key into key container" . "\r\n";
            exit;
        }

    }
    else {
        print "Failed to create key container" . "\r\n";
        exit;
    }

}

#  At this point, the key container contains the private key.
#  Link the certificate with the key container:
$bForSigning = 1;
$success = $cert->LinkPrivateKey("chilkat",$machineKeyset,$bForSigning);
if ($success == 0) {
    print "Failed to link certificate with key container" . "\r\n";
    exit;
}

#  Use Chilkat Crypt (a non-freeware component) to create
#  a digital signature using the certificate w/ private key:
$crypt = new chilkat::CkCrypt2();

#  Any string argument automatically begins the 30-day trial.
$success = $crypt->UnlockComponent("30-day trial");
if ($success != 1) {
    print "Crypt component unlock failed" . "\n";
    exit;
}

#  Tell the crypt component to use this cert.
$crypt->SetSigningCert($cert);

#  We can sign any type of file, creating a .p7s as output:
$success = $crypt->CreateP7S("license.rtf","license.p7s");
if ($success == 0) {
    print $crypt->lastErrorText() . "\n";

    exit;
}

print $crypt->lastErrorText() . "\r\n";

#  Verify and restore the original file:
$crypt->SetVerifyCert($cert);

$success = $crypt->VerifyP7S("license.rtf","license.p7s");
if ($success == 0) {
    print $crypt->lastErrorText() . "\n";

    exit;
}

print "Success!" . "\n";

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