Commit graph

80 commits

Author SHA1 Message Date
rhe
c9dc0164b8 import Ruby/OpenSSL 2.0.0.beta.1
* NEWS, {ext,test,sample}/openssl: Import Ruby/OpenSSL 2.0.0.beta.1.
  ext/openssl is now converted into a default gem. The full commit
  history since r55538 can be found at:
  08e1881f56...v2.0.0.beta.1
  [Feature #9612]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56027 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-29 05:47:09 +00:00
rhe
f9843bc4dc openssl: use ASN1_ENUMERATED_to_BN() if needed
* ext/openssl/ossl_asn1.c (asn1integer_to_num): Use
  ASN1_ENUMERATED_to_BN() to convert an ASN1_ENUMERATED to a BN.
  Starting from OpenSSL 1.1.0, ASN1_INTEGER_to_BN() rejects
  non-ASN1_INTEGER objects. The format of INTEGER and ENUMERATED are
  almost identical so they behaved in the same way in OpenSSL <= 1.0.2.
  [ruby-core:75225] [Feature #12324]

* test/openssl/test_asn1.rb (test_decode_enumerated): Test that it
  works.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55344 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-09 12:42:08 +00:00
rhe
c7b583a744 openssl: avoid d2i_ASN1_BOOLEAN()
* ext/openssl/ossl_asn1.c (decode_bool): Do the same thing as
  d2i_ASN1_BOOLEAN() does by ourselves. This function is removed in
  OpenSSL 1.1.0.
  [ruby-core:75225] [Feature #12324]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55288 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-05 16:18:38 +00:00
nobu
2fe605911c ossl_asn1.c: check overflow
* ext/openssl/ossl_asn1.c (ossl_time_split): check overflow and
  reorder for optimization.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55252 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-01 13:39:01 +00:00
rhe
9eca2ced64 openssl: fix the Year 2038 problem
r55219 didn't fix the entire issue. It only fixed the issue on
environment with sizeof(time_t) == 8 && sizeof(long) == 4.

* ext/openssl/extconf.rb: Check existence of ASN1_TIME_adj(). The old
  ASN1_TIME_set() is not Year 2038 ready on sizeof(time_t) == 4
  environment. This function was added in OpenSSL 1.0.0.
  [ruby-core:45552] [Bug #6571]

* ext/openssl/ossl_asn1.c (ossl_time_split): Added. Split the argument
  (Time) into the number of days elapsed since the epoch and the
  remainder seconds to conform to ASN1_TIME_adj().
  (obj_to_asn1utime, obj_to_asn1gtime): Use ossl_time_split() and
  ASN1_*TIME_adj().

* ext/openssl/ossl_asn1.h: Add the function prototype for
  ossl_time_split().

* ext/openssl/ossl_x509.[ch]: Add ossl_x509_time_adjust(). Similarly to
  obj_to_asn1*time(), use X509_time_adj_ex() instead of X509_time_adj().

* ext/openssl/ossl_x509cert.c, ext/openssl/ossl_x509crl.c,
  ext/openssl/ossl_x509revoked.c: Use ossl_x509_time_adjust().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55249 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-01 12:41:15 +00:00
rhe
3333b6b7ad openssl: use NUM2TIMET() to convert Integer to time_t
* ext/openssl/ossl_asn1.c (time_to_time_t): Use NUM2TIMET() instead of
  NUM2LONG(). time_t may be larger than long.
  [ruby-core:45552] [Bug #6571]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55219 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-05-30 13:02:13 +00:00
rhe
cf2792d591 openssl: drop OpenSSL 0.9.6/0.9.7 support
* ext/openssl, test/openssl: Drop OpenSSL < 0.9.8 support.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55162 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-05-25 08:50:03 +00:00
rhe
582fa9cde9 openssl: use StringValueCStr() where NUL-terminated string is expected
* ext/openssl/ossl_asn1.c, ext/openssl/ossl_bn.c,
  ext/openssl/ossl_cipher.c, ext/openssl/ossl_digest.c
  ext/openssl/ossl_engine.c, ext/openssl/ossl_ns_spki.c
  ext/openssl/ossl_pkcs12.c, ext/openssl/ossl_pkcs7.c
  ext/openssl/ossl_pkey.c, ext/openssl/ossl_pkey_ec.c
  ext/openssl/ossl_rand.c, ext/openssl/ossl_ssl.c
  ext/openssl/ossl_x509attr.c, ext/openssl/ossl_x509cert.c
  ext/openssl/ossl_x509ext.c, ext/openssl/ossl_x509store.c: Use
  StringValueCStr() where NUL-terminated string is expected.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55134 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-05-23 11:40:07 +00:00
zzak
0ecc3688ed * ext/openssl/*: Remove svn commit id macros to make sync easier
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51918 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-09-22 16:12:15 +00:00
normal
9fbf488746 openssl: use RB_GC_GUARD instead of volatile
From doc/extension.rdoc:
>
> Using the RB_GC_GUARD macro is preferable to using the "volatile"
> keyword in C.  RB_GC_GUARD has the following advantages:
>
> 1) the intent of the macro use is clear
>
> 2) RB_GC_GUARD only affects its call site, "volatile" generates some
>    extra code every time the variable is used, hurting optimization.
>
> 3) "volatile" implementations may be buggy/inconsistent in some
>    compilers and architectures. RB_GC_GUARD is customizable for broken
>    systems/compilers without those without negatively affecting other
>    systems.

* ext/openssl/ossl_asn1.c (ossl_asn1_traverse, ossl_asn1_decode,
  ossl_asn1_decode_all): use RB_GC_GUARD instead of volatile
  [ruby-core:69371] [Bug #11185]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50646 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-27 01:09:11 +00:00
nobu
bea4ccb2db ossl_asn1.c: [DOC] Fix typo [skip ci]
* ext/openssl/ossl_asn1.c (Init_ossl_asn1): [DOC] Fix typo
  "recieved" to "received".  [Fix GH-913]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50643 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-05-27 00:38:11 +00:00
hsbt
325a50fc57 * ext/openssl/*: use license instead of licence.
[fix GH-876][ci skip] Patch by @davydovanton
* lib/net/https.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-04-20 03:55:09 +00:00
nobu
97f9589c4b ossl_asn1.c: fix doc
* ext/openssl/ossl_asn1.c (ossl_asn1obj_get_oid): [DOC] fix
  notation, an instance method but not a class method.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49681 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-02-21 22:56:06 +00:00
zzak
b0317ee815 [DOC] Backport ruby/openssl@86eb721 [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49678 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-02-21 19:06:17 +00:00
nobu
28b9f11d5a protoize no-arguments functions
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47744 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-09-30 05:25:32 +00:00
nobu
33e1c86f8b openssl: constify
* ext/openssl/ossl_asn1.c (ossl_asn1_info): constify.

* ext/openssl/ossl_pkcs7.c (ossl_pkcs7_sym2typeid): constify and
  remove sentinel as the count is used.

* ext/openssl/ossl_ssl.c (ossl_ssl_method_tab): constify.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47048 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-08-03 15:19:20 +00:00
nobu
e923de6d4a ossl_asn1.c: fix undefined behavior
* ext/openssl/ossl_asn1.c (ossl_asn1_initialize): SYMID on a value
  other than Symbol is an undefined behavior.  fix up r31699.
  [ruby-core:62142] [Bug #9771]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45701 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-04-24 02:53:29 +00:00
nobu
eadaa8ba8b ext: use PRIsVALUE for rb_raise and rb_warn
* ext/bigdecimal/bigdecimal.c (BigDecimal_new): use PRIsVALUE for
  rb_raise() and rb_warn().
* ext/openssl/ossl_cipher.c (ossl_cipher_init): ditto.
* ext/racc/cparse/cparse.c (extract_user_token): ditto.
* ext/syslog/syslog.c (mSyslog_log): ditto.

* ext/openssl/ossl.h (OSSL_Check_Kind, OSSL_Check_Instance): now
  ossl_raise() also accepts PRIsVALUE.
* ext/openssl/ossl_asn1.c (ossl_asn1_default_tag):

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44579 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-01-13 00:57:38 +00:00
a_matsuda
e1db3605fd * ext/win32ole/sample/olegen.rb: Fix typo
* ext/openssl/ossl_asn1.c:  [DOC] Fix typo
* lib/webrick/accesslog.rb:  ditto
* template/yarvarch.ja:  ditto

s/recieve/receive/

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44134 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-12-11 03:58:07 +00:00
nobu
7566c49068 ruby/ruby.h: RB_BLOCK_CALL_FUNC_ARGLIST
* include/ruby/ruby.h (RB_BLOCK_CALL_FUNC_ARGLIST): for declaration
  argument list of rb_block_call_func.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43910 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-29 07:59:14 +00:00
nagachika
18358ad8cd Squashed commit of the following:
commit 6895f38bfc3c0ad6bd212b8f9acc3c71384dfcb7
Author: Chikanaga Tomoyuki <nagachika00@gmail.com>
Date:   Thu Nov 14 00:14:00 2013 +0900

    * ChangeLog: fix a typo at r43666

    * ext/openssl/ossl_asn1.c: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43670 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-13 15:14:59 +00:00
zzak
49a9845405 * ext/openssl/ossl_asn1.c: [DOC] Document parts of
OpenSSL::ASN1::ObjectId included a fix for the class overview, which
  previously showed the documentation for Constructive due to missing
  ObjectId overview. This patch also includes a note for Primative.

  Based on a patch by @vbatts via GH-436
  https://github.com/ruby/ruby/pull/436


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43666 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-11-13 09:06:17 +00:00
drbrain
bdbef403a1 * ext/openssl/ossl_asn1.c (asn1time_to_time): Implement YYMMDDhhmmZ
format for ASN.1 UTCTime.  [ruby-trunk - Bug #8664]
* test/openssl/test_asn1.rb:  Test for the above.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42126 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-07-22 23:44:53 +00:00
nobu
af6c038b23 remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36895 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-09-04 00:57:31 +00:00
emboss
5bef1c9223 * ext/openssl/ossl_asn1.c: raise TypeError when trying to encode nil
values for Primitive instances. 
* test/openssl/test_asn1.rb: Assert consistent behavior when
  encoding nil values: Primitives raise TypeError, Constructives
  raise NoMethodError.
  Fixes [ruby-core:43009][Bug #6102]
-This line, and those below, will be ignored--

M    test/openssl/test_asn1.rb
M    ext/openssl/ossl_asn1.c
M    ChangeLog


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35159 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-03-28 22:53:18 +00:00
naruse
2646c69479 avoid rdoc's warnings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34816 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-25 20:37:12 +00:00
emboss
460c8907c9 * ext/openssl/ossl_asn1.c: Call INT2NUM only once for GeneralString.
Thanks to Mantas Mikulenas for noticing and providing a patch!
  [ruby-core:42358] [Bug #5972]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@34469 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-02-08 01:03:16 +00:00
nobu
dbb03fdc96 * ext/openssl/ossl_asn1.c: get rid of potential overflow.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33763 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-15 13:55:38 +00:00
nobu
413f24d3b0 * whitespace cleanup.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33634 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-11-04 07:19:23 +00:00
emboss
8b7e10879e * ext/openssl/ossl_asn1.c: fix int_ossl_asn1_decode0_cons when being
fed arbitrary string values.
  Clearly distinguish between the cases "universal, infinite and
  not a SEQUENCE or SET" and "universal SEQUENCE or SET, possibly
  infinite". Raise error for universal tags that are not infinite.
* test/openssl/test_asn1.rb: add a test for this.

  Thanks to Hiroshi Yoshida for reporting this bug.
  [Bug #5363] [ruby-dev:44542]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33333 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-25 14:51:20 +00:00
emboss
3a16362371 * ext/openssl/ossl_asn1.c: remove unused variable.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33318 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-09-23 05:21:54 +00:00
kosaki
9c760d0aad * ext/openssl/ossl_asn1.c (decode_eoc): remove unused variables.
Patch by Eric Wong. [Feature #5157] [ruby-core:38798]
* ext/openssl/ossl_asn1.c (ossl_asn1_decode): ditto.
* ext/openssl/ossl_pkey.c (ossl_pkey_new_from_data): ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32884 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-08-07 13:52:36 +00:00
nobu
198c2570e7 * sytle fixes.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32344 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-30 20:20:32 +00:00
emboss
93e1583d73 * ext/openssl/extconf.rb
* ext/openssl/ossl_missing.h/.c: add ASN1_put_eoc if missing.

* ext/openssl/ossl_asn1.c: introduce ossl_asn1_object_size and
  ossl_asn1_put_object to wrap functionality depending on OpenSSL
  version in use.
  Fixes	[ Ruby 1.9 - Bug #4916 ] reported by Hiroshi Nakamura.
  [ruby-core:37286]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-06-26 01:32:03 +00:00
emboss
5b3dd70232 * ext/openssl/ossl_asn1.c: Do not parse zero-tagged values as EOC. Do
not let current length become negative for infinite length constructed
values. Support constructed values of length zero. Added tests.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31711 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-23 01:01:49 +00:00
emboss
7d6529a415 * ext/openssl/ossl_asn1.c: Forbid Constructives whose value is not an
Array to prevent segfault. Added test.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31702 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-22 22:00:24 +00:00
emboss
a65d506d83 * ext/openssl/ossl_asn1.c: Forbid Constructive without infinite
length. This also prevents a segfault. Added test and improved
documentation.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31701 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-22 21:34:28 +00:00
emboss
e7d04f4b82 * ext/openssl/ossl_asn1.c: Fix decoding of infinite length values.
Simplified ossl_asn1_decode0 by splitting it into three separate
functions. Add tests.
[Ruby 1.9 - Bug #4374][ruby-core:35123]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31700 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-22 21:01:13 +00:00
emboss
2cf8b26bf8 * ext/openssl/ossl_asn1.c (ossl_asn1_initialize): Allow creation of
Constructives with an explicit tag_class parameter without
automatically setting tagging to :EXPLICIT. Fixes a bug when encoding
infinite length primitive values.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31699 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-22 19:38:05 +00:00
emboss
efd99b781b * ext/openssl/ossl_asn1.c (ossl_asn1_cons_to_der): Add an additional
EOC for infinite length Constructives that are supposed to be encoded
with explicit tagging. Also tabify method correctly.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31698 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-22 19:08:45 +00:00
emboss
9253bd7797 * ext/openssl/ossl_asn1.c (ossl_asn1data_to_der): Remove redundant
flag tmp_cons.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31697 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-22 18:48:31 +00:00
emboss
fbeca091ed * ext/openssl/ossl_asn1.c: Instead of rb_intern use static symbols to
improve performance.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31694 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-22 14:27:02 +00:00
emboss
4fc3431ba1 * ext/openssl/ossl_asn1.c: Use OpenSSL constants V_ASN1_xxx instead of
hardcoded numbers for initializing class_tag_map.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-22 12:58:23 +00:00
nahi
75431b924c * ext/openssl/ossl_asn1.c(ossl_asn1_default_tag): avoid using RCLASS_SUPER
to make it compilable. Plus, tabify and change variable definition style.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-22 10:17:46 +00:00
emboss
db87405345 * ext/openssl/ossl_asn1.c: Default tag lookup in constant time via hash
instead of previous linear algorithm.
[Ruby 1.9 - Feature #4309][ruby-core:34813]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31680 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-22 00:01:06 +00:00
nobu
d371e3583e * lib: revert r31635-r31638 and untabify with expand(1).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31641 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-19 00:07:25 +00:00
emboss
61a5a6393d * ext/openssl/ossl_asn1.c: Fix more typos. Document attributes
explicitly. Set indentation for verbose sections from 4 to 2
  spaces.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31598 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-16 21:51:12 +00:00
nagachika
91f3860239 * ext/openssl/ossl_asn1.c: fix typos and remove trailing spaces
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31589 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-16 12:20:53 +00:00
emboss
a5eee54bbe Mon May 16 05:13:20 2011 Martin Bosslet <Martin.Bosslet@googlemail.com>
* ext/openssl/ossl_asn1.c: Add documentation.

Previous revision: 31583



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31584 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-15 20:15:38 +00:00
nobu
3a47cf3395 * remove trailing spaces.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@31573 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-05-15 11:55:52 +00:00