浏览代码

otr: reject private keys with parameters <= 0.

This serves as a basic sanity check and also prevents malformed private
keys from setting P=0 and consuming large amounts of CPU and memory in
the Exp call.

Change-Id: Ife22069b989a7347d8deaaf13030df82ee59e87b
Reviewed-on: https://go-review.googlesource.com/35246
Run-TryBot: Adam Langley <agl@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Adam Langley 9 年之前
父节点
当前提交
88e46b5e95
共有 1 个文件被更改,包括 6 次插入0 次删除
  1. 6 0
      otr/otr.go

+ 6 - 0
otr/otr.go

@@ -1313,6 +1313,12 @@ func (priv *PrivateKey) Import(in []byte) bool {
 		mpis[i] = new(big.Int).SetBytes(mpiBytes)
 	}
 
+	for _, mpi := range mpis {
+		if mpi.Sign() <= 0 {
+			return false
+		}
+	}
+
 	priv.PrivateKey.P = mpis[0]
 	priv.PrivateKey.Q = mpis[1]
 	priv.PrivateKey.G = mpis[2]