如果在root下运行代理/守护程序,则SecPKCS12Import功能无法正常工作

时间:2013-07-25 10:51:10

标签: objective-c macos keychain launchd security-framework

我有OSX代理,它应该从放置在项目中的p12文件中读取数据。 Security.framework有一个SecPKCS12Import函数可以做到这一点。问题是,如果我在安装到适当的文件夹后立即在root下运行代理,则以下函数不返回证书的数据(& items参数),但返回状态错误“0”。

sudo launchctl load com.myagent.agent.plist

但在root下运行OSX重启代理启动后工作正常。

如果在用户权限下运行代理,即使没有重新启动OSX也能正常工作。

这是一个plist文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>UserName</key>
    <string>root</string>
    <key>StandardErrorPath</key>
    <string>/usr/local/myagent/agent.log</string>
    <key>StandardOutPath</key>
    <string>/usr/local/myagent/agent.log</string>
    <key>Label</key>
    <string>com.myagent.agent</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Applications/agent.app/Contents/MacOS/agent</string>
    </array>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>

我使用的是OSX 10.8

如何解决上述问题?

0 个答案:

没有答案