# File lib/digest/hmac.rb, line 44
      def initialize(key, digester)
        @md = digester.new

        block_len = @md.block_length

        if key.bytesize > block_len
          key = @md.digest(key)
        end

        ipad = Array.new(block_len).fill(0x36)
        opad = Array.new(block_len).fill(0x5c)

        key.bytes.each_with_index { |c, i|
          ipad[i] ^= c
          opad[i] ^= c
        }

        @key = key.freeze
        @ipad = ipad.inject('') { |s, c| s << c.chr }.freeze
        @opad = opad.inject('') { |s, c| s << c.chr }.freeze
        @md.update(@ipad)
      end