diff --git a/src/lib/hash/sha1block.go b/src/lib/hash/sha1block.go
new file mode 100644
index 0000000..a81dceb
--- /dev/null
+++ b/src/lib/hash/sha1block.go
@@ -0,0 +1,86 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// SHA1 block step.
+// In its own file so that a faster assembly or C version
+// can be substituted easily.
+
+package sha1
+
+import "sha1"
+
+const (
+	K0 = 0x5A827999;
+	K1 = 0x6ED9EBA1;
+	K2 = 0x8F1BBCDC;
+	K3 = 0xCA62C1D6;
+)
+
+package 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 {
+		// Can interlace the computation of w with the
+		// rounds below if needed for speed.
+		for i := 0; i < 16; i++ {
+			j := i*4;
+			w[i] = uint32(p[j])<<24 |
+				uint32(p[j+1])<<16 |
+				uint32(p[j+2])<<8 |
+				uint32(p[j+3]);
+		}
+		for i := 16; i < 80; i++ {
+			tmp := w[i-3] ^ w[i-8] ^ w[i-14] ^ w[i-16];
+			w[i] = tmp<<1 | tmp>>(32-1);
+		}
+
+		a, b, c, d, e := h0, h1, h2, h3, h4;
+
+		// Each of the four 20-iteration rounds
+		// differs only in the computation of f and
+		// 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;
+			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;
+			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;
+			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;
+			a, b, c, d, e = t, a, b30, c, d;
+		}
+
+		h0 += a;
+		h1 += b;
+		h2 += c;
+		h3 += d;
+		h4 += e;
+
+		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;
+	return n;
+}
