Source file src/pkg/hash/hash.go
1 // Copyright 2009 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // Package hash provides interfaces for hash functions.
6 package hash
7
8 import "io"
9
10 // Hash is the common interface implemented by all hash functions.
11 type Hash interface {
12 // Write adds more data to the running hash.
13 // It never returns an error.
14 io.Writer
15
16 // Sum appends the current hash to b and returns the resulting slice.
17 // It does not change the underlying hash state.
18 Sum(b []byte) []byte
19
20 // Reset resets the hash to one with zero bytes written.
21 Reset()
22
23 // Size returns the number of bytes Sum will return.
24 Size() int
25
26 // BlockSize returns the hash's underlying block size.
27 // The Write method must be able to accept any amount
28 // of data, but it may operate more efficiently if all writes
29 // are a multiple of the block size.
30 BlockSize() int
31 }
32
33 // Hash32 is the common interface implemented by all 32-bit hash functions.
34 type Hash32 interface {
35 Hash
36 Sum32() uint32
37 }
38
39 // Hash64 is the common interface implemented by all 64-bit hash functions.
40 type Hash64 interface {
41 Hash
42 Sum64() uint64
43 }