30 lines
937 B
Python
30 lines
937 B
Python
# built-in dependencies
|
|
from abc import ABC
|
|
from typing import Tuple, List, Optional
|
|
|
|
|
|
# pylint: disable=too-few-public-methods
|
|
class WeierstrassInterface(ABC):
|
|
p: int # modulo
|
|
a: int # equation parameters
|
|
b: int # equation parameters
|
|
G: Tuple[int, int] # base point G
|
|
n: Optional[int] # elliptic curve order (number of points on the curve)
|
|
|
|
|
|
class TwistedEdwardsInterface(ABC):
|
|
p: int # modulo
|
|
a: int # equation parameters
|
|
d: int # equation parameters
|
|
G: Tuple[int, int] # base point G
|
|
n: Optional[int] # elliptic curve order (number of points on the curve)
|
|
|
|
|
|
class KoblitzInterface(ABC):
|
|
m: int # degree of the irreducible polynomial
|
|
coefficients: List[int] # coefficients of the polynomial
|
|
a: int # equation parameters
|
|
b: int # equation parameters
|
|
G: Tuple[int, int] # base point G
|
|
n: Optional[int] # elliptic curve order (number of points on the curve)
|