class HSMR::Key

Attributes

key[R]
length[R]

Public Class Methods

new(init=nil, length=DOUBLE) click to toggle source
# File lib/hsmr/key.rb, line 8
def initialize(init=nil, length=DOUBLE)
  return nil if (init.is_a? Array ) && (init.length == 0) 
  
  init = init.first if (init.is_a? Array) && (init.length == 1)
  
  if init.is_a? Array
    init.collect! {|c| ( (c.is_a? HSMR::Component) ? c : HSMR::Component.new(c) ) }

    raise TypeError, "Component argument expected" unless init.first.is_a? Component
  
    @key=HSMR::xor(init.pop, init).key

  elsif init.is_a? Component
    @key = init.component
  elsif init.is_a? String
    key=init.gsub(/ /,'')
    @key = key.unpack('a2'*(key.length/2)).map{|x| x.hex}.pack('c'*(key.length/2))
  elsif key.nil?
    key = generate(length)
    @key = key.unpack('a2'*(key.length/2)).map{|x| x.hex}.pack('c'*(key.length/2))
  end
  @length = @key.length
end