iOS: agregar una key privada a los dispositivos KeyChain

Tengo un proyecto donde recibo una key privada RSA cifrada para un usuario desde un server. Utilizando la información proporcionada por el usuario, puedo descifrar los datos en un formatting esperado. Sin embargo, no puedo entender cómo cargar la key privada en el llavero iOS para usarla en las funciones criptográficas RSA.

Actualmente, tengo el siguiente código que he improvisado a partir de varios ejemplos. Este código funciona para agregar una key pública, pero no parece funcionar en absoluto para agregar una key privada.

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

Cuando ejecuto este código con los datos de key privada (decodificados en formatting DER), la variable privateKey se establece en NULL mediante la llamada SecItemAdd() . Sin embargo, la variable sanityCheck indica "Sin error". Estoy perdido por lo que me falta.

¿Qué debo hacer para que la key privada se cargue correctamente en el llavero?