Skip to content

Commit

Permalink
Replace type variables of curve fields with classes
Browse files Browse the repository at this point in the history
  • Loading branch information
Bhargavasomu committed Mar 4, 2019
1 parent 8bdebb2 commit da5dc6d
Showing 1 changed file with 80 additions and 122 deletions.
202 changes: 80 additions & 122 deletions py_ecc/fields/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,128 +17,86 @@
)


# Create seperate classes for all Fields for each curve

bn128_FQ = type(
"bn128_FQ",
(FQ,),
{
'field_modulus': field_properties["bn128"]["field_modulus"],
}
)
bn128_FQP = type(
"bn128_FQP",
(FQP,),
{
'field_modulus': field_properties["bn128"]["field_modulus"],
}
)
bn128_FQ2 = type(
"bn128_FQ2",
(FQ2,),
{
'field_modulus': field_properties["bn128"]["field_modulus"],
'FQ2_MODULUS_COEFFS': field_properties["bn128"]["fq2_modulus_coeffs"],
}
)
bn128_FQ12 = type(
"bn128_FQ12",
(FQ12,),
{
'field_modulus': field_properties["bn128"]["field_modulus"],
'FQ12_MODULUS_COEFFS': field_properties["bn128"]["fq12_modulus_coeffs"],
}
)
#
# bn128 curve fields
#
class bn128_FQ(FQ):
field_modulus = field_properties["bn128"]["field_modulus"]

bls12_381_FQ = type(
"bls12_381_FQ",
(FQ,),
{
'field_modulus': field_properties["bls12_381"]["field_modulus"],
}
)
bls12_381_FQP = type(
"bls12_381_FQP",
(FQP,),
{
'field_modulus': field_properties["bls12_381"]["field_modulus"],
}
)
bls12_381_FQ2 = type(
"bls12_381_FQ2",
(FQ2,),
{
'field_modulus': field_properties["bls12_381"]["field_modulus"],
'FQ2_MODULUS_COEFFS': field_properties["bls12_381"]["fq2_modulus_coeffs"],
}
)
bls12_381_FQ12 = type(
"bls12_381_FQ12",
(FQ12,),
{
'field_modulus': field_properties["bls12_381"]["field_modulus"],
'FQ12_MODULUS_COEFFS': field_properties["bls12_381"]["fq12_modulus_coeffs"],
}
)

optimized_bn128_FQ = type(
"optimized_bn128_FQ",
(optimized_FQ,),
{
'field_modulus': field_properties["bn128"]["field_modulus"],
}
)
optimized_bn128_FQP = type(
"optimized_bn128_FQP",
(optimized_FQP,),
{
'field_modulus': field_properties["bn128"]["field_modulus"],
}
)
optimized_bn128_FQ2 = type(
"optimized_bn128_FQ2",
(optimized_FQ2,),
{
'field_modulus': field_properties["bn128"]["field_modulus"],
'FQ2_MODULUS_COEFFS': field_properties["bn128"]["fq2_modulus_coeffs"],
}
)
optimized_bn128_FQ12 = type(
"optimized_bn128_FQ12",
(optimized_FQ12,),
{
'field_modulus': field_properties["bn128"]["field_modulus"],
'FQ12_MODULUS_COEFFS': field_properties["bn128"]["fq12_modulus_coeffs"],
}
)
class bn128_FQP(FQP):
field_modulus = field_properties["bn128"]["field_modulus"]

optimized_bls12_381_FQ = type(
"optimized_bls12_381_FQ",
(optimized_FQ,),
{
'field_modulus': field_properties["bls12_381"]["field_modulus"],
}
)
optimized_bls12_381_FQP = type(
"optimized_bls12_381_FQP",
(optimized_FQP,),
{
'field_modulus': field_properties["bls12_381"]["field_modulus"],
}
)
optimized_bls12_381_FQ2 = type(
"optimized_bls12_381_FQ2",
(optimized_FQ2,),
{
'field_modulus': field_properties["bls12_381"]["field_modulus"],
'FQ2_MODULUS_COEFFS': field_properties["bls12_381"]["fq2_modulus_coeffs"],
}
)
optimized_bls12_381_FQ12 = type(
"optimized_bls12_381_FQ12",
(optimized_FQ12,),
{
'field_modulus': field_properties["bls12_381"]["field_modulus"],
'FQ12_MODULUS_COEFFS': field_properties["bls12_381"]["fq12_modulus_coeffs"],
}
)

class bn128_FQ2(FQ2):
field_modulus = field_properties["bn128"]["field_modulus"]
FQ2_MODULUS_COEFFS = field_properties["bn128"]["fq2_modulus_coeffs"]


class bn128_FQ12(FQ12):
field_modulus = field_properties["bn128"]["field_modulus"]
FQ12_MODULUS_COEFFS = field_properties["bn128"]["fq12_modulus_coeffs"]


#
# bls12_381 curve fields
#
class bls12_381_FQ(FQ):
field_modulus = field_properties["bls12_381"]["field_modulus"]


class bls12_381_FQP(FQP):
field_modulus = field_properties["bls12_381"]["field_modulus"]


class bls12_381_FQ2(FQ2):
field_modulus = field_properties["bls12_381"]["field_modulus"]
FQ2_MODULUS_COEFFS = field_properties["bls12_381"]["fq2_modulus_coeffs"]


class bls12_381_FQ12(FQ12):
field_modulus = field_properties["bls12_381"]["field_modulus"]
FQ12_MODULUS_COEFFS = field_properties["bls12_381"]["fq12_modulus_coeffs"]


#
# optimized_bn128 curve fields
#

class optimized_bn128_FQ(optimized_FQ):
field_modulus = field_properties["bn128"]["field_modulus"]


class optimized_bn128_FQP(optimized_FQP):
field_modulus = field_properties["bn128"]["field_modulus"]


class optimized_bn128_FQ2(optimized_FQ2):
field_modulus = field_properties["bn128"]["field_modulus"]
FQ2_MODULUS_COEFFS = field_properties["bn128"]["fq2_modulus_coeffs"]


class optimized_bn128_FQ12(optimized_FQ12):
field_modulus = field_properties["bn128"]["field_modulus"]
FQ12_MODULUS_COEFFS = field_properties["bn128"]["fq12_modulus_coeffs"]


#
# optimized_bls12_381 curve fields
#
class optimized_bls12_381_FQ(optimized_FQ):
field_modulus = field_properties["bls12_381"]["field_modulus"]


class optimized_bls12_381_FQP(optimized_FQP):
field_modulus = field_properties["bls12_381"]["field_modulus"]


class optimized_bls12_381_FQ2(optimized_FQ2):
field_modulus = field_properties["bls12_381"]["field_modulus"]
FQ2_MODULUS_COEFFS = field_properties["bls12_381"]["fq2_modulus_coeffs"]


class optimized_bls12_381_FQ12(optimized_FQ12):
field_modulus = field_properties["bls12_381"]["field_modulus"]
FQ12_MODULUS_COEFFS = field_properties["bls12_381"]["fq12_modulus_coeffs"]

0 comments on commit da5dc6d

Please sign in to comment.