summaryrefslogtreecommitdiff
path: root/ruby_1_8_5/ext/openssl/lib/openssl/cipher.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ruby_1_8_5/ext/openssl/lib/openssl/cipher.rb')
-rw-r--r--ruby_1_8_5/ext/openssl/lib/openssl/cipher.rb58
1 files changed, 58 insertions, 0 deletions
diff --git a/ruby_1_8_5/ext/openssl/lib/openssl/cipher.rb b/ruby_1_8_5/ext/openssl/lib/openssl/cipher.rb
new file mode 100644
index 0000000000..7825e5e9e6
--- /dev/null
+++ b/ruby_1_8_5/ext/openssl/lib/openssl/cipher.rb
@@ -0,0 +1,58 @@
+=begin
+= $RCSfile: cipher.rb,v $ -- 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: cipher.rb,v 1.1.2.2 2006/06/20 11:18:15 gotoyuzo Exp $
+=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{|name|
+ klass = Class.new(Cipher){
+ define_method(:initialize){|*args|
+ cipher_name = args.inject(name){|n, arg| "#{n}-#{arg}" }
+ super(cipher_name)
+ }
+ }
+ const_set(name, klass)
+ }
+
+ %w(128 192 256).each{|keylen|
+ klass = Class.new(Cipher){
+ define_method(:initialize){|mode|
+ mode ||= "CBC"
+ cipher_name = "AES-#{keylen}-#{mode}"
+ super(cipher_name)
+ }
+ }
+ const_set("AES#{keylen}", klass)
+ }
+
+ 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