2

iOS7 では、キーチェーンに RSA 公開鍵を追加すると正常に追加されますが、「kSecReturnRef」を取得したい場合、結果として nil が返されますが、「kSecReturnPersistentRef」または「kSecReturnData」を取得すると正常に動作します。この問題は、「SecItemAdd()」メソッドを使用して RSA 公開キーを追加した場合にのみ発生します。「SecKeyGeneratePair()」を介して公開鍵を生成し、「kSecReturnRef」を取得すれば、すべて問題ありません。

再現する手順:

  1. サンプルコード「CryptoExercise」をダウンロード
  2. メソッド「addPeerPublicKey:keyBits:」を呼び出します。
  3. 公開鍵データと名前を渡す
  4. 上記のメソッドは内部で「getKeyRefWithPersistentKeyRef」を呼び出し、このメソッドは「SecKeyRef」に対して nil 値を返します。

この問題は iOS 7 でのみ発生しますが、同じコードは iOS3 から iOS6 まで問題なく動作します。

予想された結果:

< SecKeyRef algorithm id: 1, key type: RSAPublicKey, version: 2, block size: 512 bits, exponent: {hex: 10001, decimal: 65537}, modulus: AE098BC28358D88AE7602E8BB91007239018D40BB1A87F2245199A208CA21B8EFCFFE2373B470E6075D740AC1A25CD7914A6BA5680701DFB9428E2DD461965B7, addr: 0x9abe600 >

実績:

< nil>

サンプルコード: https://developer.apple.com/library/IOs/samplecode/CryptoExercise/Introduction/Intro.html#//apple_ref/doc/uid/DTS40008019-Intro-DontLinkElementID_2

どんな助けでも大歓迎です。

4

0 に答える 0