Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, US$
- Copyright (C) 2008-2008 bla <blapost@gmail.com>
+ Copyright (C) 2008-2014 bla <blapost@gmail.com>
*/
-#ifndef CRAPTO1_INCLUDED
-#define CRAPTO1_INCLUDED
+#ifndef CRAPTO1_H__
+#define CRAPTO1_H__
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
struct Crypto1State* lfsr_recovery32(uint32_t ks2, uint32_t in);
struct Crypto1State* lfsr_recovery64(uint32_t ks2, uint32_t ks3);
uint32_t *lfsr_prefix_ks(uint8_t ks[8], int isodd);
-struct Crypto1State*
-lfsr_common_prefix(uint32_t pfx, uint32_t rr, uint8_t ks[8], uint8_t par[8][8], uint8_t no_par);
+struct Crypto1State* lfsr_common_prefix(uint32_t pfx, uint32_t rr, uint8_t ks[8], uint8_t par[8][8]);
-
-void lfsr_rollback_bit(struct Crypto1State* s, uint32_t in, int fb);
-void lfsr_rollback_byte(struct Crypto1State* s, uint32_t in, int fb);
-void lfsr_rollback_word(struct Crypto1State* s, uint32_t in, int fb);
+uint8_t lfsr_rollback_bit(struct Crypto1State* s, uint32_t in, int fb);
+uint8_t lfsr_rollback_byte(struct Crypto1State* s, uint32_t in, int fb);
+uint32_t lfsr_rollback_word(struct Crypto1State* s, uint32_t in, int fb);
int nonce_distance(uint32_t from, uint32_t to);
#define SWAPENDIAN(x)\
(x = (x >> 8 & 0xff00ff) | (x & 0xff00ff) << 8, x = x >> 16 | x << 16)
-
+
#define FOREACH_VALID_NONCE(N, FILTER, FSIZE)\
uint32_t __n = 0,__M = 0, N = 0;\
int __i;\
x ^= x >> 4;
return BIT(0x6996, x & 0xf);
#else
- __asm( "movl %1, %%eax\n"
- "mov %%ax, %%cx\n"
- "shrl $0x10, %%eax\n"
- "xor %%ax, %%cx\n"
- "xor %%ch, %%cl\n"
- "setpo %%al\n"
- "movzx %%al, %0\n": "=r"(x) : "r"(x): "eax","ecx");
+ __asm__( "movl %1, %%eax\n"
+ "mov %%ax, %%cx\n"
+ "shrl $0x10, %%eax\n"
+ "xor %%ax, %%cx\n"
+ "xor %%ch, %%cl\n"
+ "setpo %%al\n"
+ "movzx %%al, %0\n": "=r"(x) : "r"(x): "eax","ecx");
return x;
#endif
}
-
-#if !defined LOWMEM && defined __GNUC__
-extern uint8_t filterlut[1 << 20];
-#define filter(x) (filterlut[(x) & 0xfffff])
-#define filter_unsafe(x) (filterlut[x])
-#else
static inline int filter(uint32_t const x)
{
uint32_t f;
f |= 0x0d938 >> (x >> 16 & 0xf) & 1;
return BIT(0xEC57E80A, f);
}
-#define filter_unsafe(x) (filter(x))
-#endif
-
#ifdef __cplusplus
}
#endif