Chilkat HOME ASP Visual Basic VB.NET C# Visual C++ C MFC Delphi FoxPro Java Perl PHP Python Ruby SQL Server VBScript
|
Use Certificate and Private Key PEM Files to Create a Digital SignatureDemonstrates 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.
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.