Xcode iOS 9:SecItemCopyMatching返回成功状态代码,但密钥为零

Xcode iOS 9:SecItemCopyMatching返回成功状态代码,但密钥为零,xcode,rsa,keychain,ios9,Xcode,Rsa,Keychain,Ios9,我尝试使用SecItemAdd方法将私钥导入密钥链返回OSStatus0,但当我尝试使用SecItemCopyMatch从密钥链检索该密钥时,它返回零数据,但OSStatus为0表示成功 请参阅Apple开发者论坛该漏洞是由于公钥格式错误引起的 如果您使用基本编码规则库,下面是解决方案 要修复公钥,需要在模数数据之前插入零字节。 对我来说,修复方法非常简单: const char fixByte = 0; NSMutableData * fixedModule = [NSMutableData

我尝试使用
SecItemAdd
方法将私钥导入密钥链返回
OSStatus
0,但当我尝试使用
SecItemCopyMatch
从密钥链检索该密钥时,它返回零数据,但
OSStatus
为0表示成功


请参阅Apple开发者论坛

该漏洞是由于公钥格式错误引起的

如果您使用基本编码规则库,下面是解决方案

要修复公钥,需要在模数数据之前插入零字节。

对我来说,修复方法非常简单:

const char fixByte = 0;
NSMutableData * fixedModule = [NSMutableData dataWithBytes:&fixByte length:1];
[fixedModule appendData:modulusData];

谢谢大家!!你是我的英雄

就我而言

  • 以前

    NSData *modBits = [[NSData alloc] initWithBase64EncodedString:mod options:NSDataBase64DecodingIgnoreUnknownCharacters];
    
  • 之后

    const char fixByte = 0;
    NSMutableData * modBits = [NSMutableData dataWithBytes:&fixByte length:1];
    
    NSData *tmpmodBits = [[NSData alloc] initWithBase64EncodedString:mod options:NSDataBase64DecodingIgnoreUnknownCharacters];
    
    [modBits appendData:tmpmodBits];
    

得到同样的结果,您现在有成功的解决方案吗?没有。正在等待iOS9公开发行。如果您需要它,您可以尽快尝试使用此swift解决方案在代码中进行swift注入-它对您有效吗?没有,我的问题是导入私钥而不是公钥。。。我没有尝试导入公钥,你只是救了我的命,非常感谢,这个简单的解决方案怎么能奏效。。。