]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - common/crapto1/crapto1.c
Update mifarehost.c
[proxmark3-svn] / common / crapto1 / crapto1.c
index 9187460bb5198c82136683e28f3cf81bd9ef3fe0..fe6eb0f6d00722210716d3f0b8ef8a21c3958882 100644 (file)
@@ -99,7 +99,7 @@ static void bucket_sort_intersect(uint32_t* const estart, uint32_t* const estop,
 /** binsearch
  * Binary search for the first occurence of *stop's MSB in sorted [start,stop]
  */
-static inline uint32_t* binsearch(uint32_t *start, uint32_t *stop)
+/* static inline uint32_t* binsearch(uint32_t *start, uint32_t *stop)
 {
        uint32_t mid, val = *stop & 0xff000000;
        while(start != stop)
@@ -110,7 +110,7 @@ static inline uint32_t* binsearch(uint32_t *start, uint32_t *stop)
 
        return start;
 }
-
+ */
 /** update_contribution
  * helper, calculates the partial linear feedback contributions and puts in MSB
  */
@@ -425,6 +425,17 @@ int nonce_distance(uint32_t from, uint32_t to)
        }
        return (65535 + dist[to >> 16] - dist[from >> 16]) % 65535;
 }
+/** validate_prng_nonce
+ * Determine if nonce is deterministic. ie: Suspectable to Darkside attack.
+ * returns
+ *   true = weak prng
+ *   false = hardend prng
+ */
+bool validate_prng_nonce(uint32_t nonce) {
+       // init prng table:
+       nonce_distance(nonce, nonce);
+       return ((65535 - dist[nonce >> 16] + dist[nonce & 0xffff]) % 65535) == 16;
+}
 
 
 static uint32_t fastfwd[2][8] = {
Impressum, Datenschutz