From: Kirill Shutemov Date: 2006-11-12T01:01:17+09:00 Subject: External entropy pool for random number generator ------=_Part_33286_15847929.1163260874404 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline In the attachment patch which allow to use external entropy pool for Kernel::rand. When entropy pool present and you run Kernel::rand it reads 4(should be more?) bytes from pool and use this value as random seed. When pool ends(EOF reached) it sets to nil. It can be useful for cryptography or for testing. For example: srand(File.open("/dev/random")) # use system entropy pool rand srand # use standart ruby's generator ------=_Part_33286_15847929.1163260874404 Content-Type: application/octet-stream; name=random.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_eue7dd8d Content-Disposition: attachment; filename="random.patch" SW5kZXg6IHRlc3QvcnVieS90ZXN0X3JhbmQucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGVzdC9ydWJ5L3Rl c3RfcmFuZC5yYgkocmV2aXNpb24gNTgxKQorKysgdGVzdC9ydWJ5L3Rlc3RfcmFuZC5yYgkod29y a2luZyBjb3B5KQpAQCAtMTI4LDQgKzEyOCwxMiBAQAogICAgIHdzLmVhY2gge3x3fCBhc3NlcnRf ZXF1YWwody50b19pLCByYW5kKC0weDEwMDAwKSkgfQogICBlbmQKIAorICBkZWYgdGVzdF9wb29s CisgICAgd3MgPSAldyg0NzYxNCA4NzU4IDM3NTcyIDU3MzIyIDU2OTc0KQorICAgIHBvb2xfcmQs IHBvb2xfd3IgPSBJTy5waXBlCisgICAgcG9vbF93ciA8PCAiYSB0ZXN0IHBvb2wiCisgICAgcG9v bF93ci5jbG9zZQorICAgIHNyYW5kKHBvb2xfcmQpCisgICAgd3MuZWFjaCB7fHd8IGFzc2VydF9l cXVhbCh3LnRvX2ksIHJhbmQoMHgxMDAwMCkpfQorICBlbmQKIGVuZApJbmRleDogcmFuZG9tLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gcmFuZG9tLmMJKHJldmlzaW9uIDU4MSkKKysrIHJhbmRvbS5jCSh3b3Jr aW5nIGNvcHkpCkBAIC0xODksOCArMTg5LDkgQEAKICNlbmRpZgogCiBzdGF0aWMgVkFMVUUgc2F2 ZWRfc2VlZCA9IElOVDJGSVgoMCk7CitzdGF0aWMgVkFMVUUgZW50cm9weV9wb29sID0gUW5pbDsK IAotc3RhdGljIFZBTFVFCitzdGF0aWMgdm9pZAogcmFuZF9pbml0KFZBTFVFIHZzZWVkKQogewog ICAgIHZvbGF0aWxlIFZBTFVFIHNlZWQ7CkBAIC0yNDIsMTAgKzI0Myw4IEBACiAgICAgICAgICAg ICBsZW4tLTsKICAgICAgICAgaW5pdF9ieV9hcnJheShidWYsIGxlbik7CiAgICAgfQotICAgIG9s ZCA9IHNhdmVkX3NlZWQ7CiAgICAgc2F2ZWRfc2VlZCA9IHNlZWQ7CiAgICAgZnJlZShidWYpOwot ICAgIHJldHVybiBvbGQ7CiB9CiAKIHN0YXRpYyBWQUxVRQpAQCAtMzIxLDEwICszMjAsMTcgQEAK ICAgICBWQUxVRSBzZWVkLCBvbGQ7CiAKICAgICByYl9zZWN1cmUoNCk7Ci0gICAgaWYgKHJiX3Nj YW5fYXJncyhhcmdjLCBhcmd2LCAiMDEiLCAmc2VlZCkgPT0gMCkgeworICAgIGlmIChyYl9zY2Fu X2FyZ3MoYXJnYywgYXJndiwgIjAxIiwgJnNlZWQpID09IDApCiAJc2VlZCA9IHJhbmRvbV9zZWVk KCk7CisKKyAgICBvbGQgPSBzYXZlZF9zZWVkOworCisgICAgaWYgKHJiX3Jlc3BvbmRfdG8oc2Vl ZCwgcmJfaW50ZXJuKCJyZWFkIikpKQorCWVudHJvcHlfcG9vbCA9IHNlZWQ7CisgICAgZWxzZXsK KwlyYW5kX2luaXQoc2VlZCk7CisJZW50cm9weV9wb29sID0gUW5pbDsKICAgICB9Ci0gICAgb2xk ID0gcmFuZF9pbml0KHNlZWQpOwogCiAgICAgcmV0dXJuIG9sZDsKIH0KQEAgLTQzMiw5ICs0Mzgs MjYgQEAKIHJiX2ZfcmFuZChpbnQgYXJnYywgVkFMVUUgKmFyZ3YsIFZBTFVFIG9iaikKIHsKICAg ICBWQUxVRSB2bWF4OworICAgIFZBTFVFIHNlZWQ7CiAgICAgbG9uZyB2YWwsIG1heDsKIAogICAg IHJiX3NjYW5fYXJncyhhcmdjLCBhcmd2LCAiMDEiLCAmdm1heCk7CisKKyAgICBpZiAoUlRFU1Qo ZW50cm9weV9wb29sKSl7CisJc2VlZCA9IHJiX2Z1bmNhbGwoZW50cm9weV9wb29sLCByYl9pbnRl cm4oInJlYWQiKSwgMSwgSU5UMkZJWCg0KSk7CisKKwlpZiAoUlRFU1Qoc2VlZCkpeworCSAgICBz ZWVkID0gcmJfZnVuY2FsbChzZWVkLCByYl9pbnRlcm4oInVucGFjayIpLCAxLCByYl9zdHJfbmV3 MigiTCIpKTsKKwkgICAgc2VlZCA9IHJiX2FyeV9lbnRyeShzZWVkLCAwKTsKKwl9CisKKwlpZiAo UlRFU1Qoc2VlZCkpCisJICAgIHJhbmRfaW5pdChzZWVkKTsKKwllbHNlCisJICAgIGVudHJvcHlf cG9vbCA9IFFuaWw7CisgICAgfQorCisKICAgICBzd2l0Y2ggKFRZUEUodm1heCkpIHsKICAgICAg IGNhc2UgVF9GTE9BVDoKIAlpZiAoUkZMT0FUKHZtYXgpLT52YWx1ZSA8PSBMT05HX01BWCAmJiBS RkxPQVQodm1heCktPnZhbHVlID49IExPTkdfTUlOKSB7Cg== ------=_Part_33286_15847929.1163260874404--