2012-03-29 12 views
5

Ho un progetto in cui ricevo una chiave privata RSA crittografata per un utente da un server. Utilizzando le informazioni fornite dall'utente, sono in grado di decrittografare i dati in un formato previsto. Tuttavia, non riesco a capire come caricare la chiave privata nel portachiavi iOS per l'utilizzo nelle funzioni di crittografia RSA.iOS: aggiunta di una chiave privata ai dispositivi KeyChain

Attualmente, ho il seguente codice che ho selezionato insieme da vari esempi. Questo codice funziona per aggiungere una chiave pubblica, ma non sembra funzionare affatto per l'aggiunta di una chiave privata.

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

Quando eseguo questo codice con i dati chiave privata (decodificati in formato DER), la variabile privateKey è impostato su NULL dalla chiamata SecItemAdd(). Tuttavia, la variabile sanityCheck indica "Nessun errore". Sono in perdita per quello che mi manca.

Cosa devo fare per caricare correttamente la chiave privata nel portachiavi?

+0

possibile duplicato di [Utilizzo di una chiave pubblica RSA su iOS] (http://stackoverflow.com/questions/9728799/using-an-rsa-public-key-on-ios) – bobobobo

risposta

2

Official response from Apple su questo argomento esatto è che era supportato. L'unico modo supportato per ottenere chiavi private nel Portachiavi era attraverso i file PKCS # 12.

+0

Ma come si accede a tale chiave privata dopo averla importata? –

+0

Dopo aver importato il file P12, è possibile accedere alla chiave privata utilizzando la funzione SecItemCopyMatching(). –

+0

Il collegamento in questa risposta non funziona. Reindirizza a https://developer.apple.com/account. –

0
Problemi correlati