| package org.bouncycastle.crypto.params; |
| |
| import org.bouncycastle.math.ec.ECPoint; |
| |
| public class ECPublicKeyParameters |
| extends ECKeyParameters |
| { |
| private final ECPoint Q; |
| |
| public ECPublicKeyParameters( |
| ECPoint Q, |
| ECDomainParameters params) |
| { |
| super(false, params); |
| |
| 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() |
| { |
| return Q; |
| } |
| } |