2012-03-29 26 views
5

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?

+0

możliwy duplikat [Używanie klucza publicznego RSA na iOS] (http://stackoverflow.com/questions/9728799/using-an-rsa-public-key-on-ios) – bobobobo

Odpowiedz

2

Official response from Apple na dokładnie tej dziedzinie było to, że obsługiwane. Jedyny obsługiwany sposób pobierania kluczy prywatnych do pęku kluczy był przez pliki PKCS # 12.

+0

Ale jak uzyskać dostęp do tego klucz prywatny po zaimportowaniu? –

+0

Po zaimportowaniu pliku P12 można uzyskać dostęp do klucza prywatnego za pomocą funkcji SecItemCopyMatching(). –

+0

Łącze w tej odpowiedzi nie działa. Przekierowuje na https://developer.apple.com/account. –

0
Powiązane problemy