@@ -41,7 +41,7 @@ namespace {
41
41
* For efficiency, gf_exp[] has size 2*GF_SIZE, so that a simple
42
42
* multiplication of two numbers can be resolved without calling mod
43
43
*/
44
- const byte GF_EXP[510 ] = {
44
+ const uint8_t GF_EXP[510 ] = {
45
45
0x01 , 0x02 , 0x04 , 0x08 , 0x10 , 0x20 , 0x40 , 0x80 , 0x1D , 0x3A , 0x74 ,
46
46
0xE8 , 0xCD , 0x87 , 0x13 , 0x26 , 0x4C , 0x98 , 0x2D , 0x5A , 0xB4 , 0x75 ,
47
47
0xEA , 0xC9 , 0x8F , 0x03 , 0x06 , 0x0C , 0x18 , 0x30 , 0x60 , 0xC0 , 0x9D ,
@@ -92,7 +92,7 @@ const byte GF_EXP[510] = {
92
92
0xB0 , 0x7D , 0xFA , 0xE9 , 0xCF , 0x83 , 0x1B , 0x36 , 0x6C , 0xD8 , 0xAD ,
93
93
0x47 , 0x8E };
94
94
95
- const byte GF_LOG[256 ] = {
95
+ const uint8_t GF_LOG[256 ] = {
96
96
0xFF , 0x00 , 0x01 , 0x19 , 0x02 , 0x32 , 0x1A , 0xC6 , 0x03 , 0xDF , 0x33 ,
97
97
0xEE , 0x1B , 0x68 , 0xC7 , 0x4B , 0x04 , 0x64 , 0xE0 , 0x0E , 0x34 , 0x8D ,
98
98
0xEF , 0x81 , 0x1C , 0xC1 , 0x69 , 0xF8 , 0xC8 , 0x08 , 0x4C , 0x71 , 0x05 ,
@@ -118,7 +118,7 @@ const byte GF_LOG[256] = {
118
118
0xD5 , 0xE9 , 0xE6 , 0xE7 , 0xAD , 0xE8 , 0x74 , 0xD6 , 0xF4 , 0xEA , 0xA8 ,
119
119
0x50 , 0x58 , 0xAF };
120
120
121
- const byte GF_INVERSE[256 ] = {
121
+ const uint8_t GF_INVERSE[256 ] = {
122
122
0x00 , 0x01 , 0x8E , 0xF4 , 0x47 , 0xA7 , 0x7A , 0xBA , 0xAD , 0x9D , 0xDD ,
123
123
0x98 , 0x3D , 0xAA , 0x5D , 0x96 , 0xD8 , 0x72 , 0xC0 , 0x58 , 0xE0 , 0x3E ,
124
124
0x4C , 0x66 , 0x90 , 0xDE , 0x55 , 0x80 , 0xA0 , 0x83 , 0x4B , 0x2A , 0x6C ,
@@ -144,7 +144,7 @@ const byte GF_INVERSE[256] = {
144
144
0xB5 , 0xEA , 0x03 , 0x8F , 0xD3 , 0xC9 , 0x42 , 0xD4 , 0xE8 , 0x75 , 0x7F ,
145
145
0xFF , 0x7E , 0xFD };
146
146
147
- static byte GF_MUL_TABLE[256 ][256 ];
147
+ static uint8_t GF_MUL_TABLE[256 ][256 ];
148
148
149
149
#if defined (FECPP_USE_SSSE3)
150
150
/*
@@ -154,7 +154,7 @@ static byte GF_MUL_TABLE[256][256];
154
154
* b -> y(bx^4)
155
155
* and the final output is the sum of these two outputs.
156
156
*/
157
- const byte GFTBL[] __attribute__((aligned(16 ))) = {
157
+ const uint8_t GFTBL[] __attribute__((aligned(16 ))) = {
158
158
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
159
159
0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
160
160
0x00 , 0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07 , 0x08 , 0x09 , 0x0a , 0x0b , 0x0c , 0x0d , 0x0e , 0x0f ,
@@ -689,12 +689,12 @@ void init_fec()
689
689
/*
690
690
* addmul() computes z[] = z[] + x[] * y
691
691
*/
692
- void addmul (byte z[], const byte x[], byte y, size_t size)
692
+ void addmul (uint8_t z[], const uint8_t x[], uint8_t y, size_t size)
693
693
{
694
694
if (y == 0 )
695
695
return ;
696
696
697
- const byte * GF_MUL_Y = GF_MUL_TABLE[y];
697
+ const uint8_t * GF_MUL_Y = GF_MUL_TABLE[y];
698
698
699
699
#if defined(FECPP_USE_SSE2) || defined(FECPP_USE_SSSE3)
700
700
@@ -868,14 +868,14 @@ void addmul(byte z[], const byte x[], byte y, size_t size)
868
868
* invert_matrix() takes a K*K matrix and produces its inverse
869
869
* (Gauss-Jordan algorithm, adapted from Numerical Recipes in C)
870
870
*/
871
- void invert_matrix (byte matrix[], size_t K)
871
+ void invert_matrix (uint8_t matrix[], size_t K)
872
872
{
873
873
class pivot_searcher
874
874
{
875
875
public:
876
876
pivot_searcher (size_t K) : ipiv(K) {}
877
877
878
- std::pair<size_t , size_t > operator ()(size_t col, const byte * matrix)
878
+ std::pair<size_t , size_t > operator ()(size_t col, const uint8_t * matrix)
879
879
{
880
880
const size_t K = ipiv.size ();
881
881
@@ -911,7 +911,7 @@ void invert_matrix(byte matrix[], size_t K)
911
911
pivot_searcher pivot_search (K);
912
912
std::vector<size_t > indxc (K);
913
913
std::vector<size_t > indxr (K);
914
- std::vector<byte > id_row (K);
914
+ std::vector<uint8_t > id_row (K);
915
915
916
916
for (size_t col = 0 ; col != K; ++col)
917
917
{
@@ -938,8 +938,8 @@ void invert_matrix(byte matrix[], size_t K)
938
938
939
939
indxr[col] = irow;
940
940
indxc[col] = icol;
941
- byte * pivot_row = &matrix[icol*K];
942
- byte c = pivot_row[icol];
941
+ uint8_t * pivot_row = &matrix[icol*K];
942
+ uint8_t c = pivot_row[icol];
943
943
944
944
if (c == 0 )
945
945
throw std::invalid_argument (" singlar matrix" );
@@ -953,7 +953,7 @@ void invert_matrix(byte matrix[], size_t K)
953
953
c = GF_INVERSE[c];
954
954
pivot_row[icol] = 1 ;
955
955
956
- const byte * mul_c = GF_MUL_TABLE[c];
956
+ const uint8_t * mul_c = GF_MUL_TABLE[c];
957
957
958
958
for (size_t i = 0 ; i != K; ++i)
959
959
pivot_row[i] = mul_c[pivot_row[i]];
@@ -969,7 +969,7 @@ void invert_matrix(byte matrix[], size_t K)
969
969
id_row[icol] = 1 ;
970
970
if (memcmp (pivot_row, &id_row[0 ], K) != 0 )
971
971
{
972
- byte * p = matrix;
972
+ uint8_t * p = matrix;
973
973
974
974
for (size_t i = 0 ; i != K; ++i)
975
975
{
@@ -1007,7 +1007,7 @@ void invert_matrix(byte matrix[], size_t K)
1007
1007
* p = coefficients of the matrix (p_i)
1008
1008
* q = values of the polynomial (known)
1009
1009
*/
1010
- void create_inverted_vdm (byte vdm[], size_t K)
1010
+ void create_inverted_vdm (uint8_t vdm[], size_t K)
1011
1011
{
1012
1012
if (K == 1 ) /* degenerate case, matrix must be p^0 = 1 */
1013
1013
{
@@ -1019,7 +1019,7 @@ void create_inverted_vdm(byte vdm[], size_t K)
1019
1019
* c holds the coefficient of P(x) = Prod (x - p_i), i=0..K-1
1020
1020
* b holds the coefficient for the matrix inversion
1021
1021
*/
1022
- std::vector<byte > b (K), c (K);
1022
+ std::vector<uint8_t > b (K), c (K);
1023
1023
1024
1024
/*
1025
1025
* construct coeffs. recursively. We know c[K] = 1 (implicit)
@@ -1030,7 +1030,7 @@ void create_inverted_vdm(byte vdm[], size_t K)
1030
1030
c[K-1 ] = 0 ; /* really -p(0), but x = -x in GF(2^m) */
1031
1031
for (size_t i = 1 ; i < K; ++i)
1032
1032
{
1033
- const byte * mul_p_i = GF_MUL_TABLE[GF_EXP[i]];
1033
+ const uint8_t * mul_p_i = GF_MUL_TABLE[GF_EXP[i]];
1034
1034
1035
1035
for (size_t j = K-1 - (i - 1 ); j < K-1 ; ++j)
1036
1036
c[j] ^= mul_p_i[c[j+1 ]];
@@ -1040,17 +1040,17 @@ void create_inverted_vdm(byte vdm[], size_t K)
1040
1040
for (size_t row = 0 ; row < K; ++row)
1041
1041
{
1042
1042
// synthetic division etc.
1043
- const byte * mul_p_row = GF_MUL_TABLE[row == 0 ? 0 : GF_EXP[row]];
1043
+ const uint8_t * mul_p_row = GF_MUL_TABLE[row == 0 ? 0 : GF_EXP[row]];
1044
1044
1045
- byte t = 1 ;
1045
+ uint8_t t = 1 ;
1046
1046
b[K-1 ] = 1 ; /* this is in fact c[K] */
1047
1047
for (int i = K-2 ; i >= 0 ; i--)
1048
1048
{
1049
1049
b[i] = c[i+1 ] ^ mul_p_row[b[i+1 ]];
1050
1050
t = b[i] ^ mul_p_row[t];
1051
1051
}
1052
1052
1053
- const byte * mul_t_inv = GF_MUL_TABLE[GF_INVERSE[t]];
1053
+ const uint8_t * mul_t_inv = GF_MUL_TABLE[GF_INVERSE[t]];
1054
1054
for (size_t col = 0 ; col != K; ++col)
1055
1055
vdm[col*K + row] = mul_t_inv[b[col]];
1056
1056
}
@@ -1075,7 +1075,7 @@ fec_code::fec_code(size_t K_arg, size_t N_arg) :
1075
1075
if (K == 0 || N == 0 || K > 256 || N > 256 || K > N)
1076
1076
throw std::invalid_argument (" fec_code: violated 1 <= K <= N <= 256" );
1077
1077
1078
- std::vector<byte > temp_matrix (N * K);
1078
+ std::vector<uint8_t > temp_matrix (N * K);
1079
1079
1080
1080
/*
1081
1081
* quick code to build systematic matrix: invert the top
@@ -1100,9 +1100,9 @@ fec_code::fec_code(size_t K_arg, size_t N_arg) :
1100
1100
{
1101
1101
for (size_t col = 0 ; col != K; ++col)
1102
1102
{
1103
- const byte * pa = &temp_matrix[row];
1104
- const byte * pb = &temp_matrix[col];
1105
- byte acc = 0 ;
1103
+ const uint8_t * pa = &temp_matrix[row];
1104
+ const uint8_t * pb = &temp_matrix[col];
1105
+ uint8_t acc = 0 ;
1106
1106
for (size_t i = 0 ; i < K; i++, pa++, pb += K)
1107
1107
acc ^= GF_MUL_TABLE[*pa][*pb];
1108
1108
enc_matrix[row + col] = acc;
@@ -1114,8 +1114,8 @@ fec_code::fec_code(size_t K_arg, size_t N_arg) :
1114
1114
* FEC encoding routine
1115
1115
*/
1116
1116
void fec_code::encode (
1117
- const byte input[], size_t size,
1118
- std::tr1:: function<void (size_t , size_t , const byte [], size_t )> output)
1117
+ const uint8_t input[], size_t size,
1118
+ std::function<void (size_t , size_t , const uint8_t [], size_t )> output)
1119
1119
const
1120
1120
{
1121
1121
if (size % K != 0 )
@@ -1129,7 +1129,7 @@ void fec_code::encode(
1129
1129
1130
1130
for (size_t i = K; i != N; ++i)
1131
1131
{
1132
- std::vector<byte > fec_buf (block_size);
1132
+ std::vector<uint8_t > fec_buf (block_size);
1133
1133
1134
1134
for (size_t j = 0 ; j != K; ++j)
1135
1135
addmul (&fec_buf[0 ], input + j*block_size,
@@ -1142,7 +1142,7 @@ void fec_code::encode(
1142
1142
output(i, N, input + i*block_size, block_size);
1143
1143
1144
1144
// align??
1145
- std::vector<std::vector<byte > > fec_buf(N - K);
1145
+ std::vector<std::vector<uint8_t > > fec_buf(N - K);
1146
1146
1147
1147
for(size_t i = 0; i != fec_buf.size(); ++i)
1148
1148
fec_buf[i].resize(block_size);
@@ -1168,9 +1168,9 @@ void fec_code::encode(
1168
1168
* FEC decoding routine
1169
1169
*/
1170
1170
void fec_code::decode (
1171
- const std::map<size_t , const byte *>& shares,
1171
+ const std::map<size_t , const uint8_t *>& shares,
1172
1172
size_t share_size,
1173
- std::tr1:: function<void (size_t , size_t , const byte [], size_t )> output) const
1173
+ std::function<void (size_t , size_t , const uint8_t [], size_t )> output) const
1174
1174
{
1175
1175
/*
1176
1176
Todo:
@@ -1184,19 +1184,19 @@ void fec_code::decode(
1184
1184
if (shares.size () < K)
1185
1185
throw std::logic_error (" Could not decode, less than K surviving shares" );
1186
1186
1187
- std::vector<byte > m_dec (K * K);
1187
+ std::vector<uint8_t > m_dec (K * K);
1188
1188
std::vector<size_t > indexes (K);
1189
- std::vector<const byte *> sharesv (K);
1189
+ std::vector<const uint8_t *> sharesv (K);
1190
1190
1191
- std::map<size_t , const byte *>::const_iterator shares_b_iter =
1191
+ std::map<size_t , const uint8_t *>::const_iterator shares_b_iter =
1192
1192
shares.begin ();
1193
- std::map<size_t , const byte *>::const_reverse_iterator shares_e_iter =
1193
+ std::map<size_t , const uint8_t *>::const_reverse_iterator shares_e_iter =
1194
1194
shares.rbegin ();
1195
1195
1196
1196
for (size_t i = 0 ; i != K; ++i)
1197
1197
{
1198
1198
size_t share_id = 0 ;
1199
- const byte * share_data = 0 ;
1199
+ const uint8_t * share_data = 0 ;
1200
1200
1201
1201
if (shares_b_iter->first == i)
1202
1202
{
@@ -1243,7 +1243,7 @@ void fec_code::decode(
1243
1243
{
1244
1244
if (indexes[i] >= K)
1245
1245
{
1246
- std::vector<byte > buf (share_size);
1246
+ std::vector<uint8_t > buf (share_size);
1247
1247
for (size_t col = 0 ; col != K; ++col)
1248
1248
addmul (&buf[0 ], sharesv[col], m_dec[i*K + col], share_size);
1249
1249
output (i, K, &buf[0 ], share_size);
0 commit comments