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
(DataFlex) Create P7M for ISO20022 Message (Customer Credit Transfer)Demonstrates how to create a .p7m (signed data) for an ISO20022 XML message using an HSM such as that provided by Swift 3SKey or by banks. Also shows how to validate and extract the XML message.
Use ChilkatAx-win32.pkg Procedure Test Variant vCert Handle hoCert Boolean iSuccess Handle hoCrypt String sInFile String sP7mFile String sOutFile String sTemp1 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // What is a .p7m file? // Load the signing certificate from the connected HSM. Get Create (RefClass(cComChilkatCert)) To hoCert If (Not(IsComObjectCreated(hoCert))) Begin Send CreateComObject of hoCert End Get ComLoadFromSmartcard Of hoCert "" To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCert To sTemp1 Showln sTemp1 Procedure_Return End Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt If (Not(IsComObjectCreated(hoCrypt))) Begin Send CreateComObject of hoCrypt End // Tell the crypt class to use the cert on the ePass2003 token. Get pvComObject of hoCert to vCert Get ComSetSigningCert Of hoCrypt vCert To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoCrypt To sTemp1 Showln sTemp1 Procedure_Return End // The CadesEnabled property applies to all methods that create CMS/PKCS7 signatures. // To create a CAdES-BES signature, set this property equal to true. Set ComCadesEnabled Of hoCrypt To True Set ComHashAlgorithm Of hoCrypt To "sha256" // The XML file to be signed and encapsulated in the signature looks like this: // <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.02"> // <CstmrCdtTrfInitn> // <GrpHdr> // <MsgId>1234567890</MsgId> // <CreDtTm>2024-10-02T12:00:00</CreDtTm> // <NbOfTxs>1</NbOfTxs> // <CtrlSum>1000.00</CtrlSum> // <InitgPty> // <Nm>Example Company</Nm> // </InitgPty> // </GrpHdr> // <PmtInf> // <!-- Payment information goes here --> // </PmtInf> // </CstmrCdtTrfInitn> // </Document> // What is "pain.001.001.02"? // // "pain.001": This is an ISO 20022 message type for Customer Credit Transfer // Initiation. It is used to instruct a bank or financial institution to transfer // funds from a customer's account to a beneficiary's account. // "pain.001.001.02": This specifies version "02" of the "pain.001" message. // The versioning indicates that there might be other versions like // "pain.001.001.01", and this version "02" includes revisions or updates compared // to version "01". // // Usage: // // This namespace is typically seen in XML files that follow the ISO 20022 // payment initiation standards. Financial institutions, payment service providers, // and other entities use it to exchange structured payment data in a standardized // XML format. // A typical use case for "pain.001.001.02" is to send payment instructions for // credit transfers, such as payments from businesses to suppliers or salary // payments from employers to employees. // We can sign any type of file, creating a .p7m as output. // The .p7m contains the signature and also embeds the data of the file that is signed. Move "qa_data/xml/cust_credit_transfer.xml" To sInFile Move "c:/temp/qa_output/cust_credit_transfer.p7m" To sP7mFile // ----------------------------------------------------------------------------------------- // Also see Chilkat's online tool to examine a .p7m and generate code to duplicate the .p7m // ----------------------------------------------------------------------------------------- // Create the CAdES-BES attached signature, which contains the original data. Get ComCreateP7M Of hoCrypt sInFile sP7mFile To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCrypt To sTemp1 Showln sTemp1 Procedure_Return End Showln "Created the .p7m" // -------------------------------------- // Now do the reverse and validate/extract // -------------------------------------- Move "c:/temp/qa_output/out.xml" To sOutFile Move "qa_data/p7m/cust_credit_transfer.p7m" To sInFile // Verify and extract the encapsulated file: Get ComVerifyP7M Of hoCrypt sInFile sOutFile To iSuccess If (iSuccess = False) Begin Get ComLastErrorText Of hoCrypt To sTemp1 Showln sTemp1 Procedure_Return End Showln "Success!" End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.