~ubuntu-branches/ubuntu/intrepid/ruby1.9/intrepid-updates

« back to all changes in this revision

Viewing changes to ext/openssl/ossl_rand.c

  • Committer: Bazaar Package Importer
  • Author(s): akira yamada
  • Date: 2007-05-21 14:00:19 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20070521140019-ui4zd0v80duktssk
Tags: 1.9.0+20070521-1
new upstream snapshot. (2006-07-21)  (Closes: #414856, #388344)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 * $Id: ossl_rand.c,v 1.2 2003/09/17 09:05:02 gotoyuzo Exp $
 
2
 * $Id: ossl_rand.c 12128 2007-03-29 17:29:03Z technorama $
3
3
 * 'OpenSSL for Ruby' project
4
4
 * Copyright (C) 2001-2002  Michal Rokos <m.rokos@sh.cvut.cz>
5
5
 * All rights reserved.
31
31
ossl_rand_seed(VALUE self, VALUE str)
32
32
{
33
33
    StringValue(str);
34
 
    RAND_seed(RSTRING(str)->ptr, RSTRING(str)->len);
 
34
    RAND_seed(RSTRING_PTR(str), RSTRING_LEN(str));
35
35
 
36
36
    return str;
37
37
}
38
38
 
 
39
/*
 
40
 *  call-seq:
 
41
 *     load_random_file(filename) -> true
 
42
 *
 
43
 */
39
44
static VALUE
40
45
ossl_rand_load_file(VALUE self, VALUE filename)
41
46
{
42
47
    SafeStringValue(filename);
43
48
        
44
 
    if(!RAND_load_file(RSTRING(filename)->ptr, -1)) {
 
49
    if(!RAND_load_file(RSTRING_PTR(filename), -1)) {
45
50
        ossl_raise(eRandomError, NULL);
46
51
    }
47
52
    return Qtrue;
48
53
}
49
54
 
 
55
/*
 
56
 *  call-seq:
 
57
 *     write_random_file(filename) -> true
 
58
 *
 
59
 */
50
60
static VALUE
51
61
ossl_rand_write_file(VALUE self, VALUE filename)
52
62
{
53
63
    SafeStringValue(filename);
54
 
    if (RAND_write_file(RSTRING(filename)->ptr) == -1) {
 
64
    if (RAND_write_file(RSTRING_PTR(filename)) == -1) {
55
65
        ossl_raise(eRandomError, NULL);
56
66
    }
57
67
    return Qtrue;
58
68
}
59
69
 
 
70
/*
 
71
 *  call-seq:
 
72
 *     random_bytes(length) -> aString
 
73
 *
 
74
 */
60
75
static VALUE
61
76
ossl_rand_bytes(VALUE self, VALUE len)
62
77
{
63
78
    VALUE str;
64
79
        
65
80
    str = rb_str_new(0, FIX2INT(len));
66
 
    if (!RAND_bytes(RSTRING(str)->ptr, FIX2INT(len))) {
 
81
    if (!RAND_bytes(RSTRING_PTR(str), FIX2INT(len))) {
67
82
        ossl_raise(eRandomError, NULL);
68
83
    }
69
84
 
70
85
    return str;
71
86
}
72
87
 
 
88
/*
 
89
 *  call-seq:
 
90
 *     pseudo_bytes(length) -> aString
 
91
 *
 
92
 */
73
93
static VALUE
74
94
ossl_rand_pseudo_bytes(VALUE self, VALUE len)
75
95
{
76
96
    VALUE str;
77
97
 
78
98
    str = rb_str_new(0, FIX2INT(len));
79
 
    if (!RAND_pseudo_bytes(RSTRING(str)->ptr, FIX2INT(len))) {
 
99
    if (!RAND_pseudo_bytes(RSTRING_PTR(str), FIX2INT(len))) {
80
100
        ossl_raise(eRandomError, NULL);
81
101
    }
82
102
 
83
103
    return str;
84
104
}
85
105
 
 
106
/*
 
107
 *  call-seq:
 
108
 *     egd(filename) -> true
 
109
 *
 
110
 */
86
111
static VALUE
87
112
ossl_rand_egd(VALUE self, VALUE filename)
88
113
{
89
114
    SafeStringValue(filename);
90
115
        
91
 
    if(!RAND_egd(RSTRING(filename)->ptr)) {
 
116
    if(!RAND_egd(RSTRING_PTR(filename))) {
92
117
        ossl_raise(eRandomError, NULL);
93
118
    }
94
119
    return Qtrue;
95
120
}
96
121
 
 
122
/*
 
123
 *  call-seq:
 
124
 *     egd_bytes(filename, length) -> true
 
125
 *
 
126
 */
97
127
static VALUE
98
128
ossl_rand_egd_bytes(VALUE self, VALUE filename, VALUE len)
99
129
{
100
130
    SafeStringValue(filename);
101
131
 
102
 
    if (!RAND_egd_bytes(RSTRING(filename)->ptr, FIX2INT(len))) {
 
132
    if (!RAND_egd_bytes(RSTRING_PTR(filename), FIX2INT(len))) {
103
133
        ossl_raise(eRandomError, NULL);
104
134
    }
105
135
    return Qtrue;
115
145
void
116
146
Init_ossl_rand()
117
147
{
 
148
#if 0 /* let rdoc know about mOSSL */
 
149
    mOSSL = rb_define_module("OpenSSL");
 
150
#endif
 
151
 
118
152
    mRandom = rb_define_module_under(mOSSL, "Random");
119
153
        
120
154
    eRandomError = rb_define_class_under(mRandom, "RandomError", eOSSLError);