Files
EWF/library/crypto/eel/ec/ec_curve_f2m.e
jvelilla c9343688f3 Added eel and eapml in EWF libraries.
Removed them from gitmodule
2011-10-27 08:29:01 -03:00

420 lines
7.2 KiB
Plaintext

note
description: "Objects that ..."
author: "Colin LeMahieu"
date: "$Date$"
revision: "$Revision$"
quote: "When the government's boot is on your throat, whether it is a left boot or a right boot is of no consequence. - Gary Lloyd"
class
EC_CURVE_F2M
inherit
EC_CURVE
redefine
is_equal,
a,
b
end
STANDARD_CURVES
undefine
is_equal
end
F2M_REPRESENTATIONS
undefine
is_equal
end
create
make,
make_sec_t113r1,
make_sec_t113r2,
make_sec_t131r1,
make_sec_t131r2,
make_sec_t163k1,
make_sec_t163r1,
make_sec_t163r2,
make_sec_t193r1,
make_sec_t193r2,
make_sec_t233k1,
make_sec_t233r1,
make_sec_t239k1,
make_sec_t283k1,
make_sec_t283r1,
make_sec_t409k1,
make_sec_t409r1,
make_sec_t571k1,
make_sec_t571r1,
make_k163,
make_k233,
make_k283,
make_k409,
make_k571,
make_b163,
make_b233,
make_b283,
make_b409,
make_b571
feature -- SEC curves
make_sec_t113r1
do
m := sec_t113r1_m
k1 := sec_t113r1_k1
k2 := sec_t113r1_k2
k3 := sec_t113r1_k3
n := sec_t113r1_r
create a.make (sec_t113r1_a)
create b.make (sec_t113r1_b)
end
make_sec_t113r2
do
m := sec_t113r2_m
k1 := sec_t113r2_k1
k2 := sec_t113r2_k2
k3 := sec_t113r2_k3
n := sec_t113r2_r
create a.make (sec_t113r2_a)
create b.make (sec_t113r2_b)
end
make_sec_t131r1
do
m := sec_t131r1_m
k1 := sec_t131r1_k1
k2 := sec_t131r1_k2
k3 := sec_t131r1_k3
n := sec_t131r1_r
create a.make (sec_t131r1_a)
create b.make (sec_t131r1_b)
end
make_sec_t131r2
do
m := sec_t131r2_m
k1 := sec_t131r2_k1
k2 := sec_t131r2_k2
k3 := sec_t131r2_k3
n := sec_t131r2_r
create a.make (sec_t131r2_a)
create b.make (sec_t131r2_b)
end
make_sec_t163k1
do
m := sec_t163k1_m
k1 := sec_t163k1_k1
k2 := sec_t163k1_k2
k3 := sec_t163k1_k3
n := sec_t163k1_r
create a.make (sec_t163k1_a)
create b.make (sec_t163k1_b)
end
make_sec_t163r1
do
m := sec_t163r1_m
k1 := sec_t163r1_k1
k2 := sec_t163r1_k2
k3 := sec_t163r1_k3
n := sec_t163r1_r
create a.make (sec_t163r1_a)
create b.make (sec_t163r1_b)
end
make_sec_t163r2
do
m := sec_t163r2_m
k1 := sec_t163r2_k1
k2 := sec_t163r2_k2
k3 := sec_t163r2_k3
n := sec_t163r1_r
create a.make (sec_t163r2_a)
create b.make (sec_t163r2_b)
end
make_sec_t193r1
do
m := sec_t193r1_m
k1 := sec_t193r1_k1
k2 := sec_t193r1_k2
k3 := sec_t193r1_k3
n := sec_t193r1_r
create a.make (sec_t193r1_a)
create b.make (sec_t193r1_b)
end
make_sec_t193r2
do
m := sec_t193r2_m
k1 := sec_t193r2_k1
k2 := sec_t193r2_k2
k3 := sec_t193r2_k3
n := sec_t193r2_r
create a.make (sec_t193r2_a)
create b.make (sec_t193r2_b)
end
make_sec_t233k1
do
m := sec_t233k1_m
k1 := sec_t233k1_k1
k2 := sec_t233k1_k2
k3 := sec_t233k1_k3
n := sec_t233k1_r
create a.make (sec_t233k1_a)
create b.make (sec_t233k1_b)
end
make_sec_t233r1
do
m := sec_t233r1_m
k1 := sec_t233r1_k1
k2 := sec_t233r1_k2
k3 := sec_t233r1_k3
n := sec_t233r1_r
create a.make (sec_t233r1_a)
create b.make (sec_t233r1_b)
end
make_sec_t239k1
do
m := sec_t239k1_m
k1 := sec_t239k1_k1
k2 := sec_t239k1_k2
k3 := sec_t239k1_k3
n := sec_t239k1_r
create a.make (sec_t239k1_a)
create b.make (sec_t239k1_b)
end
make_sec_t283k1
do
m := sec_t283k1_m
k1 := sec_t283k1_k1
k2 := sec_t283k1_k2
k3 := sec_t283k1_k3
n := sec_t283k1_r
create a.make (sec_t283k1_a)
create b.make (sec_t283k1_b)
end
make_sec_t283r1
do
m := sec_t283r1_m
k1 := sec_t283r1_k1
k2 := sec_t283r1_k2
k3 := sec_t283r1_k3
n := sec_t283r1_r
create a.make (sec_t283r1_a)
create b.make (sec_t283r1_b)
end
make_sec_t409k1
do
m := sec_t409k1_m
k1 := sec_t409k1_k1
k2 := sec_t409k1_k2
k3 := sec_t409k1_k3
n := sec_t409k1_r
create a.make (sec_t409k1_a)
create b.make (sec_t409k1_b)
end
make_sec_t409r1
do
m := sec_t409r1_m
k1 := sec_t409r1_k1
k2 := sec_t409r1_k2
k3 := sec_t409r1_k3
n := sec_t409r1_r
create a.make (sec_t409r1_a)
create b.make (sec_t409r1_b)
end
make_sec_t571k1
do
m := sec_t571k1_m
k1 := sec_t571k1_k1
k2 := sec_t571k1_k2
k3 := sec_t571k1_k3
n := sec_t571k1_r
create a.make (sec_t571k1_a)
create b.make (sec_t571k1_b)
end
make_sec_t571r1
do
m := sec_t571r1_m
k1 := sec_t571r1_k1
k2 := sec_t571r1_k2
k3 := sec_t571r1_k3
n := sec_t571r1_r
create a.make (sec_t571r1_a)
create b.make (sec_t571r1_b)
end
feature -- FIPS curves
make_k163
do
m := k163_m
k1 := k163_k1
k2 := k163_k2
k3 := k163_k3
n := k163_r
create a.make (k163_a)
create b.make (k163_b)
end
make_k233
do
m := k233_m
k1 := k233_k1
k2 := k233_k2
k3 := k233_k3
n := k233_r
create a.make (k233_a)
create b.make (k233_b)
end
make_k283
do
m := k283_m
k1 := k283_k1
k2 := k283_k2
k3 := k283_k3
n := k283_r
create a.make (k283_a)
create b.make (k283_b)
end
make_k409
do
m := k409_m
k1 := k409_k1
k2 := k409_k2
k3 := k409_k3
n := k409_r
create a.make (k409_a)
create b.make (k409_b)
end
make_k571
do
m := k571_m
k1 := k571_k1
k2 := k571_k2
k3 := k571_k3
n := k571_r
create a.make (k571_a)
create b.make (k571_b)
end
make_b163
do
m := b163_m
k1 := b163_k1
k2 := b163_k2
k3 := b163_k3
n := b163_r
create a.make (b163_a)
create b.make (b163_b)
end
make_b233
do
m := b233_m
k1 := b233_k1
k2 := b233_k2
k3 := b233_k3
n := b233_r
create a.make (b233_a)
create b.make (b233_b)
end
make_b283
do
m := b283_m
k1 := b283_k1
k2 := b283_k2
k3 := b283_k3
n := b283_r
create a.make (b283_a)
create b.make (b283_b)
end
make_b409
do
m := b409_m
k1 := b409_k1
k2 := b409_k2
k3 := b409_k3
n := b409_r
create a.make (b409_a)
create b.make (b409_b)
end
make_b571
do
m := b571_m
k1 := b571_k1
k2 := b571_k2
k3 := b571_k3
n := b571_r
create a.make (b571_a)
create b.make (b571_b)
end
make (m_new: INTEGER_32 k1_new: INTEGER_32 k2_new: INTEGER_32 k3_new: INTEGER_32 a_a: EC_FIELD_ELEMENT_F2M b_a: EC_FIELD_ELEMENT_F2M n_a: INTEGER_X)
require
K1_greater_Than_zero: k1_new > 0
k2_and_k3_equal_zero: (k2_new = 0) implies (k3_new = 0)
k2_greater_than_k1: (k2_new /= 0) implies (k2_new > k1_new)
k3_greater_than_k2: (k3_new /= 0) implies (k3_new > k2_new)
do
m := m_new
k1 := k1_new
k2 := k2_new
k3 := k3_new
a := a_a
b := b_a
n := n_a
end
feature -- F2M components
m: INTEGER_32
n: INTEGER_X
k1: INTEGER_32
k2: INTEGER_32
k3: INTEGER_32
feature
representation: INTEGER
do
if
k2 = 0
then
result := TPB
else
result := PPB
end
end
is_equal (other: like current): BOOLEAN
do
Result := (m = other.m) and (k1 = other.k1) and (k2 = other.k2) and (k3 = other.k3) and a.x ~ other.a.x and b.x ~ other.b.x
end
a: EC_FIELD_ELEMENT_F2M
b: EC_FIELD_ELEMENT_F2M
invariant
-- k2_smaller: k2 = 0 implies k2 < k3
-- k2_zero: k2 = 0 implies k2 /= 0
K1_greater_Than_zero: k1 > 0
k2_and_k3_equal_zero: (k2 = 0) implies (k3 = 0)
k2_greater_than_k1: (k2 /= 0) implies (k2 > k1)
k3_greater_than_k2: (k3 /= 0) implies (k3 > k2)
end