Граф коммитов

217 Коммитов

Автор SHA1 Сообщение Дата
technorama 8b95ee24de * ext/openssl/ossl_bn.c: More documentation.
* ext/openssl/lib/ossl_{pkey,pkey_ec}.[ch]: Add elliptic curves.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12139 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-04-03 07:02:44 +00:00
usa 9a41f064fa * ext/openssl/ruby_missing.h: need to include version.h to check
RUBY_VERSION_CODE.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12136 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-04-03 00:37:13 +00:00
technorama a05e89ca65 * ext/openssl/ossl_{ssl.[ch],ssl_session.c}},
ext/openssl/lib/openssl/lib/openssl/ssl.rb:
  New SSL::Session class.  Add session cb's, getter/setters,
  config, and statistics methods.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12134 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-04-02 22:10:12 +00:00
technorama 3930d3b36b * ext/openssl/{ossl.[ch],ossl_pkey.c} Add documentation.
* ext/openssl/ossl_hmac.c Add reset method.

* ext/openssl/ossl_cipher.c (Cipher#update) Take additional buffer argument.

* ext/openssl/{ossl_bio.c,ossl_ssl.c,ruby_missing.h} compatibility with 1.8.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12133 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-04-02 19:00:23 +00:00
technorama 41fa6056ba * ext/openssl/ossl_{bn,cipher,digest,hmac,rand,pkey_{dh,dsa,rsa}}.c: Add Documentation for various methods.
* ext/openssl/lib/openssl/cipher.rb: Ditto

* ext/openssl/ossl_bn.c: add lshift! and rshift! methods.

* ext/openssl/ossl_digest.c: GetDigestPtr() also accept a string.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12128 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-03-29 17:29:03 +00:00
knu 024a7fd7a4 * ext/openssl/ossl_asn1.c (Init_ossl_asn1): Let rdoc know about
externally defined modules; submitted by Technorama
  Ltd. <oss-ruby AT technorama.net> in [ruby-bugs:PR#4704].

* ext/openssl/ossl_bn.c (Init_ossl_bn): Ditto.

* ext/openssl/ossl_cipher.c (Init_ossl_cipher): Ditto.

* ext/openssl/ossl_digest.c (Init_ossl_digest): Ditto.

* ext/openssl/ossl_hmac.c (Init_ossl_hmac): Ditto.

* ext/openssl/ossl_pkey.c (Init_ossl_pkey): Ditto.

* ext/openssl/ossl_pkey_dh.c (Init_ossl_dh): Ditto.

* ext/openssl/ossl_pkey_dsa.c (Init_ossl_dsa): Ditto.

* ext/openssl/ossl_pkey_rsa.c (Init_ossl_rsa): Ditto.

* ext/openssl/ossl_rand.c (Init_ossl_rand): Ditto.

* ext/openssl/ossl_ssl.c (Init_ossl_ssl): Ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12040 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-03-12 02:01:19 +00:00
usa cebb4b5ca0 * ext/openssl/extconf.rb: no need to check unistd.h and sys/time.h.
they are already checked at configure.
  reported by KOBAYASHI Yasuhiro [ruby-list:43225]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11930 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-02-28 09:32:56 +00:00
nobu 5b10c170e5 * file.c, gc.c, io.c, ruby.h, rubyio.h, win32/win32.h (rb_io_t):
renamed from OpenFile.

* ext/dl/cptr.c, ext/io/wait/wait.c, ext/openssl/ossl.h,
  ext/openssl/ossl_bio.c, ext/openssl/ossl_ssl.c, ext/pty/pty.c,
  ext/readline/readline.c, ext/socket/socket.c: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11869 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-02-24 10:30:50 +00:00
gotoyuzo 74909a2d68 * ext/openssl/ossl_asn1.c (Init_ossl_asn1):
OpenSSL::ASN1::ASN1Data#value,#tag,#tag_class and 
  OpenSSL::ASN1::BitString#unused_bits should be public.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11470 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-01-04 08:05:08 +00:00
gotoyuzo 38093bc129 * ext/openssl/ossl_ocsp.c: OpenSSL::OCSP::OSCPError should be
subclass of OpenSSL::OpenSSLError. [ruby-dev:29980]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11320 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-12-01 22:11:51 +00:00
gotoyuzo 270ba8d81e * ext/openssl/ossl_pkcs7.c (ossl_pkcs7_verify): should clear error.
(fix http://bugs.debian.org/394336)

* ext/openssl/ossl_ns_spki.c (ossl_spki_initialize): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11229 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-10-26 12:06:39 +00:00
matz 2156870525 * ruby.h (struct RArray): embed small arrays.
(RARRAY_LEN): defined for accessing array members.
  (RARRAY_PTR): ditto.

* array.c: use RARRAY_LEN and RARRAY_PTR.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10833 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-09-02 14:42:08 +00:00
usa 974037a542 * eval.c (search_required): use RSTRING_PTR and RSTRING_STR.
* object.c (nil_plus): ditto.

* ext/dl/cptr.c (rb_dlptr_s_to_ptr): ditto.

* ext/openssl/ossl_x509ext.c (ossl_x509extfactory_create_ext): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10813 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-08-31 12:10:08 +00:00
matz 25c50cd193 * ruby.h (struct RString): embed small strings.
(RSTRING_LEN): defined for accessing string members.
  (RSTRING_PTR): ditto.

* string.c: use RSTRING_LEN and RSTRING_PTR.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10809 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-08-31 10:30:33 +00:00
matz b0283eed43 * ext/openssl/ossl.h: move <ruby.h> inclusion point to shut up
Solaris compiler.  [ruby-core:08114]

* time.c (time_to_s): use +0900 style timezone string for local time.
  [ruby-dev:29143]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10621 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-07-27 07:48:04 +00:00
akr 934847fbeb add extconf.h to .cvsignore.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10375 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-06-24 01:15:08 +00:00
matz 9b383bd6cf * sprintf.c (rb_str_format): allow %c to print one character
string (e.g. ?x).

* lib/tempfile.rb (Tempfile::make_tmpname): put dot between
  basename and pid.  [ruby-talk:196272]
* parse.y (do_block): remove -> style block.

* parse.y (parser_yylex): remove tLAMBDA_ARG.

* eval.c (rb_call0): binding for the return event hook should have
  consistent scope.  [ruby-core:07928]

* eval.c (proc_invoke): return behavior should depend whether it
  is surrounded by a lambda or a mere block.

* eval.c (formal_assign): handles post splat arguments.

* eval.c (rb_call0): ditto.

* st.c (strhash): use FNV-1a hash.

* parse.y (parser_yylex): removed experimental ';;' terminator.

* eval.c (rb_node_arity): should be aware of post splat arguments.

* eval.c (rb_proc_arity): ditto.

* parse.y (f_args): syntax rule enhanced to support arguments
  after the splat.

* parse.y (block_param): ditto for block parameters.

* parse.y (f_post_arg): mandatory formal arguments after the splat
  argument.

* parse.y (new_args_gen): generate nodes for mandatory formal
  arguments after the splat argument.

* eval.c (rb_eval): dispatch mandatory formal arguments after the
  splat argument.

* parse.y (args): allow more than one splat in the argument list.

* parse.y (method_call): allow aref [] to accept all kind of
  method argument, including assocs, splat, and block argument.

* eval.c (SETUP_ARGS0): prepare block argument as well.

* lib/mathn.rb (Integer): remove Integer#gcd2. [ruby-core:07931]

* eval.c (error_line): print receivers true/false/nil specially.

* eval.c (rb_proc_yield): handles parameters in yield semantics.

* eval.c (nil_yield): gives LocalJumpError to denote no block
  error.

* io.c (rb_io_getc): now takes one-character string.

* string.c (rb_str_hash): use FNV-1a hash from Fowler/Noll/Vo
  hashing algorithm.

* string.c (rb_str_aref): str[0] now returns 1 character string,
  instead of a fixnum.	[Ruby2]

* parse.y (parser_yylex): ?c now returns 1 character string,
  instead of a fixnum.	[Ruby2]

* string.c (rb_str_aset): no longer support fixnum insertion.

* eval.c (umethod_bind): should not update original class.
  [ruby-dev:28636]

* eval.c (ev_const_get): should support constant access from
  within instance_eval().  [ruby-dev:28327]

* time.c (time_timeval): should round for usec floating
  number.  [ruby-core:07896]

* time.c (time_add): ditto.

* dir.c (sys_warning): should not call a vararg function
  rb_sys_warning() indirectly.	[ruby-core:07886]

* numeric.c (flo_divmod): the first element of Float#divmod should
  be an integer. [ruby-dev:28589]

* test/ruby/test_float.rb: add tests for divmod, div, modulo and remainder.

* re.c (rb_reg_initialize): should not allow modifying literal
  regexps.  frozen check moved from rb_reg_initialize_m as well.

* re.c (rb_reg_initialize): should not modify untainted objects in
  safe levels higher than 3.

* re.c (rb_memcmp): type change from char* to const void*.

* dir.c (dir_close): should not close untainted dir stream.

* dir.c (GetDIR): add tainted/frozen check for each dir operation.

* lib/rdoc/parsers/parse_rb.rb (RDoc::RubyParser::parse_symbol_arg):
  typo fixed.  a patch from Florian Gross <florg at florg.net>.

* eval.c (EXEC_EVENT_HOOK): trace_func may remove itself from
  event_hooks.	no guarantee for arbitrary hook deletion.
  [ruby-dev:28632]

* util.c (ruby_strtod): differ addition to minimize error.
  [ruby-dev:28619]

* util.c (ruby_strtod): should not raise ERANGE when the input
  string does not have any digits.  [ruby-dev:28629]

* eval.c (proc_invoke): should restore old ruby_frame->block.
  thanks to ts <decoux at moulon.inra.fr>.  [ruby-core:07833]
  also fix [ruby-dev:28614] as well.

* signal.c (trap): sig should be less then NSIG.  Coverity found
  this bug.  a patch from Kevin Tew <tewk at tewk.com>.
  [ruby-core:07823]

* math.c (math_log2): add new method inspired by
  [ruby-talk:191237].

* math.c (math_log): add optional base argument to Math::log().
  [ruby-talk:191308]

* ext/syck/emitter.c (syck_scan_scalar): avoid accessing
  uninitialized array element.	a patch from Pat Eyler
  <rubypate at gmail.com>.  [ruby-core:07809]

* array.c (rb_ary_fill): initialize local variables first.  a
  patch from Pat Eyler <rubypate at gmail.com>.	 [ruby-core:07810]

* ext/syck/yaml2byte.c (syck_yaml2byte_handler): need to free
  type_tag.  a patch from Pat Eyler <rubypate at gmail.com>.
  [ruby-core:07808]

* ext/socket/socket.c (make_hostent_internal): accept ai_family
  check from Sam Roberts <sroberts at uniserve.com>.
  [ruby-core:07691]

* util.c (ruby_strtod): should not cut off 18 digits for no
  reason.  [ruby-core:07796]

* array.c (rb_ary_fill): internalize local variable "beg" to
  pacify Coverity.  [ruby-core:07770]

* pack.c (pack_unpack): now supports CRLF newlines.  a patch from
  <tommy at tmtm.org>.	[ruby-dev:28601]

* applied code clean-up patch from Stefan Huehner
  <stefan at huehner.org>.  [ruby-core:07764]

* lib/jcode.rb (String::tr_s): should have translated non
  squeezing character sequence (i.e. a character) as well.  thanks
  to Hiroshi Ichikawa <gimite at gimite.ddo.jp> [ruby-list:42090]

* ext/socket/socket.c: document update patch from Sam Roberts
  <sroberts at uniserve.com>.  [ruby-core:07701]

* lib/mathn.rb (Integer): need not to remove gcd2.  a patch from
  NARUSE, Yui <naruse at airemix.com>.	[ruby-dev:28570]

* parse.y (arg): too much NEW_LIST()

* eval.c (SETUP_ARGS0): remove unnecessary access to nd_alen.

* eval.c (rb_eval): use ARGSCAT for NODE_OP_ASGN1.
  [ruby-dev:28585]

* parse.y (arg): use NODE_ARGSCAT for placeholder.

* lib/getoptlong.rb (GetoptLong::get): RDoc update patch from
  mathew <meta at pobox.com>.  [ruby-core:07738]

* variable.c (rb_const_set): raise error when no target klass is
  supplied.  [ruby-dev:28582]

* prec.c (prec_prec_f): documentation patch from
  <gerardo.santana at gmail.com>.  [ruby-core:07689]

* bignum.c (rb_big_pow): second operand may be too big even if
  it's a Fixnum.  [ruby-talk:187984]

* README.EXT: update symbol description.  [ruby-talk:188104]

* COPYING: explicitly note GPLv2.  [ruby-talk:187922]

* parse.y: remove some obsolete syntax rules (unparenthesized
  method calls in argument list).

* eval.c (rb_call0): insecure calling should be checked for non
  NODE_SCOPE method invocations too.

* eval.c (rb_alias): should preserve the current safe level as
  well as method definition.

* process.c (rb_f_sleep): remove RDoc description about SIGALRM
  which is not valid on the current implementation. [ruby-dev:28464]

 Thu Mar 23 21:40:47 2006  K.Kosako  <sndgk393 AT ybb.ne.jp>

* eval.c (method_missing): should support argument splat in
  super.  a bug in combination of super, splat and
  method_missing.  [ruby-talk:185438]

* configure.in: Solaris SunPro compiler -rapth patch from
  <kuwa at labs.fujitsu.com>.  [ruby-dev:28443]

* configure.in: remove enable_rpath=no for Solaris.
  [ruby-dev:28440]

* ext/win32ole/win32ole.c (ole_val2olevariantdata): change behavior
  of converting  OLE Variant object with VT_ARRAY|VT_UI1 and Ruby
  String object.

* ruby.1: a clarification patch from David Lutterkort
  <dlutter at redhat.com>.  [ruby-core:7508]

* lib/rdoc/ri/ri_paths.rb (RI::Paths): adding paths from rubygems
  directories.	a patch from Eric Hodel <drbrain at segment7.net>.
  [ruby-core:07423]

* eval.c (rb_clear_cache_by_class): clearing wrong cache.

* ext/extmk.rb: use :remove_destination to install extension libraries
  to avoid SEGV.  [ruby-dev:28417]

* eval.c (rb_thread_fd_writable): should not re-schedule output
  from KILLED thread (must be error printing).

* array.c (rb_ary_flatten_bang): allow specifying recursion
  level.  [ruby-talk:182170]

* array.c (rb_ary_flatten): ditto.

* gc.c (add_heap): a heap_slots may overflow.  a patch from Stefan
  Weil <weil at mail.berlios.de>.

* eval.c (rb_call): use separate cache for fcall/vcall
  invocation.

* eval.c (rb_eval): NODE_FCALL, NODE_VCALL can call local
  functions.

* eval.c (rb_mod_local): a new method to specify newly added
  visibility "local".

* eval.c (search_method): search for local methods which are
  visible only from the current class.

* class.c (rb_class_local_methods): a method to list local methods.

* object.c (Init_Object): add BasicObject class as a top level
  BlankSlate class.

* ruby.h (SYM2ID): should not cast to signed long.
  [ruby-core:07414]

* class.c (rb_include_module): allow module duplication.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10235 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-06-09 21:20:17 +00:00
gotoyuzo d995f01f67 * ext/openssl/extconf.rb: use create_header.
* ext/openssl/ossl.h, ext/openssl/openssl_missing.h:
  include RUBY_EXTCONF_H.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10209 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-06-02 10:03:16 +00:00
gotoyuzo cffba3b471 * ext/openssl/lib/openssl/ssl.rb
(OpenSSL::SSL::SocketForwarder#setsockopt,getsockopt): typo fixed.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10183 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-05-23 18:14:05 +00:00
gotoyuzo 1fbcb92ec8 * ext/openssl/ossl_cipher.c (add_cipher_name_to_ary): should return
value. [ruby-dev:28627]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10145 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-05-11 09:31:27 +00:00
gotoyuzo 55ef220fe0 * ext/openssl/extconf.rb: add check for OBJ_NAME_do_all_sorted.
* ext/openssl/ossl_cipher.c (ossl_s_ciphers): new method
  OpenSSL::Cipher.ciphers. it returns all the cipher names.

* ext/openssl/ossl_cipher.c (ossl_cipher_init): refine warning message.

* ext/openssl/lib/openssl/cipher.rb: reimplement without eval() and
  add constants AES128, AES192, AES256. [ruby-dev:28610]

* ext/openssl/lib/openssl/digest.rb: reimplement without eval().

* test/openssl/test_cipher.rb, test_digest: fix about reimplemented               features.

* sample/openssl/cipher.rb: rewrite all.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10137 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-05-08 00:12:00 +00:00
gotoyuzo 968eb23418 * ext/openssl/ossl_asn1.c (ossl_asn1_decode0): should initialize
flag. [ruby-core:07785]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10117 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-04-29 13:52:15 +00:00
gotoyuzo 1b3ca9aa3a * ext/openssl/ossl_ssl.c, ext/openssl/ossl_nsspki.c: should use
"rb_str_new(0, 0)" to make empty string.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10034 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-03-15 07:42:00 +00:00
gotoyuzo a6c936c15b * ext/openssl/ossl.h (OSSL_Debug): should not use __func__.
[ruby-dev:28339]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9960 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-02-19 16:00:04 +00:00
matz 5675cdbd41 * eval.c: unify ruby_class (for method definition) and ruby_cbase
(for constant reference).

* eval.c (rb_call0): use TMP_ALLOC() instead of allocating
  a temporary array object.

* eval.c (eval): need not to protect $SAFE value.
  [ruby-core:07177]

* error.c (Init_Exception): change NameError to direct subclass of
  Exception so that default rescue do not handle it silently.

* struct.c (rb_struct_select): update RDoc description.
  [ruby-core:7254]

* numeric.c (int_upto): return an enumerator if no block is
  attached to the method.

* numeric.c (int_downto): ditto.

* numeric.c (int_dotimes): ditto.

* enum.c (enum_first): new method Enumerable#first to take first n
  element from an enumerable.

* enum.c (enum_group_by): new method Enumerable#group_by that
  groups enumerable values according to their block values.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9880 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-02-03 09:15:42 +00:00
gotoyuzo 6f640b29cc * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLSocket#post_connection_chech):
treat wildcard character in commonName. [ruby-dev:28121]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9741 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-12-26 23:26:21 +00:00
gotoyuzo 67673f6b47 * ext/openssl/extconf.rb: check for X509V3_EXT_nconf_nid.
* ext/openssl/ossl_x509ext.c (MakeX509ExtFactory): should use
  OPENSSL_malloc to allocate X509V3_CTX.

* ext/openssl/ossl_x509ext.c (ossl_x509extfactory_create_ext): use
  X509V3_EXT_nconf_nid to avoid SEGV (and to build extensions which
  values are placed in separate section).

* test/openssl/test_x509ext.rb: new file.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9592 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-11-22 22:29:13 +00:00
usa f4413f1487 * ext/openssl/ossl.h: need to include winsock2.h before including
windows.h by some openssl headers.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9513 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-11-07 07:25:25 +00:00
gotoyuzo 79bf99f7b2 * ext/openssl/extconf.rb: should check ERR_peek_last_error().
[ruby-dev:27597]

* ext/openssl/ossl.c (ossl_raise): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9488 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-11-01 01:52:13 +00:00
gotoyuzo ab509c0edb * ext/openssl/ossl_cipher.c (ossl_cipher_update): input data must
not be empty. [ruby-talk:161220]

* test/openssl/test_cipher.rb: add test for Cipher#update("").


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9485 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-10-30 20:50:48 +00:00
gotoyuzo ff2b8b31c2 * ext/openssl/ossl.c (Init_openssl): should call OpenSSL_add_ssl_algorithms().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9381 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-10-12 03:56:04 +00:00
akr 0517b43c5b banish some warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9292 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-09-24 00:17:43 +00:00
gotoyuzo 246f5cfe67 * ext/openssl/ossl_pkey.h, ossl_pkey_rsa.c, ossl_pkey_dsa.c:
an instance variable "private" is added to OpenSSL::PKey class.
  this ivar is a flag that shows whether there is a private key
  in the instance.

* ext/openssl/ossl_engine.c: (ossl_engine_load_privkey): set private
  key flag.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9218 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-09-18 22:56:11 +00:00
gotoyuzo c4b83bb93f * ext/openssl/ossl_engine.c (ossl_engine_s_by_id):
OpenSSL::Engine.by_id calls given block before calling ENGINE_init
  (block parameter is the return value of this method itself).
  this functionality is useful to load dynamic shared engines.

        require "openssl"
        pkcs11 = OpenSSL::Engine.by_id("dynamic"){|e|
          e.ctrl_cmd("SO_PATH", "/usr/lib/opensc/engine_pkcs11.so")
          e.ctrl_cmd("LIST_ADD", "1")
          e.ctrl_cmd("LOAD")
        }
        pkcs11.ctrl_cmd("PIN", "secret")
        key = pkcs11.load_private_key

* ext/openssl/ossl_engine.c (ossl_engine_ctrl_cmd): new method
  OpenSSL::Engine#ctrl_cmd. it wraps ENGINE_ctrl_cmd_string.

* ext/openssl/ossl_engine.c (ossl_engine_get_cmds): new method
  OpenSSL::Engine#cmds. it returms engine command definitions.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9095 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-09-07 08:29:47 +00:00
gotoyuzo 9147e519ba * ext/openssl/ossl_asn1.c (asn1str_to_str): new function.
* ext/openssl/ossl_pkcs7.c: new class OpenSSL::PKCS7::RecipientInfo.
  this class wraps PKCS7_RECIP_INFO struct.

* ext/openssl/ossl_pkcs7.c: OpenSSL::PKCS7::Signer is renamed to
  OpenSSL::PKCS7::SignerInfo. ("Signer" remains as an alias of
  SignerInfo.)

* test/openssl/test_pkcs7.rb: new file.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9094 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-09-07 07:40:55 +00:00
gotoyuzo d2847d92cd * ext/openssl/openssl/lib/openssl/buffering.rb (Buffering#do_write):
should clear data from the buffer which already been output.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9077 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-09-04 22:03:24 +00:00
gotoyuzo bfb1ed598c * ext/openssl/lib/digest.rb: added SHA224, SHA256, SHA384 and SHA512.
these features are enabled if this library is compiled with
  OpenSSL 0.9.8 or later.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-08-22 21:12:03 +00:00
gotoyuzo 8a94b1740a * ext/openssl/ossl_ns_spki.c (ossl_spki_initialize): try to decode
the argument as a string.

* ext/openssl/ossl_ns_pki.c (ossl_spki_to_der): new method.

* ext/openssl/ossl_x509store.c (ossl_x509store_initialize): should
  set @time to avoid warning.

* ext/openssl/ossl_x509store.c (ossl_x509store_set_default_paths,
  X509_STORE_add_cert, X509_STORE_add_crl): should raise error if
  wrapped functions fails.

* ext/openssl/ossl_ssl.c (ossl_sslctx_set_ciphers): fix error message.

* ext/openssl/ossl_x509req.c (ossl_x509req_set_attributes): get rid
  of unused variable.

* test/openssl/test_ns_spki.rb: add new file.

* test/openssl/test_x509store.rb: add test for error.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@9021 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-08-22 20:47:55 +00:00
gotoyuzo ec46711668 * ext/openssl/ossl.c (ossl_raise): should use ERR_peek_last_error
to get last error on the current thread. And should report
  if errors are on the stack while OpenSSL.debug is true.

* ext/openssl/ossl.c (ossl_get_errors): new method for debugging
  this library.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8944 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-08-07 20:21:40 +00:00
gotoyuzo 09e5e42d3e * ext/openssl/openssl_missin.c: include <openssl/engine.h> before
<openssl/x509_vfy.h> to avoid compilation error of mswin32.
  suggested by NAKAMURA Usaku.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8837 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-07-26 03:59:39 +00:00
gotoyuzo b502b16eb6 * ext/openssl/ossl_engine.c (ossl_engine_s_load): should check
OPENSSL_NO_STATIC_ENGINE.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8828 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-07-23 07:50:17 +00:00
gotoyuzo 5cea368b61 * ext/openssl/openssl_missing.c, ext/openssl/ossl.h,
ext/openssl/ossl_asn1.c, ext/openssl/ossl_bio.c,
  ext/openssl/ossl_pkcs12.h, ext/openssl/ossl_x509req.c: avoid
  compiler warnings. suggested by Mical Rokos.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8645 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-06-19 16:29:17 +00:00
gotoyuzo 313799a022 * ext/openssl/ossl_x509store.c (ossl_x509stctx_set_time): should
not set internal flag directry.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8532 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-05-27 20:20:29 +00:00
gotoyuzo 7aea792d3b * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SSLServer#intialize):
should initialize session id context. [ruby-core:4663]

* ext/openssl/ossl_ssl.c (ossl_sslctx_setup): add session id support.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-05-22 10:18:41 +00:00
gotoyuzo 385d24afa5 * ext/openssl/extconf.rb: check for OPENSSL_cleanse.
* ext/openssl/openssl_missing.h: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8335 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-04-15 19:16:18 +00:00
gotoyuzo 0a57886cca * ext/openssl/ossl_engine.c (ossl_engine_s_load): should return
value. [ruby-dev:25971]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8228 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-03-31 05:09:24 +00:00
gotoyuzo fc3e402dde * ext/openssl/ossl_engine.c (ossl_engine_s_load): should not raise
error even if the specified engine could not be loaded. (Dynamic
  engines don't have fixed name to load.)


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8223 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-03-30 21:01:04 +00:00
gotoyuzo 7ff4c7c70a * ext/openssl/ossl_ssl.c (ossl_tmp_dh_callback): should get DH
parameter from the current SSL object.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8139 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-03-12 17:38:37 +00:00
gotoyuzo 0d23cc25c2 * ext/openssl/ossl_pkey_dh.c (ossl_create_dh): fix typo.
patch from IWATSUKI Hiroyuki. [ruby-dev:25867]

* ext/openssl/ossl_ssl.c (ossl_tmp_dh_callback): ditto.
  (ossl_call_tmp_dh_callback): ditto


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8137 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-03-12 17:15:29 +00:00
gotoyuzo 5505449793 * ext/openssl/ossl_ssl.c: OpenSSL::SSL::SSLContexts suports callbacks:
- SSLContext#client_cert_cb is a Proc. it is called when a client
    certificate is requested by a server and no certificate was yet
    set for the SSLContext. it must return an Array which includes
    OpenSSL::X509::Certificate and OpenSSL::PKey::RSA/DSA objects.
  - SSLContext#tmp_dh_callback is called in key exchange with DH
    algorithm. it must return an OpenSSL::PKey::DH object.

* ext/openssl/ossl_ssl.c:
  (ossl_sslctx_set_ciphers): ignore the argument if it's nil.
  (ossl_start_ssl, ossl_ssl_write): call rb_sys_fail if errno isn't 0.
  [ruby-dev:25831]

* ext/openssl/ossl_pkey.c
  (GetPrivPKeyPtr, ossl_pkey_sign): should call rb_funcall first.
  (DupPrivPKeyPtr): new function.

* ext/openssl/ossl_pkey_dh.c: add default DH parameters.

* ext/openssl/ossl_pkey.h: ditto.

* ext/openssl/lib/openssl/cipher.rb: fix typo. [ruby-dev:24285]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8129 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-03-09 10:45:42 +00:00
usa 39d35c1130 * ext/openssl/ossl_ssl.c (ssl_get_error): typo.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8101 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-03-07 09:30:06 +00:00
usa 82849c97dd * ext/openssl/ossl_ssl.c (ossl_start_ssl, ossl_ssl_read,
ossl_ssl_write): need to set errno on Win32 platform.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8100 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-03-07 07:47:40 +00:00
gotoyuzo 9f19f36ed5 * ext/openssl/lib/openssl/buffering.rb (Buffering#initialize):
should set @eof and @rbuffer.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8099 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-03-07 05:13:54 +00:00
gotoyuzo a9fb0817a1 * ext/openssl/ossl_ssl.c (ossl_start_ssl): should wait for that
the underlying IO become readable or writable if the error was
  SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE. [ruby-dev:25795]

* ext/openssl/ossl_ssl.c (ossl_ssl_read, ossl_ssl_write): ditto.

* ext/openssl/lib/openssl/buffering.rb
  (Buffering#consume_rbuf): pointless eof flag resetting is deleted.
  (Buffering#read): should return an empty string if the specified
  size is zero.
  (Buffering#readpartial): new method.
  (Buffering#readline): fix typo.
  (Buffering#getc): return the first character of string correctly.
  (Buffering#readchar): fix typo.
  (Buffering#eof?): should read again it the input buffer is empty.
  (Buffering#do_write): should rescue Errno::EAGAIN.
  (Buffering#puts): use "\n" as the output field separator.

* ext/openssl/extconf.rb: get rid of GNUmakefile generation.

* text/openssl/test_pair.rb: test for IO like methods.

* test/ruby/ut_eof.rb: test about empty file.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8081 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-03-05 21:36:11 +00:00
matz 70bbad3cfd * array.c: replace rb_protect_inspect() and rb_inspecting_p() by
rb_exec_recursive() in eval.c.

* eval.c (rb_exec_recursive): new function.

* array.c (rb_ary_join): use rb_exec_recursive().

* array.c (rb_ary_inspect, rb_ary_hash): ditto.

* file.c (rb_file_join): ditto.

* hash.c (rb_hash_inspect, rb_hash_to_s, rb_hash_hash): ditto.

* io.c (rb_io_puts): ditto.

* object.c (rb_obj_inspect): ditto

* struct.c (rb_struct_inspect): ditto.

* lib/set.rb (SortedSet::setup): a hack to shut up warning.
  [ruby-talk:132866]

* lib/time.rb (Time::strptime): add new function.  inspired by
  [ruby-talk:132815].

* lib/parsedate.rb (ParseDate::strptime): ditto.

* regparse.c: move st_*_strend() functions from st.c.  fixed some
  potential memory leaks.

* exception error messages updated.  [ruby-core:04497]

* ext/socket/socket.c (Init_socket): add bunch of Socket
  constants.  Patch from Sam Roberts <sroberts@uniserve.com>.
  [ruby-core:04409]

* array.c (rb_ary_s_create): no need for negative argc check.
  [ruby-core:04463]

* array.c (rb_ary_unshift_m): ditto.

* lib/xmlrpc/parser.rb (XMLRPC::FaultException): make it subclass
  of StandardError class, not Exception class.  [ruby-core:04429]

* parse.y (fcall_gen): lvar(arg) will be evaluated as
  lvar.call(arg) when lvar is a defined local variable. [new]

* object.c (rb_class_initialize): call inherited method before
  calling initializing block.

* eval.c (rb_thread_start_1): initialize newly pushed frame.

* lib/open3.rb (Open3::popen3): $? should not be EXIT_FAILURE.
  fixed: [ruby-core:04444]

* eval.c (is_defined): NODE_IASGN is an assignment.

* ext/readline/readline.c (Readline.readline): use rl_outstream
  and rl_instream.  [ruby-dev:25699]

* ext/etc/etc.c (Init_etc): sGroup needs HAVE_ST_GR_PASSWD check
  [ruby-dev:25675]

* misc/ruby-mode.el: [ruby-core:04415]

* lib/rdoc/generators/html_generator.rb: [ruby-core:04412]

* lib/rdoc/generators/ri_generator.rb: ditto.

* struct.c (make_struct): fixed: [ruby-core:04402]

* ext/curses/curses.c (window_color_set): [ruby-core:04393]

* ext/socket/socket.c (Init_socket): SO_REUSEPORT added.
  [ruby-talk:130092]

* object.c: [ruby-doc:818]

* parse.y (open_args): fix too verbose warnings for the space
  before argument parentheses.  [ruby-dev:25492]

* parse.y (parser_yylex): ditto.

* parse.y (parser_yylex): the first expression in the parentheses
  should not be a command.  [ruby-dev:25492]

* lib/irb/context.rb (IRB::Context::initialize): [ruby-core:04330]

* object.c (Init_Object): remove Object#type.  [ruby-core:04335]

* st.c (st_foreach): report success/failure by return value.
  [ruby-Bugs-1396]

* parse.y: forgot to initialize parser struct.  [ruby-dev:25492]

* parse.y (parser_yylex): no tLABEL on EXPR_BEG.
  [ruby-talk:127711]

* document updates - [ruby-core:04296], [ruby-core:04301],
  [ruby-core:04302], [ruby-core:04307]

* dir.c (rb_push_glob): should work for NUL delimited patterns.

* dir.c (rb_glob2): should aware of offset in the pattern.

* string.c (rb_str_new4): should propagate taintedness.

* env.h: rename member names in struct FRAME; last_func -> callee,
  orig_func -> this_func, last_class -> this_class.

* struct.c (rb_struct_set): use original method name, not callee
  name, to retrieve member slot.  [ruby-core:04268]

* time.c (time_strftime): protect from format modification from GC
  finalizers.

* object.c (Init_Object): remove rb_obj_id_obsolete()

* eval.c (rb_mod_define_method): incomplete subclass check.
  [ruby-dev:25464]

* gc.c (rb_data_object_alloc): klass may be NULL.
  [ruby-list:40498]

* bignum.c (rb_big_rand): should return positive random number.
  [ruby-dev:25401]

* bignum.c (rb_big_rand): do not use rb_big_modulo to generate
  random bignums.  [ruby-dev:25396]

* variable.c (rb_autoload): [ruby-dev:25373]

* eval.c (svalue_to_avalue): [ruby-dev:25366]

* string.c (rb_str_justify): [ruby-dev:25367]

* io.c (rb_f_select): [ruby-dev:25312]

* ext/socket/socket.c (sock_s_getservbyport): [ruby-talk:124072]

* struct.c (make_struct): [ruby-dev:25249]

* dir.c (dir_open_dir): new function.  [ruby-dev:25242]

* io.c (rb_f_open): add type check for return value from to_open.

* lib/pstore.rb (PStore#transaction): Use the empty content when a
  file is not found.  [ruby-dev:24561]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8068 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-03-04 06:47:45 +00:00
gotoyuzo 2048950e16 * ext/openssl/lib/openssl/ssl.rb (OpenSSL::Nonblock#initialize):
native win32 platform doesn't have F_GETFL.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7977 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-02-16 06:14:25 +00:00
gotoyuzo a579d8bf68 * ext/openssl/ossl_ssl.c (ossl_ssl_read, ossl_ssl_write): should
call rb_sys_fail instead of rasing SSLError if SSL_ERROR_SYSCALL
  occured.

* ext/openssl/lib/openssl/buffering.rb (Buffering#fill_rbuff):
  should rescue Errno::EAGAIN.

* ext/openssl/lib/openssl/buffering.rb (Buffering#each): fix typo.
  suggested by Brian Ollenberger.

* ext/openssl/lib/openssl/ssl.rb: set non-blocking flag to the
  underlying IO.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7974 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-02-15 17:50:47 +00:00
gotoyuzo 1883e41c1b * ext/openssl/lib/openssl/ssl.rb
(OpenSSL::SSL::SSLSocket#post_connection_check): new method.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7970 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-02-14 04:14:39 +00:00
gotoyuzo 6bfc1f3900 * ext/openss/ossl_x509store.c (ossl_x509store_set_default_paths):
new method OpenSSL::X509::Store#set_default_paths.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7945 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-02-11 08:42:57 +00:00
gotoyuzo 8d8c9f6cd1 * ext/openssl/ossl_ocsp.c (ossl_ocspreq_to_der): should call
GetOCSPReq at first.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7810 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2005-01-22 20:28:02 +00:00
gotoyuzo 72f2ca1117 * ext/openssl/ossl_ns_spki.c (ossl_spki_set_challenge): should call
StringValue before GetSPKI. fixed: [ruby-dev:25359].


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7697 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-12-31 19:24:11 +00:00
gotoyuzo 8768030bb6 * ext/openssl/ossl_x509name.c (Init_ossl_x509name): should use
rb_hash_new to get exactly a Hash. fix [ruby-dev:25325].


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7666 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-12-27 07:55:56 +00:00
gotoyuzo 8180c1bd50 * ext/openssl/ossl_asn1.c (ossl_asn1_decode_all): use rb_str_new4
to avoid SEGV.

* ext/openssl/ossl_asn1.c (ossl_asn1_traverse, ossl_asn1_decode,
  ossl_asn1_decode_all): temporary value should be marked volatile.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7626 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-12-21 13:09:26 +00:00
gotoyuzo 21d42dc45b * ext/openssl/ossl_asn1.c (ossl_asn1_traverse, ossl_asn1_decode):
use rb_str_new4 to avoid SEGV. fix [ruby-dev:25261]

* test/openssl/test_asn1.rb: add tests for OpenSSL::ASN1.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7623 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-12-21 03:44:17 +00:00
gotoyuzo 643dc13211 * lib/net/https.rb: delete descriptions about key_file and cert_file.
fixed: [ruby-dev:25243]

* ext/openssl/lib/net/telnets.rb: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7611 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-12-20 05:46:45 +00:00
gotoyuzo 67f4a393ba * ext/openssl/ossl.c (ossl_raise): refine message format.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7577 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-12-16 09:39:54 +00:00
matz 2edbb9d0f8 * lib/set.rb (Set#==): [ruby-dev:25206]
* ext/openssl/ossl_digest.c (ossl_digest_initialize): [ruby-dev:25198]

* utf8.c (utf8_is_mbc_ambiguous): [ruby-talk:123561]

* utf8.c (utf8_mbc_to_normalize): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7563 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-12-15 06:35:55 +00:00
gotoyuzo 2235b8c36d * ext/openssl/ossl.c (ossl_raise): avoid buffer overrun. [ruby-dev:25187]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7550 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-12-14 05:05:17 +00:00
gotoyuzo 25a637eff5 * ext/openssl/ossl_bio.c (ossl_obj2bio): should not use fptr->f.
[ruby-dev:25101]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7498 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-12-07 18:34:29 +00:00
akr 04f36c2bba * rubyio.h, intern.h, io.c, file.c, process.c, ext/socket/socket.c,
ext/pty/pty.c, ext/io/wait/wait.c, ext/openssl/ossl_ssl.c:
  Use own buffering mechanism instead of stdio.

* io.c, ext/stringio/stringio.c, test/ruby/ut_eof.rb:
  EOF flag removed.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7473 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-12-06 08:40:30 +00:00
gotoyuzo dd92742ce1 * ext/openssl/ossl_pkey_rsa.c (ossl_rsa_public_encrypt,
ossl_rsa_public_decrypt, ossl_rsa_private_encrypt,
  ossl_rsa_private_decrypt): should take an optional argument
  to specify padding mode. [ruby-talk:122539]

* ext/openssl/ossl_pkey_rsa.c (Init_ossl_rsa): add new constants
  PKCS1_PADDING, SSLV23_PADDING, NO_PADDING and PKCS1_OAEP_PADDING
  under OpenSSL::PKey::RSA.

* test/openssl/test_pkey_rsa.rb: new file.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7465 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-12-05 16:36:26 +00:00
eban 49fb289ea1 * MANIFEST, ext/**/MANIFEST: removed.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7170 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-11-01 10:13:52 +00:00
matz 018837b84f * node.h (NODE_TYPESHIFT): allow 4 more bits for line numbers.
[ruby-talk:117841]

* ruby.h (FL_ABLE): nodes are not subject for flag operations.

* io.c (ARGF_FORWARD): should have specified argv explicitly,
  since we no longer have frame->argv saved.  [ruby-dev:24602]

* string.c (RESIZE_CAPA): check string attribute before modifying
  capacity member of string structure.  [ruby-dev:24594]

* ext/zlib/zlib.c (gzreader_gets): use memchr() to to gain
  performance.  [ruby-talk:117701]

* sprintf.c (rb_f_sprintf): raise ArgumentError for extra
  arguments, unless (digit)$ style used.

* io.c (rb_io_fptr_finalize): leave stdin/stdout/stderr open in
  interpreter termination.  [ruby-dev:24579]

* eval.c (frame_free): Guy Decoux solved the leak problem.
  Thanks.  [ruby-core:03549]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7121 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-27 09:29:26 +00:00
gotoyuzo 8c1b803ed4 * ext/openssl/ossl_x509store.c
(ossl_x509stctx_initialize): setup OpenSSL::X509::StoreContext with
  ossl_x509stctx_* functions instead of X509_STORE_CTX_*.
  (ossl_x509store_set_time): add OpenSSL::X509::Store#time=.
  (ossl_x509stctx_set_time): add OpenSSL::X509::StoreContext#time=.

* test/openssl/ossl_x509store.rb: test certificate validity times.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7040 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-10-15 09:16:19 +00:00
gotoyuzo 07f245da37 * ext/openssl/ossl_x509name.c (ossl_x509name_to_s): add optional
second argument to specify the output format (see also
  X509_NAME_print_ex).

* ext/openssl/ossl_x509name.c (ossl_x509name_init): new constants:
  OpenSSL::X509::Name::COMPAT, OpenSSL::X509::Name::RFC2253,
  OpenSSL::X509::ONELINE, OpenSSL::X509::MULTILINE.

* ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name::RFC2253DN):
  new module to provide the parse for RFC2253 DN format.

* ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name.parse_rfc2253):
  new method to parse RFC2253 DN format.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6902 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-09-13 12:35:25 +00:00
gotoyuzo ef5ce7029d * ext/openssl/ossl_x509attr.c (ossl_x509attr_initialize): d2i
functions may replace the pointer indicated by the first argument.

* ext/openssl/ossl_x509ext.c (ossl_x509ext_initialize): ditto.

* ext/openssl/ossl_x509name.c (ossl_x509name_initialize): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6810 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-08-23 23:59:44 +00:00
gotoyuzo 7b505316a4 * ext/openssl/ossl_ssl.c (ossl_ssl_read):
- should return an empty string if specified length to read is 0.
  - should check for pending data and wait for fd before reading.
  - call underlying IO's sysread if SSL session is not started.
  [ruby-dev:24072], [ruby-dev:24075]

* ext/openssl/ossl_ssl.c (ossl_ssl_write):
  - call underlying IO's syswrite if SSL session is not started.

* ext/openssl/ossl_ssl.c (ossl_ssl_pending): new method
  OpenSSL::SSL#pending.

* ext/openssl/lib/openssl/buffering.rb: should not use select.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6806 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-08-22 07:28:45 +00:00
gotoyuzo 1a760a6f76 * ext/openssl/ossl_asn1.c (ossl_asn1cons_to_der): fix type of
argument. [ruby-dev:23891]

* test/openssl/test_x509store.rb: prune tests for CRL checking
  unless X509::V_FLAG_CRL_CHECK is defined.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6626 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-07-14 09:09:36 +00:00
gotoyuzo 7662d794fe * ext/openssl/ossl_cipher.c (ossl_cipher_set_padding): last modify is
rollbacked for future compatibility.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6556 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-07-01 04:50:33 +00:00
gotoyuzo 0dc43217b1 * ext/openssl/ossl_cipher.c (ossl_cipher_encrypt, ossl_cipher_decrypt):
re-implemnt (the arguments for this method is ).

* ext/openssl/ossl_cipher.c (ossl_cipher_pkcs5_keyivgen): new method
  OpenSSL::Cipher::Cipher#pkcs5_keyivgen. it calls EVP_BytesToKey().

* ext/openssl/ossl_cipher.c (ossl_cipher_set_key_length): new method
  OpenSSL::Cipher::Cipher#key_len=.

* ext/openssl/ossl_cipher.c (ossl_cipher_set_padding): the type of
  argument is changed from integer to boolean.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-06-30 15:45:41 +00:00
gotoyuzo 22ab58c03c * ext/openssl/extconf.rb: check for EVP_CIPHER_CTX_copy, ENGINE_add,
EVP_CIPHER_CTX_set_padding, EVP_CipherFinal_ex, EVP_CipherInit_ex,
  EVP_DigestFinal_ex and EVP_DigestInit_ex.

* ext/openssl/openssl_missing.c (EVP_CIPHER_CTX_copy): new function.

* ext/openssl/openssl_missing.h (EVP_DigestInit_ex, EVP_DigestFinal_ex,
  EVP_CipherInit_ex, EVP_CipherFinal_ex, HMAC_Init_ex): new macro for
  OpenSSL 0.9.6.

* ext/openssl/ossl_cipher.c (ossl_cipher_alloc, ossl_cipher_initialize,
  ossl_cipher_copy, ossl_cipher_reset, ossl_cipher_encrypt,
  ossl_cipher_decrypt, ossl_cipher_final, ossl_cipher_set_key,
  ossl_cipher_set_iv): replace all EVP_CipherInit and
  EVP_CipherFinal into EVP_CipherInit_ex and EVP_CipherFinal_ex.
  and EVP_CIPHER_CTX_init should only be called once.

* ext/openssl/ossl_cipher.c (ossl_cipher_set_padding): check for
  EVP_CIPHER_CTX_set_padding.

* ext/openssl/ossl_cipher.c (Init_ossl_cipher): Cipher#<< is deprecated.

* ext/openssl/ossl_digest.c: replace all EVP_DigestInit and
  EVP_DigestFinal into EVP_DigestInit_ex and EVP_DigestFinal_ex.
  and EVP_MD_CTX_init should only be called once.

* ext/openssl/ossl_digest.c (digest_final): should call
  EVP_MD_CTX_cleanup to avoid memory leak.

* ext/openssl/ossl_hmac.c (ossl_hmac_initialize): repalce HMAC_init
  into HMAC_init_ex. and HMAC_CTX_init is moved to ossl_hmac_alloc.

* ext/openssl/ossl_hmac.c (hmac_final): should call
  HMAC_CTX_cleanup to avoid memory leak.

* test/openssl/test_cipher.rb, test/openssl/test_digest.rb,
  test/openssl/test_hmac.rb: new file.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-06-30 10:48:43 +00:00
gotoyuzo 17cb00b6e5 * ext/openssl/ossl_pkey_dh.c (ossl_dh_initialize): should create
empty pkey object if no argument is passed. [ruby-talk:103328]

* ext/openssl/ossl_pkey_dsa.c (ossl_dsa_initialize): ditto.

* ext/openssl/ossl_pkey_rsa.c (ossl_rsa_initialize): ditto.

* ext/openssl/ossl_pkey_dh.c: add new methods: OpenSSL::PKey::DH#p,
  OpenSSL::PKey::DH#p=, OpenSSL::PKey::DH#g, OpenSSL::PKey::DH#g=,
  OpenSSL::PKey::DH#pub_key, OpenSSL::PKey::DH#pub_key=,
  OpenSSL::PKey::DH#priv_key and OpenSSL::PKey::DH#priv_key=.

* ext/openssl/ossl_pkey_dsa.c: add new methods: OpenSSL::PKey::DSA#p,
  OpenSSL::PKey::DSA#p=, OpenSSL::PKey::DSA#q, OpenSSL::PKey::DSA#q=,
  OpenSSL::PKey::DSA#g, OpenSSL::PKey::DSA#g=,
  OpenSSL::PKey::DSA#pub_key, OpenSSL::PKey::DSA#pub_key=,
  OpenSSL::PKey::DSA#priv_key and OpenSSL::PKey::DSA#priv_key=.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6487 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-06-21 16:36:19 +00:00
gotoyuzo fde5c3ff92 * ext/openssl/ossl_ssl.c (ossl_ssl_read): take optional second argument
to specify a string to be written.

* ext/openssl/lib/openssl/buffering.rb (OpenSSL::Buffering#read):
  take optional second argument to specify a string to be written.

* ext/openssl/lib/openssl/buffering.rb (OpenSSL::Buffering#gets):
  refine regexp for end-of-line.

* ext/opnessl/lib/openssl/ssl.rb
  (OpenSSL::SSL::SocketForwarder#listen): fix typo.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6411 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-05-26 18:11:29 +00:00
gotoyuzo 3216cb5839 * ext/openssl/ossl_asn1.c (ossl_i2d_ASN1_TYPE, ossl_ASN1_TYPE_free):
workaround for the versions earlier than OpenSSL-0.9.7.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6399 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-05-24 16:50:59 +00:00
gotoyuzo 10b01eddac * ext/openssl/ossl_x509name.c: attribute value of DC (short name of
domainComponent) should be IA5String.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6295 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-05-12 05:38:20 +00:00
gotoyuzo a70b33bac9 * ext/openssl/ossl_x509name.c (ossl_x509name_init_i): should return a value.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6144 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-04-12 09:53:14 +00:00
matz 919f456de8 * exception message clean-up by Ian Macdonald <ian@caliban.org>.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6044 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-29 07:54:38 +00:00
nobu 8b7dbcf4b7 MANIFEST update.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6003 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-23 05:49:10 +00:00
gotoyuzo 5bf9610130 * ext/openssl/lib/openssl/ssl.rb (OpenSSL::SSL::SocketForwarder):
add do_not_reverse_lookup.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5951 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-15 01:14:51 +00:00
aamine 3eedf9156c * lib/net/http.rb: spin off https code again.
* lib/net/https.rb: new file.
* ext/openssl/lib/net/https.rb: removed.  moved to net/https with modifications.
* ext/openssl/lib/net/protocol.rb: removed.  merged with net/http.
* lib/net/protocol.rb: new class BufferedIO.
* lib/net/protocol.rb: InternetMessageIO < BufferedIO.
* lib/net/protocol.rb: BufferedIO.new takes an IO.
* lib/net/smtp.rb: follow InternetMessageIO's change.
* lib/net/pop.rb: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5908 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-06 17:08:21 +00:00
aamine fc188d3827 * lib/net/http.rb: net/https is merged.
* ext/openssl/lib/net/https.rb: ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5898 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-03-05 17:00:51 +00:00
gotoyuzo 2d0e62faf1 * ext/openssl/ossl_config.c (ossl_config_each): add new method
OpenSSL::Config#each. it iterates with section name, field name
  and value.

* ext/openssl/ossl_config.c (Init_ossl_config): include Enumerable.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5813 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-02-23 18:45:41 +00:00
gotoyuzo 8d881def1a * ext/openssl/ossl_x509name.c (ossl_x509name_add_entry): third
argument become optional.

* ext/openssl/ossl_x509name.c (ossl_x509name_initialize): ditto.

* ext/openssl/ossl_x509name.c (Init_x509name): emailAddress and
  domainComponent should be IA5String.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5549 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-01-25 10:05:26 +00:00
gotoyuzo 5e24c11a28 * ext/openssl/ossl_x509hame.c (ossl_x509name_initialize): change
second argument. it expected to be a Hash not an Integer.

* ext/openssl/ossl_x509name.c (ossl_x509name_add_entry): add new
  function for OpenSSL::X509::Name#add_entry.

* ext/openssl/ossl_x509name.c (Init_ossl_x509name): add constants
  OpenSSL::X509::Name::DEFAULT_OBJECT_TYPE and OBJECT_TYPE_TEMPLATE.

* ext/openssl/lib/openssl/x509.rb (OpenSSL::X509::Name#initialize):
  second argument takes OBJECT_TYPE_TEMPLATE by default.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5544 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-01-24 04:24:06 +00:00
gotoyuzo 91482546b5 * ext/openssl/extconf.rb: should check <openssl/conf_api.h> instead
of OPENSSL_VERSION_NUMBER. [ruby-list:39056]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5515 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-01-20 05:49:14 +00:00
gotoyuzo 0ecdbb65a8 * ext/openssl/extconf.rb: add check for OpenSSL version.
[ruby-list:39054]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-01-19 17:55:18 +00:00
gotoyuzo 54d29aaba9 * ext/openssl/ossl_pkey.c (ossl_pkey_to_der): removed; it returns
public key only.

* ext/openssl/ossl_pkey_dh.c (ossl_dh_to_der): new function for
  OpenSSL::PKey::DH#to_der.

* ext/openssl/ossl_pkey_dsa.c (ossl_dsa_to_der): new function for
  OpenSSL::PKey::DSA#to_der.

* ext/openssl/ossl_pkey_rsa.c (ossl_rsa_to_der): new function for
  OpenSSL::PKey::RSA#to_der.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5417 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-01-08 12:24:22 +00:00
gotoyuzo 932075e82e * ext/openssl/ossl_ssl.c (ossl_ssl_read): should check for error
status by SSL_get_error().

* ext/openssl/ossl_ssl.c (ossl_ssl_write): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5278 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-12-24 07:29:40 +00:00
usa 8e43498222 * ext/openssl/ossl_pkcs12.c (ossl_pkcs12_initialize): first argument
of rb_protect should take an argument of VALUE.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5190 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-12-15 00:30:12 +00:00
gotoyuzo ab2e1c141f * ext/openssl/ossl_pkcs12.[ch]: new files. add OpenSSL::PKCS12.
* ext/openssl/ossl_ossl.[ch]: ditto.

* ext/openssl/MANIFEST: add ossl_pkcs12.[ch].


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5172 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2003-12-11 12:29:08 +00:00