Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Perl) RSASSA-PSS Sign String to Create Base64 PCKS7 SignatureSigns a string to create a PKCS7 signature in the base64 encoding. The signature algorithm is RSASSA-PSS with SHA256. Note: This example requires Chilkat v9.5.0.67 or greater.
use chilkat(); # This example requires the Chilkat Crypt API to have been previously unlocked. # See Unlock Chilkat Crypt for sample code. $crypt = chilkat::CkCrypt2->new(); # Get a digital certificate with private key from a .pfx # (Chilkat has many different ways to provide a cert + private key for siging. # Using a PFX is just one possible option.) $pfx = chilkat::CkPfx->new(); $success = $pfx->LoadPfxFile("qa_data/rsassa-pss/privatekey.pfx","PFX_PASSWORD"); if ($success != 1) { print $pfx->lastErrorText() . "\r\n"; exit; } # Get the certificate to be used for signing. # (The typical case for a PFX is that it contains a cert with an associated private key, # as well as other certificates in the chain of authentication. The cert with the private # key should be in the first position at index 0.) # cert is a Cert $cert = $pfx->GetCert(0); if ($pfx->get_LastMethodSuccess() != 1) { print $pfx->lastErrorText() . "\r\n"; exit; } $crypt->SetSigningCert($cert); # Indicate that RSASSA-PSS with SHA256 should be used. $crypt->put_SigningAlg("pss"); $crypt->put_HashAlgorithm("sha256"); $crypt->put_EncodingMode("base64"); # Sign a string and return the base64 PKCS7 detached signature $originalText = "This is a test"; $pkcs7sig = $crypt->signStringENC($originalText); print "Detached Signature:" . "\r\n"; print $pkcs7sig . "\r\n"; # This signature looks like this: # MIIG5wYJKoZIhvcNAQcCoIIG2DCCBtQCAQExDzANBgl .. YToLqEwTdU87ox5g7rvw== # The ASN.1 of the signature can be examined by browsing to https://lapo.it/asn1js/ , # then copy-and-paste the Base64 signature into the form and decode.. # The signature can be verified against the original data like this: $success = $crypt->VerifyStringENC($originalText,$pkcs7sig); print "Signature verified: " . $success . "\r\n"; $success = $crypt->VerifyStringENC("Not the original text",$pkcs7sig); print "Signature verified: " . $success . "\r\n"; # Now we'll create an opaque signature (the opposite of a detached signature). # An opaque signature is a PKCS7 message that contains both the original data and # the signature. The verification process extracts the original data. $opaqueSig = $crypt->opaqueSignStringENC($originalText); print "Opaque Signature:" . "\r\n"; print $opaqueSig . "\r\n"; # The ASN.1 of the signature can be examined by browsing to https://lapo.it/asn1js/ , # then copy-and-paste the Base64 signature into the form and decode.. # We can verify and extract the original data: $origTxt = $crypt->opaqueVerifyStringENC($opaqueSig); if ($crypt->get_LastMethodSuccess() != 1) { print "Signature verification failed." . "\r\n"; print $crypt->lastErrorText() . "\r\n"; exit; } print "Signature verified." . "\r\n"; print "Extracted text:" . $origTxt . "\r\n"; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.