X-Git-Url: https://git.cryptolib.org/?p=avr-crypto-lib.git;a=blobdiff_plain;f=bmw%2Fbmw_large.c;fp=bmw%2Fbmw_large.c;h=719b5859c0199c154a2cc4a861f0a5be1ad00091;hp=5b0039ab31663e81a3864a660a1ea311f2da1e26;hb=709c6948180356089680fd243927b22133ba64d0;hpb=82de0ec79b83ba107676269ec1feddabb4cfe456 diff --git a/bmw/bmw_large.c b/bmw/bmw_large.c index 5b0039a..719b585 100644 --- a/bmw/bmw_large.c +++ b/bmw/bmw_large.c @@ -30,10 +30,10 @@ #include #include "bmw_large.h" -#define SHL64(a,n) ((a)<<(n)) -#define SHR64(a,n) ((a)>>(n)) -#define ROTL64(a,n) (((a)<<(n))|((a)>>(64-(n)))) -#define ROTR64(a,n) (((a)>>(n))|((a)<<(64-(n)))) +#define SHL64(a,n) shiftl64(a,n) +#define SHR64(a,n) shiftr64(a,n) +#define ROTL64(a,n) rotl64(a,n) +#define ROTR64(a,n) rotr64(a,n) #define TWEAK 1 #define BUG24 0 @@ -75,6 +75,26 @@ #define dump_x(a,b,c) #endif +static +uint64_t rotl64(uint64_t a, uint8_t r){ + return (a<>(64-r)); +} + +static +uint64_t rotr64(uint64_t a, uint8_t r){ + return (a>>r)|(a<<(64-r)); +} + +static +uint64_t shiftl64(uint64_t a, uint8_t r){ + return (a<>r); +} + static uint64_t bmw_large_s0(uint64_t x){ uint64_t r;