From: noreply@... Date: 2007-04-10T17:35:04+09:00 Subject: [ ruby-Bugs-8903 ] openssl segmentation fault Bugs item #8903, was opened at 2007-02-27 01:08 You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=1698&aid=8903&group_id=426 Category: None Group: None Status: Open Resolution: None Priority: 3 Submitted By: Mark Gallop (markg) Assigned to: Nobody (None) Summary: openssl segmentation fault Initial Comment: I am not sure if this should be reported but I am getting a segmentation fault with the final line of the following code: require 'openssl' require 'digest/sha2' c = OpenSSL::Cipher::Cipher.new("aes-256-cbc") c.encrypt c.key = key = Digest::SHA2.digest("yourpass") c.iv = iv = c.random_iv e = c.update("crypt this") OpenSSL::Debug = true e << c.final (irb):9: [BUG] Segmentation fault I realise that it is a typo to have Digest::SHA2.digest("yourpass") and not Digest::SHA256.digest("yourpass") but I figure it still shouldn't segfault. This happens with these systems/versions Mac OS X - ruby 1.8.5 (2006-12-25) [powerpc-darwin8.8.0], OpenSSL 0.9.8d Gentoo - ruby 1.8.5 (2006-12-04) [x86_64-linux], OpenSSL 0.9.8d but does not segfault with: Ubuntu - ruby 1.8.4 (2005-12-24) [i486-linux], OpenSSL 0.9.8b Cheers, Mark ---------------------------------------------------------------------- >Comment By: Mark Gallop (markg) Date: 2007-04-10 08:35 Message: Did you mean to say that Digest::SHA2 and Digest::SHA256 are the same? I found the (my) problem. I was using irb and missed the "uninitialized constant Digest::SHA2 (NameError)" error. All working as expected now. Cheers, Mark ps Thanks for the tip on generating keys - I am new to all this. ---------------------------------------------------------------------- Comment By: Sam Roberts (sam) Date: 2007-03-17 02:33 Message: I can't reproduce on my system, Ubuntu, with openssl 0.9.8b 04 May 2006, and ruby 1.8.6 (2007-02-28 patchlevel 5000) [i686-linux]. Could you provide the stack backtrace from gdb? Do gdb core > bt SHA2 is same as SHA256, they result in the same 32 byte key, so I don't see how that is what is causing this. Are you saying if you use Digest::SHA256 you *don't* get a segfault? What about if you use "x"*32 as a key? Maybe you know, but running a straight digest on a password is not a recomended way of generating a key from a pass phrase, it is quite easily subject to attack. You might consider using Cipher#pkcs5_keyivgen(). Sam ---------------------------------------------------------------------- You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=1698&aid=8903&group_id=426