Added eel and eapml in EWF libraries.
Removed them from gitmodule
This commit is contained in:
57
library/crypto/eel/modes/ctr_decryption.e
Normal file
57
library/crypto/eel/modes/ctr_decryption.e
Normal file
@@ -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