Moved eel and eapml under the contrib folder.
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
note
|
||||
description: "Counter decryption mode"
|
||||
author: "Colin LeMahieu"
|
||||
date: "$Date$"
|
||||
revision: "$Revision$"
|
||||
quote: "If you have been voting for politicians who promise to give you goodies at someone else's expense, then you have no right to complain when they take your money and give it to someone else, including themselves. - Thomas Sowell (1992)"
|
||||
|
||||
class
|
||||
CTR_DECRYPTION
|
||||
|
||||
inherit
|
||||
ARRAY_FACILITIES
|
||||
|
||||
create
|
||||
make
|
||||
|
||||
feature
|
||||
make (target_a: CTR_TARGET iv: INTEGER_X)
|
||||
do
|
||||
target := target_a
|
||||
create counter
|
||||
counter.copy (iv)
|
||||
max := counter.one.bit_shift_left_value (block_size * 8)
|
||||
create counter_array.make_filled (0, block_size)
|
||||
end
|
||||
|
||||
feature
|
||||
block_size: INTEGER_32
|
||||
do
|
||||
result := target.block_size
|
||||
end
|
||||
|
||||
decrypt_block (in: SPECIAL [NATURAL_8] in_offset: INTEGER_32 out_array: SPECIAL [NATURAL_8] out_offset: INTEGER_32)
|
||||
require
|
||||
ctr_ready
|
||||
in.valid_index (in_offset)
|
||||
in.valid_index (in_offset + block_size - 1)
|
||||
out_array.valid_index (out_offset)
|
||||
out_array.valid_index (out_offset + block_size - 1)
|
||||
do
|
||||
counter.to_fixed_width_byte_array (counter_array, 0, block_size - 1)
|
||||
target.encrypt_block (counter_array, 0, out_array, out_offset)
|
||||
array_xor (out_array, out_offset, in, in_offset, out_array, out_offset, block_size)
|
||||
counter := (counter + counter.one) \\ max
|
||||
end
|
||||
|
||||
ctr_ready: BOOLEAN
|
||||
do
|
||||
result := target.ctr_ready
|
||||
end
|
||||
|
||||
feature {NONE}
|
||||
counter_array: SPECIAL [NATURAL_8]
|
||||
counter: INTEGER_X
|
||||
max: INTEGER_X
|
||||
target: CTR_TARGET
|
||||
end
|
||||
Reference in New Issue
Block a user