Mam projekt, w którym otrzymuję zaszyfrowany klucz prywatny RSA dla użytkownika z serwera. Korzystając z informacji dostarczonych przez użytkownika, mogę odszyfrować dane z powrotem do oczekiwanego formatu. Nie mogę jednak dowiedzieć się, jak załadować klucz prywatny do pęku kluczy systemu iOS do użycia w funkcjach kryptograficznych RSA.iOS: Dodawanie klucza prywatnego do urządzeń KeyChain
Obecnie mam następujący kod, który skleiłem razem z różnych przykładów. Ten kod działa w celu dodania klucza publicznego, ale w ogóle nie działa w przypadku dodawania klucza prywatnego.
[peerPublicKeyAttr setObject:(__bridge id)kSecClassKey forKey:(__bridge id)kSecClass];
[peerPublicKeyAttr setObject:(__bridge id)kSecAttrKeyTypeRSA forKey:(__bridge id)kSecAttrKeyType];
[peerPublicKeyAttr setObject:peerTag forKey:(__bridge id)kSecAttrApplicationTag];
[peerPublicKeyAttr setObject:privateKeyData forKey:(__bridge id)kSecValueData];
[peerPublicKeyAttr setObject:[NSNumber numberWithBool:YES] forKey:(__bridge id)kSecReturnRef];
sanityCheck = SecItemDelete((__bridge CFDictionaryRef) peerPublicKeyAttr) ;
sanityCheck = SecItemAdd((__bridge CFDictionaryRef) peerPublicKeyAttr, (CFTypeRef *)&privateKey);
Kiedy uruchomić ten kod z prywatnymi danymi kluczowymi (zakodowanych w formacie DER), zmienna privateKey
jest ustawiony na NULL przez wywołanie SecItemAdd()
. Jednak zmienna sanityCheck
wskazuje "Brak błędu". Brakuje mi tego, czego mi brakuje.
Co muszę zrobić, aby pomyślnie załadować klucz prywatny do pęku kluczy?
możliwy duplikat [Używanie klucza publicznego RSA na iOS] (http://stackoverflow.com/questions/9728799/using-an-rsa-public-key-on-ios) – bobobobo