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

58 lines
1.5 KiB
Plaintext

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