Skip to content
This repository was archived by the owner on Feb 17, 2025. It is now read-only.

Commit e25f950

Browse files
committed
More minor stream preprocessing changes #3
1 parent bbca22e commit e25f950

23 files changed

+110
-94
lines changed

include/nil/crypto3/block/algorithm/encrypt.hpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
#ifndef CRYPTO3_BLOCK_ENCRYPT_HPP
1111
#define CRYPTO3_BLOCK_ENCRYPT_HPP
1212

13-
#include <nil/crypto3/block/detail/cipher_value.hpp>
13+
#include <nil/crypto3/block/cipher_value.hpp>
14+
#include <nil/crypto3/block/cipher_state.hpp>
1415

1516
namespace nil {
1617
namespace crypto3 {

include/nil/crypto3/block/aria.hpp

+6-9
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,13 @@ namespace nil {
5858
constexpr static const std::size_t rounds = policy_type::rounds;
5959
typedef typename policy_type::round_constants_type round_constants_type;
6060

61-
template<template<typename, typename> class Mode, std::size_t ValueBits, typename Padding>
61+
template<template<typename, typename> class Mode,
62+
typename StateAccumulator, std::size_t ValueBits,
63+
typename Padding>
6264
struct stream_cipher {
63-
typedef block_state_preprocessor<Mode<aria<Size>, Padding>, stream_endian::little_octet_big_bit, ValueBits,
64-
policy_type::word_bits * 2> type_;
65-
#ifdef CRYPTO3_HASH_NO_HIDE_INTERNAL_TYPES
66-
typedef type_ type;
67-
#else
68-
struct type : type_ {
69-
};
70-
#endif
65+
typedef block_state_preprocessor<Mode<aria<Size>, Padding>, StateAccumulator,
66+
stream_endian::little_octet_big_bit, ValueBits,
67+
policy_type::word_bits * 2> type;
7168
};
7269

7370
public:

include/nil/crypto3/block/blowfish.hpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,13 @@ namespace nil {
4949

5050
constexpr static const std::size_t rounds = policy_type::rounds;
5151

52-
template<template<typename, typename> class Mode, std::size_t ValueBits, typename Padding>
52+
template<template<typename, typename> class Mode,
53+
typename StateAccumulator, std::size_t ValueBits,
54+
typename Padding>
5355
struct stream_cipher {
54-
typedef block_state_preprocessor<Mode<blowfish, Padding>, stream_endian::little_octet_big_bit,
55-
ValueBits, policy_type::word_bits * 2> type_;
56+
typedef block_state_preprocessor<Mode<blowfish, Padding>, StateAccumulator,
57+
stream_endian::little_octet_big_bit, ValueBits,
58+
policy_type::word_bits * 2> type_;
5659
#ifdef CRYPTO3_HASH_NO_HIDE_INTERNAL_TYPES
5760
typedef type_ type;
5861
#else

include/nil/crypto3/block/camellia.hpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,13 @@ namespace nil {
4949

5050
constexpr static const std::size_t rounds = policy_type::rounds;
5151

52-
template<template<typename, typename> class Mode, std::size_t ValueBits, typename Padding>
52+
template<template<typename, typename> class Mode,
53+
typename StateAccumulator, std::size_t ValueBits,
54+
typename Padding>
5355
struct stream_cipher {
54-
typedef block_state_preprocessor<Mode<camellia<Size>, Padding>, stream_endian::little_octet_big_bit,
55-
ValueBits, policy_type::word_bits * 2> type_;
56+
typedef block_state_preprocessor<Mode<camellia<Size>, Padding>, StateAccumulator,
57+
stream_endian::little_octet_big_bit, ValueBits,
58+
policy_type::word_bits * 2> type_;
5659
#ifdef CRYPTO3_HASH_NO_HIDE_INTERNAL_TYPES
5760
typedef type_ type;
5861
#else

include/nil/crypto3/block/cast.hpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,11 @@ namespace nil {
5252
constexpr static const std::size_t key_words = policy_type::key_words;
5353
typedef typename policy_type::key_type key_type;
5454

55-
template<template<typename, typename> class Mode, std::size_t ValueBits, typename Padding>
55+
template<template<typename, typename> class Mode,
56+
typename StateAccumulator, std::size_t ValueBits,
57+
typename Padding>
5658
struct stream_cipher {
57-
typedef block_state_preprocessor<Mode<cast<Version, KeyBits>, Padding>,
59+
typedef block_state_preprocessor<Mode<cast<Version, KeyBits>, Padding>, StateAccumulator,
5860
stream_endian::little_octet_big_bit, ValueBits,
5961
policy_type::word_bits * 2> type_;
6062
#ifdef CRYPTO3_HASH_NO_HIDE_INTERNAL_TYPES

include/nil/crypto3/block/cipher_state.hpp

+5-6
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212

1313
#include <boost/accumulators/framework/accumulator_set.hpp>
1414

15-
#include <nil/crypto3/block/detail/cipher_state_preprocessor.hpp>
16-
#include <nil/crypto3/block/detail/block_state_preprocessor.hpp>
15+
#include <nil/crypto3/block/accumulators/block.hpp>
1716

1817
namespace nil {
1918
namespace crypto3 {
@@ -29,10 +28,10 @@ namespace nil {
2928
* @tparam LengthBits
3029
*/
3130
template<typename ProcessingMode>
32-
struct codec_accumulator {
33-
typedef boost::accumulators::accumulator_set <block::digest<
34-
ProcessingMode::input_block_bits>, boost::accumulators::features<
35-
accumulators::tag::codec < ProcessingMode>>> type;
31+
struct block_accumulator {
32+
typedef boost::accumulators::accumulator_set<block::digest<ProcessingMode::input_block_bits>,
33+
boost::accumulators::features<
34+
accumulators::tag::block<ProcessingMode>>> type;
3635

3736
typedef ProcessingMode mode_type;
3837
};

include/nil/crypto3/block/des.hpp

+5-3
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,12 @@ namespace nil {
5050
constexpr static const std::size_t key_words = policy_type::key_words;
5151
typedef typename policy_type::key_type key_type;
5252

53-
template<template<typename, typename> class Mode, std::size_t ValueBits, typename Padding>
53+
template<template<typename, typename> class Mode,
54+
typename StateAccumulator, std::size_t ValueBits,
55+
typename Padding>
5456
struct stream_cipher {
55-
typedef cipher_state<Mode<des, Padding>, stream_endian::little_octet_big_bit, ValueBits,
56-
policy_type::word_bits * 2> type_;
57+
typedef cipher_state<Mode<des, Padding>, StateAccumulator, stream_endian::little_octet_big_bit,
58+
ValueBits, policy_type::word_bits * 2> type_;
5759
#ifdef CRYPTO3_HASH_NO_HIDE_INTERNAL_TYPES
5860
typedef type_ type;
5961
#else

include/nil/crypto3/block/gost28147.hpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -123,10 +123,13 @@ namespace nil {
123123
constexpr static const std::size_t key_words = policy_type::key_words;
124124
typedef typename policy_type::key_type key_type;
125125

126-
template<template<typename, typename> class Mode, std::size_t ValueBits, typename Padding>
126+
template<template<typename, typename> class Mode,
127+
typename StateAccumulator, std::size_t ValueBits,
128+
typename Padding>
127129
struct stream_cipher {
128-
typedef block_state_preprocessor<Mode<gost_28147_89<ParamsType>, Padding>, stream_endian::little_octet_big_bit,
129-
ValueBits, policy_type::word_bits * 2> type_;
130+
typedef block_state_preprocessor<Mode<gost_28147_89<ParamsType>, Padding>, StateAccumulator,
131+
stream_endian::little_octet_big_bit, ValueBits,
132+
policy_type::word_bits * 2> type_;
130133
#ifdef CRYPTO3_HASH_NO_HIDE_INTERNAL_TYPES
131134
typedef type_ type;
132135
#else

include/nil/crypto3/block/idea.hpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,13 @@ namespace nil {
4444
constexpr static const std::size_t key_words = policy_type::key_words;
4545
typedef typename policy_type::key_type key_type;
4646

47-
template<template<typename, typename> class Mode, std::size_t ValueBits, typename Padding>
47+
template<template<typename, typename> class Mode,
48+
typename StateAccumulator, std::size_t ValueBits,
49+
typename Padding>
4850
struct stream_cipher {
49-
typedef block_state_preprocessor<Mode<idea, Padding>, stream_endian::little_octet_big_bit,
50-
ValueBits, policy_type::word_bits * 2> type_;
51+
typedef block_state_preprocessor<Mode<idea, Padding>, StateAccumulator,
52+
stream_endian::little_octet_big_bit, ValueBits,
53+
policy_type::word_bits * 2> type_;
5154
#ifdef CRYPTO3_HASH_NO_HIDE_INTERNAL_TYPES
5255
typedef type_ type;
5356
#else

include/nil/crypto3/block/kasumi.hpp

+7-4
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,13 @@ namespace nil {
4545
constexpr static const std::size_t key_words = policy_type::key_words;
4646
typedef typename policy_type::key_type key_type;
4747

48-
template<template<typename, typename> class Mode, std::size_t ValueBits, typename Padding>
48+
template<template<typename, typename> class Mode,
49+
typename StateAccumulator, std::size_t ValueBits,
50+
typename Padding>
4951
struct stream_cipher {
50-
typedef block_state_preprocessor<Mode<kasumi, Padding>, stream_endian::little_octet_big_bit, ValueBits,
51-
policy_type::word_bits * 2> type_;
52+
typedef block_state_preprocessor<Mode<kasumi, Padding>, StateAccumulator,
53+
stream_endian::little_octet_big_bit, ValueBits,
54+
policy_type::word_bits * 2> type_;
5255
#ifdef CRYPTO3_HASH_NO_HIDE_INTERNAL_TYPES
5356
typedef type_ type;
5457
#else
@@ -153,7 +156,7 @@ namespace nil {
153156
key_schedule_type key_schedule;
154157

155158
void schedule_key(const key_type &key) {
156-
secure_vector<uint16_t> K(16);
159+
secure_vector <uint16_t> K(16);
157160
for (size_t i = 0; i != rounds; ++i) {
158161
K[i] = load_be<uint16_t>(key, i);
159162
K[i + 8] = K[i] ^ policy_type::round_constants[i];

include/nil/crypto3/block/md4.hpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,13 @@ namespace nil {
5454
constexpr static const std::size_t block_words = policy_type::block_words;
5555
typedef policy_type::block_type block_type;
5656

57-
template<template<typename, typename> class Mode, std::size_t ValueBits, typename Padding>
57+
template<template<typename, typename> class Mode,
58+
typename StateAccumulator, std::size_t ValueBits,
59+
typename Padding>
5860
struct stream_cipher {
59-
typedef block_state_preprocessor<Mode<md4, Padding>, stream_endian::little_octet_big_bit, ValueBits,
60-
policy_type::word_bits * 2> type_;
61+
typedef block_state_preprocessor<Mode<md4, Padding>, StateAccumulator,
62+
stream_endian::little_octet_big_bit, ValueBits,
63+
policy_type::word_bits * 2> type_;
6164
#ifdef CRYPTO3_HASH_NO_HIDE_INTERNAL_TYPES
6265
typedef type_ type;
6366
#else

include/nil/crypto3/block/md5.hpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,13 @@ namespace nil {
5454
constexpr static const std::size_t block_words = policy_type::block_words;
5555
typedef policy_type::block_type block_type;
5656

57-
template<template<typename, typename> class Mode, std::size_t ValueBits, typename Padding>
57+
template<template<typename, typename> class Mode,
58+
typename StateAccumulator, std::size_t ValueBits,
59+
typename Padding>
5860
struct stream_cipher {
59-
typedef block_state_preprocessor<Mode<md5, Padding>, stream_endian::little_octet_big_bit, ValueBits,
60-
policy_type::word_bits * 2> type_;
61+
typedef block_state_preprocessor<Mode<md5, Padding>, StateAccumulator,
62+
stream_endian::little_octet_big_bit, ValueBits,
63+
policy_type::word_bits * 2> type_;
6164
#ifdef CRYPTO3_HASH_NO_HIDE_INTERNAL_TYPES
6265
typedef type_ type;
6366
#else

include/nil/crypto3/block/misty1.hpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,13 @@ namespace nil {
4646
constexpr static const std::size_t key_words = policy_type::key_words;
4747
typedef typename policy_type::key_type key_type;
4848

49-
template<template<typename, typename> class Mode, std::size_t ValueBits, typename Padding>
49+
template<template<typename, typename> class Mode,
50+
typename StateAccumulator, std::size_t ValueBits,
51+
typename Padding>
5052
struct stream_cipher {
51-
typedef block_state_preprocessor<Mode<misty1, Padding>, stream_endian::little_octet_big_bit,
52-
ValueBits, policy_type::word_bits * 2> type_;
53+
typedef block_state_preprocessor<Mode<misty1, Padding>, StateAccumulator,
54+
stream_endian::little_octet_big_bit, ValueBits,
55+
policy_type::word_bits * 2> type_;
5356
#ifdef CRYPTO3_HASH_NO_HIDE_INTERNAL_TYPES
5457
typedef type_ type;
5558
#else

include/nil/crypto3/block/noekeon.hpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,13 @@ namespace nil {
4646
constexpr static const std::size_t key_words = policy_type::key_words;
4747
typedef typename policy_type::key_type key_type;
4848

49-
template<template<typename, typename> class Mode, std::size_t ValueBits, typename Padding>
49+
template<template<typename, typename> class Mode,
50+
typename StateAccumulator, std::size_t ValueBits,
51+
typename Padding>
5052
struct stream_cipher {
51-
typedef block_state_preprocessor<Mode<noekeon, Padding>, stream_endian::little_octet_big_bit, ValueBits,
52-
policy_type::word_bits * 2> type_;
53+
typedef block_state_preprocessor<Mode<noekeon, Padding>, StateAccumulator,
54+
stream_endian::little_octet_big_bit, ValueBits,
55+
policy_type::word_bits * 2> type_;
5356
#ifdef CRYPTO3_HASH_NO_HIDE_INTERNAL_TYPES
5457
typedef type_ type;
5558
#else

include/nil/crypto3/block/rijndael.hpp

+6-4
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ namespace nil {
103103

104104
typedef typename std::conditional<
105105
BlockBits == 128 && (KeyBits == 128 || KeyBits == 192 || KeyBits == 256),
106-
#if defined(CRYPTO3_HAS_RIJNDAEL_NI)
106+
#if defined(CRYPTO3_HAS_RIJNDAEL_NI)
107107
detail::ni_rijndael_impl<KeyBits, BlockBits, policy_type>,
108108
#elif defined(CRYPTO3_HAS_RIJNDAEL_SSSE3)
109109
detail::rijndael_ssse3_impl<KeyBits, BlockBits, policy_type>,
@@ -113,7 +113,7 @@ namespace nil {
113113
detail::rijndael_power8_impl<KeyBits, BlockBits, policy_type>,
114114
#else
115115
detail::rijndael_impl<KeyBits, BlockBits, policy_type>,
116-
#endif
116+
#endif
117117
detail::rijndael_impl<KeyBits, BlockBits, policy_type>>::type impl_type;
118118

119119
public:
@@ -141,9 +141,11 @@ namespace nil {
141141
constexpr static const std::size_t key_schedule_bytes = policy_type::key_schedule_bytes;
142142
typedef typename policy_type::key_schedule_type key_schedule_type;
143143

144-
template<template<typename, typename> class Mode, std::size_t ValueBits, typename Padding>
144+
template<template<typename, typename> class Mode,
145+
typename StateAccumulator, std::size_t ValueBits,
146+
typename Padding>
145147
struct stream_cipher {
146-
typedef cipher_state<Mode<rijndael<KeyBits, BlockBits>, Padding>,
148+
typedef cipher_state<Mode<rijndael<KeyBits, BlockBits>, Padding>, StateAccumulator,
147149
stream_endian::little_octet_big_bit, ValueBits,
148150
policy_type::word_bits * 2> type_;
149151
#ifdef CRYPTO3_HASH_NO_HIDE_INTERNAL_TYPES

include/nil/crypto3/block/seed.hpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,13 @@ namespace nil {
4646
constexpr static const std::size_t key_words = policy_type::key_words;
4747
typedef typename policy_type::key_type key_type;
4848

49-
template<template<typename, typename> class Mode, std::size_t ValueBits, typename Padding>
49+
template<template<typename, typename> class Mode,
50+
typename StateAccumulator, std::size_t ValueBits,
51+
typename Padding>
5052
struct stream_cipher {
51-
typedef block_state_preprocessor<Mode<seed, Padding>, stream_endian::little_octet_big_bit,
52-
ValueBits, policy_type::word_bits * 2> type_;
53+
typedef block_state_preprocessor<Mode<seed, Padding>, StateAccumulator,
54+
stream_endian::little_octet_big_bit, ValueBits,
55+
policy_type::word_bits * 2> type_;
5356
#ifdef CRYPTO3_HASH_NO_HIDE_INTERNAL_TYPES
5457
typedef type_ type;
5558
#else

include/nil/crypto3/block/serpent.hpp

+6-4
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,13 @@ namespace nil {
6565
return decrypt_block(ciphertext);
6666
}
6767

68-
template<template<typename, typename> class Mode, std::size_t ValueBits, typename Padding>
68+
template<template<typename, typename> class Mode,
69+
typename StateAccumulator, std::size_t ValueBits,
70+
typename Padding>
6971
struct stream_cipher {
70-
typedef block_state_preprocessor<Mode<serpent, Padding>,
71-
stream_endian::little_octet_big_bit, ValueBits,
72-
policy_type::word_bits * 2> type_;
72+
typedef block_state_preprocessor<Mode<serpent, Padding>, StateAccumulator,
73+
stream_endian::little_octet_big_bit, ValueBits,
74+
policy_type::word_bits * 2> type_;
7375
#ifdef CRYPTO3_HASH_NO_HIDE_INTERNAL_TYPES
7476
typedef type_ type;
7577
#else

0 commit comments

Comments
 (0)