2012-03-29 12 views
5

私は、サーバーからユーザーのために暗号化されたRSA秘密鍵を受け取るプロジェクトを持っています。ユーザーから提供された情報を使用して、データを元の形式に戻すことができます。しかし、RSA暗号機能で使用するために私有鍵をiOS Keychainにロードする方法を理解することはできません。iOS:デバイスに秘密鍵を追加するKeyChain

現在のところ、私はさまざまな例から一緒に石畳をした次のコードを持っています。このコードは公開鍵を追加する作業ですが、秘密鍵を追加するためにはまったく動作しません。

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

私は(DER形式にデコード)秘密鍵のデータでこのコードを実行すると、privateKey変数はSecItemAdd()呼び出しでNULLに設定されています。ただし、変数sanityCheckは「エラーなし」を示します。私は何が欠けているのか分からない。

プライベートキーをキーチェーンに正しくロードするには、何が必要ですか?

私は今、この権利をテストすることはできません
+0

[iOS上でRSA公開鍵を使用する](http://stackoverflow.com/questions/9728799/using-an-rsa-public-key-on-ios) – bobobobo

答えて

2

Official response from Appleそれがサポートされていないということでした。プライベートキーをキーチェーンにインポートする唯一のサポート方法は、PKCS#12ファイルを使用することでした。

+0

ただし、あなたはどのようにそれにアクセスしますかそれをインポートした後の秘密鍵? –

+0

P12ファイルをインポートしたら、SecItemCopyMatching()関数を使用して秘密鍵にアクセスできます。 –

+0

この回答のリンクは機能しません。 https://developer.apple.com/accountにリダイレクトされます。 –

0
関連する問題