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