]> Cypherpunks repositories - gostls13.git/commitdiff
casify hash
authorRuss Cox <rsc@golang.org>
Fri, 16 Jan 2009 18:14:28 +0000 (10:14 -0800)
committerRuss Cox <rsc@golang.org>
Fri, 16 Jan 2009 18:14:28 +0000 (10:14 -0800)
R=r
DELTA=235  (6 added, 26 deleted, 203 changed)
OCL=22907
CL=22938

src/lib/hash/adler32.go
src/lib/hash/adler32_test.go
src/lib/hash/crc32.go
src/lib/hash/crc32_test.go
src/lib/hash/md5.go
src/lib/hash/md5_test.go
src/lib/hash/md5block.go
src/lib/hash/sha1.go
src/lib/hash/sha1_test.go
src/lib/hash/sha1block.go

index 4d32fd8d85706db3f87c7ce44821d60589343f55..22d82bc6491132defc2d0c68d2037f5e57fd18d3 100644 (file)
@@ -19,8 +19,10 @@ export type Digest struct {
        n int;
 }
 
-const Mod = 65521;
-const Maxiter = 5552;  // max mod-free iterations before would overflow uint32
+const (
+       _Mod = 65521;
+       _MaxIter = 5552;  // max mod-free iterations before would overflow uint32
+)
 
 export func NewDigest() *Digest {
        return &Digest{1, 0, 0};
@@ -32,9 +34,9 @@ func (d *Digest) Write(p []byte) (nn int, err *os.Error) {
                a += uint32(p[i]);
                b += a;
                n++;
-               if n == Maxiter {
-                       a %= Mod;
-                       b %= Mod;
+               if n == _MaxIter {
+                       a %= _Mod;
+                       b %= _Mod;
                        n = 0;
                }
        }
@@ -44,9 +46,9 @@ func (d *Digest) Write(p []byte) (nn int, err *os.Error) {
 
 func (d *Digest) Sum32() uint32 {
        a, b := d.a, d.b;
-       if a >= Mod || b >= Mod {
-               a %= Mod;
-               b %= Mod;
+       if a >= _Mod || b >= _Mod {
+               a %= _Mod;
+               b %= _Mod;
        }
        return b<<16 | a;
 }
index 4b5dab929c42faa6b0749c7101b60601c6e272b6..92aae5760f7f92dc96ffcfc92df0376e631d04bb 100644 (file)
@@ -10,43 +10,43 @@ import (
        "testing";
 )
 
-type Adler32Test struct {
+type _Adler32Test struct {
        out uint32;
        in string;
 }
 
-var golden = []Adler32Test {
-       Adler32Test{ 0x1, "" },
-       Adler32Test{ 0x620062, "a" },
-       Adler32Test{ 0x12600c4, "ab" },
-       Adler32Test{ 0x24d0127, "abc" },
-       Adler32Test{ 0x3d8018b, "abcd" },
-       Adler32Test{ 0x5c801f0, "abcde" },
-       Adler32Test{ 0x81e0256, "abcdef" },
-       Adler32Test{ 0xadb02bd, "abcdefg" },
-       Adler32Test{ 0xe000325, "abcdefgh" },
-       Adler32Test{ 0x118e038e, "abcdefghi" },
-       Adler32Test{ 0x158603f8, "abcdefghij" },
-       Adler32Test{ 0x3f090f02, "Discard medicine more than two years old." },
-       Adler32Test{ 0x46d81477, "He who has a shady past knows that nice guys finish last." },
-       Adler32Test{ 0x40ee0ee1, "I wouldn't marry him with a ten foot pole." },
-       Adler32Test{ 0x16661315, "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave" },
-       Adler32Test{ 0x5b2e1480, "The days of the digital watch are numbered.  -Tom Stoppard" },
-       Adler32Test{ 0x8c3c09ea, "Nepal premier won't resign." },
-       Adler32Test{ 0x45ac18fd, "For every action there is an equal and opposite government program." },
-       Adler32Test{ 0x53c61462, "His money is twice tainted: 'taint yours and 'taint mine." },
-       Adler32Test{ 0x7e511e63, "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977" },
-       Adler32Test{ 0xe4801a6a, "It's a tiny change to the code and not completely disgusting. - Bob Manchek" },
-       Adler32Test{ 0x61b507df, "size:  a.out:  bad magic" },
-       Adler32Test{ 0xb8631171, "The major problem is with sendmail.  -Mark Horton" },
-       Adler32Test{ 0x8b5e1904, "Give me a rock, paper and scissors and I will move the world.  CCFestoon" },
-       Adler32Test{ 0x7cc6102b, "If the enemy is within range, then so are you." },
-       Adler32Test{ 0x700318e7, "It's well we cannot hear the screams/That we create in others' dreams." },
-       Adler32Test{ 0x1e601747, "You remind me of a TV show, but that's all right: I watch it anyway." },
-       Adler32Test{ 0xb55b0b09, "C is as portable as Stonehedge!!" },
-       Adler32Test{ 0x39111dd0, "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley" },
-       Adler32Test{ 0x91dd304f, "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction.  Lewis-Randall Rule" },
-       Adler32Test{ 0x2e5d1316, "How can you write a big system without C++?  -Paul Glick" },
+var golden = []_Adler32Test {
+       _Adler32Test{ 0x1, "" },
+       _Adler32Test{ 0x620062, "a" },
+       _Adler32Test{ 0x12600c4, "ab" },
+       _Adler32Test{ 0x24d0127, "abc" },
+       _Adler32Test{ 0x3d8018b, "abcd" },
+       _Adler32Test{ 0x5c801f0, "abcde" },
+       _Adler32Test{ 0x81e0256, "abcdef" },
+       _Adler32Test{ 0xadb02bd, "abcdefg" },
+       _Adler32Test{ 0xe000325, "abcdefgh" },
+       _Adler32Test{ 0x118e038e, "abcdefghi" },
+       _Adler32Test{ 0x158603f8, "abcdefghij" },
+       _Adler32Test{ 0x3f090f02, "Discard medicine more than two years old." },
+       _Adler32Test{ 0x46d81477, "He who has a shady past knows that nice guys finish last." },
+       _Adler32Test{ 0x40ee0ee1, "I wouldn't marry him with a ten foot pole." },
+       _Adler32Test{ 0x16661315, "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave" },
+       _Adler32Test{ 0x5b2e1480, "The days of the digital watch are numbered.  -Tom Stoppard" },
+       _Adler32Test{ 0x8c3c09ea, "Nepal premier won't resign." },
+       _Adler32Test{ 0x45ac18fd, "For every action there is an equal and opposite government program." },
+       _Adler32Test{ 0x53c61462, "His money is twice tainted: 'taint yours and 'taint mine." },
+       _Adler32Test{ 0x7e511e63, "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977" },
+       _Adler32Test{ 0xe4801a6a, "It's a tiny change to the code and not completely disgusting. - Bob Manchek" },
+       _Adler32Test{ 0x61b507df, "size:  a.out:  bad magic" },
+       _Adler32Test{ 0xb8631171, "The major problem is with sendmail.  -Mark Horton" },
+       _Adler32Test{ 0x8b5e1904, "Give me a rock, paper and scissors and I will move the world.  CCFestoon" },
+       _Adler32Test{ 0x7cc6102b, "If the enemy is within range, then so are you." },
+       _Adler32Test{ 0x700318e7, "It's well we cannot hear the screams/That we create in others' dreams." },
+       _Adler32Test{ 0x1e601747, "You remind me of a TV show, but that's all right: I watch it anyway." },
+       _Adler32Test{ 0xb55b0b09, "C is as portable as Stonehedge!!" },
+       _Adler32Test{ 0x39111dd0, "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley" },
+       _Adler32Test{ 0x91dd304f, "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction.  Lewis-Randall Rule" },
+       _Adler32Test{ 0x2e5d1316, "How can you write a big system without C++?  -Paul Glick" },
 }
 
 export func TestGolden(t *testing.T) {
index dca75793bc327ed50b8c9a9f260ec08d56ac3b30..63e6b8cd6920a1262dd6775c6c0e80074396e120 100644 (file)
@@ -44,7 +44,7 @@ export func MakeTable(poly uint32) Table {
        return t;
 }
 
-export var ieee = MakeTable(IEEE);
+export var IEEETable = MakeTable(IEEE);
 
 export type Digest struct {
        crc uint32;
@@ -56,7 +56,7 @@ export func NewDigest(tab Table) *Digest {
 }
 
 export func NewIEEEDigest() *Digest {
-       return NewDigest(ieee);
+       return NewDigest(IEEETable);
 }
 
 func (d *Digest) Write(p []byte) (n int, err *os.Error) {
index c1c0b565f1d1433497460f3faf14ffa9164920d3..a5a206f8b373006ad7cd789dda644de2a9259950 100644 (file)
@@ -10,43 +10,43 @@ import (
        "testing";
 )
 
-type Crc32Test struct {
+type _Crc32Test struct {
        out uint32;
        in string;
 }
 
-var golden = []Crc32Test {
-       Crc32Test{ 0x0, "" },
-       Crc32Test{ 0xe8b7be43, "a" },
-       Crc32Test{ 0x9e83486d, "ab" },
-       Crc32Test{ 0x352441c2, "abc" },
-       Crc32Test{ 0xed82cd11, "abcd" },
-       Crc32Test{ 0x8587d865, "abcde" },
-       Crc32Test{ 0x4b8e39ef, "abcdef" },
-       Crc32Test{ 0x312a6aa6, "abcdefg" },
-       Crc32Test{ 0xaeef2a50, "abcdefgh" },
-       Crc32Test{ 0x8da988af, "abcdefghi" },
-       Crc32Test{ 0x3981703a, "abcdefghij" },
-       Crc32Test{ 0x6b9cdfe7, "Discard medicine more than two years old." },
-       Crc32Test{ 0xc90ef73f, "He who has a shady past knows that nice guys finish last." },
-       Crc32Test{ 0xb902341f, "I wouldn't marry him with a ten foot pole." },
-       Crc32Test{ 0x42080e8, "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave" },
-       Crc32Test{ 0x154c6d11, "The days of the digital watch are numbered.  -Tom Stoppard" },
-       Crc32Test{ 0x4c418325, "Nepal premier won't resign." },
-       Crc32Test{ 0x33955150, "For every action there is an equal and opposite government program." },
-       Crc32Test{ 0x26216a4b, "His money is twice tainted: 'taint yours and 'taint mine." },
-       Crc32Test{ 0x1abbe45e, "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977" },
-       Crc32Test{ 0xc89a94f7, "It's a tiny change to the code and not completely disgusting. - Bob Manchek" },
-       Crc32Test{ 0xab3abe14, "size:  a.out:  bad magic" },
-       Crc32Test{ 0xbab102b6, "The major problem is with sendmail.  -Mark Horton" },
-       Crc32Test{ 0x999149d7, "Give me a rock, paper and scissors and I will move the world.  CCFestoon" },
-       Crc32Test{ 0x6d52a33c, "If the enemy is within range, then so are you." },
-       Crc32Test{ 0x90631e8d, "It's well we cannot hear the screams/That we create in others' dreams." },
-       Crc32Test{ 0x78309130, "You remind me of a TV show, but that's all right: I watch it anyway." },
-       Crc32Test{ 0x7d0a377f, "C is as portable as Stonehedge!!" },
-       Crc32Test{ 0x8c79fd79, "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley" },
-       Crc32Test{ 0xa20b7167, "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction.  Lewis-Randall Rule" },
-       Crc32Test{ 0x8e0bb443, "How can you write a big system without C++?  -Paul Glick" },
+var golden = []_Crc32Test {
+       _Crc32Test{ 0x0, "" },
+       _Crc32Test{ 0xe8b7be43, "a" },
+       _Crc32Test{ 0x9e83486d, "ab" },
+       _Crc32Test{ 0x352441c2, "abc" },
+       _Crc32Test{ 0xed82cd11, "abcd" },
+       _Crc32Test{ 0x8587d865, "abcde" },
+       _Crc32Test{ 0x4b8e39ef, "abcdef" },
+       _Crc32Test{ 0x312a6aa6, "abcdefg" },
+       _Crc32Test{ 0xaeef2a50, "abcdefgh" },
+       _Crc32Test{ 0x8da988af, "abcdefghi" },
+       _Crc32Test{ 0x3981703a, "abcdefghij" },
+       _Crc32Test{ 0x6b9cdfe7, "Discard medicine more than two years old." },
+       _Crc32Test{ 0xc90ef73f, "He who has a shady past knows that nice guys finish last." },
+       _Crc32Test{ 0xb902341f, "I wouldn't marry him with a ten foot pole." },
+       _Crc32Test{ 0x42080e8, "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave" },
+       _Crc32Test{ 0x154c6d11, "The days of the digital watch are numbered.  -Tom Stoppard" },
+       _Crc32Test{ 0x4c418325, "Nepal premier won't resign." },
+       _Crc32Test{ 0x33955150, "For every action there is an equal and opposite government program." },
+       _Crc32Test{ 0x26216a4b, "His money is twice tainted: 'taint yours and 'taint mine." },
+       _Crc32Test{ 0x1abbe45e, "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977" },
+       _Crc32Test{ 0xc89a94f7, "It's a tiny change to the code and not completely disgusting. - Bob Manchek" },
+       _Crc32Test{ 0xab3abe14, "size:  a.out:  bad magic" },
+       _Crc32Test{ 0xbab102b6, "The major problem is with sendmail.  -Mark Horton" },
+       _Crc32Test{ 0x999149d7, "Give me a rock, paper and scissors and I will move the world.  CCFestoon" },
+       _Crc32Test{ 0x6d52a33c, "If the enemy is within range, then so are you." },
+       _Crc32Test{ 0x90631e8d, "It's well we cannot hear the screams/That we create in others' dreams." },
+       _Crc32Test{ 0x78309130, "You remind me of a TV show, but that's all right: I watch it anyway." },
+       _Crc32Test{ 0x7d0a377f, "C is as portable as Stonehedge!!" },
+       _Crc32Test{ 0x8c79fd79, "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley" },
+       _Crc32Test{ 0xa20b7167, "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction.  Lewis-Randall Rule" },
+       _Crc32Test{ 0x8e0bb443, "How can you write a big system without C++?  -Paul Glick" },
 }
 
 export func TestGolden(t *testing.T) {
index 37dd2a4e6bf7514a0f5940979cdefcebfda2658e..b9a79dec34c0682db586960bd9715737cbd84b35 100644 (file)
@@ -8,54 +8,52 @@ package md5
 
 import "os"
 
-package const (
-       Chunk = 64
-)
-
 const (
-       A = 0x67452301;
-       B = 0xEFCDAB89;
-       C = 0x98BADCFE;
-       D = 0x10325476;
+       _Chunk = 64;
+
+       _Init0 = 0x67452301;
+       _Init1 = 0xEFCDAB89;
+       _Init2 = 0x98BADCFE;
+       _Init3 = 0x10325476;
 )
 
 export type Digest struct {
        s [4]uint32;
-       x [Chunk]byte;
+       x [_Chunk]byte;
        nx int;
        len uint64;
 }
 
 export func NewDigest() *Digest {
        d := new(Digest);
-       d.s[0] = A;
-       d.s[1] = B;
-       d.s[2] = C;
-       d.s[3] = D;
+       d.s[0] = _Init0;
+       d.s[1] = _Init1;
+       d.s[2] = _Init2;
+       d.s[3] = _Init3;
        return d;
 }
 
-package func Block(dig *Digest, p []byte) int
+func _Block(dig *Digest, p []byte) int
 
 func (d *Digest) Write(p []byte) (nn int, err *os.Error) {
        nn = len(p);
        d.len += uint64(nn);
        if d.nx > 0 {
                n := len(p);
-               if n > Chunk-d.nx {
-                       n = Chunk-d.nx;
+               if n > _Chunk-d.nx {
+                       n = _Chunk-d.nx;
                }
                for i := 0; i < n; i++ {
                        d.x[d.nx+i] = p[i];
                }
                d.nx += n;
-               if d.nx == Chunk {
-                       Block(d, d.x);
+               if d.nx == _Chunk {
+                       _Block(d, d.x);
                        d.nx = 0;
                }
                p = p[n:len(p)];
        }
-       n := Block(d, p);
+       n := _Block(d, p);
        p = p[n:len(p)];
        if len(p) > 0 {
                for i := 0; i < len(p); i++ {
index c99cfa5a68a54f5c4554715d5abbbeb7e0d3f02a..377df037526c597d3c1d7c38ca51937f462fb15e 100644 (file)
@@ -5,58 +5,49 @@
 package md5
 
 import (
-       "md5";
+       "fmt";
        "io";
+       "md5";
        "testing";
 )
 
-type Md5Test struct {
+type md5Test struct {
        out string;
        in string;
 }
 
-var golden = []Md5Test {
-       Md5Test{ "d41d8cd98f00b204e9800998ecf8427e", "" },
-       Md5Test{ "0cc175b9c0f1b6a831c399e269772661", "a" },
-       Md5Test{ "187ef4436122d1cc2f40dc2b92f0eba0", "ab" },
-       Md5Test{ "900150983cd24fb0d6963f7d28e17f72", "abc" },
-       Md5Test{ "e2fc714c4727ee9395f324cd2e7f331f", "abcd" },
-       Md5Test{ "ab56b4d92b40713acc5af89985d4b786", "abcde" },
-       Md5Test{ "e80b5017098950fc58aad83c8c14978e", "abcdef" },
-       Md5Test{ "7ac66c0f148de9519b8bd264312c4d64", "abcdefg" },
-       Md5Test{ "e8dc4081b13434b45189a720b77b6818", "abcdefgh" },
-       Md5Test{ "8aa99b1f439ff71293e95357bac6fd94", "abcdefghi" },
-       Md5Test{ "a925576942e94b2ef57a066101b48876", "abcdefghij" },
-       Md5Test{ "d747fc1719c7eacb84058196cfe56d57", "Discard medicine more than two years old." },
-       Md5Test{ "bff2dcb37ef3a44ba43ab144768ca837", "He who has a shady past knows that nice guys finish last." },
-       Md5Test{ "0441015ecb54a7342d017ed1bcfdbea5", "I wouldn't marry him with a ten foot pole." },
-       Md5Test{ "9e3cac8e9e9757a60c3ea391130d3689", "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave" },
-       Md5Test{ "a0f04459b031f916a59a35cc482dc039", "The days of the digital watch are numbered.  -Tom Stoppard" },
-       Md5Test{ "e7a48e0fe884faf31475d2a04b1362cc", "Nepal premier won't resign." },
-       Md5Test{ "637d2fe925c07c113800509964fb0e06", "For every action there is an equal and opposite government program." },
-       Md5Test{ "834a8d18d5c6562119cf4c7f5086cb71", "His money is twice tainted: 'taint yours and 'taint mine." },
-       Md5Test{ "de3a4d2fd6c73ec2db2abad23b444281", "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977" },
-       Md5Test{ "acf203f997e2cf74ea3aff86985aefaf", "It's a tiny change to the code and not completely disgusting. - Bob Manchek" },
-       Md5Test{ "e1c1384cb4d2221dfdd7c795a4222c9a", "size:  a.out:  bad magic" },
-       Md5Test{ "c90f3ddecc54f34228c063d7525bf644", "The major problem is with sendmail.  -Mark Horton" },
-       Md5Test{ "cdf7ab6c1fd49bd9933c43f3ea5af185", "Give me a rock, paper and scissors and I will move the world.  CCFestoon" },
-       Md5Test{ "83bc85234942fc883c063cbd7f0ad5d0", "If the enemy is within range, then so are you." },
-       Md5Test{ "277cbe255686b48dd7e8f389394d9299", "It's well we cannot hear the screams/That we create in others' dreams." },
-       Md5Test{ "fd3fb0a7ffb8af16603f3d3af98f8e1f", "You remind me of a TV show, but that's all right: I watch it anyway." },
-       Md5Test{ "469b13a78ebf297ecda64d4723655154", "C is as portable as Stonehedge!!" },
-       Md5Test{ "63eb3a2f466410104731c4b037600110", "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley" },
-       Md5Test{ "72c2ed7592debca1c90fc0100f931a2f", "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction.  Lewis-Randall Rule" },
-       Md5Test{ "132f7619d33b523b1d9e5bd8e0928355", "How can you write a big system without C++?  -Paul Glick" },
-}
-
-func Hex(p []byte) string {
-       s := "";
-       for i := 0; i < len(p); i++ {
-               v := p[i];
-               s += string("0123456789abcdef"[v>>4]);
-               s += string("0123456789abcdef"[v&15]);
-       }
-       return s;
+var golden = []md5Test {
+       md5Test{ "d41d8cd98f00b204e9800998ecf8427e", "" },
+       md5Test{ "0cc175b9c0f1b6a831c399e269772661", "a" },
+       md5Test{ "187ef4436122d1cc2f40dc2b92f0eba0", "ab" },
+       md5Test{ "900150983cd24fb0d6963f7d28e17f72", "abc" },
+       md5Test{ "e2fc714c4727ee9395f324cd2e7f331f", "abcd" },
+       md5Test{ "ab56b4d92b40713acc5af89985d4b786", "abcde" },
+       md5Test{ "e80b5017098950fc58aad83c8c14978e", "abcdef" },
+       md5Test{ "7ac66c0f148de9519b8bd264312c4d64", "abcdefg" },
+       md5Test{ "e8dc4081b13434b45189a720b77b6818", "abcdefgh" },
+       md5Test{ "8aa99b1f439ff71293e95357bac6fd94", "abcdefghi" },
+       md5Test{ "a925576942e94b2ef57a066101b48876", "abcdefghij" },
+       md5Test{ "d747fc1719c7eacb84058196cfe56d57", "Discard medicine more than two years old." },
+       md5Test{ "bff2dcb37ef3a44ba43ab144768ca837", "He who has a shady past knows that nice guys finish last." },
+       md5Test{ "0441015ecb54a7342d017ed1bcfdbea5", "I wouldn't marry him with a ten foot pole." },
+       md5Test{ "9e3cac8e9e9757a60c3ea391130d3689", "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave" },
+       md5Test{ "a0f04459b031f916a59a35cc482dc039", "The days of the digital watch are numbered.  -Tom Stoppard" },
+       md5Test{ "e7a48e0fe884faf31475d2a04b1362cc", "Nepal premier won't resign." },
+       md5Test{ "637d2fe925c07c113800509964fb0e06", "For every action there is an equal and opposite government program." },
+       md5Test{ "834a8d18d5c6562119cf4c7f5086cb71", "His money is twice tainted: 'taint yours and 'taint mine." },
+       md5Test{ "de3a4d2fd6c73ec2db2abad23b444281", "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977" },
+       md5Test{ "acf203f997e2cf74ea3aff86985aefaf", "It's a tiny change to the code and not completely disgusting. - Bob Manchek" },
+       md5Test{ "e1c1384cb4d2221dfdd7c795a4222c9a", "size:  a.out:  bad magic" },
+       md5Test{ "c90f3ddecc54f34228c063d7525bf644", "The major problem is with sendmail.  -Mark Horton" },
+       md5Test{ "cdf7ab6c1fd49bd9933c43f3ea5af185", "Give me a rock, paper and scissors and I will move the world.  CCFestoon" },
+       md5Test{ "83bc85234942fc883c063cbd7f0ad5d0", "If the enemy is within range, then so are you." },
+       md5Test{ "277cbe255686b48dd7e8f389394d9299", "It's well we cannot hear the screams/That we create in others' dreams." },
+       md5Test{ "fd3fb0a7ffb8af16603f3d3af98f8e1f", "You remind me of a TV show, but that's all right: I watch it anyway." },
+       md5Test{ "469b13a78ebf297ecda64d4723655154", "C is as portable as Stonehedge!!" },
+       md5Test{ "63eb3a2f466410104731c4b037600110", "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley" },
+       md5Test{ "72c2ed7592debca1c90fc0100f931a2f", "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction.  Lewis-Randall Rule" },
+       md5Test{ "132f7619d33b523b1d9e5bd8e0928355", "How can you write a big system without C++?  -Paul Glick" },
 }
 
 export func TestGolden(t *testing.T) {
@@ -64,7 +55,7 @@ export func TestGolden(t *testing.T) {
                g := golden[i];
                c := NewDigest();
                io.WriteString(c, g.in);
-               s := Hex(c.Sum());
+               s := fmt.Sprintf("%x", c.Sum());
                if s != g.out {
                        t.Errorf("md5(%s) = %s want %s", g.in, s, g.out);
                        t.FailNow();
index fcea12193fa8224def0f2dd4ff3ab5210a354713..7974dbf0b96388ae38a8e15213d33855a9252f76 100644 (file)
@@ -10,79 +10,79 @@ package md5
 
 import "md5"
 
-// T[i] = int((1<<32) * abs(sin(i+1 radians))).
-var T = []uint32 {
+// table[i] = int((1<<32) * abs(sin(i+1 radians))).
+var table = []uint32 {
        // round 1
-       0xd76aa478,     
+       0xd76aa478,
        0xe8c7b756,
-       0x242070db,     
-       0xc1bdceee,     
-       0xf57c0faf,     
-       0x4787c62a,     
-       0xa8304613,     
-       0xfd469501,     
-       0x698098d8,     
-       0x8b44f7af,     
-       0xffff5bb1,     
-       0x895cd7be,     
-       0x6b901122,     
-       0xfd987193,     
-       0xa679438e,     
+       0x242070db,
+       0xc1bdceee,
+       0xf57c0faf,
+       0x4787c62a,
+       0xa8304613,
+       0xfd469501,
+       0x698098d8,
+       0x8b44f7af,
+       0xffff5bb1,
+       0x895cd7be,
+       0x6b901122,
+       0xfd987193,
+       0xa679438e,
        0x49b40821,
 
        // round 2
-       0xf61e2562,     
-       0xc040b340,     
-       0x265e5a51,     
-       0xe9b6c7aa,     
-       0xd62f105d,     
-       0x2441453,      
-       0xd8a1e681,     
-       0xe7d3fbc8,     
-       0x21e1cde6,     
-       0xc33707d6,     
-       0xf4d50d87,     
-       0x455a14ed,     
-       0xa9e3e905,     
-       0xfcefa3f8,     
-       0x676f02d9,     
+       0xf61e2562,
+       0xc040b340,
+       0x265e5a51,
+       0xe9b6c7aa,
+       0xd62f105d,
+       0x2441453,
+       0xd8a1e681,
+       0xe7d3fbc8,
+       0x21e1cde6,
+       0xc33707d6,
+       0xf4d50d87,
+       0x455a14ed,
+       0xa9e3e905,
+       0xfcefa3f8,
+       0x676f02d9,
        0x8d2a4c8a,
 
        // round3
-       0xfffa3942,     
-       0x8771f681,     
-       0x6d9d6122,     
-       0xfde5380c,     
-       0xa4beea44,     
-       0x4bdecfa9,     
-       0xf6bb4b60,     
-       0xbebfbc70,     
-       0x289b7ec6,     
-       0xeaa127fa,     
-       0xd4ef3085,     
-       0x4881d05,      
-       0xd9d4d039,     
-       0xe6db99e5,     
-       0x1fa27cf8,     
-       0xc4ac5665,     
+       0xfffa3942,
+       0x8771f681,
+       0x6d9d6122,
+       0xfde5380c,
+       0xa4beea44,
+       0x4bdecfa9,
+       0xf6bb4b60,
+       0xbebfbc70,
+       0x289b7ec6,
+       0xeaa127fa,
+       0xd4ef3085,
+       0x4881d05,
+       0xd9d4d039,
+       0xe6db99e5,
+       0x1fa27cf8,
+       0xc4ac5665,
 
        // round 4
-       0xf4292244,     
-       0x432aff97,     
-       0xab9423a7,     
-       0xfc93a039,     
-       0x655b59c3,     
-       0x8f0ccc92,     
-       0xffeff47d,     
-       0x85845dd1,     
-       0x6fa87e4f,     
-       0xfe2ce6e0,     
-       0xa3014314,     
-       0x4e0811a1,     
-       0xf7537e82,     
-       0xbd3af235,     
-       0x2ad7d2bb,     
-       0xeb86d391,     
+       0xf4292244,
+       0x432aff97,
+       0xab9423a7,
+       0xfc93a039,
+       0x655b59c3,
+       0x8f0ccc92,
+       0xffeff47d,
+       0x85845dd1,
+       0x6fa87e4f,
+       0xfe2ce6e0,
+       0xa3014314,
+       0x4e0811a1,
+       0xf7537e82,
+       0xbd3af235,
+       0x2ad7d2bb,
+       0xeb86d391,
 }
 
 var shift1 = []uint { 7, 12, 17, 22 };
@@ -90,16 +90,16 @@ var shift2 = []uint { 5, 9, 14, 20 };
 var shift3 = []uint { 4, 11, 16, 23 };
 var shift4 = []uint { 6, 10, 15, 21 };
 
-package func Block(dig *Digest, p []byte) int {
+func _Block(dig *Digest, p []byte) int {
        a := dig.s[0];
        b := dig.s[1];
        c := dig.s[2];
        d := dig.s[3];
        n := 0;
        var X [16]uint32;
-       for len(p) >= Chunk {
+       for len(p) >= _Chunk {
                aa, bb, cc, dd := a, b, c, d;
-       
+
                for i := 0; i < 16; i++ {
                        j := i*4;
                        X[i] = uint32(p[j]) | uint32(p[j+1])<<8 | uint32(p[j+2])<<16 | uint32(p[j+3])<<24;
@@ -119,43 +119,43 @@ package func Block(dig *Digest, p []byte) int {
                        t := i;
                        s := shift1[i%4];
                        f := ((c ^ d) & b) ^ d;
-                       a += f + X[x] + T[t];
+                       a += f + X[x] + table[t];
                        a = a<<s | a>>(32-s);
                        a += b;
                        a, b, c, d = d, a, b, c;
                }
-       
+
                // Round 2.
                for i := 0; i < 16; i++ {
                        x := (1+5*i)%16;
                        t := 16+i;
                        s := shift2[i%4];
                        g := ((b ^ c) & d) ^ c;
-                       a += g + X[x] + T[t];
+                       a += g + X[x] + table[t];
                        a = a<<s | a>>(32-s);
                        a += b;
                        a, b, c, d = d, a, b, c;
                }
-       
+
                // Round 3.
                for i := 0; i < 16; i++ {
                        x := (5+3*i)%16;
                        t := 32+i;
                        s := shift3[i%4];
                        h := b ^ c ^ d;
-                       a += h + X[x] + T[t];
+                       a += h + X[x] + table[t];
                        a = a<<s | a>>(32-s);
                        a += b;
                        a, b, c, d = d, a, b, c;
                }
-               
+
                // Round 4.
                for i := 0; i < 16; i++ {
                        x := (7*i)%16;
                        s := shift4[i%4];
                        t := 48+i;
                        ii := c ^ (b | ^d);
-                       a += ii + X[x] + T[t];
+                       a += ii + X[x] + table[t];
                        a = a<<s | a>>(32-s);
                        a += b;
                        a, b, c, d = d, a, b, c;
@@ -165,11 +165,11 @@ package func Block(dig *Digest, p []byte) int {
                b += bb;
                c += cc;
                d += dd;
-               
-               p = p[Chunk:len(p)];
-               n += Chunk;
+
+               p = p[_Chunk:len(p)];
+               n += _Chunk;
        }
-       
+
        dig.s[0] = a;
        dig.s[1] = b;
        dig.s[2] = c;
index da50e46e829ad6ff6d83f3ddd07b96446a3363f9..1cb76684034b7804a20ebc5b6651d2d52dbd652e 100644 (file)
@@ -8,56 +8,54 @@ package sha1
 
 import "os"
 
-package const (
-       Chunk = 64;
-)
-
 const (
-       H0 = 0x67452301;
-       H1 = 0xEFCDAB89;
-       H2 = 0x98BADCFE;
-       H3 = 0x10325476;
-       H4 = 0xC3D2E1F0;
+       _Chunk = 64;
+
+       _Init0 = 0x67452301;
+       _Init1 = 0xEFCDAB89;
+       _Init2 = 0x98BADCFE;
+       _Init3 = 0x10325476;
+       _Init4 = 0xC3D2E1F0;
 )
 
 export type Digest struct {
        h [5]uint32;
-       x [Chunk]byte;
+       x [_Chunk]byte;
        nx int;
        len uint64;
 }
 
 export func NewDigest() *Digest {
        d := new(Digest);
-       d.h[0] = H0;
-       d.h[1] = H1;
-       d.h[2] = H2;
-       d.h[3] = H3;
-       d.h[4] = H4;
+       d.h[0] = _Init0;
+       d.h[1] = _Init1;
+       d.h[2] = _Init2;
+       d.h[3] = _Init3;
+       d.h[4] = _Init4;
        return d;
 }
 
-package func Block(dig *Digest, p []byte) int
+func _Block(dig *Digest, p []byte) int
 
 func (d *Digest) Write(p []byte) (nn int, err *os.Error) {
        nn = len(p);
        d.len += uint64(nn);
        if d.nx > 0 {
                n := len(p);
-               if n > Chunk-d.nx {
-                       n = Chunk-d.nx;
+               if n > _Chunk-d.nx {
+                       n = _Chunk-d.nx;
                }
                for i := 0; i < n; i++ {
                        d.x[d.nx+i] = p[i];
                }
                d.nx += n;
-               if d.nx == Chunk {
-                       Block(d, d.x);
+               if d.nx == _Chunk {
+                       _Block(d, d.x);
                        d.nx = 0;
                }
                p = p[n:len(p)];
        }
-       n := Block(d, p);
+       n := _Block(d, p);
        p = p[n:len(p)];
        if len(p) > 0 {
                for i := 0; i < len(p); i++ {
index 15ce2b779d1c1bc68c3570f59e16deb41e4b455f..21194f34608ca7ce9bfd3f3a8e44ea8e8704c8b7 100644 (file)
@@ -7,58 +7,49 @@
 package sha1
 
 import (
-       "sha1";
+       "fmt";
        "io";
+       "sha1";
        "testing";
 )
 
-type Sha1Test struct {
+type sha1Test struct {
        out string;
        in string;
 }
 
-var golden = []Sha1Test {
-       Sha1Test{ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "" },
-       Sha1Test{ "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8", "a" },
-       Sha1Test{ "da23614e02469a0d7c7bd1bdab5c9c474b1904dc", "ab" },
-       Sha1Test{ "a9993e364706816aba3e25717850c26c9cd0d89d", "abc" },
-       Sha1Test{ "81fe8bfe87576c3ecb22426f8e57847382917acf", "abcd" },
-       Sha1Test{ "03de6c570bfe24bfc328ccd7ca46b76eadaf4334", "abcde" },
-       Sha1Test{ "1f8ac10f23c5b5bc1167bda84b833e5c057a77d2", "abcdef" },
-       Sha1Test{ "2fb5e13419fc89246865e7a324f476ec624e8740", "abcdefg" },
-       Sha1Test{ "425af12a0743502b322e93a015bcf868e324d56a", "abcdefgh" },
-       Sha1Test{ "c63b19f1e4c8b5f76b25c49b8b87f57d8e4872a1", "abcdefghi" },
-       Sha1Test{ "d68c19a0a345b7eab78d5e11e991c026ec60db63", "abcdefghij" },
-       Sha1Test{ "ebf81ddcbe5bf13aaabdc4d65354fdf2044f38a7", "Discard medicine more than two years old." },
-       Sha1Test{ "e5dea09392dd886ca63531aaa00571dc07554bb6", "He who has a shady past knows that nice guys finish last." },
-       Sha1Test{ "45988f7234467b94e3e9494434c96ee3609d8f8f", "I wouldn't marry him with a ten foot pole." },
-       Sha1Test{ "55dee037eb7460d5a692d1ce11330b260e40c988", "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave" },
-       Sha1Test{ "b7bc5fb91080c7de6b582ea281f8a396d7c0aee8", "The days of the digital watch are numbered.  -Tom Stoppard" },
-       Sha1Test{ "c3aed9358f7c77f523afe86135f06b95b3999797", "Nepal premier won't resign." },
-       Sha1Test{ "6e29d302bf6e3a5e4305ff318d983197d6906bb9", "For every action there is an equal and opposite government program." },
-       Sha1Test{ "597f6a540010f94c15d71806a99a2c8710e747bd", "His money is twice tainted: 'taint yours and 'taint mine." },
-       Sha1Test{ "6859733b2590a8a091cecf50086febc5ceef1e80", "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977" },
-       Sha1Test{ "514b2630ec089b8aee18795fc0cf1f4860cdacad", "It's a tiny change to the code and not completely disgusting. - Bob Manchek" },
-       Sha1Test{ "c5ca0d4a7b6676fc7aa72caa41cc3d5df567ed69", "size:  a.out:  bad magic" },
-       Sha1Test{ "74c51fa9a04eadc8c1bbeaa7fc442f834b90a00a", "The major problem is with sendmail.  -Mark Horton" },
-       Sha1Test{ "0b4c4ce5f52c3ad2821852a8dc00217fa18b8b66", "Give me a rock, paper and scissors and I will move the world.  CCFestoon" },
-       Sha1Test{ "3ae7937dd790315beb0f48330e8642237c61550a", "If the enemy is within range, then so are you." },
-       Sha1Test{ "410a2b296df92b9a47412b13281df8f830a9f44b", "It's well we cannot hear the screams/That we create in others' dreams." },
-       Sha1Test{ "841e7c85ca1adcddbdd0187f1289acb5c642f7f5", "You remind me of a TV show, but that's all right: I watch it anyway." },
-       Sha1Test{ "163173b825d03b952601376b25212df66763e1db", "C is as portable as Stonehedge!!" },
-       Sha1Test{ "32b0377f2687eb88e22106f133c586ab314d5279", "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley" },
-       Sha1Test{ "0885aaf99b569542fd165fa44e322718f4a984e0", "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction.  Lewis-Randall Rule" },
-       Sha1Test{ "6627d6904d71420b0bf3886ab629623538689f45", "How can you write a big system without C++?  -Paul Glick" },
-}
-
-func Hex(p []byte) string {
-       s := "";
-       for i := 0; i < len(p); i++ {
-               v := p[i];
-               s += string("0123456789abcdef"[v>>4]);
-               s += string("0123456789abcdef"[v&15]);
-       }
-       return s;
+var golden = []sha1Test {
+       sha1Test{ "da39a3ee5e6b4b0d3255bfef95601890afd80709", "" },
+       sha1Test{ "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8", "a" },
+       sha1Test{ "da23614e02469a0d7c7bd1bdab5c9c474b1904dc", "ab" },
+       sha1Test{ "a9993e364706816aba3e25717850c26c9cd0d89d", "abc" },
+       sha1Test{ "81fe8bfe87576c3ecb22426f8e57847382917acf", "abcd" },
+       sha1Test{ "03de6c570bfe24bfc328ccd7ca46b76eadaf4334", "abcde" },
+       sha1Test{ "1f8ac10f23c5b5bc1167bda84b833e5c057a77d2", "abcdef" },
+       sha1Test{ "2fb5e13419fc89246865e7a324f476ec624e8740", "abcdefg" },
+       sha1Test{ "425af12a0743502b322e93a015bcf868e324d56a", "abcdefgh" },
+       sha1Test{ "c63b19f1e4c8b5f76b25c49b8b87f57d8e4872a1", "abcdefghi" },
+       sha1Test{ "d68c19a0a345b7eab78d5e11e991c026ec60db63", "abcdefghij" },
+       sha1Test{ "ebf81ddcbe5bf13aaabdc4d65354fdf2044f38a7", "Discard medicine more than two years old." },
+       sha1Test{ "e5dea09392dd886ca63531aaa00571dc07554bb6", "He who has a shady past knows that nice guys finish last." },
+       sha1Test{ "45988f7234467b94e3e9494434c96ee3609d8f8f", "I wouldn't marry him with a ten foot pole." },
+       sha1Test{ "55dee037eb7460d5a692d1ce11330b260e40c988", "Free! Free!/A trip/to Mars/for 900/empty jars/Burma Shave" },
+       sha1Test{ "b7bc5fb91080c7de6b582ea281f8a396d7c0aee8", "The days of the digital watch are numbered.  -Tom Stoppard" },
+       sha1Test{ "c3aed9358f7c77f523afe86135f06b95b3999797", "Nepal premier won't resign." },
+       sha1Test{ "6e29d302bf6e3a5e4305ff318d983197d6906bb9", "For every action there is an equal and opposite government program." },
+       sha1Test{ "597f6a540010f94c15d71806a99a2c8710e747bd", "His money is twice tainted: 'taint yours and 'taint mine." },
+       sha1Test{ "6859733b2590a8a091cecf50086febc5ceef1e80", "There is no reason for any individual to have a computer in their home. -Ken Olsen, 1977" },
+       sha1Test{ "514b2630ec089b8aee18795fc0cf1f4860cdacad", "It's a tiny change to the code and not completely disgusting. - Bob Manchek" },
+       sha1Test{ "c5ca0d4a7b6676fc7aa72caa41cc3d5df567ed69", "size:  a.out:  bad magic" },
+       sha1Test{ "74c51fa9a04eadc8c1bbeaa7fc442f834b90a00a", "The major problem is with sendmail.  -Mark Horton" },
+       sha1Test{ "0b4c4ce5f52c3ad2821852a8dc00217fa18b8b66", "Give me a rock, paper and scissors and I will move the world.  CCFestoon" },
+       sha1Test{ "3ae7937dd790315beb0f48330e8642237c61550a", "If the enemy is within range, then so are you." },
+       sha1Test{ "410a2b296df92b9a47412b13281df8f830a9f44b", "It's well we cannot hear the screams/That we create in others' dreams." },
+       sha1Test{ "841e7c85ca1adcddbdd0187f1289acb5c642f7f5", "You remind me of a TV show, but that's all right: I watch it anyway." },
+       sha1Test{ "163173b825d03b952601376b25212df66763e1db", "C is as portable as Stonehedge!!" },
+       sha1Test{ "32b0377f2687eb88e22106f133c586ab314d5279", "Even if I could be Shakespeare, I think I should still choose to be Faraday. - A. Huxley" },
+       sha1Test{ "0885aaf99b569542fd165fa44e322718f4a984e0", "The fugacity of a constituent in a mixture of gases at a given temperature is proportional to its mole fraction.  Lewis-Randall Rule" },
+       sha1Test{ "6627d6904d71420b0bf3886ab629623538689f45", "How can you write a big system without C++?  -Paul Glick" },
 }
 
 export func TestGolden(t *testing.T) {
@@ -66,7 +57,7 @@ export func TestGolden(t *testing.T) {
                g := golden[i];
                c := NewDigest();
                io.WriteString(c, g.in);
-               s := Hex(c.Sum());
+               s := fmt.Sprintf("%x", c.Sum());
                if s != g.out {
                        t.Errorf("sha1(%s) = %s want %s", g.in, s, g.out);
                        t.FailNow();
index b5052b712e4ff85fd5a25d5e40468be10386c8d8..f4555b2a474f0994af072fc0d7cbe1e7efe0f678 100644 (file)
@@ -11,18 +11,18 @@ package sha1
 import "sha1"
 
 const (
-       K0 = 0x5A827999;
-       K1 = 0x6ED9EBA1;
-       K2 = 0x8F1BBCDC;
-       K3 = 0xCA62C1D6;
+       _K0 = 0x5A827999;
+       _K1 = 0x6ED9EBA1;
+       _K2 = 0x8F1BBCDC;
+       _K3 = 0xCA62C1D6;
 )
 
-package func Block(dig *Digest, p []byte) int {
+func _Block(dig *Digest, p []byte) int {
        var w [80]uint32;
 
        n := 0;
        h0, h1, h2, h3, h4 := dig.h[0], dig.h[1], dig.h[2], dig.h[3], dig.h[4];
-       for len(p) >= Chunk {
+       for len(p) >= _Chunk {
                // Can interlace the computation of w with the
                // rounds below if needed for speed.
                for i := 0; i < 16; i++ {
@@ -41,33 +41,33 @@ package func Block(dig *Digest, p []byte) int {
 
                // Each of the four 20-iteration rounds
                // differs only in the computation of f and
-               // the choice of K (K0, K1, etc).
+               // the choice of K (_K0, _K1, etc).
                for i := 0; i < 20; i++ {
                        f := b&c | (^b)&d;
                        a5 := a<<5 | a>>(32-5);
                        b30 := b<<30 | b>>(32-30);
-                       t := a5 + f + e + w[i] + K0;
+                       t := a5 + f + e + w[i] + _K0;
                        a, b, c, d, e = t, a, b30, c, d;
                }
                for i := 20; i < 40; i++ {
                        f := b ^ c ^ d;
                        a5 := a<<5 | a>>(32-5);
                        b30 := b<<30 | b>>(32-30);
-                       t := a5 + f + e + w[i] + K1;
+                       t := a5 + f + e + w[i] + _K1;
                        a, b, c, d, e = t, a, b30, c, d;
                }
                for i := 40; i < 60; i++ {
                        f := b&c | b&d | c&d;
                        a5 := a<<5 | a>>(32-5);
                        b30 := b<<30 | b>>(32-30);
-                       t := a5 + f + e + w[i] + K2;
+                       t := a5 + f + e + w[i] + _K2;
                        a, b, c, d, e = t, a, b30, c, d;
                }
                for i := 60; i < 80; i++ {
                        f := b ^ c ^ d;
                        a5 := a<<5 | a>>(32-5);
                        b30 := b<<30 | b>>(32-30);
-                       t := a5 + f + e + w[i] + K3;
+                       t := a5 + f + e + w[i] + _K3;
                        a, b, c, d, e = t, a, b30, c, d;
                }
 
@@ -77,8 +77,8 @@ package func Block(dig *Digest, p []byte) int {
                h3 += d;
                h4 += e;
 
-               p = p[Chunk:len(p)];
-               n += Chunk;
+               p = p[_Chunk:len(p)];
+               n += _Chunk;
        }
 
        dig.h[0], dig.h[1], dig.h[2], dig.h[3], dig.h[4] = h0, h1, h2, h3, h4;