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

Commit 9178e09

Browse files
committed
Various build issues fixed #3
1 parent 84aa172 commit 9178e09

14 files changed

+152
-159
lines changed

include/nil/crypto3/block/aria.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ namespace nil {
262262

263263
return {
264264
policy_type::x1[policy_type::extract_uint_t<CHAR_BIT>(t0, 0)] ^
265-
policy_type::extract_uint_t<CHAR_BIT>(, schedule[4 * rounds], 0),
265+
policy_type::extract_uint_t<CHAR_BIT>(schedule[4 * rounds], 0),
266266
policy_type::x2[policy_type::extract_uint_t<CHAR_BIT>(t0, 1)] >> 8 ^
267267
policy_type::extract_uint_t<CHAR_BIT>(schedule[4 * rounds], 1),
268268
policy_type::s1[policy_type::extract_uint_t<CHAR_BIT>(t0, 2)] ^

include/nil/crypto3/block/des.hpp

+47-56
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
#ifndef CRYPTO3_DES_H_
1111
#define CRYPTO3_DES_H_
1212

13+
#include <boost/endian/arithmetic.hpp>
14+
1315
#include <nil/crypto3/block/detail/des/des_functions.hpp>
1416

1517
#include <nil/crypto3/block/detail/block_state_preprocessor.hpp>
@@ -89,7 +91,6 @@ namespace nil {
8991
}
9092

9193
inline block_type encrypt_block(const block_type &plaintext) {
92-
block_type out = {0};
9394
uint64_t T = (policy_type::iptab1[plaintext[0]]) | (policy_type::iptab1[plaintext[1]] << 1) |
9495
(policy_type::iptab1[plaintext[2]] << 2) | (policy_type::iptab1[plaintext[3]] << 3) |
9596
(policy_type::iptab1[plaintext[4]] << 4) | (policy_type::iptab1[plaintext[5]] << 5) |
@@ -100,48 +101,42 @@ namespace nil {
100101

101102
policy_type::des_encrypt(L, R, round_key);
102103

103-
T = (policy_type::fptab1[extract_uint_t<CHAR_BIT>(L, 0)] << 5) |
104-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(L, 1)] << 3) |
105-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(L, 2)] << 1) |
106-
(policy_type::fptab2[extract_uint_t<CHAR_BIT>(L, 3)] << 1) |
107-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(R, 0)] << 4) |
108-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(R, 1)] << 2) |
109-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(R, 2)]) |
110-
(policy_type::fptab2[extract_uint_t<CHAR_BIT>(R, 3)]);
111-
T = policy_type::rotl<32>(T);
112-
113-
store_be(T, out.data());
114-
115-
return out;
104+
T = (policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(L, 0)] << 5) |
105+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(L, 1)] << 3) |
106+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(L, 2)] << 1) |
107+
(policy_type::fptab2[policy_type::template extract_uint_t<CHAR_BIT>(L, 3)] << 1) |
108+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(R, 0)] << 4) |
109+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(R, 1)] << 2) |
110+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(R, 2)]) |
111+
(policy_type::fptab2[policy_type::template extract_uint_t<CHAR_BIT>(R, 3)]);
112+
T = policy_type::template rotl<32>(T);
113+
114+
return {boost::endian::big_to_native<typename block_type::value_type>(T)};
116115
}
117116

118117
inline block_type decrypt_block(const block_type &ciphertext) {
119-
block_type out = {0};
120-
121118
uint64_t T = (policy_type::iptab1[ciphertext[0]]) | (policy_type::iptab1[ciphertext[1]] << 1) |
122119
(policy_type::iptab1[ciphertext[2]] << 2) | (policy_type::iptab1[ciphertext[3]] << 3) |
123120
(policy_type::iptab1[ciphertext[4]] << 4) | (policy_type::iptab1[ciphertext[5]] << 5) |
124121
(policy_type::iptab1[ciphertext[6]] << 6) | (policy_type::iptab2[ciphertext[7]]);
125122

126-
word_type L = static_cast<uint32_t>(T >> word_bits);
127-
word_type R = static_cast<uint32_t>(T);
123+
word_type L = static_cast<word_type>(T >> word_bits);
124+
word_type R = static_cast<word_type>(T);
128125

129126
policy_type::des_decrypt(L, R, round_key);
130127

131-
T = (policy_type::fptab1[extract_uint_t<CHAR_BIT>(L, 0)] << 5) |
132-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(L, 1)] << 3) |
133-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(L, 2)] << 1) |
134-
(policy_type::fptab2[extract_uint_t<CHAR_BIT>(L, 3)] << 1) |
135-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(R, 0)] << 4) |
136-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(R, 1)] << 2) |
137-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(R, 2)]) |
138-
(policy_type::fptab2[extract_uint_t<CHAR_BIT>(R, 3)]);
139-
140-
T = policy_type::rotl<32>(T);
128+
T = (policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(L, 0)] << 5) |
129+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(L, 1)] << 3) |
130+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(L, 2)] << 1) |
131+
(policy_type::fptab2[policy_type::template extract_uint_t<CHAR_BIT>(L, 3)] << 1) |
132+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(R, 0)] << 4) |
133+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(R, 1)] << 2) |
134+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(R, 2)]) |
135+
(policy_type::fptab2[policy_type::template extract_uint_t<CHAR_BIT>(R, 3)]);
141136

142-
store_be(T, out.data());
137+
T = policy_type::template rotl<32>(T);
143138

144-
return out;
139+
return {boost::endian::big_to_native<typename block_type::value_type>(T)};
145140
}
146141
};
147142

@@ -211,20 +206,18 @@ namespace nil {
211206
policy_type::des_decrypt(R, L, &round_key[32]);
212207
policy_type::des_encrypt(L, R, &round_key[64]);
213208

214-
T = (policy_type::fptab1[extract_uint_t<CHAR_BIT>(L, 0)] << 5) |
215-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(L, 1)] << 3) |
216-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(L, 2)] << 1) |
217-
(policy_type::fptab2[extract_uint_t<CHAR_BIT>(L, 3)] << 1) |
218-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(R, 0)] << 4) |
219-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(R, 1)] << 2) |
220-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(R, 2)]) |
221-
(policy_type::fptab2[extract_uint_t<CHAR_BIT>(R, 3)]);
222-
223-
T = policy_type::rotl<32>(T);
209+
T = (policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(L, 0)] << 5) |
210+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(L, 1)] << 3) |
211+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(L, 2)] << 1) |
212+
(policy_type::fptab2[policy_type::template extract_uint_t<CHAR_BIT>(L, 3)] << 1) |
213+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(R, 0)] << 4) |
214+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(R, 1)] << 2) |
215+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(R, 2)]) |
216+
(policy_type::fptab2[policy_type::template extract_uint_t<CHAR_BIT>(R, 3)]);
224217

225-
store_be(T, out.data());
218+
T = policy_type::template rotl<32>(T);
226219

227-
return out;
220+
return {boost::endian::big_to_native<typename block_type::value_type>(T)};
228221
}
229222

230223
inline block_type decrypt_block(const block_type &ciphertext) {
@@ -234,27 +227,25 @@ namespace nil {
234227
(policy_type::iptab1[ciphertext[4]] << 4) | (policy_type::iptab1[ciphertext[5]] << 5) |
235228
(policy_type::iptab1[ciphertext[6]] << 6) | (policy_type::iptab2[ciphertext[7]]);
236229

237-
word_type L = static_cast<uint32_t>(T >> word_bits);
238-
word_type R = static_cast<uint32_t>(T);
230+
word_type L = static_cast<word_type>(T >> word_bits);
231+
word_type R = static_cast<word_type>(T);
239232

240233
policy_type::des_decrypt(L, R, &round_key[64]);
241234
policy_type::des_encrypt(R, L, &round_key[32]);
242235
policy_type::des_decrypt(L, R, &round_key[0]);
243236

244-
T = (policy_type::fptab1[extract_uint_t<CHAR_BIT>(L, 0)] << 5) |
245-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(L, 1)] << 3) |
246-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(L, 2)] << 1) |
247-
(policy_type::fptab2[extract_uint_t<CHAR_BIT>(L, 3)] << 1) |
248-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(R, 0)] << 4) |
249-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(R, 1)] << 2) |
250-
(policy_type::fptab1[extract_uint_t<CHAR_BIT>(R, 2)]) |
251-
(policy_type::fptab2[extract_uint_t<CHAR_BIT>(R, 3)]);
252-
253-
T = policy_type::rotl<32>(T);
237+
T = (policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(L, 0)] << 5) |
238+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(L, 1)] << 3) |
239+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(L, 2)] << 1) |
240+
(policy_type::fptab2[policy_type::template extract_uint_t<CHAR_BIT>(L, 3)] << 1) |
241+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(R, 0)] << 4) |
242+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(R, 1)] << 2) |
243+
(policy_type::fptab1[policy_type::template extract_uint_t<CHAR_BIT>(R, 2)]) |
244+
(policy_type::fptab2[policy_type::template extract_uint_t<CHAR_BIT>(R, 3)]);
254245

255-
store_be(T, out.data());
246+
T = policy_type::template rotl<32>(T);
256247

257-
return out;
248+
return {boost::endian::big_to_native<typename block_type::value_type>(T)};
258249
}
259250
};
260251
}

include/nil/crypto3/block/detail/basic_functions.hpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@ namespace nil {
3434
>> (((~position) & (sizeof(Integer) - 1)) << 3));
3535
}
3636

37-
template<std::size_t Size, typename ...Args>
37+
template<std::size_t Size, typename T>
3838
static inline typename boost::uint_t<Size>::exact make_uint_t(
39-
const std::initializer_list<Args...> &args) {
40-
typedef typename std::initializer_list<Args ...>::value_type value_type;
39+
const std::initializer_list<T> &args) {
40+
typedef typename std::initializer_list<T>::value_type value_type;
4141
typename boost::uint_t<Size>::exact result = 0;
4242

4343
#pragma clang loop unroll(full)
@@ -51,7 +51,7 @@ namespace nil {
5151

5252
template<std::size_t Size, typename ...Args>
5353
static inline typename boost::uint_t<Size>::exact make_uint_t(Args... args) {
54-
return make_uint_t({args...});
54+
return basic_functions<WordBits>::template make_uint_t<Size, typename std::tuple_element<0,std::tuple<Args...>>::type>({args...});
5555
}
5656

5757
static inline word_type shr(word_type x, std::size_t n) {

include/nil/crypto3/block/detail/blowfish/blowfish_functions.hpp

+8-10
Original file line numberDiff line numberDiff line change
@@ -12,28 +12,26 @@
1212

1313
#include <nil/crypto3/block/detail/basic_functions.hpp>
1414

15-
#include <nil/crypto3/utilities/loadstore.hpp>
16-
#include <nil/crypto3/utilities/secmem.hpp>
17-
1815
namespace nil {
1916
namespace crypto3 {
2017
namespace block {
2118
namespace detail {
2219
template<std::size_t WordBits>
2320
struct blowfish_functions : public basic_functions<WordBits> {
24-
typedef typename basic_functions<WordBits>::word_type word_type;
21+
typedef basic_functions<WordBits> policy_type;
22+
typedef typename policy_type::word_type word_type;
2523

2624
constexpr static const std::size_t constants_size = 256;
27-
typedef std::array <word_type, constants_size> constants_type;
25+
typedef std::array<word_type, constants_size> constants_type;
2826

2927
constexpr static const std::size_t plain_constants_size = constants_size * 4;
30-
typedef std::array <word_type, plain_constants_size> plain_constants_type;
28+
typedef std::array<word_type, plain_constants_size> plain_constants_type;
3129

3230
inline static word_type bff(word_type X, const plain_constants_type &constants) {
33-
return ((constants[extract_uint_t<CHAR_BIT>(X, 0)] +
34-
constants[256 + extract_uint_t<CHAR_BIT>(X, 1)]) ^
35-
constants[512 + extract_uint_t<CHAR_BIT>(X, 2)]) +
36-
constants[768 + extract_uint_t<CHAR_BIT>(X, 3)];
31+
return ((constants[policy_type::template extract_uint_t<CHAR_BIT>(X, 0)] +
32+
constants[256 + policy_type::template extract_uint_t<CHAR_BIT>(X, 1)]) ^
33+
constants[512 + policy_type::template extract_uint_t<CHAR_BIT>(X, 2)]) +
34+
constants[768 + policy_type::template extract_uint_t<CHAR_BIT>(X, 3)];
3735
}
3836
};
3937
}

include/nil/crypto3/block/detail/camellia/camellia_functions.hpp

-4
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,6 @@
1212

1313
#include <nil/crypto3/block/detail/camellia/basic_camellia_policy.hpp>
1414

15-
#include <nil/crypto3/utilities/loadstore.hpp>
16-
17-
#include <nil/crypto3/utilities/loadstore.hpp>
18-
1915
namespace nil {
2016
namespace crypto3 {
2117
namespace block {

0 commit comments

Comments
 (0)