Exemple #1
0
def generateRPoints(params):

    curve = ECCurve(params.a, params.b, params.p, params.n, params.gx,
                    params.gy)
    pointG = ECPoint(params.gx, params.gy)
    pointQ = ECPoint(params.qx, params.qy)

    rPoints = []

    for i in range(NUM_R_POINTS):
        a = random.randint(2, curve.n)
        b = random.randint(2, curve.n)

        aG = curve.multiply(a, pointG)
        bQ = curve.multiply(b, pointQ)

        r = curve.add(aG, bQ)

        e = {}
        e['a'] = a
        e['b'] = b
        e['x'] = r.x
        e['y'] = r.y
        rPoints.append(e)

    return rPoints
Exemple #2
0
def getCurveByName(curveName):
    curve = None
    if (curveName == "secp521r1"):
        curve = secp521r1
    if (curveName == "secp256k1"):
        curve = secp256k1
    if (curveName == "ecp131p"):
        curve = ecp131

    if curve == None:
        return None

    return ECCurve(curve.a, curve.b, curve.p, curve.n, curve.x, curve.y)
Exemple #3
0
def createContext(params, name, email):

    ctx = ECDLPContext(name)

    ctx.params = params
    ctx.rPoints = generateRPoints(ctx.params)

    Database.createContext(ctx.name, ctx.email, ctx.params, ctx.rPoints)

    ctx.curve = ECCurve(ctx.params.a, ctx.params.b, ctx.params.p, ctx.params.n,
                        ctx.params.gx, ctx.params.gy)
    ctx.pointG = ECPoint(ctx.params.gx, ctx.params.gy)
    ctx.pointQ = ECPoint(ctx.params.qx, ctx.params.qy)

    ctx.database = Database.getConnection(ctx.name)

    return ctx
Exemple #4
0
def loadContext(name):
    ctx = ECDLPContext(name)

    ctx.database = Database.getConnection(ctx.name)

    ctx.database.open()
    ctx.rPoints = ctx.database.getRPoints()
    ctx.params = ctx.database.getParams()
    ctx.status = ctx.database.getStatus()
    ctx.solution = ctx.database.getSolution()
    ctx.collisions = ctx.database.getNumCollisions()
    ctx.database.close()

    ctx.curve = ECCurve(ctx.params.a, ctx.params.b, ctx.params.p, ctx.params.n,
                        ctx.params.gx, ctx.params.gy)
    ctx.pointG = ECPoint(ctx.params.gx, ctx.params.gy)
    ctx.pointQ = ECPoint(ctx.params.qx, ctx.params.qy)

    return ctx
Exemple #5
0
    def __init__(self, params, rPoints, a1, b1, a2, b2, endPoint):

        # Get params
        self.params = params
        self.a1 = a1
        self.b1 = b1
        self.a2 = a2
        self.b2 = b2
        self.endPoint = endPoint
        self.rPoints = rPoints

        # Set up curve
        self.curve = ECCurve(params.a, params.b, params.p, params.n, params.gx,
                             params.gy)

        # Compute starting points
        g = ECPoint(self.params.gx, self.params.gy)
        q = ECPoint(self.params.qx, self.params.qy)

        self.point1 = self.curve.add(self.curve.multiply(a1, g),
                                     self.curve.multiply(b1, q))
        self.point2 = self.curve.add(self.curve.multiply(a2, g),
                                     self.curve.multiply(b2, q))