2011-11-08 32 views
0

私はLinuxカーネルでcrypto apiを使用しようとしていますが、私がする必要があるのはshaファイルです。私はLSMを使用して、これらのファイルオープンをキャッチしています。私はこれまでファイルのLinuxカーネルでCrypto APIを使用する

struct crypto_shash *tfm; 
struct shash_desc desc; 
tfm = crypto_alloc_shash("sha1", 0, CRYPTO_ALG_ASYNC); 

を使用して構造体crypto_shashを作成されていると私はすべてが正常に動作している使用して

desc.tfm = tfm; 
desc.flags = 0; 

err = crypto_shash_init(&desc); 

た後、それを初期化することになっていますと仮定したが、その後私が欲しいもの

使用する

crypto_shash_digest(&desc, ??, ??, sha_hash); 

そして、私はそれが2番目の引数としてのscatterlistとlengその散布リストの3番目の引数として指定します。私が把握できないのは、ファイルを暗号システムに与えるためにファイルをスキャッタリストにロードする方法です。

私はかなり読んだことがありますが、これまでにファイルの内容をスキャッタリストにロードする方法について詳細を見つけることができませんでした。だから正しい方向へのポインタがあれば幸いです。

ありがとうございました

答えて

1

私はしばらく前に同様のことをしました。唯一の違いは、ELFセクションのハッシュを計算したことです。

  1. あなたのdesc.flagsは、暗号操作のブロックを防ぐ本当の理由があるまでは、おそらくCRYPTO_TFM_REQ_MAY_SLEEPにする必要があります。
  2. crypto_shash_digestcrypto_hash_digestを混同してもよろしいですか? crypto_ * s * hash_digest()は、3番目の引数としてデータへのポインタを受け取ります。それがあなたにとって本当でないなら、あなたは何のlinux kenrelバージョンについて話していますか?
+0

私は2.6.38を使用しています。あなたは正しいです、私は、私が欲しかったことを言っていたことを読んでいたので、シャーシを使用しました。奇妙なことに、私はまだcrypto_shash_digest(&desc、teststr、strlen(teststr)、sha_hash)を試しても、nullポインタエラーが出ます。 –

+0

また、私はtfmがnullでないことを確認しており、initからのエラーはありません。 –

+0

@DigitalPowers私にコードを見せてもらえますか?crypto_shash_digest()の使い方、TFMの初期化方法などが必要ですか?私はTFMの準備に誤りがあると仮定しますが、私がコードを見るまで何も言えません。 –

関連する問題