diff options
Diffstat (limited to 'ext/openssl/ossl_rand.c')
-rw-r--r-- | ext/openssl/ossl_rand.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/ext/openssl/ossl_rand.c b/ext/openssl/ossl_rand.c index 3b6eaf3f47..c22a7357b0 100644 --- a/ext/openssl/ossl_rand.c +++ b/ext/openssl/ossl_rand.c @@ -27,6 +27,12 @@ VALUE eRandomError; /* * Private */ + +/* + * call-seq: + * seed(str) -> str + * + */ static VALUE ossl_rand_seed(VALUE self, VALUE str) { @@ -38,6 +44,20 @@ ossl_rand_seed(VALUE self, VALUE str) /* * call-seq: + * add(str, entropy) -> self + * + */ +static VALUE +ossl_rand_add(VALUE self, VALUE str, VALUE entropy) +{ + StringValue(str); + RAND_add(RSTRING_PTR(str), RSTRING_LEN(str), NUM2DBL(entropy)); + + return self; +} + +/* + * call-seq: * load_random_file(filename) -> true * */ @@ -166,6 +186,7 @@ Init_ossl_rand() eRandomError = rb_define_class_under(mRandom, "RandomError", eOSSLError); DEFMETH(mRandom, "seed", ossl_rand_seed, 1); + DEFMETH(mRandom, "random_add", ossl_rand_add, 2); DEFMETH(mRandom, "load_random_file", ossl_rand_load_file, 1); DEFMETH(mRandom, "write_random_file", ossl_rand_write_file, 1); DEFMETH(mRandom, "random_bytes", ossl_rand_bytes, 1); |