在iOS中使用公钥验证数字签名

Mad*_*oor 5 security openssl objective-c public-key-encryption ios

如何在iOS中使用公钥验证数字签名而不使用任何第三方代码(例如)打开SSL?

我需要使用公钥验证iOS App中的数字签名.有人可以帮助我在不使用第三方软件的情况下实现这一目标.

我正在尝试下面的代码,但问题是我的应用程序中没有证书,因此无法创建SecTrustRef.

码:

    NSString *certPath              = [[NSBundle mainBundle] pathForResource:@"yyy" 
                                                             ofType:@"xxx"];
    SecCertificateRef myCertificate = nil;
    NSData *certificateData         = [[NSData alloc] initWithContentsOfFile :certPath];
    myCertificate                   = SecCertificateCreateWithData(kCFAllocatorDefault, (__bridge CFDataRef)certificateData);

    SecPolicyRef myPolicy           = SecPolicyCreateBasicX509();
    SecTrustRef trustRef;
    SecTrustCreateWithCertificates(myCertificate, myPolicy, &trustRef);
    SecKeyRef keyRef      = SecTrustCopyPublicKey (trustRef);


    BOOL status = SecKeyRawVerify (keyRef,
                              kSecPaddingPKCS1SHA1,
                              (const uint8_t *)[data bytes],
                              (size_t)[data length],
                              (const uint8_t *)[signature bytes],
                              (size_t)[signature length]
                              );
Run Code Online (Sandbox Code Playgroud)

我有以下内容:

  • 公钥(NSString*)
  • 签名(NSString*)
  • 数据(NSString*)

如果我不想使用ant第三方开源,请帮助我在iOS SDK中拥有的所有选项.

que*_*ish 0

如果您的密钥数据打包为PKCS12数据,请使用SecPKCS12Import导入并使用公钥。