2016-08-01 9 views
1

PKI APIをSwift 2.2に移植していて、次のエラーが見つかりました。 Objective-Cではすべてがうまく動作します。SecKeyEncryptがエラー-50および0を返します。cipherSize

暗号化するデータオブジェクトのサイズは32バイトです。これは私が使用しているコードです。

let buflen = 64 
var cipherBuffer = UnsafeMutablePointer<UInt8>.alloc(buflen) 
cipherBuffer[buflen] = 0 // zero terminate 

var cipherLength: Int = 0 

var statusCode: OSStatus? 

let dataPointer = UnsafePointer<UInt8>(data.bytes) 

statusCode = SecKeyEncrypt(publicKey, SecPadding.PKCS1, dataPointer, data.length, cipherBuffer, &cipherLength) 

この結果、-50と0の暗号長になります。私は、彼らがOKであることを確認するために、公開鍵とDATAPOINTERのhexdumpに対してをしていますが、すべてのヘルプは、いくつかの研究I後

答えて

1

を理解されるであろう

SecKeyEncryptコールに問題がcan't

問題の解決策を見つけた

次のように私は、アレイを終了ALLOCとゼロを用いcipherBufferを作成した:

let buflen = 64 
var cipherBuffer = UnsafeMutablePointer<UInt8>.alloc(buflen) 
cipherBuffer[buflen] = 0 // zero terminate 

私は以下のアプローチを試みました。両方のアプローチは、hexdumpに対してを使用して$ 00と64バイトのブロックを報告したことを、私は簡単なテストを行なったし、前のコードを見直し、「cipherBuffer [buflenは] = 0」の行を削除しても問題が修正されていことがわかっ考える

let blockSize = SecKeyGetBlockSize(publicKey) //64 
var cipherBuffer = [UInt8](count: Int(blockSize), repeatedValue: 0) 

アレイのゼロ終端と関係しているか、変わったことが起きているようです。

関連する問題