mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
Revert "crypto/ecdsa: make Sign safe with broken entropy sources"
This reverts commit 8d7bf2291b.
Change-Id: Iad2c74a504d64bcf7ca707b00bda29bc796a2ae9
Reviewed-on: https://go-review.googlesource.com/3320
Reviewed-by: Adam Langley <agl@golang.org>
This commit is contained in:
parent
8d7bf2291b
commit
35b8e511c2
2 changed files with 1 additions and 130 deletions
|
|
@ -72,78 +72,6 @@ func TestSignAndVerify(t *testing.T) {
|
|||
testSignAndVerify(t, elliptic.P521(), "p521")
|
||||
}
|
||||
|
||||
func testNonceSafety(t *testing.T, c elliptic.Curve, tag string) {
|
||||
priv, _ := GenerateKey(c, rand.Reader)
|
||||
|
||||
hashed := []byte("testing")
|
||||
r0, s0, err := Sign(zeroReader, priv, hashed)
|
||||
if err != nil {
|
||||
t.Errorf("%s: error signing: %s", tag, err)
|
||||
return
|
||||
}
|
||||
|
||||
hashed = []byte("testing...")
|
||||
r1, s1, err := Sign(zeroReader, priv, hashed)
|
||||
if err != nil {
|
||||
t.Errorf("%s: error signing: %s", tag, err)
|
||||
return
|
||||
}
|
||||
|
||||
if s0.Cmp(s1) == 0 {
|
||||
// This should never happen.
|
||||
t.Errorf("%s: the signatures on two different messages were the same")
|
||||
}
|
||||
|
||||
if r0.Cmp(r1) == 0 {
|
||||
t.Errorf("%s: the nonce used for two diferent messages was the same")
|
||||
}
|
||||
}
|
||||
|
||||
func TestNonceSafety(t *testing.T) {
|
||||
testNonceSafety(t, elliptic.P224(), "p224")
|
||||
if testing.Short() {
|
||||
return
|
||||
}
|
||||
testNonceSafety(t, elliptic.P256(), "p256")
|
||||
testNonceSafety(t, elliptic.P384(), "p384")
|
||||
testNonceSafety(t, elliptic.P521(), "p521")
|
||||
}
|
||||
|
||||
func testINDCCA(t *testing.T, c elliptic.Curve, tag string) {
|
||||
priv, _ := GenerateKey(c, rand.Reader)
|
||||
|
||||
hashed := []byte("testing")
|
||||
r0, s0, err := Sign(rand.Reader, priv, hashed)
|
||||
if err != nil {
|
||||
t.Errorf("%s: error signing: %s", tag, err)
|
||||
return
|
||||
}
|
||||
|
||||
r1, s1, err := Sign(rand.Reader, priv, hashed)
|
||||
if err != nil {
|
||||
t.Errorf("%s: error signing: %s", tag, err)
|
||||
return
|
||||
}
|
||||
|
||||
if s0.Cmp(s1) == 0 {
|
||||
t.Errorf("%s: two signatures of the same message produced the same result")
|
||||
}
|
||||
|
||||
if r0.Cmp(r1) == 0 {
|
||||
t.Errorf("%s: two signatures of the same message produced the same nonce")
|
||||
}
|
||||
}
|
||||
|
||||
func TestINDCCA(t *testing.T) {
|
||||
testINDCCA(t, elliptic.P224(), "p224")
|
||||
if testing.Short() {
|
||||
return
|
||||
}
|
||||
testINDCCA(t, elliptic.P256(), "p256")
|
||||
testINDCCA(t, elliptic.P384(), "p384")
|
||||
testINDCCA(t, elliptic.P521(), "p521")
|
||||
}
|
||||
|
||||
func fromHex(s string) *big.Int {
|
||||
r, ok := new(big.Int).SetString(s, 16)
|
||||
if !ok {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue