Overview

ECB - Elliptic Curve Builder - is a generator of ordinary elliptic curves. The curves over GF(P), GF(2N) and GF(3N) are built using the so-called complex multiplication method. Even if, for some reasons, one does not trust the curves produced with ECB, they remain useful in order to test and/or to tune ECC applications.

Properties of a curve created with ECB

• over GF(P)
• equation y2 = x3 + Ax + B;
• the order is U = R*K with R prime and K < R;
• the binary size of the prime modulus P may be any in 30..1536.

• over GF(2N)
• equation y2 + xy = x3 + Ax2 + B;
• the order is U = R*K with R prime and K < R;
• the field degree N may be any in 30..1024;
• the basis of the field GF(2N) may be polynomial or normal.

• over GF(3N)
• equation y2 = x3 + Ax2 + B;
• the order is U = R*K with R prime and K < R;
• the field degree N may be any in 20..768;
• the basis of the field GF(3N) may be polynomial or normal.

Examples of use
 Parameters ---------- P = 81598516213282754316057565591253440513595901172568168425578611827 Discriminant = -261762 Class number = 288 Order U = R*K with R prime -------------------------- U = 81598516213282754316057565591253746600275322583683770317215734358 R = 40799258106641377158028782795626873300137661291841885158607867179 K = 2 U binary size = 216 R binary size = 215 K binary size = 2 MOV condition ------------- (P^e mod R) <> 1 for all e in 1..200 Field GF(P) ----------- P = 81598516213282754316057565591253440513595901172568168425578611827 J-invariant ----------- J = 39478255298952272494102096060286924102007387693101885025049078757 Curve (Y^2 = X^3 + AX + B) of order R*K --------------------------------------- R = 40799258106641377158028782795626873300137661291841885158607867179 K = 2 A = -3 B = 39203769498218508684097448848632530914621544507728641390082973841 Base point G (of order R) ------------------------- X = 43476061527435728668477113342291061267119890801047274484944180244 Y = 43201194101978834386880648267297883678441846149320875637805690899

 Parameters ---------- Field degree = 223 Discriminant = -679351 Class number = 446 Order U = R*K with R prime -------------------------- U = 13479973333575319897333507543509814922446042298823059087804060576348 R = 3369993333393829974333376885877453730611510574705764771951015144087 K = 4 U binary size = 223 R binary size = 221 K binary size = 3 K factorization = 2^2 MOV condition ------------- (2^e mod R) <> 1 for all e in 1..2230 Field GF(2^223) --------------- Field polynomial = [223,33,0] Basis type = Polynomial J-invariant ----------- J = 16#25E76404818D98066A1F96F9BD60B8893ACD62E9AE5D94B4637C1BB0 Curve (Y^2 + XY = X^3 + AX^2 + B) of order R*K ---------------------------------------------- R = 3369993333393829974333376885877453730611510574705764771951015144087 K = 4 A = 16#0 B = 16#7EAB5FFA1647DD122632792F7C0AC1CA30CADB4F03760D39D5992FA3 Base point G (of order R) ------------------------- X = 16#527F4CC2F00C90FF024BA0DDDC3965482ED4880C1C7EB710ADC64B20 Y = 16#226EDB59D9CD873484DDB8098BABAE0C0410ADB8BF1A66FEB0833790

 Parameters ---------- Field degree = 127 Discriminant = -427067 Class number = 127 Order U = R*K with R prime -------------------------- U = 3930061525912861057173624287137094778397646624162832523320429 R = 1310020508637620352391208095712364926132548874720944174440143 K = 3 U binary size = 202 R binary size = 200 K binary size = 2 MOV condition ------------- (3^e mod R) <> 1 for all e in 1..1143 Field GF(3^127) --------------- Field polynomial = [127,-126,-74,-0] Basis type = Normal Field multiplicative identity ----------------------------- I = 9#1444444444444444444444444444444444444444444444444444444444444444 J-invariant ----------- J = 9#2546211278166744651571743412152324532012305117470187544380405724 Curve (Y^2 = X^3 + AX^2 + B) of order R*K ----------------------------------------- R = 1310020508637620352391208095712364926132548874720944174440143 K = 3 A = 9#1444444444444444444444444444444444444444444444444444444444444444 B = 9#2503707542263565644442537604567155105413720456058768265246780510 Base point G (of order R) ------------------------- X = 9#1802145614788372537170244845128202454170083174688378761362676814 Y = 9#0027466558584743801174531346588086778106014481028255255865764138

Changes
v2.0.4 (May 9, 2016)
• Use of the PCLMULQDQ assembler instruction (if available on the CPU). It considerably speeds up computations over GF(2N) fields.
Previous changes