basic_shacal.hpp
Go to the documentation of this file.
98 inline static block_type encrypt_block(const schedule_type &schedule, const block_type &plaintext) {
107 word_type a = plaintext[0], b = plaintext[1], c = plaintext[2], d = plaintext[3], e = plaintext[4];
133 printf(word_bits == 32 ? "t = %2d: %.8x %.8x %.8x %.8x %.8x\n" : "t = %2d: %.16lx %.16lx %.16lx %.16lx %.16lx\n", \
140 word_type T = policy_type::rotl<5>(a) + policy_type::f(t, b, c, d) + e + policy_type::constants[t] + schedule[t]; \
176 inline static block_type decrypt_block(const schedule_type &schedule, const block_type &ciphertext) {
#define CRYPTO3_BLOCK_SHACAL1_TRANSFORM
Definition: basic_shacal.hpp:59
block_type encrypt(const block_type &plaintext) const
Definition: basic_shacal.hpp:87
constexpr static const std::size_t word_bits
Definition: basic_shacal.hpp:64
policy_type::block_type block_type
Definition: basic_shacal.hpp:73
constexpr static const std::size_t key_bits
Definition: basic_shacal.hpp:67
constexpr static const std::size_t block_words
Definition: basic_shacal.hpp:72
policy_type::word_type word_type
Definition: basic_shacal.hpp:65
virtual ~basic_shacal()
Definition: basic_shacal.hpp:82
constexpr static const std::size_t key_words
Definition: basic_shacal.hpp:68
block_type decrypt(const block_type &ciphertext) const
Definition: basic_shacal.hpp:91
policy_type::schedule_type schedule_type
Definition: basic_shacal.hpp:76
basic_shacal(const schedule_type &s)
Definition: basic_shacal.hpp:79
constexpr static const std::size_t block_bits
Definition: basic_shacal.hpp:71
policy_type::key_type key_type
Definition: basic_shacal.hpp:69
detail::shacal_policy policy_type
Definition: basic_shacal.hpp:61
constexpr static const std::size_t rounds
Definition: basic_shacal.hpp:75
boost::mpl::apply< AccumulatorSet, tag::block< Mode > >::type::result_type block(const AccumulatorSet &acc)
Definition: accumulators/block.hpp:259
Definition: pair.hpp:31
static word_type f(unsigned t, word_type x, word_type y, word_type z)
Definition: shacal_functions.hpp:61
Definition: shacal_policy.hpp:37
std::array< word_type, block_words > block_type
Definition: shacal_policy.hpp:41
std::array< word_type, key_words > key_type
Definition: shacal_policy.hpp:45
std::array< word_type, rounds > schedule_type
Definition: shacal_policy.hpp:48
constexpr static const std::size_t block_words
Definition: shacal_policy.hpp:39
constexpr static const std::size_t block_bits
Definition: shacal_policy.hpp:40
constexpr static const std::size_t key_words
Definition: shacal_policy.hpp:43
static const std::size_t rounds
Definition: shacal_policy.hpp:47
constexpr static const std::size_t key_bits
Definition: shacal_policy.hpp:44
constexpr static constants_type const constants
Definition: shacal_policy.hpp:51
constexpr static const std::size_t word_bits
Definition: block/include/nil/crypto3/detail/basic_functions.hpp:41
boost::uint_t< word_bits >::exact word_type
Definition: block/include/nil/crypto3/detail/basic_functions.hpp:42