In OS X, you must use security transformations, for example:
CFErrorRef error;
SecTransformRef verifier = SecVerifyTransformCreate(publicKey,
(CFDataRef)signature,
&error);
if (error) { CFShow(error); exit(-1); }
SecTransformSetAttribute(verifier,
kSecPaddingKey,
kSecPaddingPKCS1Key,
&error);
if (error) { CFShow(error); exit(-1); }
SecTransformSetAttribute(verifier,
kSecDigestTypeAttribute,
kSecDigestSHA1,
&error);
if (error) { CFShow(error); exit(-1); }
SecTransformSetAttribute(verifier,
kSecTransformInputAttributeName,
dataWithoutSignature,
&error);
CFTypeRef result = SecTransformExecute(verifier, &error);
if (error) {
CFShow(error);
exit(-1);
}
if (result == kCFBooleanTrue)
{
NSLog(@"VERIFY: success.");
}
else
{
NSLog(@"VERIFY: failure, again...");
}
source
share