lib/prawn/security/arcfour.rb in prawn-1.0.0 vs lib/prawn/security/arcfour.rb in prawn-1.1.0

- old
+ new

@@ -1,5 +1,7 @@ +# encoding: utf-8 + # Implementation of the "ARCFOUR" algorithm ("alleged RC4 (tm)"). Implemented # as described at: # http://www.mozilla.org/projects/security/pki/nss/draft-kaukonen-cipher-arcfour-03.txt # # "RC4" is a trademark of RSA Data Security, Inc. @@ -15,11 +17,11 @@ key = key.unpack('c*') if key.is_a?(String) # 1. Allocate an 256 element array of 8 bit bytes to be used as an S-box # 2. Initialize the S-box. Fill each entry first with it's index @sbox = (0..255).to_a - + # 3. Fill another array of the same size (256) with the key, repeating # bytes as necessary. s2 = [] while s2.length < 256 s2 += key @@ -37,10 +39,10 @@ end def encrypt(string) string.unpack('c*').map{|byte| byte ^ key_byte}.pack('c*') end - + private # Produces the next byte of key material in the stream (3.2 Stream Generation) def key_byte @i = (@i + 1) % 256