mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
231247c010
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4128 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
52 lines
1.1 KiB
Ruby
52 lines
1.1 KiB
Ruby
=begin
|
|
= $RCSfile$ -- Ruby-space predefined Cipher subclasses
|
|
|
|
= Info
|
|
'OpenSSL for Ruby 2' project
|
|
Copyright (C) 2002 Michal Rokos <m.rokos@sh.cvut.cz>
|
|
All rights reserved.
|
|
|
|
= Licence
|
|
This program is licenced under the same licence as Ruby.
|
|
(See the file 'LICENCE'.)
|
|
|
|
= Version
|
|
$Id$
|
|
=end
|
|
|
|
##
|
|
# Should we care what if somebody require this file directly?
|
|
#require 'openssl'
|
|
|
|
module OpenSSL
|
|
module Cipher
|
|
%w(AES Cast5 BF DES Idea RC2 RC4 RC5).each{|cipher|
|
|
eval(<<-EOD)
|
|
class #{cipher} < Cipher
|
|
def initialize(*args)
|
|
args = args.join('-')
|
|
if args.size == 0
|
|
super(\"#{cipher}\")
|
|
else
|
|
super(\"#{cipher}-#\{args\}\")
|
|
end
|
|
end
|
|
end
|
|
EOD
|
|
}
|
|
|
|
class Cipher
|
|
def random_key
|
|
str = OpenSSL::Random.random_bytes(self.key_len)
|
|
self.key = str
|
|
return str
|
|
end
|
|
|
|
def random_iv
|
|
str = OpenSSL::Random.random_bytes(self.iv_len)
|
|
self.iv = str
|
|
return str
|
|
end
|
|
end
|
|
end # Cipher
|
|
end # OpenSSL
|