14
14
* limitations under the License.
15
15
*/
16
16
17
+ #include <mlib/intencode.h>
17
18
#include <bson/bson-compat.h>
18
19
19
20
#include <limits.h>
@@ -116,23 +117,6 @@ _bson_rotl_u64 (uint64_t *p, int nbits)
116
117
* p = (* p << nbits ) | (* p >> (64 - nbits ));
117
118
}
118
119
119
- /* Write the little-endian representation of 'val' into 'out' */
120
- void
121
- _u64_into_u8x8_le (uint8_t out [8 ], uint64_t val )
122
- {
123
- val = BSON_UINT64_TO_LE (val );
124
- memcpy (out , & val , sizeof val );
125
- }
126
-
127
- /* Read a little-endian representation of a 64bit number from 'in' */
128
- uint64_t
129
- _u8x8_le_to_u64 (const uint8_t in [8 ])
130
- {
131
- uint64_t r ;
132
- memcpy (& r , in , sizeof r );
133
- return BSON_UINT64_FROM_LE (r );
134
- }
135
-
136
120
/* Perform one SipHash round */
137
121
void
138
122
_sip_round (uint64_t * v0 , uint64_t * v1 , uint64_t * v2 , uint64_t * v3 )
@@ -167,8 +151,8 @@ _siphash (const void *in, const size_t inlen, const uint64_t key[2], uint64_t di
167
151
uint64_t v1 = UINT64_C (0x646f72616e646f6d );
168
152
uint64_t v2 = UINT64_C (0x6c7967656e657261 );
169
153
uint64_t v3 = UINT64_C (0x7465646279746573 );
170
- uint64_t k0 = _u8x8_le_to_u64 (kk );
171
- uint64_t k1 = _u8x8_le_to_u64 (kk + 8 );
154
+ uint64_t k0 = mlib_read_u64le (kk );
155
+ uint64_t k1 = mlib_read_u64le (kk + 8 );
172
156
uint64_t m ;
173
157
int i ;
174
158
const unsigned char * end = ni + inlen - (inlen % sizeof (uint64_t ));
@@ -182,7 +166,7 @@ _siphash (const void *in, const size_t inlen, const uint64_t key[2], uint64_t di
182
166
v1 ^= 0xee ;
183
167
184
168
for (; ni != end ; ni += 8 ) {
185
- m = _u8x8_le_to_u64 (ni );
169
+ m = mlib_read_u64le (ni );
186
170
v3 ^= m ;
187
171
188
172
for (i = 0 ; i < C_ROUNDS ; ++ i )
@@ -232,15 +216,15 @@ _siphash (const void *in, const size_t inlen, const uint64_t key[2], uint64_t di
232
216
_sip_round (& v0 , & v1 , & v2 , & v3 );
233
217
234
218
b = v0 ^ v1 ^ v2 ^ v3 ;
235
- _u64_into_u8x8_le (digest_buf , b );
219
+ mlib_write_u64le (digest_buf , b );
236
220
237
221
v1 ^= 0xdd ;
238
222
239
223
for (i = 0 ; i < D_ROUNDS ; ++ i )
240
224
_sip_round (& v0 , & v1 , & v2 , & v3 );
241
225
242
226
b = v0 ^ v1 ^ v2 ^ v3 ;
243
- _u64_into_u8x8_le (digest_buf + 8 , b );
227
+ mlib_write_u64le (digest_buf + 8 , b );
244
228
245
229
memcpy (digest , digest_buf , sizeof digest_buf );
246
230
}
0 commit comments