mirror of
https://github.com/golang/go
synced 2024-10-02 10:18:33 -06:00
crypto/sha1: always test the portable block function too
So it doesn't bitrot. LGTM=agl R=golang-codereviews, agl CC=golang-codereviews https://golang.org/cl/62270043
This commit is contained in:
parent
bf0d71af29
commit
14c5c8a93a
@ -7,6 +7,7 @@
|
|||||||
package sha1
|
package sha1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"crypto/rand"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"testing"
|
"testing"
|
||||||
@ -90,6 +91,18 @@ func TestBlockSize(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Tests that blockGeneric (pure Go) and block (in assembly for amd64, 386, arm) match.
|
||||||
|
func TestBlockGeneric(t *testing.T) {
|
||||||
|
gen, asm := New().(*digest), New().(*digest)
|
||||||
|
buf := make([]byte, BlockSize*20) // arbitrary factor
|
||||||
|
rand.Read(buf)
|
||||||
|
blockGeneric(gen, buf)
|
||||||
|
block(asm, buf)
|
||||||
|
if *gen != *asm {
|
||||||
|
t.Error("block and blockGeneric resulted in different states")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var bench = New()
|
var bench = New()
|
||||||
var buf = make([]byte, 8192)
|
var buf = make([]byte, 8192)
|
||||||
|
|
||||||
|
@ -2,12 +2,6 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build !amd64,!386,!arm
|
|
||||||
|
|
||||||
// SHA1 block step.
|
|
||||||
// In its own file so that a faster assembly or C version
|
|
||||||
// can be substituted easily.
|
|
||||||
|
|
||||||
package sha1
|
package sha1
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -17,7 +11,9 @@ const (
|
|||||||
_K3 = 0xCA62C1D6
|
_K3 = 0xCA62C1D6
|
||||||
)
|
)
|
||||||
|
|
||||||
func block(dig *digest, p []byte) {
|
// blockGeneric is a portable, pure Go version of the SHA1 block step.
|
||||||
|
// It's used by sha1block_generic.go and tests.
|
||||||
|
func blockGeneric(dig *digest, p []byte) {
|
||||||
var w [16]uint32
|
var w [16]uint32
|
||||||
|
|
||||||
h0, h1, h2, h3, h4 := dig.h[0], dig.h[1], dig.h[2], dig.h[3], dig.h[4]
|
h0, h1, h2, h3, h4 := dig.h[0], dig.h[1], dig.h[2], dig.h[3], dig.h[4]
|
||||||
|
9
src/pkg/crypto/sha1/sha1block_generic.go
Normal file
9
src/pkg/crypto/sha1/sha1block_generic.go
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
// Copyright 2014 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.
|
||||||
|
|
||||||
|
// +build !amd64,!386,!arm
|
||||||
|
|
||||||
|
package sha1
|
||||||
|
|
||||||
|
var block = blockGeneric
|
Loading…
Reference in New Issue
Block a user