Gauche > Archives > 2021/03/30

2021/03/30 01:21:32 UTCましろゆず
#
先日の bcrypt のテストの件ですが、python (3.9.2) にてテストケースの $2x$ のものを bcrypt.checkpw に渡してみたところ、Invalid salt ということでした
#
原因はわかりませんが、私の環境では $2x$ で始まるものだけが使えなくなってる気がします
2021/03/30 01:48:24 UTCshiro
#
Pythonのbcrypt実装って複数見つかるけど現役はどれかな。 https://github.com/pyca/bcrypt/ これとか、コードを見ると $2x$ はサポート自体していないようです ($2x$がサポートされる前のコードから分岐した?)
#
Gaucheのコードは https://www.openwall.com/crypt/ から取っているので、ここのcrypt_blowfish 1.3 を落としてビルドしてみると、どうなります? そちらでもfailするなら、コード自体に何らかの環境依存性がある、しないならGaucheにポートするときに何かしくじった、ということになりそう。
2021/03/30 01:51:49 UTCましろゆず
#
システム内の共有ライブラリ呼び出してる前提で試してみたのですが、自前で持ってたんですね…試してみます
2021/03/30 01:58:10 UTCましろゆず
#
make check まで試してみましたが、エラーは出てないみたいです
2021/03/30 02:05:58 UTCshiro
#
1箇所違いが見つかったけれど関係あるのかな…
#
$ diff -b crypt_blowfish-1.3/crypt_blowfish.c Gauche/ext/bcrypt/crypt_blowfish.c 
57c57
< #define BF_ASM				1
---
> #define BF_ASM				0
#
#ifdef __i386__ の直下です。ここを変えると違いが出ますか? x86_64なら変わらないと思うのだけれど
2021/03/30 02:21:58 UTCましろゆず
#
だめみたいです
#
特に変わっていないようです
2021/03/30 02:27:46 UTCshiro
#
あと違うのはコンパイラフラグくらいですよねえ… warningは関係ないし、-O2は同じだし、となると-fPICくらいしか
2021/03/30 05:04:21 UTCましろゆず
#
少し試してみたのですが…Gauche のツリー内の crypt_blowfish ではなく、システム内にある libcrypt かな?とリンクされて、そちらが使われてるかもしれません
#
簡単なコードを書いて試してみたのですが、Gauche 内のツリーのものを使うと成功するのですが、それらを使わず -lcrypt を指定してリンクすると、$2x$ だけ失敗(エラー)するように見えます https://gist.github.com/yuzu46m/fcad2d3c15e4a97466256e1a4a69721d
2021/03/30 05:36:57 UTCshiro
#
ああ、なるほど、同名のライブラリ関数がlibcryptの方にあってそっちが呼ばれてるんですかね。
#
ということはGaucheソース側をリネームしてやればいいかな。
2021/03/30 06:38:19 UTCshiro
#
Gauche側の関数をリネームするようにしてみました。 https://github.com/shirok/Gauche/commit/b6eed222cba23e7f423fee3826790534ed854679
2021/03/30 07:12:41 UTCましろゆず
#
Testing bcrypt ... passed.
テスト通るようになりました
2021/03/30 08:56:56 UTCshiro
#
ども!