Я использую этот код http://wiki.effectiveprogramming.com/index.php?title=CocoaEncryption&redirect=no в своем приложении для реализации функции входа. Но у меня есть метод ошибки saveRSAPublicKey:Объектив C - SecItemAdd имеет ошибку: EXC_BAD_ACCESS (первый раз) и errSecDuplicateItem (второй раз)
+ (BOOL)saveRSAPublicKey:(NSData*)publicKey appTag:(NSString*)appTag overwrite:(BOOL)overwrite {
//Error here (when first call) - Program received signal: "EXC_BAD_ACCESS" -> crash
OSStatus status = SecItemAdd((CFDictionaryRef)[NSDictionary dictionaryWithObjectsAndKeys:
(id)kSecClassKey, kSecClass,
(id)kSecAttrKeyTypeRSA, kSecAttrKeyType,
(id)kSecAttrKeyClassPublic, kSecAttrKeyClass,
kCFBooleanTrue, kSecAttrIsPermanent,
[appTag dataUsingEncoding:NSUTF8StringEncoding], kSecAttrApplicationTag,
publicKey, kSecValueData,
kCFBooleanTrue, kSecReturnPersistentRef,
nil],
NULL); //don't need public key ref
DebugLog(@"result = %@", [KeychainUtil fetchStatus:status]);
if(status == noErr)
return YES;
else if(status == errSecDuplicateItem && overwrite == YES)
return [CryptoUtil updateRSAPublicKey:publicKey appTag:appTag];
return NO;
}
Когда я звоню saveRSAPublickey
в первый раз, я не могу создать OSStatus и мое приложение разбился. Когда я звоню saveRSAPublickey
для второго раза: статус == errSecDuplicateItem
и запустите [CryptoUtil updateRSAPublicKey:publicKey appTag:appTag]
-> успех.
Сложно найти эту проблему при отладке, поскольку она просто появляется только на новом устройстве (никогда не было установлено мое приложение). Наконец, я обнаружил ошибку, кстати: установите новый appTag перед вызовом saveRSAPublicKey. Я вижу в system.log:
6 апреля 12:30:29 МКВ-MacBook-Pro securityd [4372]: не удалось открыть hwaes ключ
Пожалуйста, помогите мне !!! Спасибо всем.
Должен быть комментарий ИМХО. – CodaFi
Я взял слишком много для отладки, и я уверен: publicKey верен. У меня есть переменная «appTag» - строка const. Если я хочу восстановить ошибку, я изменяю значение переменной «appTag». –
Системный журнал: 6 апр 11:35:58 MACs-MacBook-Pro securityd [4301]: не удалось получить доступ к ключу hwaes апр. 6 11:36:12 MACs-MacBook-Pro [0x0-0x13013] .com.google. Chrome [176]: [176: -1272877056: 12564130414539: ОШИБКА: spdy_session.cc (1386)] Spdy stream closed: 6 –