ありがとうございました!
私は新しい機能で10.6に対応しましたが、少なくとも時間が経過するまで10.5と10.6をターゲットにしています。
すぐにlibsecurity_codesigningにもう少し時間を掛けて、これを10.5でも完了する必要があります。
しかし、ここの周りの準備ができて解決策を探している人々のために、ここで私がなってしまったものです:
上記の回答で
SecStaticCodeRef ref = NULL;
NSURL * url = [NSURL URLWithString:[[NSBundle mainBundle] executablePath]];
OSStatus status;
// obtain the cert info from the executable
status = SecStaticCodeCreateWithPath((CFURLRef)url, kSecCSDefaultFlags, &ref);
if (ref == NULL) exit(EXIT_STATUS_ON_BAD_CODE_SIGNATURE);
if (status != noErr) exit(EXIT_STATUS_ON_BAD_CODE_SIGNATURE);
SecRequirementRef req = NULL;
// this is the public SHA1 fingerprint of the cert match string
NSString * reqStr = [NSString stringWithFormat:@"%@ %@ = %@%@%@",
@"certificate",
@"leaf",
@"H\"66875745923F01",
@"F122B387B0F943",
@"X7D981183151\""
];
// create the requirement to check against
status = SecRequirementCreateWithString((CFStringRef)reqStr, kSecCSDefaultFlags, &req);
if (status != noErr) exit(EXIT_STATUS_ON_BAD_CODE_SIGNATURE);
if (req == NULL) exit(EXIT_STATUS_ON_BAD_CODE_SIGNATURE);
status = SecStaticCodeCheckValidity(ref, kSecCSCheckAllArchitectures, req);
if (status != noErr) exit(EXIT_STATUS_ON_BAD_CODE_SIGNATURE);
CFRelease(ref);
CFRelease(req);
LogDebug(@"Code signature was checked and it seems OK");
ありがとうございます! ところで、NSURL * url = [[NSBundle mainBundle] bundleURL]は、リソースと実行可能ファイルを含むバンドル全体の有効性をチェックするために使用することができます。それが正しいか? – Stream
これは10.5で動作するようになりましたか? – Richard
いいえ、しかし、私はそれが少し遅れていると思います:) –