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) How to Tell if a File is .p7m or .p7sThis example explains how to detect if a file is a .p7m or .p7s. It provides as solution to the following problem:
Sometimes people submit P7S/P7M with wrong extensions. Can I check if file is P7S or P7M with Chilkat? Also see What is a P7M or P7S File?
Use ChilkatAx-win32.pkg Procedure Test Handle hoBd Boolean iSuccess Handle hoSb Boolean iCaseSensitive String sTemp1 Boolean bTemp1 Boolean bTemp2 Boolean bTemp3 Boolean bTemp4 // A .p7m or .p7s file is binary and contains PKCS7. // PKCS7 is ASN.1, and always begins with a SEQUENCE tag (a byte equal to 0x30) // followed by an encoded length. // If the file is larger than 128 bytes (and it SHOULD be), the encoded length will begin with either 0x80, 0x81, 0x82, or 0x83. // It can also begin with 0x84, but only for very large files (where the length is too large for 3 bytes). // See How ASN.1 Encodes Lengths // Therefore, if we have a file that might be .p7m or .p7s, we can check by // examining the 1st 2 bytes of the file. Get Create (RefClass(cComChilkatBinData)) To hoBd If (Not(IsComObjectCreated(hoBd))) Begin Send CreateComObject of hoBd End Get ComLoadFile Of hoBd "qa_data/p7m/a.p7m" To iSuccess If (iSuccess = False) Begin Showln "Failed to load the file." Procedure_Return End Get Create (RefClass(cComChilkatStringBuilder)) To hoSb If (Not(IsComObjectCreated(hoSb))) Begin Send CreateComObject of hoSb End Get ComGetEncodedChunk Of hoBd 0 2 "hex" To sTemp1 Get ComAppend Of hoSb sTemp1 To iSuccess Move True To iCaseSensitive Get ComContentsEqual Of hoSb "3080" iCaseSensitive To bTemp1 Get ComContentsEqual Of hoSb "3081" iCaseSensitive To bTemp2 Get ComContentsEqual Of hoSb "3082" iCaseSensitive To bTemp3 Get ComContentsEqual Of hoSb "3083" iCaseSensitive To bTemp4 If (bTemp1 Or bTemp2 Or bTemp3 Or bTemp4) Begin Showln "This is a .p7m or .p7s file." End Else Begin Showln "This is not a .p7m or .p7s file." End End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.