1
0
mirror of https://github.com/golang/go synced 2024-11-19 14:54:43 -07:00

crypto/rsa: fix blinding when using a null random source.

For testing it can be useful to use a null random source (one which
always returns zero) to remove non-determinism from the tests.
However, when performing RSA blinding, the random blind ends up being
zero and it's hard to reverse a multiplication by zero.

R=rsc
CC=go-dev
http://go/go-review/1018033
This commit is contained in:
Adam Langley 2009-11-03 17:23:50 -08:00
parent b5ab5d4f12
commit bcce2987e0

View File

@ -16,6 +16,7 @@ import (
"os";
)
var bigZero = big.NewInt(0)
var bigOne = big.NewInt(1)
// randomSafePrime returns a number, p, of the given size, such that p and
@ -322,6 +323,9 @@ func decrypt(rand io.Reader, priv *PrivateKey, c *big.Int) (m *big.Int, err os.E
err = err1;
return;
}
if big.CmpInt(r, bigZero) == 0 {
r = bigOne;
}
ir = modInverse(r, priv.N);
bigE := big.NewInt(int64(priv.E));
rpowe := new(big.Int).Exp(r, bigE, priv.N);