Archived Forum PostQuestion:
I try to parse smime send from outlook (opaque signature p7m with certificate inside) but I cannot get the signer certificate
This is the sample code
CkoCrypt2 *crypt = [[CkoCrypt2 alloc] init];
if (![crypt UnlockComponent: @"Anything for 30-day trial"]) {
return;
}
crypt.CryptAlgorithm = @"pki";
CkoCert *cert = cert =[[CkoCert alloc] init];
[cert LoadFromBinary:cert];
[crypt SetVerifyCert:cert];
NSData *data = [crypt OpaqueVerifyBytes:p7m];
if (!data) {
return;
}
NSLog(@"LastErrorText =\n%@", crypt.LastErrorText);
CkoCert *cert__ =[crypt GetSignerCert:[NSNumber numberWithInt:0]];
NSLog(@"--%@--", [cert__ ExportCertPem]);
Everything work and this is the log text
LastErrorText =
ChilkatLog:
OpaqueVerifyBytes:
DllDate: Oct 2 2014
ChilkatVersion: 9.5.0.44
UnlockPrefix: Anything for 30-day trial
Architecture: Little Endian; 64-bit
Language: IOS Objective-C
VerboseLogging: 0
verifyOpaqueSignature:
loadPkcs7Der:
loadPkcs7Xml:
loadSignedDataXml:
NumDigestAlgorithmIdentifiers: 1
AlgorithmIdentifier:
oid: 2.16.840.1.101.3.4.2.1
--AlgorithmIdentifier
This is an opaque signature.
Recovered original content.
OriginalContentLen: 742
numSigners: 1
SignerInfo:
signerInfoLoadXml:
contentType: 1.2.840.113549.1.7.1
messageDigestHex: 8D65 A460 0900 54A6 8CB7 3ABD F1C0 223F
2EEB 2FF6 BE9C 16BD 68D3 C57F F83E 0B8D
signingTime: 141119084046Z
--signerInfoLoadXml
--SignerInfo
--loadSignedDataXml
--loadPkcs7Xml
extractCertsFromSignedData:
numCerts: 1
--extractCertsFromSignedData
--loadPkcs7Der
verifyOpaqueSignature:
verifySignature:
numSigners: 1
numDigestAlgorithms: 1
Computing SHA256 message digest.
numBytesDigested: 742
numSigners: 1
signerDigestAlgOid: 2.16.840.1.101.3.4.2.1
messageDigestSize: 32
Signer_0:
issuerCN: USER B
serialNum: 01
digestOid: 2.16.840.1.101.3.4.2.1
Digest of authenticated attributes DER matches.
--Signer_0
Signature verified but skipping verification of certificates.
--verifySignature
--verifyOpaqueSignature
--verifyOpaqueSignature
Success.
--OpaqueVerifyBytes
--ChilkatLog
Log 2:
--(null)--
I don't know why I cannot get the signer cert while the software can parse it (show in LastErrorText => issuerCN: USER C serialNum: 01) This is trial version
Please help to get signercert after verify
The only way to help with this problem is for Chilkat to obtain a sample .p7m signed file so that it can be tested directly.