2017-03-21 4 views
0

または、関数が失敗している理由を取得するための他のメカニズム?libsodiumにエラーコードがありますか?

私はcrypto_pwhashを呼び出していますが、実際には全く同じコードが古いバージョンのlibsodiumで正常に機能しています。エラーコードがあると、デバッグがずっと楽になります。

答えて

1

ほとんどの関数は、失敗したときに特定のエラーコードを返しません。

歴史上、暗号操作にさまざまなエラーコードを使用すると、攻撃者が致命的な攻撃を行うのに役立つことがありました。

crypto_pwhashはメモリを割り当てます。だから失敗するかもしれない1つの理由は、あなたが記憶を使い果たしていることです。その場合、errnoが適切に設定されます。

また、パラメータが許容範囲内にあることも確認してください。 crypto_pwhash_bytes_min()crypto_pwhash_memlimit_min()crypto_pwhash_memlimit_min()などの関数が便利です。例えば、その機能の目的を考えると、出力は少なくとも128ビットでなければならない。

+0

提案していただきありがとうございます。 errnoは0であり、メモリは豊富です。出力サイズは256ビットです。opslimit(4)とmemlimit(33MB)は許可された範囲内にあります( 'crypto_pwhash_argon2i_memlimit_interactive'と' crypto_pwhash_argon2i_opslimit_interactive'を使って取得しました)。 –

+0

あなたが使用しているパラメータの完全な一覧は何ですか? –

+0

'crypto_pwhash(Key、KeySize、Passwd、Passwd.Size、Salt、4、33554432、0)' 'Key'は32バイト、' Salt'は16バイト、 'Passwd'は可変長です。同じパラメータで 'crypto_pwhash_argon2i'を試してみました。 –

関連する問題