![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) Sign a File to Create a .p7m File (using a PFX)PureBasic example to sign a file creating a .p7m file as output. The .p7m contains the signed contents of the original file. It can be verified and restored by calling VerifyP7M. Note: This example requires Chilkat v10.1.2 or greater.
IncludeFile "CkCertStore.pb" IncludeFile "CkCert.pb" IncludeFile "CkJsonObject.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 ; Use a digital certificate and private key from a PFX file (.pfx or .p12). signingCertSubject.s = "Acme Inc" pfxFilename.s = "/Users/chilkat/testData/pfx/acme.pfx" pfxPassword.s = "test123" certStore.i = CkCertStore::ckCreate() If certStore.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkCertStore::ckLoadPfxFile(certStore,pfxFilename,pfxPassword) If success <> 1 Debug CkCertStore::ckLastErrorText(certStore) CkCrypt2::ckDispose(crypt) CkCertStore::ckDispose(certStore) ProcedureReturn EndIf jsonCN.i = CkJsonObject::ckCreate() If jsonCN.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckUpdateString(jsonCN,"CN",signingCertSubject) cert.i = CkCert::ckCreate() If cert.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success = CkCertStore::ckFindCert(certStore,jsonCN,cert) If success = 0 Debug "Failed to find certificate by subject common name." CkCrypt2::ckDispose(crypt) CkCertStore::ckDispose(certStore) CkJsonObject::ckDispose(jsonCN) CkCert::ckDispose(cert) ProcedureReturn EndIf ; Tell the crypt component to use this cert. success = CkCrypt2::ckSetSigningCert(crypt,cert) ; We can sign any type of file, creating a .p7m as output: inFile.s = "/Users/chilkat/testData/pdf/sample.pdf" outputFile.s = "/Users/chilkat/testData/p7m/sample.pdf.p7m" success = CkCrypt2::ckCreateP7M(crypt,inFile,outputFile) If success = 0 Debug CkCrypt2::ckLastErrorText(crypt) CkCrypt2::ckDispose(crypt) CkCertStore::ckDispose(certStore) CkJsonObject::ckDispose(jsonCN) CkCert::ckDispose(cert) ProcedureReturn EndIf ; Verify and restore the original file: success = CkCrypt2::ckSetVerifyCert(crypt,cert) inFile = outputFile outputFile = "/Users/chilkat/testData/pdf/restored.pdf" success = CkCrypt2::ckVerifyP7M(crypt,inFile,outputFile) If success = 0 Debug CkCrypt2::ckLastErrorText(crypt) CkCrypt2::ckDispose(crypt) CkCertStore::ckDispose(certStore) CkJsonObject::ckDispose(jsonCN) CkCert::ckDispose(cert) ProcedureReturn EndIf Debug "Success!" CkCrypt2::ckDispose(crypt) CkCertStore::ckDispose(certStore) CkJsonObject::ckDispose(jsonCN) CkCert::ckDispose(cert) ProcedureReturn EndProcedure |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.