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
(Visual FoxPro) Duplicate OpensSSL to Sign File and Output Binary DERThis example duplicates the following: openssl smime -sign -in INPUT.xml -signer SIGN.PEM -passin pass:MYPASS -outform der -binary -nodetach -out SIGNED.P7M Note: Although "smime" is the OpenSSL command, it's not actually producing S/MIME. The arguments "-outform der -binary" indicates that the output is binary DER (i.e. the PKCS7 binary signature). The input can be any type of file: XML, PDF, JPG, ... *anything*...
LOCAL loCrypt LOCAL loPem LOCAL lnSuccess LOCAL loPrivkey LOCAL loCert LOCAL loCertFromP12 * This example requires the Chilkat API to have been previously unlocked. * See Global Unlock Sample for sample code. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Crypt2') loCrypt = CreateObject('Chilkat.Crypt2') * Load the PEM containing cert + private key. * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Pem') loPem = CreateObject('Chilkat.Pem') lnSuccess = loPem.LoadPemFile("qa_data/pem/myPem.pem","password") IF (lnSuccess <> 1) THEN ? loPem.LastErrorText RELEASE loCrypt RELEASE loPem CANCEL ENDIF loPrivkey = loPem.GetPrivateKey(0) IF (loPem.LastMethodSuccess <> 1) THEN ? loPem.LastErrorText RELEASE loCrypt RELEASE loPem CANCEL ENDIF loCert = loPem.GetCert(0) IF (loPem.LastMethodSuccess <> 1) THEN RELEASE loPrivkey ? loPem.LastErrorText RELEASE loCrypt RELEASE loPem CANCEL ENDIF lnSuccess = loCrypt.SetSigningCert2(loCert,loPrivkey) IF (lnSuccess <> 1) THEN RELEASE loPrivkey RELEASE loCert ? loCrypt.LastErrorText RELEASE loCrypt RELEASE loPem CANCEL ENDIF RELEASE loPrivkey RELEASE loCert * Alternatively, we could use a .pfx/.p12 file. * (Chilkat also supports other formats/sources for cert/private keys...) * For versions of Chilkat < 10.0.0, use CreateObject('Chilkat_9_5_0.Cert') loCertFromP12 = CreateObject('Chilkat.Cert') lnSuccess = loCertFromP12.LoadPfxFile("qa_data/p12/myP12.p12","password") IF (lnSuccess <> 1) THEN ? loCertFromP12.LastErrorText RELEASE loCrypt RELEASE loPem RELEASE loCertFromP12 CANCEL ENDIF * The certificate, when loaded from a .pfx/.p12, will automatically * include the associated private key, assuming it's present in the .p12. * We don't have to explicitly provide the private key as in the * lines of code above that use the PEM file. lnSuccess = loCrypt.SetSigningCert(loCertFromP12) IF (lnSuccess <> 1) THEN ? loCrypt.LastErrorText RELEASE loCrypt RELEASE loPem RELEASE loCertFromP12 CANCEL ENDIF * Create the opaque signature (PKCS7 binary DER that contains both the signature and original file data). lnSuccess = loCrypt.CreateP7M("qa_data/infile.anything","qa_output/outfile.p7m") IF (lnSuccess <> 1) THEN ? loCrypt.LastErrorText RELEASE loCrypt RELEASE loPem RELEASE loCertFromP12 CANCEL ENDIF ? "Success." RELEASE loCrypt RELEASE loPem RELEASE loCertFromP12 |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.