diff options
author | Michal Rokos <m.rokos@sh.cvut.cz> | 2002-06-05 10:18:29 +0000 |
---|---|---|
committer | Michal Rokos <m.rokos@sh.cvut.cz> | 2002-06-05 10:18:29 +0000 |
commit | 7ad7aa4ecf8b0c5e49a5944cddbacf9e7f691797 (patch) | |
tree | ee6279587c44fb5c6694fc93bd608e8b3d3746b3 | |
parent | ae4a70a9fe6f6c310dcf904c594f0dad0d337f36 (diff) | |
download | ruby-openssl-history-7ad7aa4ecf8b0c5e49a5944cddbacf9e7f691797.tar.gz |
Rand ported & cleaned
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | ossl.c | 3 | ||||
-rw-r--r-- | ossl.h | 9 | ||||
-rw-r--r-- | ossl_rand.c | 50 | ||||
-rw-r--r-- | ossl_rand.h | 20 |
5 files changed, 48 insertions, 38 deletions
@@ -3,6 +3,10 @@ ChangeLog for ### CHANGE LOG ### +Wed, 5 Jun 2002 12:17:18 +0200 -- Michal Rokos <m.rokos@sh.cvut.cz> + * rand.h: NEW (bits from ossl.h) + * rand.c: port & cleanup + Wed, 5 Jun 2002 11:56:53 +0200 -- Michal Rokos <m.rokos@sh.cvut.cz> * pkcs7.h: NEW (bits from ossl.h) * pkcs7.c: cleanup & port to Ruby 1.8 @@ -158,7 +158,6 @@ Init_openssl() */ mOSSL = rb_define_module("OpenSSL"); mPKey = rb_define_module_under(mOSSL, "PKey"); - mRandom = rb_define_module_under(mOSSL, "Random"); mSSL = rb_define_module_under(mOSSL, "SSL"); /* @@ -184,7 +183,7 @@ Init_openssl() Init_ossl_ns_spki(); Init_ossl_pkcs7(); Init_ossl_pkey(mPKey); - Init_ossl_rand(mRandom); + Init_ossl_rand(); Init_ossl_ssl(mSSL); Init_ossl_x509(); } @@ -56,7 +56,6 @@ extern "C" { */ extern VALUE mOSSL; extern VALUE mPKey; -extern VALUE mRandom; extern VALUE mSSL; /* @@ -67,7 +66,6 @@ VALUE eOSSLError; /* * Classes */ -extern VALUE eRandomError; extern VALUE cSSLSocket; extern VALUE eSSLError; /* PKey */ @@ -127,11 +125,6 @@ int string2hex(char *, int, char **, int *); #endif /* OSSL_DEBUG */ /* - * RAND - module methods only - */ -void Init_ossl_rand(VALUE); - -/* * PKey */ VALUE ossl_pkey_new(EVP_PKEY *); @@ -185,7 +178,9 @@ void Init_ossl_ssl(VALUE); /* * TODO #include "ossl_pkey.h" + */ #include "ossl_rand.h" +/* #include "ossl_ssl.h" */ #include "ossl_version.h" diff --git a/ossl_rand.c b/ossl_rand.c index f5fbf9f..22a119a 100644 --- a/ossl_rand.c +++ b/ossl_rand.c @@ -29,7 +29,7 @@ VALUE eRandomError; static VALUE ossl_rand_seed(VALUE self, VALUE str) { - str = rb_obj_as_string(str); + StringValue(str); RAND_seed(RSTRING(str)->ptr, RSTRING(str)->len); return str; @@ -38,26 +38,22 @@ ossl_rand_seed(VALUE self, VALUE str) static VALUE ossl_rand_load_file(VALUE self, VALUE filename) { - filename = rb_str_to_str(filename); - Check_SafeStr(filename); + SafeStringValue(filename); - if(!RAND_load_file(RSTRING(filename)->ptr, -1)) { + if(!RAND_load_file(StringValuePtr(filename), -1)) { OSSL_Raise(eRandomError, ""); } - return Qtrue; } static VALUE ossl_rand_write_file(VALUE self, VALUE filename) { - filename = rb_str_to_str(filename); - Check_SafeStr(filename); + SafeStringValue(filename); - if (RAND_write_file(RSTRING(filename)->ptr) == -1) { + if (RAND_write_file(StringValuePtr(filename)) == -1) { OSSL_Raise(eRandomError, ""); } - return Qtrue; } @@ -67,17 +63,13 @@ ossl_rand_bytes(VALUE self, VALUE len) unsigned char *buffer = NULL; VALUE str; - Check_Type(len, T_FIXNUM); - - if (!(buffer = OPENSSL_malloc(FIX2INT(len)+1))) { + if (!(buffer = OPENSSL_malloc(FIX2INT(len) + 1))) { OSSL_Raise(eRandomError, ""); } - if (!RAND_bytes(buffer, FIX2INT(len))) { OPENSSL_free(buffer); OSSL_Raise(eRandomError, ""); } - str = rb_str_new(buffer, FIX2INT(len)); OPENSSL_free(buffer); @@ -87,24 +79,22 @@ ossl_rand_bytes(VALUE self, VALUE len) static VALUE ossl_rand_egd(VALUE self, VALUE filename) { - Check_SafeStr(filename); - if(!RAND_egd(RSTRING(filename)->ptr)) { + SafeStringValue(filename); + + if(!RAND_egd(StringValuePtr(filename))) { OSSL_Raise(eRandomError, ""); } - return Qtrue; } static VALUE ossl_rand_egd_bytes(VALUE self, VALUE filename, VALUE len) { - Check_SafeStr(filename); - Check_Type(len, T_FIXNUM); + SafeStringValue(filename); - if (!RAND_egd_bytes(RSTRING(filename)->ptr, FIX2INT(len))) { + if (!RAND_egd_bytes(StringValuePtr(filename), FIX2INT(len))) { OSSL_Raise(eRandomError, ""); } - return Qtrue; } @@ -112,15 +102,17 @@ ossl_rand_egd_bytes(VALUE self, VALUE filename, VALUE len) * INIT */ void -Init_ossl_rand(VALUE module) +Init_ossl_rand() { - 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); - 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); + mRandom = rb_define_module_under(mOSSL, "Random"); + + eRandomError = rb_define_class_under(mRandom, "RandomError", eOSSLError); - eRandomError = rb_define_class_under(module, "RandomError", eOSSLError); + rb_define_method(mRandom, "seed", ossl_rand_seed, 1); + rb_define_method(mRandom, "load_random_file", ossl_rand_load_file, 1); + rb_define_method(mRandom, "write_random_file", ossl_rand_write_file, 1); + rb_define_method(mRandom, "random_bytes", ossl_rand_bytes, 1); + rb_define_method(mRandom, "egd", ossl_rand_egd, 1); + rb_define_method(mRandom, "egd_bytes", ossl_rand_egd_bytes, 2); } diff --git a/ossl_rand.h b/ossl_rand.h new file mode 100644 index 0000000..ce2ae0d --- /dev/null +++ b/ossl_rand.h @@ -0,0 +1,20 @@ +/* + * $Id$ + * 'OpenSSL for Ruby' project + * Copyright (C) 2001-2002 Michal Rokos <m.rokos@sh.cvut.cz> + * All rights reserved. + */ +/* + * This program is licenced under the same licence as Ruby. + * (See the file 'LICENCE'.) + */ +#if !defined(_OSSL_RAND_H_) +#define _OSSL_RAND_H_ + +extern VALUE mRandom; +extern VALUE eRandomError; + +void Init_ossl_rand(void); + +#endif /* _OSSL_RAND_H_ */ + |