 |
 |
Go to the documentation of this file. 23 #ifndef ECRYPT_PORTABLE 24 #define ECRYPT_PORTABLE 47 typedef signed I8T s8;
48 typedef unsigned I8T u8;
52 typedef signed I16T s16;
53 typedef unsigned I16T u16;
57 typedef signed I32T s32;
58 typedef unsigned I32T u32;
62 typedef signed I64T s64;
63 typedef unsigned I64T u64;
70 #define U8V(v) ((u8)(v)&U8C(0xFF)) 71 #define U16V(v) ((u16)(v)&U16C(0xFFFF)) 72 #define U32V(v) ((u32)(v)&U32C(0xFFFFFFFF)) 73 #define U64V(v) ((u64)(v)&U64C(0xFFFFFFFFFFFFFFFF)) 82 #define ECRYPT_DEFAULT_ROT 84 #define ROTL8(v, n) (U8V((v) << (n)) | ((v) >> (8 - (n)))) 86 #define ROTL16(v, n) (U16V((v) << (n)) | ((v) >> (16 - (n)))) 88 #define ROTL32(v, n) (U32V((v) << (n)) | ((v) >> (32 - (n)))) 90 #define ROTL64(v, n) (U64V((v) << (n)) | ((v) >> (64 - (n)))) 92 #define ROTR8(v, n) ROTL8(v, 8 - (n)) 93 #define ROTR16(v, n) ROTL16(v, 16 - (n)) 94 #define ROTR32(v, n) ROTL32(v, 32 - (n)) 95 #define ROTR64(v, n) ROTL64(v, 64 - (n)) 105 #define ECRYPT_DEFAULT_SWAP 107 #define SWAP16(v) ROTL16(v, 8) 109 #define SWAP32(v) ((ROTL32(v, 8) & U32C(0x00FF00FF)) | (ROTL32(v, 24) & U32C(0xFF00FF00))) 111 #ifdef ECRYPT_NATIVE64 113 ((ROTL64(v, 8) & U64C(0x000000FF000000FF)) | (ROTL64(v, 24) & U64C(0x0000FF000000FF00)) | \ 114 (ROTL64(v, 40) & U64C(0x00FF000000FF0000)) | (ROTL64(v, 56) & U64C(0xFF000000FF000000))) 116 #define SWAP64(v) (((u64)SWAP32(U32V(v)) << 32) | (u64)SWAP32(U32V(v >> 32))) 121 #define ECRYPT_DEFAULT_WTOW 123 #ifdef ECRYPT_LITTLE_ENDIAN 124 #define U16TO16_LITTLE(v) (v) 125 #define U32TO32_LITTLE(v) (v) 126 #define U64TO64_LITTLE(v) (v) 128 #define U16TO16_BIG(v) SWAP16(v) 129 #define U32TO32_BIG(v) SWAP32(v) 130 #define U64TO64_BIG(v) SWAP64(v) 133 #ifdef ECRYPT_BIG_ENDIAN 134 #define U16TO16_LITTLE(v) SWAP16(v) 135 #define U32TO32_LITTLE(v) SWAP32(v) 136 #define U64TO64_LITTLE(v) SWAP64(v) 138 #define U16TO16_BIG(v) (v) 139 #define U32TO32_BIG(v) (v) 140 #define U64TO64_BIG(v) (v) 150 #define ECRYPT_DEFAULT_BTOW 152 #if (!defined(ECRYPT_UNKNOWN) && defined(ECRYPT_I8T_IS_BYTE)) 154 #define U8TO16_LITTLE(p) U16TO16_LITTLE(((u16 *)(p))[0]) 155 #define U8TO32_LITTLE(p) U32TO32_LITTLE(((u32 *)(p))[0]) 156 #define U8TO64_LITTLE(p) U64TO64_LITTLE(((u64 *)(p))[0]) 158 #define U8TO16_BIG(p) U16TO16_BIG(((u16 *)(p))[0]) 159 #define U8TO32_BIG(p) U32TO32_BIG(((u32 *)(p))[0]) 160 #define U8TO64_BIG(p) U64TO64_BIG(((u64 *)(p))[0]) 162 #define U16TO8_LITTLE(p, v) (((u16 *)(p))[0] = U16TO16_LITTLE(v)) 163 #define U32TO8_LITTLE(p, v) (((u32 *)(p))[0] = U32TO32_LITTLE(v)) 164 #define U64TO8_LITTLE(p, v) (((u64 *)(p))[0] = U64TO64_LITTLE(v)) 166 #define U16TO8_BIG(p, v) (((u16 *)(p))[0] = U16TO16_BIG(v)) 167 #define U32TO8_BIG(p, v) (((u32 *)(p))[0] = U32TO32_BIG(v)) 168 #define U64TO8_BIG(p, v) (((u64 *)(p))[0] = U64TO64_BIG(v)) 172 #define U8TO16_LITTLE(p) (((u16)((p)[0])) | ((u16)((p)[1]) << 8)) 174 #define U8TO32_LITTLE(p) (((u32)((p)[0])) | ((u32)((p)[1]) << 8) | ((u32)((p)[2]) << 16) | ((u32)((p)[3]) << 24)) 176 #ifdef ECRYPT_NATIVE64 177 #define U8TO64_LITTLE(p) \ 178 (((u64)((p)[0])) | ((u64)((p)[1]) << 8) | ((u64)((p)[2]) << 16) | ((u64)((p)[3]) << 24) | \ 179 ((u64)((p)[4]) << 32) | ((u64)((p)[5]) << 40) | ((u64)((p)[6]) << 48) | ((u64)((p)[7]) << 56)) 181 #define U8TO64_LITTLE(p) ((u64)U8TO32_LITTLE(p) | ((u64)U8TO32_LITTLE((p) + 4) << 32)) 184 #define U8TO16_BIG(p) (((u16)((p)[0]) << 8) | ((u16)((p)[1]))) 186 #define U8TO32_BIG(p) (((u32)((p)[0]) << 24) | ((u32)((p)[1]) << 16) | ((u32)((p)[2]) << 8) | ((u32)((p)[3]))) 188 #ifdef ECRYPT_NATIVE64 189 #define U8TO64_BIG(p) \ 190 (((u64)((p)[0]) << 56) | ((u64)((p)[1]) << 48) | ((u64)((p)[2]) << 40) | ((u64)((p)[3]) << 32) | \ 191 ((u64)((p)[4]) << 24) | ((u64)((p)[5]) << 16) | ((u64)((p)[6]) << 8) | ((u64)((p)[7]))) 193 #define U8TO64_BIG(p) (((u64)U8TO32_BIG(p) << 32) | (u64)U8TO32_BIG((p) + 4)) 196 #define U16TO8_LITTLE(p, v) \ 200 (p)[1] = U8V((v) >> 8); \ 203 #define U32TO8_LITTLE(p, v) \ 207 (p)[1] = U8V((v) >> 8); \ 208 (p)[2] = U8V((v) >> 16); \ 209 (p)[3] = U8V((v) >> 24); \ 212 #ifdef ECRYPT_NATIVE64 213 #define U64TO8_LITTLE(p, v) \ 217 (p)[1] = U8V((v) >> 8); \ 218 (p)[2] = U8V((v) >> 16); \ 219 (p)[3] = U8V((v) >> 24); \ 220 (p)[4] = U8V((v) >> 32); \ 221 (p)[5] = U8V((v) >> 40); \ 222 (p)[6] = U8V((v) >> 48); \ 223 (p)[7] = U8V((v) >> 56); \ 226 #define U64TO8_LITTLE(p, v) \ 229 U32TO8_LITTLE((p), U32V((v))); \ 230 U32TO8_LITTLE((p) + 4, U32V((v) >> 32)); \ 234 #define U16TO8_BIG(p, v) \ 238 (p)[1] = U8V((v) >> 8); \ 241 #define U32TO8_BIG(p, v) \ 244 (p)[0] = U8V((v) >> 24); \ 245 (p)[1] = U8V((v) >> 16); \ 246 (p)[2] = U8V((v) >> 8); \ 250 #ifdef ECRYPT_NATIVE64 251 #define U64TO8_BIG(p, v) \ 254 (p)[0] = U8V((v) >> 56); \ 255 (p)[1] = U8V((v) >> 48); \ 256 (p)[2] = U8V((v) >> 40); \ 257 (p)[3] = U8V((v) >> 32); \ 258 (p)[4] = U8V((v) >> 24); \ 259 (p)[5] = U8V((v) >> 16); \ 260 (p)[6] = U8V((v) >> 8); \ 264 #define U64TO8_BIG(p, v) \ 267 U32TO8_BIG((p), U32V((v) >> 32)); \ 268 U32TO8_BIG((p) + 4, U32V((v))); \