@@ -186,42 +186,46 @@ fn SipState(key0: u64, key1: u64) -> SipState {
186
186
state
187
187
}
188
188
189
+ // sadly, these macro definitions can't appear later,
190
+ // because they're needed in the following defs;
191
+ // this design could be improved.
192
+
193
+ macro_rules! u8to64_le (
194
+ ( $buf: expr, $i: expr) =>
195
+ ( $buf[ 0 +$i] as u64 |
196
+ $buf[ 1 +$i] as u64 << 8 |
197
+ $buf[ 2 +$i] as u64 << 16 |
198
+ $buf[ 3 +$i] as u64 << 24 |
199
+ $buf[ 4 +$i] as u64 << 32 |
200
+ $buf[ 5 +$i] as u64 << 40 |
201
+ $buf[ 6 +$i] as u64 << 48 |
202
+ $buf[ 7 +$i] as u64 << 56 )
203
+ )
204
+
205
+ macro_rules! rotl (
206
+ ( $x: expr, $b: expr) =>
207
+ ( ( $x << $b) | ( $x >> ( 64 - $b) ) )
208
+ )
209
+
210
+ macro_rules! compress (
211
+ ( $v0: expr, $v1: expr, $v2: expr, $v3: expr) =>
212
+ ( {
213
+ $v0 += $v1; $v1 = rotl!( $v1, 13 ) ; $v1 ^= $v0;
214
+ $v0 = rotl!( $v0, 32 ) ;
215
+ $v2 += $v3; $v3 = rotl!( $v3, 16 ) ; $v3 ^= $v2;
216
+ $v0 += $v3; $v3 = rotl!( $v3, 21 ) ; $v3 ^= $v0;
217
+ $v2 += $v1; $v1 = rotl!( $v1, 17 ) ; $v1 ^= $v2;
218
+ $v2 = rotl!( $v2, 32 ) ;
219
+ } )
220
+ )
221
+
189
222
190
223
impl io:: Writer for SipState {
191
224
192
225
// Methods for io::writer
193
226
#[ inline( always) ]
194
227
fn write ( & self , msg : & [ const u8 ] ) {
195
228
196
- macro_rules! u8to64_le (
197
- ( $buf: expr, $i: expr) =>
198
- ( $buf[ 0 +$i] as u64 |
199
- $buf[ 1 +$i] as u64 << 8 |
200
- $buf[ 2 +$i] as u64 << 16 |
201
- $buf[ 3 +$i] as u64 << 24 |
202
- $buf[ 4 +$i] as u64 << 32 |
203
- $buf[ 5 +$i] as u64 << 40 |
204
- $buf[ 6 +$i] as u64 << 48 |
205
- $buf[ 7 +$i] as u64 << 56 )
206
- ) ;
207
-
208
- macro_rules! rotl (
209
- ( $x: expr, $b: expr) =>
210
- ( ( $x << $b) | ( $x >> ( 64 - $b) ) )
211
- ) ;
212
-
213
- macro_rules! compress (
214
- ( $v0: expr, $v1: expr, $v2: expr, $v3: expr) =>
215
- ( {
216
- $v0 += $v1; $v1 = rotl!( $v1, 13 ) ; $v1 ^= $v0;
217
- $v0 = rotl!( $v0, 32 ) ;
218
- $v2 += $v3; $v3 = rotl!( $v3, 16 ) ; $v3 ^= $v2;
219
- $v0 += $v3; $v3 = rotl!( $v3, 21 ) ; $v3 ^= $v0;
220
- $v2 += $v1; $v1 = rotl!( $v1, 17 ) ; $v1 ^= $v2;
221
- $v2 = rotl!( $v2, 32 ) ;
222
- } )
223
- ) ;
224
-
225
229
let length = msg. len ( ) ;
226
230
self . length += length;
227
231
0 commit comments