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
(PowerBuilder) 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*...
integer li_rc oleobject loo_Crypt oleobject loo_Pem integer li_Success oleobject loo_Privkey oleobject loo_Cert oleobject loo_CertFromP12 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. loo_Crypt = create oleobject // Use "Chilkat_9_5_0.Crypt2" for versions of Chilkat < 10.0.0 li_rc = loo_Crypt.ConnectToNewObject("Chilkat.Crypt2") if li_rc < 0 then destroy loo_Crypt MessageBox("Error","Connecting to COM object failed") return end if // Load the PEM containing cert + private key. loo_Pem = create oleobject // Use "Chilkat_9_5_0.Pem" for versions of Chilkat < 10.0.0 li_rc = loo_Pem.ConnectToNewObject("Chilkat.Pem") li_Success = loo_Pem.LoadPemFile("qa_data/pem/myPem.pem","password") if li_Success <> 1 then Write-Debug loo_Pem.LastErrorText destroy loo_Crypt destroy loo_Pem return end if loo_Privkey = loo_Pem.GetPrivateKey(0) if loo_Pem.LastMethodSuccess <> 1 then Write-Debug loo_Pem.LastErrorText destroy loo_Crypt destroy loo_Pem return end if loo_Cert = loo_Pem.GetCert(0) if loo_Pem.LastMethodSuccess <> 1 then destroy loo_Privkey Write-Debug loo_Pem.LastErrorText destroy loo_Crypt destroy loo_Pem return end if li_Success = loo_Crypt.SetSigningCert2(loo_Cert,loo_Privkey) if li_Success <> 1 then destroy loo_Privkey destroy loo_Cert Write-Debug loo_Crypt.LastErrorText destroy loo_Crypt destroy loo_Pem return end if destroy loo_Privkey destroy loo_Cert // Alternatively, we could use a .pfx/.p12 file. // (Chilkat also supports other formats/sources for cert/private keys...) loo_CertFromP12 = create oleobject // Use "Chilkat_9_5_0.Cert" for versions of Chilkat < 10.0.0 li_rc = loo_CertFromP12.ConnectToNewObject("Chilkat.Cert") li_Success = loo_CertFromP12.LoadPfxFile("qa_data/p12/myP12.p12","password") if li_Success <> 1 then Write-Debug loo_CertFromP12.LastErrorText destroy loo_Crypt destroy loo_Pem destroy loo_CertFromP12 return end if // 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. li_Success = loo_Crypt.SetSigningCert(loo_CertFromP12) if li_Success <> 1 then Write-Debug loo_Crypt.LastErrorText destroy loo_Crypt destroy loo_Pem destroy loo_CertFromP12 return end if // Create the opaque signature (PKCS7 binary DER that contains both the signature and original file data). li_Success = loo_Crypt.CreateP7M("qa_data/infile.anything","qa_output/outfile.p7m") if li_Success <> 1 then Write-Debug loo_Crypt.LastErrorText destroy loo_Crypt destroy loo_Pem destroy loo_CertFromP12 return end if Write-Debug "Success." destroy loo_Crypt destroy loo_Pem destroy loo_CertFromP12 |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.