2011-12-26 40 views
3

私はCommonCryptoをMac OS 10.7での暗号化に使用しています。このフレームワークは組み込まれていませんか?私は、ランダムなデータを生成していた場合:kSecRandomDefaultが見つかりませんか?

+ (NSData *)randomDataOfLength:(size_t)length { 
NSMutableData *data = [NSMutableData dataWithLength:length]; 

int result = SecRandomCopyBytes(kSecRandomDefault, 
           length, 
           data.mutableBytes); 
NSAssert(result == 0, @"Unable to generate random bytes: %d", 
     errno); 

return data; 

} 

私はCommonCryptoで宣言されていると信じて宣言されていない識別子kSecRandomDefaultのエラー使用を取得します。

ありがとうございました。

+0

デフォルトではインストールされていますが、リンクしてヘッダーをインポートする必要があります。あなたはそれをやっていますか? –

+0

どうすればいいですか?単に#import を意味しますか? –

+0

CommonCryptoとSecurityフレームワークは2つの別個のものであることに注意してください。 CommonCryptoはlibSystemの一部です。さらに、あなたの質問に表示されるコードは、CocoaとSecurityフレームワークだけを使用しています。 CommonCryptoコードは含まれていません。 –

答えて

11

SecRandom.hで定義されています。プロジェクトにSecurityフレームワークが含まれていることを確認し、適切なヘッダーファイルを追加してください。フレームワークのデフォルトヘッダーには含まれていません(私はそれがサイトの上か意図的なのか分かりません)。したがって、実装ファイルに次のインポートを追加してください:

#import <Security/SecRandom.h> 
関連する問題