note description: "Objects that ..." author: "Colin LeMahieu" date: "$Date$" revision: "$Revision$" quote: "Every decent man is ashamed of the government he lives under. - H.L. Mencken" class EC_CURVE_FP inherit EC_CONSTANTS undefine is_equal end EC_CURVE redefine is_equal, a, b end STANDARD_CURVES undefine is_equal end create make_q_a_b, make_sec_p112r1, make_sec_p112r2, make_sec_p128r1, make_sec_p128r2, make_sec_p160k1, make_sec_p160r1, make_sec_p160r2, make_sec_p192k1, make_sec_p192r1, make_sec_p224k1, make_sec_p224r1, make_sec_p256k1, make_sec_p256r1, make_sec_p384r1, make_sec_p521r1, make_p192, make_p224, make_p256, make_p384, make_p521 create {EC_FIELD_ELEMENT_FP} make_zero feature {EC_FIELD_ELEMENT_FP} make_zero do create q.default_create create a.make_zero create b.make_zero end feature make_q_a_b (q_new: INTEGER_X a_a: INTEGER_X b_a: INTEGER_X) -- Create an EC over FP from q, a, and b do q := q_new create a.make_p_x (a_a) create b.make_p_x (b_a) end feature -- SEC curves make_sec_p112r1 do q := sec_p112r1_p create a.make_p_x (sec_p112r1_a) create b.make_p_x (sec_p112r1_b) end make_sec_p112r2 do q := sec_p112r2_p create a.make_p_x (sec_p112r2_a) create b.make_p_x (sec_p112r2_b) end make_sec_p128r1 do q := sec_p128r1_p create a.make_p_x (sec_p128r1_a) create b.make_p_x (sec_p128r1_b) end make_sec_p128r2 do q := sec_p128r2_p create a.make_p_x (sec_p128r2_a) create b.make_p_x (sec_p128r2_b) end make_sec_p160k1 do q := sec_p160k1_p create a.make_p_x (sec_p160k1_a) create b.make_p_x (sec_p160k1_b) end make_sec_p160r1 do q := sec_p160r1_p create a.make_p_x (sec_p160r1_a) create b.make_p_x (sec_p160r1_b) end make_sec_p160r2 do q := sec_p160r2_p create a.make_p_x (sec_p160r2_a) create b.make_p_x (sec_p160r2_b) end make_sec_p192k1 do q := sec_p192k1_p create a.make_p_x (sec_p192k1_a) create b.make_p_x (sec_p192k1_b) end make_sec_p192r1 do q := sec_p192r1_p create a.make_p_x (sec_p192r1_a) create b.make_p_x (sec_p192r1_b) end make_sec_p224k1 do q := sec_p224k1_p create a.make_p_x (sec_p224k1_a) create b.make_p_x (sec_p224k1_b) end make_sec_p224r1 do q := sec_p224r1_p create a.make_p_x (sec_p224r1_a) create b.make_p_x (sec_p224r1_b) end make_sec_p256k1 do q := sec_p256k1_p create a.make_p_x (sec_p256k1_a) create b.make_p_x (sec_p256k1_b) end make_sec_p256r1 do q := sec_p256r1_p create a.make_p_x (sec_p256r1_a) create b.make_p_x (sec_p256r1_b) end make_sec_p384r1 do q := sec_p384r1_p create a.make_p_x (sec_p384r1_a) create b.make_p_x (sec_p384r1_b) end make_sec_p521r1 do q := sec_p521r1_p create a.make_p_x (sec_p521r1_a) create b.make_p_x (sec_p521r1_b) end feature make_p192 do q := p192_p create a.make_p_x (p192_a) create b.make_p_x (p192_b) end make_p224 do q := p224_p create a.make_p_x (p224_a) create b.make_p_x (p224_b) end make_p256 do q := p256_p create a.make_p_x (p256_a) create b.make_p_x (p256_b) end make_p384 do q := p384_p create a.make_p_x (p384_a) create b.make_p_x (p384_b) end make_p521 do q := p521_p create a.make_p_x (p521_a) create b.make_p_x (p521_b) end feature q: INTEGER_X a: EC_FIELD_ELEMENT_FP attribute create result.make_zero end b: EC_FIELD_ELEMENT_FP attribute create result.make_zero end is_equal (other: like current): BOOLEAN -- Is current equal to other do result := q ~ other.q and a.x ~ other.a.x and b.x ~ other.b.x ensure then q /~ other.q implies not result end end