Java 第三方库的代码签名问题

Java 第三方库的代码签名问题,java,xcode,code-signing,osx-yosemite,Java,Xcode,Code Signing,Osx Yosemite,在我的应用程序中,我有一个相对较长的lib链,它们相互调用,从约塞米蒂开始,它的部分功能由于代码签名问题而中断。这一切在小牛身上都起到了很好的作用 我的cocoa应用程序使用Java运行一个单独的代码部分,这是访问Java库(hbci4java.jar)所必需的。然后,该库使用jni调用我提供的包装动态库来访问系统的PCSC.framework(智能卡) 由于约塞米蒂,这不再有效,可能是因为: 28.10.14 15:29:17096 com.apple.ctkpcsd[40978]:拒绝未经c

在我的应用程序中,我有一个相对较长的lib链,它们相互调用,从约塞米蒂开始,它的部分功能由于代码签名问题而中断。这一切在小牛身上都起到了很好的作用

我的cocoa应用程序使用Java运行一个单独的代码部分,这是访问Java库(hbci4java.jar)所必需的。然后,该库使用jni调用我提供的包装动态库来访问系统的PCSC.framework(智能卡)

由于约塞米蒂,这不再有效,可能是因为:

28.10.14 15:29:17096 com.apple.ctkpcsd[40978]:拒绝未经com.apple.security.smartcard授权的沙盒PCSC.framework客户端

到目前为止很容易。我将此智能卡权利添加到应用程序权利以及我为java提供的权利(有一个单独的java.rights文件)中,但没有任何效果

我现在有点不知所措,不知道如何继续。智能卡权利没有被提及,所以我不知道实际应该设置什么(我使用了bool和YES),也不知道必须设置在哪里

是否可以向第三方库添加权限?我想尝试将它添加到包装动态库(由我签名)中,看看它是否可以正确访问PCSC.framework?

我认为,如果您正在研究代码签名问题,那么应该阅读此链接。有一个关于第三方库的简介:

Apple使用业界标准的代码签名证书格式。因此,如果您的公司已经拥有第三方签名身份,您可以使用它在其他系统上签名代码,您可以将其与OS X codesign命令一起使用。同样,如果您的公司是证书颁发机构,请联系您的IT部门,了解如何获得公司颁发的签名证书。

下面是关于权利和代码签名的“幕后”解释。我觉得这本书内容丰富,我想它也会对你有益


如果这些信息不能准确回答你的问题,我希望它至少能让你走上正轨。干杯

事实证明,这是一个涉及智能卡动态库的非常特殊的问题。苹果决定不允许在已签名的应用程序之外访问它(这在开发过程中很麻烦,我们只在部署阶段对应用程序进行签名)。对java二进制文件(jar+dylib)进行签名并没有什么不同,但是对于我们进一步得到的java文件,没有任何授权+签名(对子组件进行签名不再有问题)


另一个在这里起作用的问题是,智能卡权利的继承似乎不起作用(这使得这对于沙盒应用也不起作用)。但是,对于一个简单的纯cocoa应用程序,访问智能卡是可行的,因此我们需要一个不同的解决方案(可能将智能卡的访问层移动到应用程序中,并通过回调与Java部件通信)。

感谢您的提示。我知道你链接的页面,通常代码签名没有问题。这只是一个特殊的应用程序->java->jni->动态库权限问题。