Sha256: c399252c4ab3347dd9bc0d34df56472a5ae93e8075b952c8d3cfa9e2d53cf1bb

Contents?: true

Size: 1.46 KB

Versions: 19

Compression:

Stored size: 1.46 KB

Contents

#--
# sha2.rb - defines Digest::SHA2 class which wraps up the SHA256,
#           SHA384, and SHA512 classes.
#++
# Copyright (c) 2006 Akinori MUSHA <knu@iDaemons.org>
#
# All rights reserved.  You can redistribute and/or modify it under the same
# terms as Ruby.
#
#   $Id: sha2.rb 28348 2010-06-17 09:24:35Z mrkn $

require 'digest'
require 'digest/sha2.so'

module Digest
  #
  # A meta digest provider class for SHA256, SHA384 and SHA512.
  #
  class SHA2 < Digest::Class
    # call-seq:
    #     Digest::SHA2.new(bitlen = 256) -> digest_obj
    #
    # Creates a new SHA2 hash object with a given bit length.
    def initialize(bitlen = 256)
      case bitlen
      when 256
        @sha2 = Digest::SHA256.new
      when 384
        @sha2 = Digest::SHA384.new
      when 512
        @sha2 = Digest::SHA512.new
      else
        raise ArgumentError, "unsupported bit length: %s" % bitlen.inspect
      end
      @bitlen = bitlen
    end

    # :nodoc:
    def reset
      @sha2.reset
      self
    end

    # :nodoc:
    def update(str)
      @sha2.update(str)
      self
    end
    alias << update

    def finish
      @sha2.digest!
    end
    private :finish

    def block_length
      @sha2.block_length
    end

    def digest_length
      @sha2.digest_length
    end

    # :nodoc:
    def initialize_copy(other)
      @sha2 = other.instance_eval { @sha2.clone }
    end

    # :nodoc:
    def inspect
      "#<%s:%d %s>" % [self.class.name, @bitlen, hexdigest]
    end
  end
end

Version data entries

19 entries across 19 versions & 2 rubygems

Version Path
rhodes-7.6.0 lib/extensions/digest-sha2/sha2/sha2.rb
rhodes-7.5.1 lib/extensions/digest-sha2/sha2/sha2.rb
rhodes-7.4.1 lib/extensions/digest-sha2/sha2/sha2.rb
rhodes-7.1.17 lib/extensions/digest-sha2/sha2/sha2.rb
rhodes-6.2.0 lib/extensions/digest-sha2/sha2/sha2.rb
rhodes-6.0.11 lib/extensions/digest-sha2/sha2/sha2.rb
rhodes-5.5.18 lib/extensions/digest-sha2/sha2/sha2.rb
rhodes-5.5.17 lib/extensions/digest-sha2/sha2/sha2.rb
rhodes-5.5.15 lib/extensions/digest-sha2/sha2/sha2.rb
rhodes-5.5.0.22 lib/extensions/digest-sha2/sha2/sha2.rb
rhodes-5.5.2 lib/extensions/digest-sha2/sha2/sha2.rb
rhodes-5.5.0.7 lib/extensions/digest-sha2/sha2/sha2.rb
rhodes-5.5.0.3 lib/extensions/digest-sha2/sha2/sha2.rb
rhodes-5.5.0 lib/extensions/digest-sha2/sha2/sha2.rb
tauplatform-1.0.3 lib/extensions/digest-sha2/sha2/sha2.rb
tauplatform-1.0.2 lib/extensions/digest-sha2/sha2/sha2.rb
tauplatform-1.0.1 lib/extensions/digest-sha2/sha2/sha2.rb
rhodes-3.5.1.12 lib/extensions/digest-sha2/sha2/sha2.rb
rhodes-3.4.2 lib/extensions/digest-sha2/sha2/sha2.rb