标签: aquaticprime

链接到libcrypto for Leopard?

我使用的是Mac OS X 10.6 SDK,我的部署目标设置为Mac OS 10.5.我正在链接到libcrypto(AquaticPrime需要这个)并发现我的应用程序没有在Leopard上启动.错误是

dyld: Library not loaded: /usr/lib/libcrypto.0.9.8.dylib

我尝试了以下变通方法,但它们都不起作用:

  • 直接链接libcrypto.0.9.7.dylib(10.6 SDK拒绝直接链接libcrypto.0.9.7.dylib.
  • 将10.5 SDK的版本复制libcrypto.0.9.7.dylib到10.6 lib目录并尝试与其链接(这次链接过程成功但在Leopard中,应用程序仍尝试查找不存在的libcrypto.0.9.8.dylib文件,因此不会启动).
  • libcrypto.0.9.7.dylib从Mac OS X 10.5.8安装进行复制并与之链接(链接成功但应用程序仍在查找libcrypto.0.9.8.dylib).

有没有办法链接到这个库,仍然使用10.6 SDK?

谢谢.

macos cocoa openssl aquaticprime

11
推荐指数
2
解决办法
8296
查看次数

CryptoAPI:使用CryptVerifySignature通过公钥验证openssl的签名

我正在尝试将Mac 的AquaticPrime框架移植到Windows.

在Mac上,它使用的是opensll库,我试着理解如何将它移植到Windows,我想在那里我必须使用CryptoAPI.

我主要需要使用给定公钥验证生成的签名的代码.

以下是使用openssl进行验证的方法:

  1. 输入:许可证数据,公钥和签名,长度均为128字节.
  2. SHA1摘要是根据许可证数据计算的.
  3. 使用公钥数据建立RSA上下文
  4. 在给定RSA密钥和签名的情况下调用RSA_public_decrypt(),该签名返回20字节长的SHA1摘要 - 该摘要等于步骤2中的摘要,签名有效.

那么,我如何使用CryptoAPI执行此操作?我到目前为止:

  1. 从CryptAcquireContext开始(ctx,0,0,PROV_RSA_FULL,CRYPT_VERIFYCONTEXT)
  2. 帖子的帮助下使用CryptImportKey ,pubexp = 3,bitlen = 1024.一切正常,即我没有错误,我查看了二进制数据,以验证它是否与MSDN文章显示的相匹配.
  3. 从许可证数据创建SHA1摘要.我检索了生成的20字节哈希值,看到它与Mac上的openssl相匹配.

此时,我打电话给:

CryptVerifySignature (hashHdl, sig, sigLen, keyHdl, 0, 0)
Run Code Online (Sandbox Code Playgroud)

此操作失败,错误代码为ERROR_INVALID_PARAMETER.

奇怪的是,当我第一次意外地将两倍大的公钥存储到PUBLICKEYBLOB结构中时,我收到了一个N​​TE_BAD_SIGNATURE错误.这可能表明我现在传递的公钥是正确的.

为什么现在出现ERROR_INVALID_PARAMETER错误?我已经验证了哈希值是正确的,并且密钥似乎也被接受了.并且"sig"参数只是指向签名的128个字节的指针,而sigLen是128.

那么,我在这里错过了什么?

openssl rsa cryptoapi aquaticprime

8
推荐指数
1
解决办法
3837
查看次数

标签 统计

aquaticprime ×2

openssl ×2

cocoa ×1

cryptoapi ×1

macos ×1

rsa ×1