aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Rokos <m.rokos@sh.cvut.cz>2002-06-05 10:18:29 +0000
committerMichal Rokos <m.rokos@sh.cvut.cz>2002-06-05 10:18:29 +0000
commit7ad7aa4ecf8b0c5e49a5944cddbacf9e7f691797 (patch)
treeee6279587c44fb5c6694fc93bd608e8b3d3746b3
parentae4a70a9fe6f6c310dcf904c594f0dad0d337f36 (diff)
downloadruby-openssl-history-7ad7aa4ecf8b0c5e49a5944cddbacf9e7f691797.tar.gz
Rand ported & cleaned
-rw-r--r--ChangeLog4
-rw-r--r--ossl.c3
-rw-r--r--ossl.h9
-rw-r--r--ossl_rand.c50
-rw-r--r--ossl_rand.h20
5 files changed, 48 insertions, 38 deletions
diff --git a/ChangeLog b/ChangeLog
index 16c19bb..be5865f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/ossl.c b/ossl.c
index 0559b79..4ed7ef2 100644
--- a/ossl.c
+++ b/ossl.c
@@ -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();
}
diff --git a/ossl.h b/ossl.h
index d1cd668..b68b447 100644
--- a/ossl.h
+++ b/ossl.h
@@ -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_ */
+