source: extensions/gsdl-video/trunk/installed/cmdline/lib/ruby/1.8/digest/sha2.rb@ 18425

Last change on this file since 18425 was 18425, checked in by davidb, 15 years ago

Video extension to Greenstone

File size: 1.4 KB
Line 
1#--
2# sha2.rb - defines Digest::SHA2 class which wraps up the SHA256,
3# SHA384, and SHA512 classes.
4#++
5# Copyright (c) 2006 Akinori MUSHA <[email protected]>
6#
7# All rights reserved. You can redistribute and/or modify it under the same
8# terms as Ruby.
9#
10# $Id: sha2.rb 11708 2007-02-12 23:01:19Z shyouhei $
11
12require 'digest'
13
14module Digest
15 #
16 # A meta digest provider class for SHA256, SHA384 and SHA512.
17 #
18 class SHA2 < Digest::Class
19 # call-seq:
20 # Digest::SHA2.new(bitlen = 256) -> digest_obj
21 #
22 # Creates a new SHA2 hash object with a given bit length.
23 def initialize(bitlen = 256)
24 case bitlen
25 when 256
26 @sha2 = Digest::SHA256.new
27 when 384
28 @sha2 = Digest::SHA384.new
29 when 512
30 @sha2 = Digest::SHA512.new
31 else
32 raise ArgumentError, "unsupported bit length: %s" % bitlen.inspect
33 end
34 @bitlen = bitlen
35 end
36
37 # :nodoc:
38 def reset
39 @sha2.reset
40 self
41 end
42
43 # :nodoc:
44 def update(str)
45 @sha2.update(str)
46 self
47 end
48 alias << update
49
50 def finish
51 @sha2.digest!
52 end
53 private :finish
54
55 def block_length
56 @sha2.block_length
57 end
58
59 def digest_length
60 @sha2.digest_length
61 end
62
63 # :nodoc:
64 def initialize_copy(other)
65 @sha2 = other.instance_eval { @sha2.clone }
66 end
67
68 # :nodoc:
69 def inspect
70 "#<%s:%d %s>" % [self.class.name, @bitlen, hexdigest]
71 end
72 end
73end
Note: See TracBrowser for help on using the repository browser.