summaryrefslogtreecommitdiff
path: root/bcprov/src/main/java/org/bouncycastle/crypto/params/ECPublicKeyParameters.java
diff options
context:
space:
mode:
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/crypto/params/ECPublicKeyParameters.java')
-rw-r--r--bcprov/src/main/java/org/bouncycastle/crypto/params/ECPublicKeyParameters.java27
1 files changed, 25 insertions, 2 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/crypto/params/ECPublicKeyParameters.java b/bcprov/src/main/java/org/bouncycastle/crypto/params/ECPublicKeyParameters.java
index b6b3fb6d..036bf4ae 100644
--- a/bcprov/src/main/java/org/bouncycastle/crypto/params/ECPublicKeyParameters.java
+++ b/bcprov/src/main/java/org/bouncycastle/crypto/params/ECPublicKeyParameters.java
@@ -5,14 +5,37 @@ import org.bouncycastle.math.ec.ECPoint;
public class ECPublicKeyParameters
extends ECKeyParameters
{
- ECPoint Q;
+ private final ECPoint Q;
public ECPublicKeyParameters(
ECPoint Q,
ECDomainParameters params)
{
super(false, params);
- this.Q = Q.normalize();
+
+ this.Q = validate(Q);
+ }
+
+ private ECPoint validate(ECPoint q)
+ {
+ if (q == null)
+ {
+ throw new IllegalArgumentException("point has null value");
+ }
+
+ if (q.isInfinity())
+ {
+ throw new IllegalArgumentException("point at infinity");
+ }
+
+ q = q.normalize();
+
+ if (!q.isValid())
+ {
+ throw new IllegalArgumentException("point not on curve");
+ }
+
+ return q;
}
public ECPoint getQ()