2012-03-29 20 views
5

Ich habe ein Projekt, wo ich einen verschlüsselten privaten RSA-Schlüssel für einen Benutzer von einem Server erhalte. Mit den vom Benutzer bereitgestellten Informationen kann ich die Daten in ein erwartetes Format zurückverschlüsseln. Ich kann jedoch nicht herausfinden, wie Sie den privaten Schlüssel in den iOS Keychain laden, um ihn in RSA Crypto-Funktionen zu verwenden.iOS: Hinzufügen eines privaten Schlüssels zu den Geräten KeyChain

Derzeit habe ich den folgenden Code, den ich aus verschiedenen Beispielen zusammengeschustert habe. Dieser Code funktioniert zum Hinzufügen eines öffentlichen Schlüssels, scheint aber überhaupt nicht zum Hinzufügen eines privaten Schlüssels zu funktionieren.

[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); 

Wenn ich diesen Code mit dem privaten Schlüssel Daten ausgeführt (in DER-Format decodiert) die privateKey Variable wird durch die SecItemAdd() Anruf auf NULL gesetzt. Die sanityCheck Variable zeigt jedoch "Kein Fehler" an. Ich weiß nicht, was ich vermisse.

Was muss ich tun, damit der private Schlüssel erfolgreich in den Schlüsselbund geladen wird?

+0

mögliche Duplikate von [Mit einem öffentlichen RSA-Schlüssel auf iOS] (http://StackOverflow.com/questions/9728799/using-an-rsa-public-key-on-ios) – bobobobo

Antwort

2

Official response from Apple exakt zu diesem Thema war, dass es nicht unterstützt wurde. Die einzige unterstützte Möglichkeit, private Schlüssel in den Schlüsselbund zu bekommen, waren PKCS # 12-Dateien.

+0

Aber dann, wie Sie darauf zugreifen privater Schlüssel nach dem Import? –

+0

Sobald Sie die P12-Datei importiert haben, können Sie mit der SecItemCopyMatching() - Funktion auf den privaten Schlüssel zugreifen. –

+0

Der Link in dieser Antwort funktioniert nicht. Es leitet zu https://developer.apple.com/account um. –

0
Verwandte Themen