X-Git-Url: http://cvs.zerfleddert.de/cgi-bin/gitweb.cgi/proxmark3-svn/blobdiff_plain/bf22fab73b6a969d761c8f0f259e5fc67a806f83..06eb3b1a8cbbab569b330a45a5e29dce9de273cd:/armsrc/crypto1.c?ds=sidebyside diff --git a/armsrc/crypto1.c b/armsrc/crypto1.c index a212ecc4..68cb9b4e 100644 --- a/armsrc/crypto1.c +++ b/armsrc/crypto1.c @@ -20,18 +20,15 @@ #include "crapto1.h" #include - void crypto1_create(struct Crypto1State *s, uint64_t key) { // struct Crypto1State *s = malloc(sizeof(*s)); - s->odd = s->even = 0; int i; for(i = 47;s && i > 0; i -= 2) { s->odd = s->odd << 1 | BIT(key, (i - 1) ^ 7); s->even = s->even << 1 | BIT(key, i ^ 7); } - return; } void crypto1_destroy(struct Crypto1State *state) { @@ -144,3 +141,13 @@ uint32_t prng_successor(uint32_t x, uint32_t n) return SWAPENDIAN(x); } + +uint32_t prng_successor_one(uint32_t x) +{ + SWAPENDIAN(x); + + x = x >> 1 | (x >> 16 ^ x >> 18 ^ x >> 19 ^ x >> 21) << 31; + + return SWAPENDIAN(x); +} +