class Zip::TraditionalEncrypter

Public Instance Methods

data_descriptor(crc32, compressed_size, uncomprssed_size) click to toggle source
# File lib/zip/crypto/traditional_encryption.rb, line 56
def data_descriptor(crc32, compressed_size, uncomprssed_size)
  [0x08074b50, crc32, compressed_size, uncomprssed_size].pack('VVVV')
end
encrypt(data) click to toggle source
# File lib/zip/crypto/traditional_encryption.rb, line 52
def encrypt(data)
  data.unpack('C*').map { |x| encode x }.pack('C*')
end
header(mtime) click to toggle source
# File lib/zip/crypto/traditional_encryption.rb, line 42
def header(mtime)
  [].tap do |header|
    (header_bytesize - 2).times do
      header << Random.rand(0..255)
    end
    header << (mtime.to_binary_dos_time & 0xff)
    header << (mtime.to_binary_dos_time >> 8)
  end.map { |x| encode x }.pack('C*')
end
reset!() click to toggle source
# File lib/zip/crypto/traditional_encryption.rb, line 60
def reset!
  reset_keys!
end

Private Instance Methods

encode(n) click to toggle source
# File lib/zip/crypto/traditional_encryption.rb, line 66
def encode(n)
  t = decrypt_byte
  update_keys(n.chr)
  t ^ n
end