jruby-openssl 0.11.0-java → 0.12.1-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +20 -0
  3. data/Mavenfile +21 -26
  4. data/README.md +3 -0
  5. data/Rakefile +21 -35
  6. data/lib/jopenssl/load.rb +0 -14
  7. data/lib/jopenssl/version.rb +1 -1
  8. data/lib/jopenssl.jar +0 -0
  9. data/lib/openssl/bn.rb +40 -9
  10. data/lib/openssl/buffering.rb +478 -9
  11. data/lib/openssl/cipher.rb +67 -9
  12. data/lib/openssl/config.rb +496 -12
  13. data/lib/openssl/digest.rb +73 -9
  14. data/lib/openssl/hmac.rb +13 -0
  15. data/lib/openssl/marshal.rb +30 -0
  16. data/lib/openssl/pkcs5.rb +3 -3
  17. data/lib/openssl/pkey.rb +42 -5
  18. data/lib/openssl/ssl.rb +543 -9
  19. data/lib/openssl/x509.rb +369 -9
  20. data/lib/openssl.rb +43 -1
  21. data/pom.xml +35 -127
  22. metadata +8 -42
  23. data/lib/jopenssl19/openssl/bn.rb +0 -29
  24. data/lib/jopenssl19/openssl/buffering.rb +0 -449
  25. data/lib/jopenssl19/openssl/cipher.rb +0 -28
  26. data/lib/jopenssl19/openssl/config.rb +0 -472
  27. data/lib/jopenssl19/openssl/digest.rb +0 -32
  28. data/lib/jopenssl19/openssl/ssl-internal.rb +0 -223
  29. data/lib/jopenssl19/openssl/ssl.rb +0 -2
  30. data/lib/jopenssl19/openssl/x509-internal.rb +0 -115
  31. data/lib/jopenssl19/openssl/x509.rb +0 -2
  32. data/lib/jopenssl19/openssl.rb +0 -22
  33. data/lib/jopenssl21/openssl/bn.rb +0 -28
  34. data/lib/jopenssl21/openssl/buffering.rb +0 -1
  35. data/lib/jopenssl21/openssl/cipher.rb +0 -1
  36. data/lib/jopenssl21/openssl/config.rb +0 -1
  37. data/lib/jopenssl21/openssl/digest.rb +0 -1
  38. data/lib/jopenssl21/openssl/ssl.rb +0 -1
  39. data/lib/jopenssl21/openssl/x509.rb +0 -119
  40. data/lib/jopenssl21/openssl.rb +0 -22
  41. data/lib/jopenssl22/openssl/bn.rb +0 -39
  42. data/lib/jopenssl22/openssl/buffering.rb +0 -456
  43. data/lib/jopenssl22/openssl/cipher.rb +0 -28
  44. data/lib/jopenssl22/openssl/config.rb +0 -313
  45. data/lib/jopenssl22/openssl/digest.rb +0 -54
  46. data/lib/jopenssl22/openssl/ssl.rb +0 -330
  47. data/lib/jopenssl22/openssl/x509.rb +0 -139
  48. data/lib/jopenssl22/openssl.rb +0 -22
  49. data/lib/jopenssl23/openssl/bn.rb +0 -38
  50. data/lib/jopenssl23/openssl/buffering.rb +0 -455
  51. data/lib/jopenssl23/openssl/cipher.rb +0 -25
  52. data/lib/jopenssl23/openssl/config.rb +0 -474
  53. data/lib/jopenssl23/openssl/digest.rb +0 -43
  54. data/lib/jopenssl23/openssl/pkey.rb +0 -25
  55. data/lib/jopenssl23/openssl/ssl.rb +0 -508
  56. data/lib/jopenssl23/openssl/x509.rb +0 -208
  57. data/lib/jopenssl23/openssl.rb +0 -19
  58. data/lib/openssl/ssl-internal.rb +0 -5
  59. data/lib/openssl/x509-internal.rb +0 -5
@@ -1,449 +0,0 @@
1
- =begin
2
- = $RCSfile$ -- Buffering mix-in module.
3
-
4
- = Info
5
- 'OpenSSL for Ruby 2' project
6
- Copyright (C) 2001 GOTOU YUUZOU <gotoyuzo@notwork.org>
7
- All rights reserved.
8
-
9
- = Licence
10
- This program is licenced under the same licence as Ruby.
11
- (See the file 'LICENCE'.)
12
-
13
- = Version
14
- $Id$
15
- =end
16
-
17
- ##
18
- # OpenSSL IO buffering mix-in module.
19
- #
20
- # This module allows an OpenSSL::SSL::SSLSocket to behave like an IO.
21
-
22
- module OpenSSL::Buffering
23
- include Enumerable
24
-
25
- ##
26
- # The "sync mode" of the SSLSocket.
27
- #
28
- # See IO#sync for full details.
29
-
30
- attr_accessor :sync
31
-
32
- ##
33
- # Default size to read from or write to the SSLSocket for buffer operations.
34
-
35
- BLOCK_SIZE = 1024*16
36
-
37
- def initialize(*args)
38
- @eof = false
39
- @rbuffer = ""
40
- @sync = @io.sync
41
- end
42
-
43
- #
44
- # for reading.
45
- #
46
- private
47
-
48
- ##
49
- # Fills the buffer from the underlying SSLSocket
50
-
51
- def fill_rbuff
52
- begin
53
- @rbuffer << self.sysread(BLOCK_SIZE)
54
- rescue Errno::EAGAIN
55
- retry
56
- rescue EOFError
57
- @eof = true
58
- end
59
- end
60
-
61
- ##
62
- # Consumes +size+ bytes from the buffer
63
-
64
- def consume_rbuff(size=nil)
65
- if @rbuffer.empty?
66
- nil
67
- else
68
- size = @rbuffer.size unless size
69
- ret = @rbuffer[0, size]
70
- @rbuffer[0, size] = ""
71
- ret
72
- end
73
- end
74
-
75
- public
76
-
77
- ##
78
- # Reads +size+ bytes from the stream. If +buf+ is provided it must
79
- # reference a string which will receive the data.
80
- #
81
- # See IO#read for full details.
82
-
83
- def read(size=nil, buf=nil)
84
- if size == 0
85
- if buf
86
- buf.clear
87
- return buf
88
- else
89
- return ""
90
- end
91
- end
92
- until @eof
93
- break if size && size <= @rbuffer.size
94
- fill_rbuff
95
- end
96
- ret = consume_rbuff(size) || ""
97
- if buf
98
- buf.replace(ret)
99
- ret = buf
100
- end
101
- (size && ret.empty?) ? nil : ret
102
- end
103
-
104
- ##
105
- # Reads at most +maxlen+ bytes from the stream. If +buf+ is provided it
106
- # must reference a string which will receive the data.
107
- #
108
- # See IO#readpartial for full details.
109
-
110
- def readpartial(maxlen, buf=nil)
111
- if maxlen == 0
112
- if buf
113
- buf.clear
114
- return buf
115
- else
116
- return ""
117
- end
118
- end
119
- if @rbuffer.empty?
120
- begin
121
- return sysread(maxlen, buf)
122
- rescue Errno::EAGAIN
123
- retry
124
- end
125
- end
126
- ret = consume_rbuff(maxlen)
127
- if buf
128
- buf.replace(ret)
129
- ret = buf
130
- end
131
- raise EOFError if ret.empty?
132
- ret
133
- end
134
-
135
- ##
136
- # Reads at most +maxlen+ bytes in the non-blocking manner.
137
- #
138
- # When no data can be read without blocking it raises
139
- # OpenSSL::SSL::SSLError extended by IO::WaitReadable or IO::WaitWritable.
140
- #
141
- # IO::WaitReadable means SSL needs to read internally so read_nonblock
142
- # should be called again when the underlying IO is readable.
143
- #
144
- # IO::WaitWritable means SSL needs to write internally so read_nonblock
145
- # should be called again after the underlying IO is writable.
146
- #
147
- # OpenSSL::Buffering#read_nonblock needs two rescue clause as follows:
148
- #
149
- # # emulates blocking read (readpartial).
150
- # begin
151
- # result = ssl.read_nonblock(maxlen)
152
- # rescue IO::WaitReadable
153
- # IO.select([io])
154
- # retry
155
- # rescue IO::WaitWritable
156
- # IO.select(nil, [io])
157
- # retry
158
- # end
159
- #
160
- # Note that one reason that read_nonblock writes to the underlying IO is
161
- # when the peer requests a new TLS/SSL handshake. See openssl the FAQ for
162
- # more details. http://www.openssl.org/support/faq.html
163
-
164
- def read_nonblock(maxlen, buf=nil)
165
- if maxlen == 0
166
- if buf
167
- buf.clear
168
- return buf
169
- else
170
- return ""
171
- end
172
- end
173
- if @rbuffer.empty?
174
- return sysread_nonblock(maxlen, buf)
175
- end
176
- ret = consume_rbuff(maxlen)
177
- if buf
178
- buf.replace(ret)
179
- ret = buf
180
- end
181
- raise EOFError if ret.empty?
182
- ret
183
- end
184
-
185
- ##
186
- # Reads the next "line+ from the stream. Lines are separated by +eol+. If
187
- # +limit+ is provided the result will not be longer than the given number of
188
- # bytes.
189
- #
190
- # +eol+ may be a String or Regexp.
191
- #
192
- # Unlike IO#gets the line read will not be assigned to +$_+.
193
- #
194
- # Unlike IO#gets the separator must be provided if a limit is provided.
195
-
196
- def gets(eol=$/, limit=nil)
197
- idx = @rbuffer.index(eol)
198
- until @eof
199
- break if idx
200
- fill_rbuff
201
- idx = @rbuffer.index(eol)
202
- end
203
- if eol.is_a?(Regexp)
204
- size = idx ? idx+$&.size : nil
205
- else
206
- size = idx ? idx+eol.size : nil
207
- end
208
- if limit and limit >= 0
209
- size = [size, limit].min
210
- end
211
- consume_rbuff(size)
212
- end
213
-
214
- ##
215
- # Executes the block for every line in the stream where lines are separated
216
- # by +eol+.
217
- #
218
- # See also #gets
219
-
220
- def each(eol=$/)
221
- while line = self.gets(eol)
222
- yield line
223
- end
224
- end
225
- alias each_line each
226
-
227
- ##
228
- # Reads lines from the stream which are separated by +eol+.
229
- #
230
- # See also #gets
231
-
232
- def readlines(eol=$/)
233
- ary = []
234
- while line = self.gets(eol)
235
- ary << line
236
- end
237
- ary
238
- end
239
-
240
- ##
241
- # Reads a line from the stream which is separated by +eol+.
242
- #
243
- # Raises EOFError if at end of file.
244
-
245
- def readline(eol=$/)
246
- raise EOFError if eof?
247
- gets(eol)
248
- end
249
-
250
- ##
251
- # Reads one character from the stream. Returns nil if called at end of
252
- # file.
253
-
254
- def getc
255
- read(1)
256
- end
257
-
258
- ##
259
- # Calls the given block once for each byte in the stream.
260
-
261
- def each_byte # :yields: byte
262
- while c = getc
263
- yield(c.ord)
264
- end
265
- end
266
-
267
- ##
268
- # Reads a one-character string from the stream. Raises an EOFError at end
269
- # of file.
270
-
271
- def readchar
272
- raise EOFError if eof?
273
- getc
274
- end
275
-
276
- ##
277
- # Pushes character +c+ back onto the stream such that a subsequent buffered
278
- # character read will return it.
279
- #
280
- # Unlike IO#getc multiple bytes may be pushed back onto the stream.
281
- #
282
- # Has no effect on unbuffered reads (such as #sysread).
283
-
284
- def ungetc(c)
285
- @rbuffer[0,0] = c.chr
286
- end
287
-
288
- ##
289
- # Returns true if the stream is at file which means there is no more data to
290
- # be read.
291
-
292
- def eof?
293
- fill_rbuff if !@eof && @rbuffer.empty?
294
- @eof && @rbuffer.empty?
295
- end
296
- alias eof eof?
297
-
298
- #
299
- # for writing.
300
- #
301
- private
302
-
303
- ##
304
- # Writes +s+ to the buffer. When the buffer is full or #sync is true the
305
- # buffer is flushed to the underlying socket.
306
-
307
- def do_write(s)
308
- @wbuffer = "" unless defined? @wbuffer
309
- @wbuffer << s
310
- @wbuffer.force_encoding(Encoding::BINARY)
311
- @sync ||= false
312
- if @sync or @wbuffer.size > BLOCK_SIZE or idx = @wbuffer.rindex($/)
313
- remain = idx ? idx + $/.size : @wbuffer.length
314
- nwritten = 0
315
- while remain > 0
316
- str = @wbuffer[nwritten,remain]
317
- begin
318
- nwrote = syswrite(str)
319
- rescue Errno::EAGAIN
320
- retry
321
- end
322
- remain -= nwrote
323
- nwritten += nwrote
324
- end
325
- @wbuffer[0,nwritten] = ""
326
- end
327
- end
328
-
329
- public
330
-
331
- ##
332
- # Writes +s+ to the stream. If the argument is not a string it will be
333
- # converted using String#to_s. Returns the number of bytes written.
334
-
335
- def write(s)
336
- do_write(s)
337
- s.bytesize
338
- end
339
-
340
- ##
341
- # Writes +str+ in the non-blocking manner.
342
- #
343
- # If there is buffered data, it is flushed first. This may block.
344
- #
345
- # write_nonblock returns number of bytes written to the SSL connection.
346
- #
347
- # When no data can be written without blocking it raises
348
- # OpenSSL::SSL::SSLError extended by IO::WaitReadable or IO::WaitWritable.
349
- #
350
- # IO::WaitReadable means SSL needs to read internally so write_nonblock
351
- # should be called again after the underlying IO is readable.
352
- #
353
- # IO::WaitWritable means SSL needs to write internally so write_nonblock
354
- # should be called again after underlying IO is writable.
355
- #
356
- # So OpenSSL::Buffering#write_nonblock needs two rescue clause as follows.
357
- #
358
- # # emulates blocking write.
359
- # begin
360
- # result = ssl.write_nonblock(str)
361
- # rescue IO::WaitReadable
362
- # IO.select([io])
363
- # retry
364
- # rescue IO::WaitWritable
365
- # IO.select(nil, [io])
366
- # retry
367
- # end
368
- #
369
- # Note that one reason that write_nonblock reads from the underlying IO
370
- # is when the peer requests a new TLS/SSL handshake. See the openssl FAQ
371
- # for more details. http://www.openssl.org/support/faq.html
372
-
373
- def write_nonblock(s)
374
- flush
375
- syswrite_nonblock(s)
376
- end
377
-
378
- ##
379
- # Writes +s+ to the stream. +s+ will be converted to a String using
380
- # String#to_s.
381
-
382
- def << (s)
383
- do_write(s)
384
- self
385
- end
386
-
387
- ##
388
- # Writes +args+ to the stream along with a record separator.
389
- #
390
- # See IO#puts for full details.
391
-
392
- def puts(*args)
393
- s = ""
394
- if args.empty?
395
- s << "\n"
396
- end
397
- args.each{|arg|
398
- s << arg.to_s
399
- if $/ && /\n\z/ !~ s
400
- s << "\n"
401
- end
402
- }
403
- do_write(s)
404
- nil
405
- end
406
-
407
- ##
408
- # Writes +args+ to the stream.
409
- #
410
- # See IO#print for full details.
411
-
412
- def print(*args)
413
- s = ""
414
- args.each{ |arg| s << arg.to_s }
415
- do_write(s)
416
- nil
417
- end
418
-
419
- ##
420
- # Formats and writes to the stream converting parameters under control of
421
- # the format string.
422
- #
423
- # See Kernel#sprintf for format string details.
424
-
425
- def printf(s, *args)
426
- do_write(s % args)
427
- nil
428
- end
429
-
430
- ##
431
- # Flushes buffered data to the SSLSocket.
432
-
433
- def flush
434
- osync = @sync
435
- @sync = true
436
- do_write ""
437
- return self
438
- ensure
439
- @sync = osync
440
- end
441
-
442
- ##
443
- # Closes the SSLSocket and flushes any unwritten data.
444
-
445
- def close
446
- flush rescue nil
447
- sysclose
448
- end
449
- end
@@ -1,28 +0,0 @@
1
- #--
2
- #
3
- # $RCSfile$
4
- #
5
- # = Ruby-space predefined Cipher subclasses
6
- #
7
- # = Info
8
- # 'OpenSSL for Ruby 2' project
9
- # Copyright (C) 2002 Michal Rokos <m.rokos@sh.cvut.cz>
10
- # All rights reserved.
11
- #
12
- # = Licence
13
- # This program is licenced under the same licence as Ruby.
14
- # (See the file 'LICENCE'.)
15
- #
16
- # = Version
17
- # $Id$
18
- #
19
- #++
20
-
21
- module OpenSSL
22
- class Cipher
23
- # This class is only provided for backwards compatibility. Use OpenSSL::Cipher in the future.
24
- class Cipher < Cipher
25
- # add warning
26
- end
27
- end # Cipher
28
- end # OpenSSL