2014年7月9日水曜日

Emscripten-1.21.0 から std::random_device のデフォルトトークンとして /dev/uramdom をWeb Cryptography API or nodejs 経由で使えるようになったはなし

Emscripten-1.21.0 では、先日 Emscripten-1.20.0 以下では std::random_device が動作しない事から Issue として報告し、原因が std::random_device のデフォルトトークンとなる /dev/urandom のエミュレーションが実装されていない事から、この実装について Web Cryptography API または nodejs.crypto API が使用可能な環境ではそれを用いる事で事実上はシステムの /dev/urandom を使えるようににゃんにゃんしたのが取り込まれています。
Emscripten-1.21.0 未満では暗号的擬似乱数生成器(≈ /dev/urandom, /dev/random )はES5レベルのMath.randomによるLCGsによるエミュレーションすらされて居なかったので、これを使うコードはコンパイルできませんでしたが、コンパイル可能になりました。

但し、暗号的擬似乱数生成器が JavaScript レベルのプラットフォームでサポートされていない環境では Emscripten-1.21.0 の std::random_device 、 /dev/random 、 /dev/urandom のエミュレーションは ES5 レベルの Math.random による LCGs にデフォールトするので、万が一そういった環境も対象とする必要がある場合にはご注意。

なお、 Emscripten( + fastcomp ) の導入方法について日本語の記事は 1.20.0 と同様に可能なので、こちらをどうぞ。また、現在の最新版はリビジョンアップした 1.21.1 です。Emscripten-fastcompのビルドには i7-4770 + cmake + ninja でおよそ8分ほど掛かります。

0 件のコメント:

コメントを投稿