Skip to content

Commit 23ac783

Browse files
DavidHuiekaralabe
authored andcommitted
ecies: drop randomness parameter from PrivateKey.Decrypt (#16374)
The parameter `rand` is unused in `PrivateKey.Decrypt`. Decryption in the ECIES encryption scheme is deterministic, so randomness isn't needed.
1 parent e9a1d8d commit 23ac783

File tree

5 files changed

+17
-17
lines changed

5 files changed

+17
-17
lines changed

crypto/ecies/ecies.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ func symEncrypt(rand io.Reader, params *ECIESParams, key, m []byte) (ct []byte,
230230

231231
// symDecrypt carries out CTR decryption using the block cipher specified in
232232
// the parameters
233-
func symDecrypt(rand io.Reader, params *ECIESParams, key, ct []byte) (m []byte, err error) {
233+
func symDecrypt(params *ECIESParams, key, ct []byte) (m []byte, err error) {
234234
c, err := params.Cipher(key)
235235
if err != nil {
236236
return
@@ -292,7 +292,7 @@ func Encrypt(rand io.Reader, pub *PublicKey, m, s1, s2 []byte) (ct []byte, err e
292292
}
293293

294294
// Decrypt decrypts an ECIES ciphertext.
295-
func (prv *PrivateKey) Decrypt(rand io.Reader, c, s1, s2 []byte) (m []byte, err error) {
295+
func (prv *PrivateKey) Decrypt(c, s1, s2 []byte) (m []byte, err error) {
296296
if len(c) == 0 {
297297
return nil, ErrInvalidMessage
298298
}
@@ -361,6 +361,6 @@ func (prv *PrivateKey) Decrypt(rand io.Reader, c, s1, s2 []byte) (m []byte, err
361361
return
362362
}
363363

364-
m, err = symDecrypt(rand, params, Ke, c[mStart:mEnd])
364+
m, err = symDecrypt(params, Ke, c[mStart:mEnd])
365365
return
366366
}

crypto/ecies/ecies_test.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ func TestEncryptDecrypt(t *testing.T) {
270270
t.FailNow()
271271
}
272272

273-
pt, err := prv2.Decrypt(rand.Reader, ct, nil, nil)
273+
pt, err := prv2.Decrypt(ct, nil, nil)
274274
if err != nil {
275275
fmt.Println(err.Error())
276276
t.FailNow()
@@ -281,7 +281,7 @@ func TestEncryptDecrypt(t *testing.T) {
281281
t.FailNow()
282282
}
283283

284-
_, err = prv1.Decrypt(rand.Reader, ct, nil, nil)
284+
_, err = prv1.Decrypt(ct, nil, nil)
285285
if err == nil {
286286
fmt.Println("ecies: encryption should not have succeeded")
287287
t.FailNow()
@@ -301,7 +301,7 @@ func TestDecryptShared2(t *testing.T) {
301301
}
302302

303303
// Check that decrypting with correct shared data works.
304-
pt, err := prv.Decrypt(rand.Reader, ct, nil, shared2)
304+
pt, err := prv.Decrypt(ct, nil, shared2)
305305
if err != nil {
306306
t.Fatal(err)
307307
}
@@ -310,10 +310,10 @@ func TestDecryptShared2(t *testing.T) {
310310
}
311311

312312
// Decrypting without shared data or incorrect shared data fails.
313-
if _, err = prv.Decrypt(rand.Reader, ct, nil, nil); err == nil {
313+
if _, err = prv.Decrypt(ct, nil, nil); err == nil {
314314
t.Fatal("ecies: decrypting without shared data didn't fail")
315315
}
316-
if _, err = prv.Decrypt(rand.Reader, ct, nil, []byte("garbage")); err == nil {
316+
if _, err = prv.Decrypt(ct, nil, []byte("garbage")); err == nil {
317317
t.Fatal("ecies: decrypting with incorrect shared data didn't fail")
318318
}
319319
}
@@ -381,7 +381,7 @@ func testParamSelection(t *testing.T, c testCase) {
381381
t.FailNow()
382382
}
383383

384-
pt, err := prv2.Decrypt(rand.Reader, ct, nil, nil)
384+
pt, err := prv2.Decrypt(ct, nil, nil)
385385
if err != nil {
386386
fmt.Printf("%s (%s)\n", err.Error(), c.Name)
387387
t.FailNow()
@@ -393,7 +393,7 @@ func testParamSelection(t *testing.T, c testCase) {
393393
t.FailNow()
394394
}
395395

396-
_, err = prv1.Decrypt(rand.Reader, ct, nil, nil)
396+
_, err = prv1.Decrypt(ct, nil, nil)
397397
if err == nil {
398398
fmt.Printf("ecies: encryption should not have succeeded (%s)\n",
399399
c.Name)
@@ -422,7 +422,7 @@ func TestBasicKeyValidation(t *testing.T) {
422422

423423
for _, b := range badBytes {
424424
ct[0] = b
425-
_, err := prv.Decrypt(rand.Reader, ct, nil, nil)
425+
_, err := prv.Decrypt(ct, nil, nil)
426426
if err != ErrInvalidPublicKey {
427427
fmt.Println("ecies: validated an invalid key")
428428
t.FailNow()
@@ -441,14 +441,14 @@ func TestBox(t *testing.T) {
441441
t.Fatal(err)
442442
}
443443

444-
pt, err := prv2.Decrypt(rand.Reader, ct, nil, nil)
444+
pt, err := prv2.Decrypt(ct, nil, nil)
445445
if err != nil {
446446
t.Fatal(err)
447447
}
448448
if !bytes.Equal(pt, message) {
449449
t.Fatal("ecies: plaintext doesn't match message")
450450
}
451-
if _, err = prv1.Decrypt(rand.Reader, ct, nil, nil); err == nil {
451+
if _, err = prv1.Decrypt(ct, nil, nil); err == nil {
452452
t.Fatal("ecies: encryption should not have succeeded")
453453
}
454454
}

p2p/rlpx.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,7 @@ func readHandshakeMsg(msg plainDecoder, plainSize int, prv *ecdsa.PrivateKey, r
491491
}
492492
// Attempt decoding pre-EIP-8 "plain" format.
493493
key := ecies.ImportECDSA(prv)
494-
if dec, err := key.Decrypt(rand.Reader, buf, nil, nil); err == nil {
494+
if dec, err := key.Decrypt(buf, nil, nil); err == nil {
495495
msg.decodePlain(dec)
496496
return buf, nil
497497
}
@@ -505,7 +505,7 @@ func readHandshakeMsg(msg plainDecoder, plainSize int, prv *ecdsa.PrivateKey, r
505505
if _, err := io.ReadFull(r, buf[plainSize:]); err != nil {
506506
return buf, err
507507
}
508-
dec, err := key.Decrypt(rand.Reader, buf[2:], nil, prefix)
508+
dec, err := key.Decrypt(buf[2:], nil, prefix)
509509
if err != nil {
510510
return buf, err
511511
}

whisper/whisperv5/message.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ func (msg *ReceivedMessage) decryptSymmetric(key []byte, nonce []byte) error {
277277

278278
// decryptAsymmetric decrypts an encrypted payload with a private key.
279279
func (msg *ReceivedMessage) decryptAsymmetric(key *ecdsa.PrivateKey) error {
280-
decrypted, err := ecies.ImportECDSA(key).Decrypt(crand.Reader, msg.Raw, nil, nil)
280+
decrypted, err := ecies.ImportECDSA(key).Decrypt(msg.Raw, nil, nil)
281281
if err == nil {
282282
msg.Raw = decrypted
283283
}

whisper/whisperv6/message.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ func (msg *ReceivedMessage) decryptSymmetric(key []byte) error {
289289

290290
// decryptAsymmetric decrypts an encrypted payload with a private key.
291291
func (msg *ReceivedMessage) decryptAsymmetric(key *ecdsa.PrivateKey) error {
292-
decrypted, err := ecies.ImportECDSA(key).Decrypt(crand.Reader, msg.Raw, nil, nil)
292+
decrypted, err := ecies.ImportECDSA(key).Decrypt(msg.Raw, nil, nil)
293293
if err == nil {
294294
msg.Raw = decrypted
295295
}

0 commit comments

Comments
 (0)