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
(Objective-C) Verify a .p7m and get Algorithm InformationDemonstrates how to verify a .p7m and then examine the algorithms used by the signature.
#import <CkoCrypt2.h> #import <NSString.h> #import <CkoJsonObject.h> // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkoCrypt2 *crypt = [[CkoCrypt2 alloc] init]; NSString *inFile = @"qa_data/p7m/brainpoolP256r1.p7m"; NSString *outFile = @"qa_output/something.dat"; // Verify and extract the signed data. BOOL success = [crypt VerifyP7M: inFile destPath: outFile]; if (success == NO) { NSLog(@"%@",crypt.LastErrorText); return; } // Examine details about the signature(s) CkoJsonObject *json = [crypt LastJsonData]; json.EmitCompact = NO; NSLog(@"%@",[json Emit]); // Sample output // { // "pkcs7": { // "verify": { // "digestAlgorithms": [ // "sha256" // ], // "signerInfo": [ // { // "cert": { // "serialNumber": "FFFFE552B302FFFFFF1E34C3ACEB2FFFF", // "issuerCN": "The common name of the cert...", // "issuerDN": "", // "digestAlgOid": "2.16.840.1.101.3.4.2.1", // "digestAlgName": "SHA256" // }, // "contentType": "1.2.840.113549.1.7.1", // "signingTime": "190409140500Z", // "messageDigest": "lQe9If7vZKFf/NlSYu5Esmlw3phVK/RFsbbb1uH73t8=", // "signingAlgOid": "1.2.840.10045.4.3.2", // "signerDigest": "lQe9If7vZKFf/NlSYu5Esmlw3phVK/RFsbbb1uH73t8=", // "authAttr": [ // { // "oid": "1.2.840.113549.1.9.3", // "oidName": "contentType" // }, // { // "oid": "1.2.840.113549.1.9.5", // "oidName": "signingTime" // }, // { // "oid": "1.2.840.113549.1.9.52", // "oidName": "1.2.840.113549.1.9.52", // "der": "MBs ... AwI=" // }, // { // "oid": "1.2.840.113549.1.9.4", // "oidName": "messageDigest" // }, // { // "oid": "1.2.840.113549.1.9.16.2.47", // "oidName": "signingCertificateV2", // "der": "MCYw .. 7PlQ==" // }, // { // "oid": "1.2.840.113549.1.9.20", // "oidName": "1.2.840.113549.1.9.20" // } // ] // } // ] // } // } // } // Code for parsing the above JSON... int i; int count_i; NSString *strVal = 0; NSString *certSerialNumber = 0; NSString *certIssuerCN = 0; NSString *certIssuerDN = 0; NSString *certDigestAlgOid = 0; NSString *certDigestAlgName = 0; NSString *contentType = 0; NSString *signingTime = 0; NSString *messageDigest = 0; NSString *signingAlgOid = 0; NSString *signerDigest = 0; int j; int count_j; NSString *oid = 0; NSString *oidName = 0; NSString *der = 0; i = 0; count_i = [[json SizeOfArray: @"pkcs7.verify.digestAlgorithms"] intValue]; while (i < count_i) { json.I = [NSNumber numberWithInt: i]; strVal = [json StringOf: @"pkcs7.verify.digestAlgorithms[i]"]; i = i + 1; } i = 0; count_i = [[json SizeOfArray: @"pkcs7.verify.signerInfo"] intValue]; while (i < count_i) { json.I = [NSNumber numberWithInt: i]; certSerialNumber = [json StringOf: @"pkcs7.verify.signerInfo[i].cert.serialNumber"]; certIssuerCN = [json StringOf: @"pkcs7.verify.signerInfo[i].cert.issuerCN"]; certIssuerDN = [json StringOf: @"pkcs7.verify.signerInfo[i].cert.issuerDN"]; certDigestAlgOid = [json StringOf: @"pkcs7.verify.signerInfo[i].cert.digestAlgOid"]; certDigestAlgName = [json StringOf: @"pkcs7.verify.signerInfo[i].cert.digestAlgName"]; contentType = [json StringOf: @"pkcs7.verify.signerInfo[i].contentType"]; signingTime = [json StringOf: @"pkcs7.verify.signerInfo[i].signingTime"]; messageDigest = [json StringOf: @"pkcs7.verify.signerInfo[i].messageDigest"]; signingAlgOid = [json StringOf: @"pkcs7.verify.signerInfo[i].signingAlgOid"]; signerDigest = [json StringOf: @"pkcs7.verify.signerInfo[i].signerDigest"]; j = 0; count_j = [[json SizeOfArray: @"pkcs7.verify.signerInfo[i].authAttr"] intValue]; while (j < count_j) { json.J = [NSNumber numberWithInt: j]; oid = [json StringOf: @"pkcs7.verify.signerInfo[i].authAttr[j].oid"]; oidName = [json StringOf: @"pkcs7.verify.signerInfo[i].authAttr[j].oidName"]; der = [json StringOf: @"pkcs7.verify.signerInfo[i].authAttr[j].der"]; j = j + 1; } i = i + 1; } NSLog(@"%@",@"Success!"); |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.