diff options
author | Michal Rokos <m.rokos@sh.cvut.cz> | 2002-02-06 13:35:51 +0000 |
---|---|---|
committer | Michal Rokos <m.rokos@sh.cvut.cz> | 2002-02-06 13:35:51 +0000 |
commit | 2e5c51bb92e24bf8c97cc2210bcd610ae7bfd2b0 (patch) | |
tree | fdb060d5654ffbf4b2417c89ee81d79504fe9509 /ossl_rand.c | |
parent | e781373eab3282c392e3f5dbd990a59378843bc6 (diff) | |
download | ruby-openssl-history-2e5c51bb92e24bf8c97cc2210bcd610ae7bfd2b0.tar.gz |
* Dropped Random class
* Added Random module
* Added egd interface to Random module
Diffstat (limited to 'ossl_rand.c')
-rw-r--r-- | ossl_rand.c | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/ossl_rand.c b/ossl_rand.c index 60b9af4..3e6da45 100644 --- a/ossl_rand.c +++ b/ossl_rand.c @@ -81,6 +81,28 @@ ossl_rand_bytes(VALUE self, VALUE len) return str; } +static VALUE +ossl_rand_egd(VALUE self, VALUE filename) +{ + Check_SafeStr(filename); + if(!RAND_egd(RSTRING(filename)->ptr)) + rb_raise(eRandomError, "%s", ossl_error()); + + return Qtrue; +} + +static VALUE +ossl_rand_egd_bytes(VALUE self, VALUE filename, VALUE len) +{ + Check_SafeStr(filename); + Check_Type(len, T_FIXNUM); + + if (!RAND_egd_bytes(RSTRING(filename)->ptr, FIX2INT(len))) + rb_raise(eRandomError, "%s", ossl_error()); + + return Qtrue; +} + /* * INIT */ @@ -90,14 +112,10 @@ Init_ossl_rand(VALUE module) rb_define_method(module, "seed", ossl_rand_seed, 1); rb_define_method(module, "load_random_file", ossl_rand_load_file, 1); rb_define_method(module, "write_random_file", ossl_rand_write_file, 1); - - eRandomError = rb_define_class_under(module, "RandomError", rb_eStandardError); - - cRandom = rb_define_class_under(module, "Random", rb_cObject); + rb_define_method(module, "random_bytes", ossl_rand_bytes, 1); + rb_define_method(module, "egd", ossl_rand_egd, 1); + rb_define_method(module, "egd_bytes", ossl_rand_egd_bytes, 2); - rb_define_method(cRandom, "seed", ossl_rand_seed, 1); - rb_define_method(cRandom, "load_random_file", ossl_rand_load_file, 1); - rb_define_method(cRandom, "write_random_file", ossl_rand_write_file, 1); - rb_define_method(cRandom, "random_bytes", ossl_rand_bytes, 1); + eRandomError = rb_define_class_under(module, "RandomError", rb_eStandardError); } |