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
(PureBasic) Duplicate OpensSSL to Create Signature using Cert and Key FilesThis example duplicates the following: openssl smime –sign -in something.xml -out something.der -signer mycert.crt -inkey cert.key -outform der –nodetach 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*...
IncludeFile "CkBinData.pb" IncludeFile "CkCert.pb" IncludeFile "CkPrivateKey.pb" IncludeFile "CkCrypt2.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. crypt.i = CkCrypt2::ckCreate() If crypt.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; Load the cert and private key from separate files. cert.i = CkCert::ckCreate() If cert.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkCert::ckLoadFromFile(cert,"myCert.crt") If success <> 1 Debug CkCert::ckLastErrorText(cert) CkCrypt2::ckDispose(crypt) CkCert::ckDispose(cert) ProcedureReturn EndIf bd.i = CkBinData::ckCreate() If bd.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success = CkBinData::ckLoadFile(bd,"cert.key") privkey.i = CkPrivateKey::ckCreate() If privkey.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; Load from any format private key. ; If the file does not need a password, the 2nd arg is ignored. success = CkPrivateKey::ckLoadAnyFormat(privkey,bd,"password_if_needed") If success <> 1 Debug CkPrivateKey::ckLastErrorText(privkey) CkCrypt2::ckDispose(crypt) CkCert::ckDispose(cert) CkBinData::ckDispose(bd) CkPrivateKey::ckDispose(privkey) ProcedureReturn EndIf success = CkCrypt2::ckSetSigningCert2(crypt,cert,privkey) If success <> 1 Debug CkCrypt2::ckLastErrorText(crypt) CkCrypt2::ckDispose(crypt) CkCert::ckDispose(cert) CkBinData::ckDispose(bd) CkPrivateKey::ckDispose(privkey) ProcedureReturn EndIf ; Create the opaque signature (PKCS7 binary DER that contains both the signature and original file data). success = CkCrypt2::ckCreateP7M(crypt,"qa_data/infile.anything","qa_output/outfile.der") If success <> 1 Debug CkCrypt2::ckLastErrorText(crypt) CkCrypt2::ckDispose(crypt) CkCert::ckDispose(cert) CkBinData::ckDispose(bd) CkPrivateKey::ckDispose(privkey) ProcedureReturn EndIf Debug "Success." CkCrypt2::ckDispose(crypt) CkCert::ckDispose(cert) CkBinData::ckDispose(bd) CkPrivateKey::ckDispose(privkey) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.