在Mac应用程序中使用Keychain的证书

时间:2013-01-20 15:36:36

标签: objective-c xcode cocoa certificate keychain

我正在尝试构建一个迷你应用程序来将一个Mac OS X应用程序与codesign实用程序和我的开发人员证书在密钥链中进行协同设置。要做到这一点,我使用NSTask,就像那样:

[task setLaunchPath:@"/usr/bin/codesign"];
// ...
NSString *certificateName = @"\"3rd Party Mac Developer Application: Firstname Lastname\"";
NSString *appName = @"\"/path/to/My App.app\"";
NSArray *args = [NSArray arrayWithObjects:@"-s", certificateName, appName, nil];
// ...
[task launch];

我使用NSPipe来捕获输出,我收到此错误消息:no identity found ...
但是,如果我通过终端手动启动此命令,则应用程序已经过良好签名(因此不会出现严重安装证书等问题)。

我认为问题来了,因为我的应用程序无法访问钥匙串中的证书(但我可以通过终端)。

有人已经遇到过这个问题吗?

提前致谢,Best。

1 个答案:

答案 0 :(得分:2)

您不应在NSTask的参数中嵌入其他引号:

NSString *certificateName = @"3rd Party Mac Developer Application: Firstname Lastname";
NSString *appName = @"/path/to/My App.app";

参数中的空格是自动处理的,不需要引号。