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

时间:2015-08-19 13:02:33

标签: xcode rsa keychain ios9

我正在尝试使用SecItemAdd方法将私钥导入到钥匙串中,返回OSStatus 0但是当我尝试使用SecItemCopyMatch从密钥链中检索该密钥时,它会返回nil数据但{ {1}} 0表示成功

请参阅Apple开发人员论坛link

2 个答案:

答案 0 :(得分:1)

由于格式错误的公钥引用https://forums.developer.apple.com/thread/15129

而发生错误

如果你使用基本编码规则库,这就是解决方案。

要修复公钥,您需要在模数据之前插入nil字节。 https://github.com/StCredZero/SCZ-BasicEncodingRules-iOS/issues/6#issuecomment-136601437

P.S。对我来说,修复很简单:

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

答案 1 :(得分:1)

谢谢!你是我的英雄!

就我而言。

  • 之前

    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];