aboutsummaryrefslogtreecommitdiff
path: root/test/ec/curves.py
blob: c7453c7acb472685f9a87db11747191d416bb578 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from pyecsca.ec.curve import EllipticCurve
from pyecsca.ec.group import AbelianGroup
from pyecsca.ec.mod import Mod
from pyecsca.ec.model import ShortWeierstrassModel, MontgomeryModel
from pyecsca.ec.point import Point, InfinityPoint


def get_secp128r1():
    prime = 0xfffffffdffffffffffffffffffffffff
    model = ShortWeierstrassModel()
    coords = model.coordinates["projective"]
    curve = EllipticCurve(model, coords, prime, dict(a=0xfffffffdfffffffffffffffffffffffc,
                                                     b=0xe87579c11079f43dd824993c2cee5ed3))
    return AbelianGroup(curve, Point(coords, X=Mod(0x161ff7528b899b2d0c28607ca52c5b86, prime),
                                     Y=Mod(0xcf5ac8395bafeb13c02da292dded7a83, prime),
                                     Z=Mod(1, prime)), InfinityPoint(coords),
                        order=0xfffffffe0000000075a30d1b9038a115, cofactor=1)


def get_curve25519():
    prime = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed
    model = MontgomeryModel()
    coords = model.coordinates["xz"]
    curve = EllipticCurve(model, coords, prime,
                          dict(a=486662, b=1))
    return AbelianGroup(curve, Point(coords, X=Mod(9, prime), Z=Mod(1, prime)),
                        InfinityPoint(coords),
                        order=0x1000000000000000000000000000000014DEF9DEA2F79CD65812631A5CF5D3ED,
                        cofactor=2)