'generator is the Point that generates the group,
point is the Point that defines the public key.'

def __init__(self, generator, point):

    self.curve = generator.curve()
    self.generator = generator
    self.point = point
    n = generator.order()
    if (not n):
        raise RuntimeError('Generator    point    must    have    order.')
    if (not ((n * point) == ellipticcurve.INFINITY)):
        raise RuntimeError('Generator    point    order    is    bad.')
    if ((point.x() < 0) or (n <= point.x()) or (point.y() < 0) or (n <= point.y())):
        raise RuntimeError('Generator    point    has    x    or    y    out    of    range.')
