From 28dc98e343ca4eb370a29ceec4c19beac9b5c01e Mon Sep 17 00:00:00 2001 From: Jeff King Date: Thu, 16 Mar 2017 18:07:31 -0400 Subject: [PATCH 1/6] sha1dc: add collision-detecting sha1 implementation This is pulled straight from: https://github.com/cr-marcstevens/sha1collisiondetection with no modifications yet (though I've pulled in only the subset of files necessary for Git to use). This is commit 007905a93c973f55b2daed6585f9f6c23545bf66. Further updates can be done like: git checkout -b vendor-sha1dc $this_commit cp /path/to/sha1dc/{LICENSE.txt,lib/*} sha1dc/ git add -A sha1dc git commit -m "update sha1dc" git checkout -b update-sha1dc origin git merge vendor-sha1dc Thanks to both Marc and Dan for making the code fit our needs by doing both optimization work, cutting down on the object size, and doing some syntactic changes to work better with git. And to Linus for kicking off the "diet" work that removed some of the unused code. The license of the sha1dc code is the MIT license, which is obviously compatible with the GPLv2 of git. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- sha1dc/LICENSE.txt | 30 + sha1dc/sha1.c | 1792 ++++++++++++++++++++++++++++++++++++++++++++ sha1dc/sha1.h | 105 +++ sha1dc/ubc_check.c | 363 +++++++++ sha1dc/ubc_check.h | 46 ++ 5 files changed, 2336 insertions(+) create mode 100644 sha1dc/LICENSE.txt create mode 100644 sha1dc/sha1.c create mode 100644 sha1dc/sha1.h create mode 100644 sha1dc/ubc_check.c create mode 100644 sha1dc/ubc_check.h diff --git a/sha1dc/LICENSE.txt b/sha1dc/LICENSE.txt new file mode 100644 index 0000000000..4a3e6a1b15 --- /dev/null +++ b/sha1dc/LICENSE.txt @@ -0,0 +1,30 @@ +MIT License + +Copyright (c) 2017: + Marc Stevens + Cryptology Group + Centrum Wiskunde & Informatica + P.O. Box 94079, 1090 GB Amsterdam, Netherlands + marc@marc-stevens.nl + + Dan Shumow + Microsoft Research + danshu@microsoft.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/sha1dc/sha1.c b/sha1dc/sha1.c new file mode 100644 index 0000000000..27a535c6a7 --- /dev/null +++ b/sha1dc/sha1.c @@ -0,0 +1,1792 @@ +/*** +* Copyright 2017 Marc Stevens , Dan Shumow (danshu@microsoft.com) +* Distributed under the MIT Software License. +* See accompanying file LICENSE.txt or copy at +* https://opensource.org/licenses/MIT +***/ + +#include +#include +#include +#include + +#include "sha1.h" +#include "ubc_check.h" + + +/* + Because Little-Endian architectures are most common, + we only set BIGENDIAN if one of these conditions is met. + Note that all MSFT platforms are little endian, + so none of these will be defined under the MSC compiler. + If you are compiling on a big endian platform and your compiler does not define one of these, + you will have to add whatever macros your tool chain defines to indicate Big-Endianness. + */ +#if (defined(__BYTE_ORDER) && (__BYTE_ORDER == __BIG_ENDIAN)) || \ + (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __BIG_ENDIAN__)) || \ + defined(__BIG_ENDIAN__) || defined(__ARMEB__) || defined(__THUMBEB__) || defined(__AARCH64EB__) || \ + defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) + +#define BIGENDIAN (1) + +#endif /*ENDIANNESS SELECTION*/ + +#define rotate_right(x,n) (((x)>>(n))|((x)<<(32-(n)))) +#define rotate_left(x,n) (((x)<<(n))|((x)>>(32-(n)))) + +#define sha1_bswap32(x) \ + {x = ((x << 8) & 0xFF00FF00) | ((x >> 8) & 0xFF00FF); x = (x << 16) | (x >> 16);} + +#define sha1_mix(W, t) (rotate_left(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1)) + +#if defined(BIGENDIAN) + #define sha1_load(m, t, temp) { temp = m[t]; } +#else + #define sha1_load(m, t, temp) { temp = m[t]; sha1_bswap32(temp); } +#endif /*define(BIGENDIAN)*/ + +#define sha1_store(W, t, x) *(volatile uint32_t *)&W[t] = x + +#define sha1_f1(b,c,d) ((d)^((b)&((c)^(d)))) +#define sha1_f2(b,c,d) ((b)^(c)^(d)) +#define sha1_f3(b,c,d) (((b)&(c))+((d)&((b)^(c)))) +#define sha1_f4(b,c,d) ((b)^(c)^(d)) + +#define HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, m, t) \ + { e += rotate_left(a, 5) + sha1_f1(b,c,d) + 0x5A827999 + m[t]; b = rotate_left(b, 30); } +#define HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, m, t) \ + { e += rotate_left(a, 5) + sha1_f2(b,c,d) + 0x6ED9EBA1 + m[t]; b = rotate_left(b, 30); } +#define HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, m, t) \ + { e += rotate_left(a, 5) + sha1_f3(b,c,d) + 0x8F1BBCDC + m[t]; b = rotate_left(b, 30); } +#define HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, m, t) \ + { e += rotate_left(a, 5) + sha1_f4(b,c,d) + 0xCA62C1D6 + m[t]; b = rotate_left(b, 30); } + +#define HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, m, t) \ + { b = rotate_right(b, 30); e -= rotate_left(a, 5) + sha1_f1(b,c,d) + 0x5A827999 + m[t]; } +#define HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, m, t) \ + { b = rotate_right(b, 30); e -= rotate_left(a, 5) + sha1_f2(b,c,d) + 0x6ED9EBA1 + m[t]; } +#define HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, m, t) \ + { b = rotate_right(b, 30); e -= rotate_left(a, 5) + sha1_f3(b,c,d) + 0x8F1BBCDC + m[t]; } +#define HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, m, t) \ + { b = rotate_right(b, 30); e -= rotate_left(a, 5) + sha1_f4(b,c,d) + 0xCA62C1D6 + m[t]; } + +#define SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(a, b, c, d, e, m, W, t, temp) \ + {sha1_load(m, t, temp); sha1_store(W, t, temp); e += temp + rotate_left(a, 5) + sha1_f1(b,c,d) + 0x5A827999; b = rotate_left(b, 30);} + +#define SHA1COMPRESS_FULL_ROUND1_STEP_EXPAND(a, b, c, d, e, W, t, temp) \ + {temp = sha1_mix(W, t); sha1_store(W, t, temp); e += temp + rotate_left(a, 5) + sha1_f1(b,c,d) + 0x5A827999; b = rotate_left(b, 30); } + +#define SHA1COMPRESS_FULL_ROUND2_STEP(a, b, c, d, e, W, t, temp) \ + {temp = sha1_mix(W, t); sha1_store(W, t, temp); e += temp + rotate_left(a, 5) + sha1_f2(b,c,d) + 0x6ED9EBA1; b = rotate_left(b, 30); } + +#define SHA1COMPRESS_FULL_ROUND3_STEP(a, b, c, d, e, W, t, temp) \ + {temp = sha1_mix(W, t); sha1_store(W, t, temp); e += temp + rotate_left(a, 5) + sha1_f3(b,c,d) + 0x8F1BBCDC; b = rotate_left(b, 30); } + +#define SHA1COMPRESS_FULL_ROUND4_STEP(a, b, c, d, e, W, t, temp) \ + {temp = sha1_mix(W, t); sha1_store(W, t, temp); e += temp + rotate_left(a, 5) + sha1_f4(b,c,d) + 0xCA62C1D6; b = rotate_left(b, 30); } + + +#define SHA1_STORE_STATE(i) states[i][0] = a; states[i][1] = b; states[i][2] = c; states[i][3] = d; states[i][4] = e; + +#ifdef BUILDNOCOLLDETECTSHA1COMPRESSION +void sha1_compression(uint32_t ihv[5], const uint32_t m[16]) +{ + uint32_t W[80]; + uint32_t a,b,c,d,e; + unsigned i; + + memcpy(W, m, 16 * 4); + for (i = 16; i < 80; ++i) + W[i] = sha1_mix(W, i); + + a = ihv[0]; b = ihv[1]; c = ihv[2]; d = ihv[3]; e = ihv[4]; + + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, W, 0); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, W, 1); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, W, 2); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, W, 3); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, W, 4); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, W, 5); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, W, 6); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, W, 7); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, W, 8); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, W, 9); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, W, 10); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, W, 11); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, W, 12); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, W, 13); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, W, 14); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, W, 15); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, W, 16); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, W, 17); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, W, 18); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, W, 19); + + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, W, 20); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, W, 21); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, W, 22); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, W, 23); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, W, 24); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, W, 25); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, W, 26); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, W, 27); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, W, 28); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, W, 29); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, W, 30); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, W, 31); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, W, 32); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, W, 33); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, W, 34); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, W, 35); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, W, 36); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, W, 37); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, W, 38); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, W, 39); + + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, W, 40); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, W, 41); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, W, 42); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, W, 43); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, W, 44); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, W, 45); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, W, 46); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, W, 47); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, W, 48); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, W, 49); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, W, 50); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, W, 51); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, W, 52); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, W, 53); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, W, 54); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, W, 55); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, W, 56); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, W, 57); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, W, 58); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, W, 59); + + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, W, 60); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, W, 61); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, W, 62); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, W, 63); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, W, 64); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, W, 65); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, W, 66); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, W, 67); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, W, 68); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, W, 69); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, W, 70); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, W, 71); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, W, 72); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, W, 73); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, W, 74); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, W, 75); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, W, 76); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, W, 77); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, W, 78); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, W, 79); + + ihv[0] += a; ihv[1] += b; ihv[2] += c; ihv[3] += d; ihv[4] += e; +} +#endif /*BUILDNOCOLLDETECTSHA1COMPRESSION*/ + + +static void sha1_compression_W(uint32_t ihv[5], const uint32_t W[80]) +{ + uint32_t a = ihv[0], b = ihv[1], c = ihv[2], d = ihv[3], e = ihv[4]; + + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, W, 0); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, W, 1); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, W, 2); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, W, 3); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, W, 4); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, W, 5); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, W, 6); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, W, 7); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, W, 8); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, W, 9); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, W, 10); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, W, 11); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, W, 12); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, W, 13); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, W, 14); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, W, 15); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, W, 16); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, W, 17); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, W, 18); + HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, W, 19); + + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, W, 20); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, W, 21); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, W, 22); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, W, 23); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, W, 24); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, W, 25); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, W, 26); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, W, 27); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, W, 28); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, W, 29); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, W, 30); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, W, 31); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, W, 32); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, W, 33); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, W, 34); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, W, 35); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, W, 36); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, W, 37); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, W, 38); + HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, W, 39); + + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, W, 40); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, W, 41); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, W, 42); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, W, 43); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, W, 44); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, W, 45); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, W, 46); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, W, 47); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, W, 48); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, W, 49); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, W, 50); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, W, 51); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, W, 52); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, W, 53); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, W, 54); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, W, 55); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, W, 56); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, W, 57); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, W, 58); + HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, W, 59); + + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, W, 60); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, W, 61); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, W, 62); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, W, 63); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, W, 64); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, W, 65); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, W, 66); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, W, 67); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, W, 68); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, W, 69); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, W, 70); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, W, 71); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, W, 72); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, W, 73); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, W, 74); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, W, 75); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, W, 76); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, W, 77); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, W, 78); + HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, W, 79); + + ihv[0] += a; ihv[1] += b; ihv[2] += c; ihv[3] += d; ihv[4] += e; +} + + + +void sha1_compression_states(uint32_t ihv[5], const uint32_t m[16], uint32_t W[80], uint32_t states[80][5]) +{ + uint32_t a = ihv[0], b = ihv[1], c = ihv[2], d = ihv[3], e = ihv[4]; + uint32_t temp; + +#ifdef DOSTORESTATE00 + SHA1_STORE_STATE(0) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(a, b, c, d, e, m, W, 0, temp); + +#ifdef DOSTORESTATE01 + SHA1_STORE_STATE(1) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(e, a, b, c, d, m, W, 1, temp); + +#ifdef DOSTORESTATE02 + SHA1_STORE_STATE(2) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(d, e, a, b, c, m, W, 2, temp); + +#ifdef DOSTORESTATE03 + SHA1_STORE_STATE(3) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(c, d, e, a, b, m, W, 3, temp); + +#ifdef DOSTORESTATE04 + SHA1_STORE_STATE(4) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(b, c, d, e, a, m, W, 4, temp); + +#ifdef DOSTORESTATE05 + SHA1_STORE_STATE(5) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(a, b, c, d, e, m, W, 5, temp); + +#ifdef DOSTORESTATE06 + SHA1_STORE_STATE(6) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(e, a, b, c, d, m, W, 6, temp); + +#ifdef DOSTORESTATE07 + SHA1_STORE_STATE(7) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(d, e, a, b, c, m, W, 7, temp); + +#ifdef DOSTORESTATE08 + SHA1_STORE_STATE(8) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(c, d, e, a, b, m, W, 8, temp); + +#ifdef DOSTORESTATE09 + SHA1_STORE_STATE(9) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(b, c, d, e, a, m, W, 9, temp); + +#ifdef DOSTORESTATE10 + SHA1_STORE_STATE(10) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(a, b, c, d, e, m, W, 10, temp); + +#ifdef DOSTORESTATE11 + SHA1_STORE_STATE(11) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(e, a, b, c, d, m, W, 11, temp); + +#ifdef DOSTORESTATE12 + SHA1_STORE_STATE(12) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(d, e, a, b, c, m, W, 12, temp); + +#ifdef DOSTORESTATE13 + SHA1_STORE_STATE(13) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(c, d, e, a, b, m, W, 13, temp); + +#ifdef DOSTORESTATE14 + SHA1_STORE_STATE(14) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(b, c, d, e, a, m, W, 14, temp); + +#ifdef DOSTORESTATE15 + SHA1_STORE_STATE(15) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_LOAD(a, b, c, d, e, m, W, 15, temp); + +#ifdef DOSTORESTATE16 + SHA1_STORE_STATE(16) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_EXPAND(e, a, b, c, d, W, 16, temp); + +#ifdef DOSTORESTATE17 + SHA1_STORE_STATE(17) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_EXPAND(d, e, a, b, c, W, 17, temp); + +#ifdef DOSTORESTATE18 + SHA1_STORE_STATE(18) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_EXPAND(c, d, e, a, b, W, 18, temp); + +#ifdef DOSTORESTATE19 + SHA1_STORE_STATE(19) +#endif + SHA1COMPRESS_FULL_ROUND1_STEP_EXPAND(b, c, d, e, a, W, 19, temp); + + + +#ifdef DOSTORESTATE20 + SHA1_STORE_STATE(20) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(a, b, c, d, e, W, 20, temp); + +#ifdef DOSTORESTATE21 + SHA1_STORE_STATE(21) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(e, a, b, c, d, W, 21, temp); + +#ifdef DOSTORESTATE22 + SHA1_STORE_STATE(22) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(d, e, a, b, c, W, 22, temp); + +#ifdef DOSTORESTATE23 + SHA1_STORE_STATE(23) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(c, d, e, a, b, W, 23, temp); + +#ifdef DOSTORESTATE24 + SHA1_STORE_STATE(24) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(b, c, d, e, a, W, 24, temp); + +#ifdef DOSTORESTATE25 + SHA1_STORE_STATE(25) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(a, b, c, d, e, W, 25, temp); + +#ifdef DOSTORESTATE26 + SHA1_STORE_STATE(26) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(e, a, b, c, d, W, 26, temp); + +#ifdef DOSTORESTATE27 + SHA1_STORE_STATE(27) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(d, e, a, b, c, W, 27, temp); + +#ifdef DOSTORESTATE28 + SHA1_STORE_STATE(28) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(c, d, e, a, b, W, 28, temp); + +#ifdef DOSTORESTATE29 + SHA1_STORE_STATE(29) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(b, c, d, e, a, W, 29, temp); + +#ifdef DOSTORESTATE30 + SHA1_STORE_STATE(30) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(a, b, c, d, e, W, 30, temp); + +#ifdef DOSTORESTATE31 + SHA1_STORE_STATE(31) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(e, a, b, c, d, W, 31, temp); + +#ifdef DOSTORESTATE32 + SHA1_STORE_STATE(32) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(d, e, a, b, c, W, 32, temp); + +#ifdef DOSTORESTATE33 + SHA1_STORE_STATE(33) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(c, d, e, a, b, W, 33, temp); + +#ifdef DOSTORESTATE34 + SHA1_STORE_STATE(34) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(b, c, d, e, a, W, 34, temp); + +#ifdef DOSTORESTATE35 + SHA1_STORE_STATE(35) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(a, b, c, d, e, W, 35, temp); + +#ifdef DOSTORESTATE36 + SHA1_STORE_STATE(36) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(e, a, b, c, d, W, 36, temp); + +#ifdef DOSTORESTATE37 + SHA1_STORE_STATE(37) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(d, e, a, b, c, W, 37, temp); + +#ifdef DOSTORESTATE38 + SHA1_STORE_STATE(38) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(c, d, e, a, b, W, 38, temp); + +#ifdef DOSTORESTATE39 + SHA1_STORE_STATE(39) +#endif + SHA1COMPRESS_FULL_ROUND2_STEP(b, c, d, e, a, W, 39, temp); + + + +#ifdef DOSTORESTATE40 + SHA1_STORE_STATE(40) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(a, b, c, d, e, W, 40, temp); + +#ifdef DOSTORESTATE41 + SHA1_STORE_STATE(41) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(e, a, b, c, d, W, 41, temp); + +#ifdef DOSTORESTATE42 + SHA1_STORE_STATE(42) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(d, e, a, b, c, W, 42, temp); + +#ifdef DOSTORESTATE43 + SHA1_STORE_STATE(43) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(c, d, e, a, b, W, 43, temp); + +#ifdef DOSTORESTATE44 + SHA1_STORE_STATE(44) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(b, c, d, e, a, W, 44, temp); + +#ifdef DOSTORESTATE45 + SHA1_STORE_STATE(45) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(a, b, c, d, e, W, 45, temp); + +#ifdef DOSTORESTATE46 + SHA1_STORE_STATE(46) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(e, a, b, c, d, W, 46, temp); + +#ifdef DOSTORESTATE47 + SHA1_STORE_STATE(47) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(d, e, a, b, c, W, 47, temp); + +#ifdef DOSTORESTATE48 + SHA1_STORE_STATE(48) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(c, d, e, a, b, W, 48, temp); + +#ifdef DOSTORESTATE49 + SHA1_STORE_STATE(49) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(b, c, d, e, a, W, 49, temp); + +#ifdef DOSTORESTATE50 + SHA1_STORE_STATE(50) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(a, b, c, d, e, W, 50, temp); + +#ifdef DOSTORESTATE51 + SHA1_STORE_STATE(51) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(e, a, b, c, d, W, 51, temp); + +#ifdef DOSTORESTATE52 + SHA1_STORE_STATE(52) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(d, e, a, b, c, W, 52, temp); + +#ifdef DOSTORESTATE53 + SHA1_STORE_STATE(53) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(c, d, e, a, b, W, 53, temp); + +#ifdef DOSTORESTATE54 + SHA1_STORE_STATE(54) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(b, c, d, e, a, W, 54, temp); + +#ifdef DOSTORESTATE55 + SHA1_STORE_STATE(55) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(a, b, c, d, e, W, 55, temp); + +#ifdef DOSTORESTATE56 + SHA1_STORE_STATE(56) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(e, a, b, c, d, W, 56, temp); + +#ifdef DOSTORESTATE57 + SHA1_STORE_STATE(57) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(d, e, a, b, c, W, 57, temp); + +#ifdef DOSTORESTATE58 + SHA1_STORE_STATE(58) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(c, d, e, a, b, W, 58, temp); + +#ifdef DOSTORESTATE59 + SHA1_STORE_STATE(59) +#endif + SHA1COMPRESS_FULL_ROUND3_STEP(b, c, d, e, a, W, 59, temp); + + + + +#ifdef DOSTORESTATE60 + SHA1_STORE_STATE(60) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(a, b, c, d, e, W, 60, temp); + +#ifdef DOSTORESTATE61 + SHA1_STORE_STATE(61) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(e, a, b, c, d, W, 61, temp); + +#ifdef DOSTORESTATE62 + SHA1_STORE_STATE(62) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(d, e, a, b, c, W, 62, temp); + +#ifdef DOSTORESTATE63 + SHA1_STORE_STATE(63) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(c, d, e, a, b, W, 63, temp); + +#ifdef DOSTORESTATE64 + SHA1_STORE_STATE(64) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(b, c, d, e, a, W, 64, temp); + +#ifdef DOSTORESTATE65 + SHA1_STORE_STATE(65) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(a, b, c, d, e, W, 65, temp); + +#ifdef DOSTORESTATE66 + SHA1_STORE_STATE(66) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(e, a, b, c, d, W, 66, temp); + +#ifdef DOSTORESTATE67 + SHA1_STORE_STATE(67) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(d, e, a, b, c, W, 67, temp); + +#ifdef DOSTORESTATE68 + SHA1_STORE_STATE(68) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(c, d, e, a, b, W, 68, temp); + +#ifdef DOSTORESTATE69 + SHA1_STORE_STATE(69) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(b, c, d, e, a, W, 69, temp); + +#ifdef DOSTORESTATE70 + SHA1_STORE_STATE(70) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(a, b, c, d, e, W, 70, temp); + +#ifdef DOSTORESTATE71 + SHA1_STORE_STATE(71) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(e, a, b, c, d, W, 71, temp); + +#ifdef DOSTORESTATE72 + SHA1_STORE_STATE(72) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(d, e, a, b, c, W, 72, temp); + +#ifdef DOSTORESTATE73 + SHA1_STORE_STATE(73) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(c, d, e, a, b, W, 73, temp); + +#ifdef DOSTORESTATE74 + SHA1_STORE_STATE(74) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(b, c, d, e, a, W, 74, temp); + +#ifdef DOSTORESTATE75 + SHA1_STORE_STATE(75) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(a, b, c, d, e, W, 75, temp); + +#ifdef DOSTORESTATE76 + SHA1_STORE_STATE(76) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(e, a, b, c, d, W, 76, temp); + +#ifdef DOSTORESTATE77 + SHA1_STORE_STATE(77) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(d, e, a, b, c, W, 77, temp); + +#ifdef DOSTORESTATE78 + SHA1_STORE_STATE(78) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(c, d, e, a, b, W, 78, temp); + +#ifdef DOSTORESTATE79 + SHA1_STORE_STATE(79) +#endif + SHA1COMPRESS_FULL_ROUND4_STEP(b, c, d, e, a, W, 79, temp); + + + + ihv[0] += a; ihv[1] += b; ihv[2] += c; ihv[3] += d; ihv[4] += e; +} + + + + +#define SHA1_RECOMPRESS(t) \ +static void sha1recompress_fast_ ## t (uint32_t ihvin[5], uint32_t ihvout[5], const uint32_t me2[80], const uint32_t state[5]) \ +{ \ + uint32_t a = state[0], b = state[1], c = state[2], d = state[3], e = state[4]; \ + if (t > 79) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(b, c, d, e, a, me2, 79); \ + if (t > 78) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(c, d, e, a, b, me2, 78); \ + if (t > 77) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(d, e, a, b, c, me2, 77); \ + if (t > 76) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(e, a, b, c, d, me2, 76); \ + if (t > 75) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, me2, 75); \ + if (t > 74) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(b, c, d, e, a, me2, 74); \ + if (t > 73) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(c, d, e, a, b, me2, 73); \ + if (t > 72) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(d, e, a, b, c, me2, 72); \ + if (t > 71) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(e, a, b, c, d, me2, 71); \ + if (t > 70) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, me2, 70); \ + if (t > 69) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(b, c, d, e, a, me2, 69); \ + if (t > 68) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(c, d, e, a, b, me2, 68); \ + if (t > 67) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(d, e, a, b, c, me2, 67); \ + if (t > 66) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(e, a, b, c, d, me2, 66); \ + if (t > 65) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, me2, 65); \ + if (t > 64) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(b, c, d, e, a, me2, 64); \ + if (t > 63) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(c, d, e, a, b, me2, 63); \ + if (t > 62) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(d, e, a, b, c, me2, 62); \ + if (t > 61) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(e, a, b, c, d, me2, 61); \ + if (t > 60) HASHCLASH_SHA1COMPRESS_ROUND4_STEP_BW(a, b, c, d, e, me2, 60); \ + if (t > 59) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(b, c, d, e, a, me2, 59); \ + if (t > 58) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(c, d, e, a, b, me2, 58); \ + if (t > 57) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(d, e, a, b, c, me2, 57); \ + if (t > 56) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(e, a, b, c, d, me2, 56); \ + if (t > 55) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, me2, 55); \ + if (t > 54) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(b, c, d, e, a, me2, 54); \ + if (t > 53) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(c, d, e, a, b, me2, 53); \ + if (t > 52) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(d, e, a, b, c, me2, 52); \ + if (t > 51) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(e, a, b, c, d, me2, 51); \ + if (t > 50) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, me2, 50); \ + if (t > 49) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(b, c, d, e, a, me2, 49); \ + if (t > 48) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(c, d, e, a, b, me2, 48); \ + if (t > 47) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(d, e, a, b, c, me2, 47); \ + if (t > 46) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(e, a, b, c, d, me2, 46); \ + if (t > 45) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, me2, 45); \ + if (t > 44) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(b, c, d, e, a, me2, 44); \ + if (t > 43) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(c, d, e, a, b, me2, 43); \ + if (t > 42) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(d, e, a, b, c, me2, 42); \ + if (t > 41) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(e, a, b, c, d, me2, 41); \ + if (t > 40) HASHCLASH_SHA1COMPRESS_ROUND3_STEP_BW(a, b, c, d, e, me2, 40); \ + if (t > 39) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(b, c, d, e, a, me2, 39); \ + if (t > 38) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(c, d, e, a, b, me2, 38); \ + if (t > 37) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(d, e, a, b, c, me2, 37); \ + if (t > 36) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(e, a, b, c, d, me2, 36); \ + if (t > 35) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, me2, 35); \ + if (t > 34) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(b, c, d, e, a, me2, 34); \ + if (t > 33) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(c, d, e, a, b, me2, 33); \ + if (t > 32) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(d, e, a, b, c, me2, 32); \ + if (t > 31) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(e, a, b, c, d, me2, 31); \ + if (t > 30) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, me2, 30); \ + if (t > 29) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(b, c, d, e, a, me2, 29); \ + if (t > 28) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(c, d, e, a, b, me2, 28); \ + if (t > 27) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(d, e, a, b, c, me2, 27); \ + if (t > 26) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(e, a, b, c, d, me2, 26); \ + if (t > 25) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, me2, 25); \ + if (t > 24) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(b, c, d, e, a, me2, 24); \ + if (t > 23) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(c, d, e, a, b, me2, 23); \ + if (t > 22) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(d, e, a, b, c, me2, 22); \ + if (t > 21) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(e, a, b, c, d, me2, 21); \ + if (t > 20) HASHCLASH_SHA1COMPRESS_ROUND2_STEP_BW(a, b, c, d, e, me2, 20); \ + if (t > 19) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(b, c, d, e, a, me2, 19); \ + if (t > 18) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(c, d, e, a, b, me2, 18); \ + if (t > 17) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(d, e, a, b, c, me2, 17); \ + if (t > 16) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(e, a, b, c, d, me2, 16); \ + if (t > 15) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, me2, 15); \ + if (t > 14) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(b, c, d, e, a, me2, 14); \ + if (t > 13) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(c, d, e, a, b, me2, 13); \ + if (t > 12) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(d, e, a, b, c, me2, 12); \ + if (t > 11) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(e, a, b, c, d, me2, 11); \ + if (t > 10) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, me2, 10); \ + if (t > 9) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(b, c, d, e, a, me2, 9); \ + if (t > 8) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(c, d, e, a, b, me2, 8); \ + if (t > 7) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(d, e, a, b, c, me2, 7); \ + if (t > 6) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(e, a, b, c, d, me2, 6); \ + if (t > 5) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, me2, 5); \ + if (t > 4) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(b, c, d, e, a, me2, 4); \ + if (t > 3) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(c, d, e, a, b, me2, 3); \ + if (t > 2) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(d, e, a, b, c, me2, 2); \ + if (t > 1) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(e, a, b, c, d, me2, 1); \ + if (t > 0) HASHCLASH_SHA1COMPRESS_ROUND1_STEP_BW(a, b, c, d, e, me2, 0); \ + ihvin[0] = a; ihvin[1] = b; ihvin[2] = c; ihvin[3] = d; ihvin[4] = e; \ + a = state[0]; b = state[1]; c = state[2]; d = state[3]; e = state[4]; \ + if (t <= 0) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, me2, 0); \ + if (t <= 1) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, me2, 1); \ + if (t <= 2) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, me2, 2); \ + if (t <= 3) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, me2, 3); \ + if (t <= 4) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, me2, 4); \ + if (t <= 5) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, me2, 5); \ + if (t <= 6) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, me2, 6); \ + if (t <= 7) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, me2, 7); \ + if (t <= 8) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, me2, 8); \ + if (t <= 9) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, me2, 9); \ + if (t <= 10) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, me2, 10); \ + if (t <= 11) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, me2, 11); \ + if (t <= 12) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, me2, 12); \ + if (t <= 13) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, me2, 13); \ + if (t <= 14) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, me2, 14); \ + if (t <= 15) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(a, b, c, d, e, me2, 15); \ + if (t <= 16) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(e, a, b, c, d, me2, 16); \ + if (t <= 17) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(d, e, a, b, c, me2, 17); \ + if (t <= 18) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(c, d, e, a, b, me2, 18); \ + if (t <= 19) HASHCLASH_SHA1COMPRESS_ROUND1_STEP(b, c, d, e, a, me2, 19); \ + if (t <= 20) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, me2, 20); \ + if (t <= 21) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, me2, 21); \ + if (t <= 22) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, me2, 22); \ + if (t <= 23) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, me2, 23); \ + if (t <= 24) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, me2, 24); \ + if (t <= 25) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, me2, 25); \ + if (t <= 26) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, me2, 26); \ + if (t <= 27) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, me2, 27); \ + if (t <= 28) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, me2, 28); \ + if (t <= 29) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, me2, 29); \ + if (t <= 30) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, me2, 30); \ + if (t <= 31) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, me2, 31); \ + if (t <= 32) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, me2, 32); \ + if (t <= 33) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, me2, 33); \ + if (t <= 34) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, me2, 34); \ + if (t <= 35) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(a, b, c, d, e, me2, 35); \ + if (t <= 36) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(e, a, b, c, d, me2, 36); \ + if (t <= 37) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(d, e, a, b, c, me2, 37); \ + if (t <= 38) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(c, d, e, a, b, me2, 38); \ + if (t <= 39) HASHCLASH_SHA1COMPRESS_ROUND2_STEP(b, c, d, e, a, me2, 39); \ + if (t <= 40) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, me2, 40); \ + if (t <= 41) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, me2, 41); \ + if (t <= 42) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, me2, 42); \ + if (t <= 43) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, me2, 43); \ + if (t <= 44) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, me2, 44); \ + if (t <= 45) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, me2, 45); \ + if (t <= 46) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, me2, 46); \ + if (t <= 47) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, me2, 47); \ + if (t <= 48) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, me2, 48); \ + if (t <= 49) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, me2, 49); \ + if (t <= 50) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, me2, 50); \ + if (t <= 51) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, me2, 51); \ + if (t <= 52) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, me2, 52); \ + if (t <= 53) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, me2, 53); \ + if (t <= 54) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, me2, 54); \ + if (t <= 55) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(a, b, c, d, e, me2, 55); \ + if (t <= 56) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(e, a, b, c, d, me2, 56); \ + if (t <= 57) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(d, e, a, b, c, me2, 57); \ + if (t <= 58) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(c, d, e, a, b, me2, 58); \ + if (t <= 59) HASHCLASH_SHA1COMPRESS_ROUND3_STEP(b, c, d, e, a, me2, 59); \ + if (t <= 60) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, me2, 60); \ + if (t <= 61) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, me2, 61); \ + if (t <= 62) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, me2, 62); \ + if (t <= 63) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, me2, 63); \ + if (t <= 64) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, me2, 64); \ + if (t <= 65) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, me2, 65); \ + if (t <= 66) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, me2, 66); \ + if (t <= 67) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, me2, 67); \ + if (t <= 68) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, me2, 68); \ + if (t <= 69) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, me2, 69); \ + if (t <= 70) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, me2, 70); \ + if (t <= 71) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, me2, 71); \ + if (t <= 72) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, me2, 72); \ + if (t <= 73) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, me2, 73); \ + if (t <= 74) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, me2, 74); \ + if (t <= 75) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(a, b, c, d, e, me2, 75); \ + if (t <= 76) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(e, a, b, c, d, me2, 76); \ + if (t <= 77) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(d, e, a, b, c, me2, 77); \ + if (t <= 78) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(c, d, e, a, b, me2, 78); \ + if (t <= 79) HASHCLASH_SHA1COMPRESS_ROUND4_STEP(b, c, d, e, a, me2, 79); \ + ihvout[0] = ihvin[0] + a; ihvout[1] = ihvin[1] + b; ihvout[2] = ihvin[2] + c; ihvout[3] = ihvin[3] + d; ihvout[4] = ihvin[4] + e; \ +} + +#ifdef DOSTORESTATE0 +SHA1_RECOMPRESS(0) +#endif + +#ifdef DOSTORESTATE1 +SHA1_RECOMPRESS(1) +#endif + +#ifdef DOSTORESTATE2 +SHA1_RECOMPRESS(2) +#endif + +#ifdef DOSTORESTATE3 +SHA1_RECOMPRESS(3) +#endif + +#ifdef DOSTORESTATE4 +SHA1_RECOMPRESS(4) +#endif + +#ifdef DOSTORESTATE5 +SHA1_RECOMPRESS(5) +#endif + +#ifdef DOSTORESTATE6 +SHA1_RECOMPRESS(6) +#endif + +#ifdef DOSTORESTATE7 +SHA1_RECOMPRESS(7) +#endif + +#ifdef DOSTORESTATE8 +SHA1_RECOMPRESS(8) +#endif + +#ifdef DOSTORESTATE9 +SHA1_RECOMPRESS(9) +#endif + +#ifdef DOSTORESTATE10 +SHA1_RECOMPRESS(10) +#endif + +#ifdef DOSTORESTATE11 +SHA1_RECOMPRESS(11) +#endif + +#ifdef DOSTORESTATE12 +SHA1_RECOMPRESS(12) +#endif + +#ifdef DOSTORESTATE13 +SHA1_RECOMPRESS(13) +#endif + +#ifdef DOSTORESTATE14 +SHA1_RECOMPRESS(14) +#endif + +#ifdef DOSTORESTATE15 +SHA1_RECOMPRESS(15) +#endif + +#ifdef DOSTORESTATE16 +SHA1_RECOMPRESS(16) +#endif + +#ifdef DOSTORESTATE17 +SHA1_RECOMPRESS(17) +#endif + +#ifdef DOSTORESTATE18 +SHA1_RECOMPRESS(18) +#endif + +#ifdef DOSTORESTATE19 +SHA1_RECOMPRESS(19) +#endif + +#ifdef DOSTORESTATE20 +SHA1_RECOMPRESS(20) +#endif + +#ifdef DOSTORESTATE21 +SHA1_RECOMPRESS(21) +#endif + +#ifdef DOSTORESTATE22 +SHA1_RECOMPRESS(22) +#endif + +#ifdef DOSTORESTATE23 +SHA1_RECOMPRESS(23) +#endif + +#ifdef DOSTORESTATE24 +SHA1_RECOMPRESS(24) +#endif + +#ifdef DOSTORESTATE25 +SHA1_RECOMPRESS(25) +#endif + +#ifdef DOSTORESTATE26 +SHA1_RECOMPRESS(26) +#endif + +#ifdef DOSTORESTATE27 +SHA1_RECOMPRESS(27) +#endif + +#ifdef DOSTORESTATE28 +SHA1_RECOMPRESS(28) +#endif + +#ifdef DOSTORESTATE29 +SHA1_RECOMPRESS(29) +#endif + +#ifdef DOSTORESTATE30 +SHA1_RECOMPRESS(30) +#endif + +#ifdef DOSTORESTATE31 +SHA1_RECOMPRESS(31) +#endif + +#ifdef DOSTORESTATE32 +SHA1_RECOMPRESS(32) +#endif + +#ifdef DOSTORESTATE33 +SHA1_RECOMPRESS(33) +#endif + +#ifdef DOSTORESTATE34 +SHA1_RECOMPRESS(34) +#endif + +#ifdef DOSTORESTATE35 +SHA1_RECOMPRESS(35) +#endif + +#ifdef DOSTORESTATE36 +SHA1_RECOMPRESS(36) +#endif + +#ifdef DOSTORESTATE37 +SHA1_RECOMPRESS(37) +#endif + +#ifdef DOSTORESTATE38 +SHA1_RECOMPRESS(38) +#endif + +#ifdef DOSTORESTATE39 +SHA1_RECOMPRESS(39) +#endif + +#ifdef DOSTORESTATE40 +SHA1_RECOMPRESS(40) +#endif + +#ifdef DOSTORESTATE41 +SHA1_RECOMPRESS(41) +#endif + +#ifdef DOSTORESTATE42 +SHA1_RECOMPRESS(42) +#endif + +#ifdef DOSTORESTATE43 +SHA1_RECOMPRESS(43) +#endif + +#ifdef DOSTORESTATE44 +SHA1_RECOMPRESS(44) +#endif + +#ifdef DOSTORESTATE45 +SHA1_RECOMPRESS(45) +#endif + +#ifdef DOSTORESTATE46 +SHA1_RECOMPRESS(46) +#endif + +#ifdef DOSTORESTATE47 +SHA1_RECOMPRESS(47) +#endif + +#ifdef DOSTORESTATE48 +SHA1_RECOMPRESS(48) +#endif + +#ifdef DOSTORESTATE49 +SHA1_RECOMPRESS(49) +#endif + +#ifdef DOSTORESTATE50 +SHA1_RECOMPRESS(50) +#endif + +#ifdef DOSTORESTATE51 +SHA1_RECOMPRESS(51) +#endif + +#ifdef DOSTORESTATE52 +SHA1_RECOMPRESS(52) +#endif + +#ifdef DOSTORESTATE53 +SHA1_RECOMPRESS(53) +#endif + +#ifdef DOSTORESTATE54 +SHA1_RECOMPRESS(54) +#endif + +#ifdef DOSTORESTATE55 +SHA1_RECOMPRESS(55) +#endif + +#ifdef DOSTORESTATE56 +SHA1_RECOMPRESS(56) +#endif + +#ifdef DOSTORESTATE57 +SHA1_RECOMPRESS(57) +#endif + +#ifdef DOSTORESTATE58 +SHA1_RECOMPRESS(58) +#endif + +#ifdef DOSTORESTATE59 +SHA1_RECOMPRESS(59) +#endif + +#ifdef DOSTORESTATE60 +SHA1_RECOMPRESS(60) +#endif + +#ifdef DOSTORESTATE61 +SHA1_RECOMPRESS(61) +#endif + +#ifdef DOSTORESTATE62 +SHA1_RECOMPRESS(62) +#endif + +#ifdef DOSTORESTATE63 +SHA1_RECOMPRESS(63) +#endif + +#ifdef DOSTORESTATE64 +SHA1_RECOMPRESS(64) +#endif + +#ifdef DOSTORESTATE65 +SHA1_RECOMPRESS(65) +#endif + +#ifdef DOSTORESTATE66 +SHA1_RECOMPRESS(66) +#endif + +#ifdef DOSTORESTATE67 +SHA1_RECOMPRESS(67) +#endif + +#ifdef DOSTORESTATE68 +SHA1_RECOMPRESS(68) +#endif + +#ifdef DOSTORESTATE69 +SHA1_RECOMPRESS(69) +#endif + +#ifdef DOSTORESTATE70 +SHA1_RECOMPRESS(70) +#endif + +#ifdef DOSTORESTATE71 +SHA1_RECOMPRESS(71) +#endif + +#ifdef DOSTORESTATE72 +SHA1_RECOMPRESS(72) +#endif + +#ifdef DOSTORESTATE73 +SHA1_RECOMPRESS(73) +#endif + +#ifdef DOSTORESTATE74 +SHA1_RECOMPRESS(74) +#endif + +#ifdef DOSTORESTATE75 +SHA1_RECOMPRESS(75) +#endif + +#ifdef DOSTORESTATE76 +SHA1_RECOMPRESS(76) +#endif + +#ifdef DOSTORESTATE77 +SHA1_RECOMPRESS(77) +#endif + +#ifdef DOSTORESTATE78 +SHA1_RECOMPRESS(78) +#endif + +#ifdef DOSTORESTATE79 +SHA1_RECOMPRESS(79) +#endif + +static void sha1_recompression_step(uint32_t step, uint32_t ihvin[5], uint32_t ihvout[5], const uint32_t me2[80], const uint32_t state[5]) +{ + switch (step) + { +#ifdef DOSTORESTATE0 + case 0: + sha1recompress_fast_0(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE1 + case 1: + sha1recompress_fast_1(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE2 + case 2: + sha1recompress_fast_2(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE3 + case 3: + sha1recompress_fast_3(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE4 + case 4: + sha1recompress_fast_4(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE5 + case 5: + sha1recompress_fast_5(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE6 + case 6: + sha1recompress_fast_6(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE7 + case 7: + sha1recompress_fast_7(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE8 + case 8: + sha1recompress_fast_8(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE9 + case 9: + sha1recompress_fast_9(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE10 + case 10: + sha1recompress_fast_10(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE11 + case 11: + sha1recompress_fast_11(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE12 + case 12: + sha1recompress_fast_12(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE13 + case 13: + sha1recompress_fast_13(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE14 + case 14: + sha1recompress_fast_14(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE15 + case 15: + sha1recompress_fast_15(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE16 + case 16: + sha1recompress_fast_16(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE17 + case 17: + sha1recompress_fast_17(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE18 + case 18: + sha1recompress_fast_18(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE19 + case 19: + sha1recompress_fast_19(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE20 + case 20: + sha1recompress_fast_20(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE21 + case 21: + sha1recompress_fast_21(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE22 + case 22: + sha1recompress_fast_22(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE23 + case 23: + sha1recompress_fast_23(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE24 + case 24: + sha1recompress_fast_24(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE25 + case 25: + sha1recompress_fast_25(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE26 + case 26: + sha1recompress_fast_26(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE27 + case 27: + sha1recompress_fast_27(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE28 + case 28: + sha1recompress_fast_28(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE29 + case 29: + sha1recompress_fast_29(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE30 + case 30: + sha1recompress_fast_30(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE31 + case 31: + sha1recompress_fast_31(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE32 + case 32: + sha1recompress_fast_32(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE33 + case 33: + sha1recompress_fast_33(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE34 + case 34: + sha1recompress_fast_34(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE35 + case 35: + sha1recompress_fast_35(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE36 + case 36: + sha1recompress_fast_36(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE37 + case 37: + sha1recompress_fast_37(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE38 + case 38: + sha1recompress_fast_38(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE39 + case 39: + sha1recompress_fast_39(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE40 + case 40: + sha1recompress_fast_40(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE41 + case 41: + sha1recompress_fast_41(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE42 + case 42: + sha1recompress_fast_42(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE43 + case 43: + sha1recompress_fast_43(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE44 + case 44: + sha1recompress_fast_44(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE45 + case 45: + sha1recompress_fast_45(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE46 + case 46: + sha1recompress_fast_46(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE47 + case 47: + sha1recompress_fast_47(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE48 + case 48: + sha1recompress_fast_48(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE49 + case 49: + sha1recompress_fast_49(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE50 + case 50: + sha1recompress_fast_50(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE51 + case 51: + sha1recompress_fast_51(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE52 + case 52: + sha1recompress_fast_52(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE53 + case 53: + sha1recompress_fast_53(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE54 + case 54: + sha1recompress_fast_54(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE55 + case 55: + sha1recompress_fast_55(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE56 + case 56: + sha1recompress_fast_56(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE57 + case 57: + sha1recompress_fast_57(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE58 + case 58: + sha1recompress_fast_58(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE59 + case 59: + sha1recompress_fast_59(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE60 + case 60: + sha1recompress_fast_60(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE61 + case 61: + sha1recompress_fast_61(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE62 + case 62: + sha1recompress_fast_62(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE63 + case 63: + sha1recompress_fast_63(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE64 + case 64: + sha1recompress_fast_64(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE65 + case 65: + sha1recompress_fast_65(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE66 + case 66: + sha1recompress_fast_66(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE67 + case 67: + sha1recompress_fast_67(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE68 + case 68: + sha1recompress_fast_68(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE69 + case 69: + sha1recompress_fast_69(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE70 + case 70: + sha1recompress_fast_70(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE71 + case 71: + sha1recompress_fast_71(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE72 + case 72: + sha1recompress_fast_72(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE73 + case 73: + sha1recompress_fast_73(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE74 + case 74: + sha1recompress_fast_74(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE75 + case 75: + sha1recompress_fast_75(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE76 + case 76: + sha1recompress_fast_76(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE77 + case 77: + sha1recompress_fast_77(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE78 + case 78: + sha1recompress_fast_78(ihvin, ihvout, me2, state); + break; +#endif +#ifdef DOSTORESTATE79 + case 79: + sha1recompress_fast_79(ihvin, ihvout, me2, state); + break; +#endif + default: + abort(); + } + +} + + + +static void sha1_process(SHA1_CTX* ctx, const uint32_t block[16]) +{ + unsigned i, j; + uint32_t ubc_dv_mask[DVMASKSIZE] = { 0xFFFFFFFF }; + uint32_t ihvtmp[5]; + + ctx->ihv1[0] = ctx->ihv[0]; + ctx->ihv1[1] = ctx->ihv[1]; + ctx->ihv1[2] = ctx->ihv[2]; + ctx->ihv1[3] = ctx->ihv[3]; + ctx->ihv1[4] = ctx->ihv[4]; + + sha1_compression_states(ctx->ihv, block, ctx->m1, ctx->states); + + if (ctx->detect_coll) + { + if (ctx->ubc_check) + { + ubc_check(ctx->m1, ubc_dv_mask); + } + + if (ubc_dv_mask[0] != 0) + { + for (i = 0; sha1_dvs[i].dvType != 0; ++i) + { + if (ubc_dv_mask[0] & ((uint32_t)(1) << sha1_dvs[i].maskb)) + { + for (j = 0; j < 80; ++j) + ctx->m2[j] = ctx->m1[j] ^ sha1_dvs[i].dm[j]; + + sha1_recompression_step(sha1_dvs[i].testt, ctx->ihv2, ihvtmp, ctx->m2, ctx->states[sha1_dvs[i].testt]); + + /* to verify SHA-1 collision detection code with collisions for reduced-step SHA-1 */ + if ((0 == ((ihvtmp[0] ^ ctx->ihv[0]) | (ihvtmp[1] ^ ctx->ihv[1]) | (ihvtmp[2] ^ ctx->ihv[2]) | (ihvtmp[3] ^ ctx->ihv[3]) | (ihvtmp[4] ^ ctx->ihv[4]))) + || (ctx->reduced_round_coll && 0==((ctx->ihv1[0] ^ ctx->ihv2[0]) | (ctx->ihv1[1] ^ ctx->ihv2[1]) | (ctx->ihv1[2] ^ ctx->ihv2[2]) | (ctx->ihv1[3] ^ ctx->ihv2[3]) | (ctx->ihv1[4] ^ ctx->ihv2[4])))) + { + ctx->found_collision = 1; + + if (ctx->safe_hash) + { + sha1_compression_W(ctx->ihv, ctx->m1); + sha1_compression_W(ctx->ihv, ctx->m1); + } + + break; + } + } + } + } + } +} + +void SHA1DCInit(SHA1_CTX* ctx) +{ + ctx->total = 0; + ctx->ihv[0] = 0x67452301; + ctx->ihv[1] = 0xEFCDAB89; + ctx->ihv[2] = 0x98BADCFE; + ctx->ihv[3] = 0x10325476; + ctx->ihv[4] = 0xC3D2E1F0; + ctx->found_collision = 0; + ctx->safe_hash = 1; + ctx->ubc_check = 1; + ctx->detect_coll = 1; + ctx->reduced_round_coll = 0; + ctx->callback = NULL; +} + +void SHA1DCSetSafeHash(SHA1_CTX* ctx, int safehash) +{ + if (safehash) + ctx->safe_hash = 1; + else + ctx->safe_hash = 0; +} + + +void SHA1DCSetUseUBC(SHA1_CTX* ctx, int ubc_check) +{ + if (ubc_check) + ctx->ubc_check = 1; + else + ctx->ubc_check = 0; +} + +void SHA1DCSetUseDetectColl(SHA1_CTX* ctx, int detect_coll) +{ + if (detect_coll) + ctx->detect_coll = 1; + else + ctx->detect_coll = 0; +} + +void SHA1DCSetDetectReducedRoundCollision(SHA1_CTX* ctx, int reduced_round_coll) +{ + if (reduced_round_coll) + ctx->reduced_round_coll = 1; + else + ctx->reduced_round_coll = 0; +} + +void SHA1DCSetCallback(SHA1_CTX* ctx, collision_block_callback callback) +{ + ctx->callback = callback; +} + +void SHA1DCUpdate(SHA1_CTX* ctx, const char* buf, size_t len) +{ + unsigned left, fill; + if (len == 0) + return; + + left = ctx->total & 63; + fill = 64 - left; + + if (left && len >= fill) + { + ctx->total += fill; + memcpy(ctx->buffer + left, buf, fill); + sha1_process(ctx, (uint32_t*)(ctx->buffer)); + buf += fill; + len -= fill; + left = 0; + } + while (len >= 64) + { + ctx->total += 64; + sha1_process(ctx, (uint32_t*)(buf)); + buf += 64; + len -= 64; + } + if (len > 0) + { + ctx->total += len; + memcpy(ctx->buffer + left, buf, len); + } +} + +static const unsigned char sha1_padding[64] = +{ + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +}; + +int SHA1DCFinal(unsigned char output[20], SHA1_CTX *ctx) +{ + uint32_t last = ctx->total & 63; + uint32_t padn = (last < 56) ? (56 - last) : (120 - last); + uint64_t total; + SHA1DCUpdate(ctx, (const char*)(sha1_padding), padn); + + total = ctx->total - padn; + total <<= 3; + ctx->buffer[56] = (unsigned char)(total >> 56); + ctx->buffer[57] = (unsigned char)(total >> 48); + ctx->buffer[58] = (unsigned char)(total >> 40); + ctx->buffer[59] = (unsigned char)(total >> 32); + ctx->buffer[60] = (unsigned char)(total >> 24); + ctx->buffer[61] = (unsigned char)(total >> 16); + ctx->buffer[62] = (unsigned char)(total >> 8); + ctx->buffer[63] = (unsigned char)(total); + sha1_process(ctx, (uint32_t*)(ctx->buffer)); + output[0] = (unsigned char)(ctx->ihv[0] >> 24); + output[1] = (unsigned char)(ctx->ihv[0] >> 16); + output[2] = (unsigned char)(ctx->ihv[0] >> 8); + output[3] = (unsigned char)(ctx->ihv[0]); + output[4] = (unsigned char)(ctx->ihv[1] >> 24); + output[5] = (unsigned char)(ctx->ihv[1] >> 16); + output[6] = (unsigned char)(ctx->ihv[1] >> 8); + output[7] = (unsigned char)(ctx->ihv[1]); + output[8] = (unsigned char)(ctx->ihv[2] >> 24); + output[9] = (unsigned char)(ctx->ihv[2] >> 16); + output[10] = (unsigned char)(ctx->ihv[2] >> 8); + output[11] = (unsigned char)(ctx->ihv[2]); + output[12] = (unsigned char)(ctx->ihv[3] >> 24); + output[13] = (unsigned char)(ctx->ihv[3] >> 16); + output[14] = (unsigned char)(ctx->ihv[3] >> 8); + output[15] = (unsigned char)(ctx->ihv[3]); + output[16] = (unsigned char)(ctx->ihv[4] >> 24); + output[17] = (unsigned char)(ctx->ihv[4] >> 16); + output[18] = (unsigned char)(ctx->ihv[4] >> 8); + output[19] = (unsigned char)(ctx->ihv[4]); + return ctx->found_collision; +} diff --git a/sha1dc/sha1.h b/sha1dc/sha1.h new file mode 100644 index 0000000000..88556179b5 --- /dev/null +++ b/sha1dc/sha1.h @@ -0,0 +1,105 @@ +/*** +* Copyright 2017 Marc Stevens , Dan Shumow +* Distributed under the MIT Software License. +* See accompanying file LICENSE.txt or copy at +* https://opensource.org/licenses/MIT +***/ + +#if defined(__cplusplus) +extern "C" { +#endif + +#include + +/* uses SHA-1 message expansion to expand the first 16 words of W[] to 80 words */ +/* void sha1_message_expansion(uint32_t W[80]); */ + +/* sha-1 compression function; first version takes a message block pre-parsed as 16 32-bit integers, second version takes an already expanded message) */ +/* void sha1_compression(uint32_t ihv[5], const uint32_t m[16]); +void sha1_compression_W(uint32_t ihv[5], const uint32_t W[80]); */ + +/* same as sha1_compression_W, but additionally store intermediate states */ +/* only stores states ii (the state between step ii-1 and step ii) when DOSTORESTATEii is defined in ubc_check.h */ +void sha1_compression_states(uint32_t[5], const uint32_t[16], uint32_t[80], uint32_t[80][5]); + +/* +// function type for sha1_recompression_step_T (uint32_t ihvin[5], uint32_t ihvout[5], const uint32_t me2[80], const uint32_t state[5]) +// where 0 <= T < 80 +// me2 is an expanded message (the expansion of an original message block XOR'ed with a disturbance vector's message block difference) +// state is the internal state (a,b,c,d,e) before step T of the SHA-1 compression function while processing the original message block +// the function will return: +// ihvin: the reconstructed input chaining value +// ihvout: the reconstructed output chaining value +*/ +typedef void(*sha1_recompression_type)(uint32_t*, uint32_t*, const uint32_t*, const uint32_t*); + +/* table of sha1_recompression_step_0, ... , sha1_recompression_step_79 */ +/* extern sha1_recompression_type sha1_recompression_step[80];*/ + +/* a callback function type that can be set to be called when a collision block has been found: */ +/* void collision_block_callback(uint64_t byteoffset, const uint32_t ihvin1[5], const uint32_t ihvin2[5], const uint32_t m1[80], const uint32_t m2[80]) */ +typedef void(*collision_block_callback)(uint64_t, const uint32_t*, const uint32_t*, const uint32_t*, const uint32_t*); + +/* the SHA-1 context */ +typedef struct { + uint64_t total; + uint32_t ihv[5]; + unsigned char buffer[64]; + int found_collision; + int safe_hash; + int detect_coll; + int ubc_check; + int reduced_round_coll; + collision_block_callback callback; + + uint32_t ihv1[5]; + uint32_t ihv2[5]; + uint32_t m1[80]; + uint32_t m2[80]; + uint32_t states[80][5]; +} SHA1_CTX; + +/* initialize SHA-1 context */ +void SHA1DCInit(SHA1_CTX*); + +/* +// function to enable safe SHA-1 hashing: +// collision attacks are thwarted by hashing a detected near-collision block 3 times +// think of it as extending SHA-1 from 80-steps to 240-steps for such blocks: +// the best collision attacks against SHA-1 have complexity about 2^60, +// thus for 240-steps an immediate lower-bound for the best cryptanalytic attacks would 2^180 +// an attacker would be better off using a generic birthday search of complexity 2^80 +// +// enabling safe SHA-1 hashing will result in the correct SHA-1 hash for messages where no collision attack was detected +// but it will result in a different SHA-1 hash for messages where a collision attack was detected +// this will automatically invalidate SHA-1 based digital signature forgeries +// enabled by default +*/ +void SHA1DCSetSafeHash(SHA1_CTX*, int); + +/* function to disable or enable the use of Unavoidable Bitconditions (provides a significant speed up) */ +/* enabled by default */ +void SHA1DCSetUseUBC(SHA1_CTX*, int); + +/* function to disable or enable the use of Collision Detection */ +/* enabled by default */ +void SHA1DCSetUseDetectColl(SHA1_CTX*, int); + +/* function to disable or enable the detection of reduced-round SHA-1 collisions */ +/* disabled by default */ +void SHA1DCSetDetectReducedRoundCollision(SHA1_CTX*, int); + +/* function to set a callback function, pass NULL to disable */ +/* by default no callback set */ +void SHA1DCSetCallback(SHA1_CTX*, collision_block_callback); + +/* update SHA-1 context with buffer contents */ +void SHA1DCUpdate(SHA1_CTX*, const char*, size_t); + +/* obtain SHA-1 hash from SHA-1 context */ +/* returns: 0 = no collision detected, otherwise = collision found => warn user for active attack */ +int SHA1DCFinal(unsigned char[20], SHA1_CTX*); + +#if defined(__cplusplus) +} +#endif diff --git a/sha1dc/ubc_check.c b/sha1dc/ubc_check.c new file mode 100644 index 0000000000..27d0976daa --- /dev/null +++ b/sha1dc/ubc_check.c @@ -0,0 +1,363 @@ +/*** +* Copyright 2017 Marc Stevens , Dan Shumow +* Distributed under the MIT Software License. +* See accompanying file LICENSE.txt or copy at +* https://opensource.org/licenses/MIT +***/ + +/* +// this file was generated by the 'parse_bitrel' program in the tools section +// using the data files from directory 'tools/data/3565' +// +// sha1_dvs contains a list of SHA-1 Disturbance Vectors (DV) to check +// dvType, dvK and dvB define the DV: I(K,B) or II(K,B) (see the paper) +// dm[80] is the expanded message block XOR-difference defined by the DV +// testt is the step to do the recompression from for collision detection +// maski and maskb define the bit to check for each DV in the dvmask returned by ubc_check +// +// ubc_check takes as input an expanded message block and verifies the unavoidable bitconditions for all listed DVs +// it returns a dvmask where each bit belonging to a DV is set if all unavoidable bitconditions for that DV have been met +// thus one needs to do the recompression check for each DV that has its bit set +// +// ubc_check is programmatically generated and the unavoidable bitconditions have been hardcoded +// a directly verifiable version named ubc_check_verify can be found in ubc_check_verify.c +// ubc_check has been verified against ubc_check_verify using the 'ubc_check_test' program in the tools section +*/ + +#include +#include "ubc_check.h" + +static const uint32_t DV_I_43_0_bit = (uint32_t)(1) << 0; +static const uint32_t DV_I_44_0_bit = (uint32_t)(1) << 1; +static const uint32_t DV_I_45_0_bit = (uint32_t)(1) << 2; +static const uint32_t DV_I_46_0_bit = (uint32_t)(1) << 3; +static const uint32_t DV_I_46_2_bit = (uint32_t)(1) << 4; +static const uint32_t DV_I_47_0_bit = (uint32_t)(1) << 5; +static const uint32_t DV_I_47_2_bit = (uint32_t)(1) << 6; +static const uint32_t DV_I_48_0_bit = (uint32_t)(1) << 7; +static const uint32_t DV_I_48_2_bit = (uint32_t)(1) << 8; +static const uint32_t DV_I_49_0_bit = (uint32_t)(1) << 9; +static const uint32_t DV_I_49_2_bit = (uint32_t)(1) << 10; +static const uint32_t DV_I_50_0_bit = (uint32_t)(1) << 11; +static const uint32_t DV_I_50_2_bit = (uint32_t)(1) << 12; +static const uint32_t DV_I_51_0_bit = (uint32_t)(1) << 13; +static const uint32_t DV_I_51_2_bit = (uint32_t)(1) << 14; +static const uint32_t DV_I_52_0_bit = (uint32_t)(1) << 15; +static const uint32_t DV_II_45_0_bit = (uint32_t)(1) << 16; +static const uint32_t DV_II_46_0_bit = (uint32_t)(1) << 17; +static const uint32_t DV_II_46_2_bit = (uint32_t)(1) << 18; +static const uint32_t DV_II_47_0_bit = (uint32_t)(1) << 19; +static const uint32_t DV_II_48_0_bit = (uint32_t)(1) << 20; +static const uint32_t DV_II_49_0_bit = (uint32_t)(1) << 21; +static const uint32_t DV_II_49_2_bit = (uint32_t)(1) << 22; +static const uint32_t DV_II_50_0_bit = (uint32_t)(1) << 23; +static const uint32_t DV_II_50_2_bit = (uint32_t)(1) << 24; +static const uint32_t DV_II_51_0_bit = (uint32_t)(1) << 25; +static const uint32_t DV_II_51_2_bit = (uint32_t)(1) << 26; +static const uint32_t DV_II_52_0_bit = (uint32_t)(1) << 27; +static const uint32_t DV_II_53_0_bit = (uint32_t)(1) << 28; +static const uint32_t DV_II_54_0_bit = (uint32_t)(1) << 29; +static const uint32_t DV_II_55_0_bit = (uint32_t)(1) << 30; +static const uint32_t DV_II_56_0_bit = (uint32_t)(1) << 31; + +dv_info_t sha1_dvs[] = +{ + {1,43,0,58,0,0, { 0x08000000,0x9800000c,0xd8000010,0x08000010,0xb8000010,0x98000000,0x60000000,0x00000008,0xc0000000,0x90000014,0x10000010,0xb8000014,0x28000000,0x20000010,0x48000000,0x08000018,0x60000000,0x90000010,0xf0000010,0x90000008,0xc0000000,0x90000010,0xf0000010,0xb0000008,0x40000000,0x90000000,0xf0000010,0x90000018,0x60000000,0x90000010,0x90000010,0x90000000,0x80000000,0x00000010,0xa0000000,0x20000000,0xa0000000,0x20000010,0x00000000,0x20000010,0x20000000,0x00000010,0x20000000,0x00000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000040,0x40000002,0x80000004,0x80000080,0x80000006,0x00000049,0x00000103,0x80000009,0x80000012,0x80000202,0x00000018,0x00000164,0x00000408,0x800000e6,0x8000004c,0x00000803,0x80000161,0x80000599 } } +, {1,44,0,58,0,1, { 0xb4000008,0x08000000,0x9800000c,0xd8000010,0x08000010,0xb8000010,0x98000000,0x60000000,0x00000008,0xc0000000,0x90000014,0x10000010,0xb8000014,0x28000000,0x20000010,0x48000000,0x08000018,0x60000000,0x90000010,0xf0000010,0x90000008,0xc0000000,0x90000010,0xf0000010,0xb0000008,0x40000000,0x90000000,0xf0000010,0x90000018,0x60000000,0x90000010,0x90000010,0x90000000,0x80000000,0x00000010,0xa0000000,0x20000000,0xa0000000,0x20000010,0x00000000,0x20000010,0x20000000,0x00000010,0x20000000,0x00000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000040,0x40000002,0x80000004,0x80000080,0x80000006,0x00000049,0x00000103,0x80000009,0x80000012,0x80000202,0x00000018,0x00000164,0x00000408,0x800000e6,0x8000004c,0x00000803,0x80000161 } } +, {1,45,0,58,0,2, { 0xf4000014,0xb4000008,0x08000000,0x9800000c,0xd8000010,0x08000010,0xb8000010,0x98000000,0x60000000,0x00000008,0xc0000000,0x90000014,0x10000010,0xb8000014,0x28000000,0x20000010,0x48000000,0x08000018,0x60000000,0x90000010,0xf0000010,0x90000008,0xc0000000,0x90000010,0xf0000010,0xb0000008,0x40000000,0x90000000,0xf0000010,0x90000018,0x60000000,0x90000010,0x90000010,0x90000000,0x80000000,0x00000010,0xa0000000,0x20000000,0xa0000000,0x20000010,0x00000000,0x20000010,0x20000000,0x00000010,0x20000000,0x00000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000040,0x40000002,0x80000004,0x80000080,0x80000006,0x00000049,0x00000103,0x80000009,0x80000012,0x80000202,0x00000018,0x00000164,0x00000408,0x800000e6,0x8000004c,0x00000803 } } +, {1,46,0,58,0,3, { 0x2c000010,0xf4000014,0xb4000008,0x08000000,0x9800000c,0xd8000010,0x08000010,0xb8000010,0x98000000,0x60000000,0x00000008,0xc0000000,0x90000014,0x10000010,0xb8000014,0x28000000,0x20000010,0x48000000,0x08000018,0x60000000,0x90000010,0xf0000010,0x90000008,0xc0000000,0x90000010,0xf0000010,0xb0000008,0x40000000,0x90000000,0xf0000010,0x90000018,0x60000000,0x90000010,0x90000010,0x90000000,0x80000000,0x00000010,0xa0000000,0x20000000,0xa0000000,0x20000010,0x00000000,0x20000010,0x20000000,0x00000010,0x20000000,0x00000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000040,0x40000002,0x80000004,0x80000080,0x80000006,0x00000049,0x00000103,0x80000009,0x80000012,0x80000202,0x00000018,0x00000164,0x00000408,0x800000e6,0x8000004c } } +, {1,46,2,58,0,4, { 0xb0000040,0xd0000053,0xd0000022,0x20000000,0x60000032,0x60000043,0x20000040,0xe0000042,0x60000002,0x80000001,0x00000020,0x00000003,0x40000052,0x40000040,0xe0000052,0xa0000000,0x80000040,0x20000001,0x20000060,0x80000001,0x40000042,0xc0000043,0x40000022,0x00000003,0x40000042,0xc0000043,0xc0000022,0x00000001,0x40000002,0xc0000043,0x40000062,0x80000001,0x40000042,0x40000042,0x40000002,0x00000002,0x00000040,0x80000002,0x80000000,0x80000002,0x80000040,0x00000000,0x80000040,0x80000000,0x00000040,0x80000000,0x00000040,0x80000002,0x00000000,0x80000000,0x80000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000004,0x00000080,0x00000004,0x00000009,0x00000101,0x00000009,0x00000012,0x00000202,0x0000001a,0x00000124,0x0000040c,0x00000026,0x0000004a,0x0000080a,0x00000060,0x00000590,0x00001020,0x0000039a,0x00000132 } } +, {1,47,0,58,0,5, { 0xc8000010,0x2c000010,0xf4000014,0xb4000008,0x08000000,0x9800000c,0xd8000010,0x08000010,0xb8000010,0x98000000,0x60000000,0x00000008,0xc0000000,0x90000014,0x10000010,0xb8000014,0x28000000,0x20000010,0x48000000,0x08000018,0x60000000,0x90000010,0xf0000010,0x90000008,0xc0000000,0x90000010,0xf0000010,0xb0000008,0x40000000,0x90000000,0xf0000010,0x90000018,0x60000000,0x90000010,0x90000010,0x90000000,0x80000000,0x00000010,0xa0000000,0x20000000,0xa0000000,0x20000010,0x00000000,0x20000010,0x20000000,0x00000010,0x20000000,0x00000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000040,0x40000002,0x80000004,0x80000080,0x80000006,0x00000049,0x00000103,0x80000009,0x80000012,0x80000202,0x00000018,0x00000164,0x00000408,0x800000e6 } } +, {1,47,2,58,0,6, { 0x20000043,0xb0000040,0xd0000053,0xd0000022,0x20000000,0x60000032,0x60000043,0x20000040,0xe0000042,0x60000002,0x80000001,0x00000020,0x00000003,0x40000052,0x40000040,0xe0000052,0xa0000000,0x80000040,0x20000001,0x20000060,0x80000001,0x40000042,0xc0000043,0x40000022,0x00000003,0x40000042,0xc0000043,0xc0000022,0x00000001,0x40000002,0xc0000043,0x40000062,0x80000001,0x40000042,0x40000042,0x40000002,0x00000002,0x00000040,0x80000002,0x80000000,0x80000002,0x80000040,0x00000000,0x80000040,0x80000000,0x00000040,0x80000000,0x00000040,0x80000002,0x00000000,0x80000000,0x80000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000004,0x00000080,0x00000004,0x00000009,0x00000101,0x00000009,0x00000012,0x00000202,0x0000001a,0x00000124,0x0000040c,0x00000026,0x0000004a,0x0000080a,0x00000060,0x00000590,0x00001020,0x0000039a } } +, {1,48,0,58,0,7, { 0xb800000a,0xc8000010,0x2c000010,0xf4000014,0xb4000008,0x08000000,0x9800000c,0xd8000010,0x08000010,0xb8000010,0x98000000,0x60000000,0x00000008,0xc0000000,0x90000014,0x10000010,0xb8000014,0x28000000,0x20000010,0x48000000,0x08000018,0x60000000,0x90000010,0xf0000010,0x90000008,0xc0000000,0x90000010,0xf0000010,0xb0000008,0x40000000,0x90000000,0xf0000010,0x90000018,0x60000000,0x90000010,0x90000010,0x90000000,0x80000000,0x00000010,0xa0000000,0x20000000,0xa0000000,0x20000010,0x00000000,0x20000010,0x20000000,0x00000010,0x20000000,0x00000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000040,0x40000002,0x80000004,0x80000080,0x80000006,0x00000049,0x00000103,0x80000009,0x80000012,0x80000202,0x00000018,0x00000164,0x00000408 } } +, {1,48,2,58,0,8, { 0xe000002a,0x20000043,0xb0000040,0xd0000053,0xd0000022,0x20000000,0x60000032,0x60000043,0x20000040,0xe0000042,0x60000002,0x80000001,0x00000020,0x00000003,0x40000052,0x40000040,0xe0000052,0xa0000000,0x80000040,0x20000001,0x20000060,0x80000001,0x40000042,0xc0000043,0x40000022,0x00000003,0x40000042,0xc0000043,0xc0000022,0x00000001,0x40000002,0xc0000043,0x40000062,0x80000001,0x40000042,0x40000042,0x40000002,0x00000002,0x00000040,0x80000002,0x80000000,0x80000002,0x80000040,0x00000000,0x80000040,0x80000000,0x00000040,0x80000000,0x00000040,0x80000002,0x00000000,0x80000000,0x80000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000004,0x00000080,0x00000004,0x00000009,0x00000101,0x00000009,0x00000012,0x00000202,0x0000001a,0x00000124,0x0000040c,0x00000026,0x0000004a,0x0000080a,0x00000060,0x00000590,0x00001020 } } +, {1,49,0,58,0,9, { 0x18000000,0xb800000a,0xc8000010,0x2c000010,0xf4000014,0xb4000008,0x08000000,0x9800000c,0xd8000010,0x08000010,0xb8000010,0x98000000,0x60000000,0x00000008,0xc0000000,0x90000014,0x10000010,0xb8000014,0x28000000,0x20000010,0x48000000,0x08000018,0x60000000,0x90000010,0xf0000010,0x90000008,0xc0000000,0x90000010,0xf0000010,0xb0000008,0x40000000,0x90000000,0xf0000010,0x90000018,0x60000000,0x90000010,0x90000010,0x90000000,0x80000000,0x00000010,0xa0000000,0x20000000,0xa0000000,0x20000010,0x00000000,0x20000010,0x20000000,0x00000010,0x20000000,0x00000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000040,0x40000002,0x80000004,0x80000080,0x80000006,0x00000049,0x00000103,0x80000009,0x80000012,0x80000202,0x00000018,0x00000164 } } +, {1,49,2,58,0,10, { 0x60000000,0xe000002a,0x20000043,0xb0000040,0xd0000053,0xd0000022,0x20000000,0x60000032,0x60000043,0x20000040,0xe0000042,0x60000002,0x80000001,0x00000020,0x00000003,0x40000052,0x40000040,0xe0000052,0xa0000000,0x80000040,0x20000001,0x20000060,0x80000001,0x40000042,0xc0000043,0x40000022,0x00000003,0x40000042,0xc0000043,0xc0000022,0x00000001,0x40000002,0xc0000043,0x40000062,0x80000001,0x40000042,0x40000042,0x40000002,0x00000002,0x00000040,0x80000002,0x80000000,0x80000002,0x80000040,0x00000000,0x80000040,0x80000000,0x00000040,0x80000000,0x00000040,0x80000002,0x00000000,0x80000000,0x80000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000004,0x00000080,0x00000004,0x00000009,0x00000101,0x00000009,0x00000012,0x00000202,0x0000001a,0x00000124,0x0000040c,0x00000026,0x0000004a,0x0000080a,0x00000060,0x00000590 } } +, {1,50,0,65,0,11, { 0x0800000c,0x18000000,0xb800000a,0xc8000010,0x2c000010,0xf4000014,0xb4000008,0x08000000,0x9800000c,0xd8000010,0x08000010,0xb8000010,0x98000000,0x60000000,0x00000008,0xc0000000,0x90000014,0x10000010,0xb8000014,0x28000000,0x20000010,0x48000000,0x08000018,0x60000000,0x90000010,0xf0000010,0x90000008,0xc0000000,0x90000010,0xf0000010,0xb0000008,0x40000000,0x90000000,0xf0000010,0x90000018,0x60000000,0x90000010,0x90000010,0x90000000,0x80000000,0x00000010,0xa0000000,0x20000000,0xa0000000,0x20000010,0x00000000,0x20000010,0x20000000,0x00000010,0x20000000,0x00000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000040,0x40000002,0x80000004,0x80000080,0x80000006,0x00000049,0x00000103,0x80000009,0x80000012,0x80000202,0x00000018 } } +, {1,50,2,65,0,12, { 0x20000030,0x60000000,0xe000002a,0x20000043,0xb0000040,0xd0000053,0xd0000022,0x20000000,0x60000032,0x60000043,0x20000040,0xe0000042,0x60000002,0x80000001,0x00000020,0x00000003,0x40000052,0x40000040,0xe0000052,0xa0000000,0x80000040,0x20000001,0x20000060,0x80000001,0x40000042,0xc0000043,0x40000022,0x00000003,0x40000042,0xc0000043,0xc0000022,0x00000001,0x40000002,0xc0000043,0x40000062,0x80000001,0x40000042,0x40000042,0x40000002,0x00000002,0x00000040,0x80000002,0x80000000,0x80000002,0x80000040,0x00000000,0x80000040,0x80000000,0x00000040,0x80000000,0x00000040,0x80000002,0x00000000,0x80000000,0x80000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000004,0x00000080,0x00000004,0x00000009,0x00000101,0x00000009,0x00000012,0x00000202,0x0000001a,0x00000124,0x0000040c,0x00000026,0x0000004a,0x0000080a,0x00000060 } } +, {1,51,0,65,0,13, { 0xe8000000,0x0800000c,0x18000000,0xb800000a,0xc8000010,0x2c000010,0xf4000014,0xb4000008,0x08000000,0x9800000c,0xd8000010,0x08000010,0xb8000010,0x98000000,0x60000000,0x00000008,0xc0000000,0x90000014,0x10000010,0xb8000014,0x28000000,0x20000010,0x48000000,0x08000018,0x60000000,0x90000010,0xf0000010,0x90000008,0xc0000000,0x90000010,0xf0000010,0xb0000008,0x40000000,0x90000000,0xf0000010,0x90000018,0x60000000,0x90000010,0x90000010,0x90000000,0x80000000,0x00000010,0xa0000000,0x20000000,0xa0000000,0x20000010,0x00000000,0x20000010,0x20000000,0x00000010,0x20000000,0x00000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000040,0x40000002,0x80000004,0x80000080,0x80000006,0x00000049,0x00000103,0x80000009,0x80000012,0x80000202 } } +, {1,51,2,65,0,14, { 0xa0000003,0x20000030,0x60000000,0xe000002a,0x20000043,0xb0000040,0xd0000053,0xd0000022,0x20000000,0x60000032,0x60000043,0x20000040,0xe0000042,0x60000002,0x80000001,0x00000020,0x00000003,0x40000052,0x40000040,0xe0000052,0xa0000000,0x80000040,0x20000001,0x20000060,0x80000001,0x40000042,0xc0000043,0x40000022,0x00000003,0x40000042,0xc0000043,0xc0000022,0x00000001,0x40000002,0xc0000043,0x40000062,0x80000001,0x40000042,0x40000042,0x40000002,0x00000002,0x00000040,0x80000002,0x80000000,0x80000002,0x80000040,0x00000000,0x80000040,0x80000000,0x00000040,0x80000000,0x00000040,0x80000002,0x00000000,0x80000000,0x80000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000004,0x00000080,0x00000004,0x00000009,0x00000101,0x00000009,0x00000012,0x00000202,0x0000001a,0x00000124,0x0000040c,0x00000026,0x0000004a,0x0000080a } } +, {1,52,0,65,0,15, { 0x04000010,0xe8000000,0x0800000c,0x18000000,0xb800000a,0xc8000010,0x2c000010,0xf4000014,0xb4000008,0x08000000,0x9800000c,0xd8000010,0x08000010,0xb8000010,0x98000000,0x60000000,0x00000008,0xc0000000,0x90000014,0x10000010,0xb8000014,0x28000000,0x20000010,0x48000000,0x08000018,0x60000000,0x90000010,0xf0000010,0x90000008,0xc0000000,0x90000010,0xf0000010,0xb0000008,0x40000000,0x90000000,0xf0000010,0x90000018,0x60000000,0x90000010,0x90000010,0x90000000,0x80000000,0x00000010,0xa0000000,0x20000000,0xa0000000,0x20000010,0x00000000,0x20000010,0x20000000,0x00000010,0x20000000,0x00000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000040,0x40000002,0x80000004,0x80000080,0x80000006,0x00000049,0x00000103,0x80000009,0x80000012 } } +, {2,45,0,58,0,16, { 0xec000014,0x0c000002,0xc0000010,0xb400001c,0x2c000004,0xbc000018,0xb0000010,0x0000000c,0xb8000010,0x08000018,0x78000010,0x08000014,0x70000010,0xb800001c,0xe8000000,0xb0000004,0x58000010,0xb000000c,0x48000000,0xb0000000,0xb8000010,0x98000010,0xa0000000,0x00000000,0x00000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0x20000000,0x00000010,0x60000000,0x00000018,0xe0000000,0x90000000,0x30000010,0xb0000000,0x20000000,0x20000000,0xa0000000,0x00000010,0x80000000,0x20000000,0x20000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000041,0x40000022,0x80000005,0xc0000082,0xc0000046,0x4000004b,0x80000107,0x00000089,0x00000014,0x8000024b,0x0000011b,0x8000016d,0x8000041a,0x000002e4,0x80000054,0x00000967 } } +, {2,46,0,58,0,17, { 0x2400001c,0xec000014,0x0c000002,0xc0000010,0xb400001c,0x2c000004,0xbc000018,0xb0000010,0x0000000c,0xb8000010,0x08000018,0x78000010,0x08000014,0x70000010,0xb800001c,0xe8000000,0xb0000004,0x58000010,0xb000000c,0x48000000,0xb0000000,0xb8000010,0x98000010,0xa0000000,0x00000000,0x00000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0x20000000,0x00000010,0x60000000,0x00000018,0xe0000000,0x90000000,0x30000010,0xb0000000,0x20000000,0x20000000,0xa0000000,0x00000010,0x80000000,0x20000000,0x20000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000041,0x40000022,0x80000005,0xc0000082,0xc0000046,0x4000004b,0x80000107,0x00000089,0x00000014,0x8000024b,0x0000011b,0x8000016d,0x8000041a,0x000002e4,0x80000054 } } +, {2,46,2,58,0,18, { 0x90000070,0xb0000053,0x30000008,0x00000043,0xd0000072,0xb0000010,0xf0000062,0xc0000042,0x00000030,0xe0000042,0x20000060,0xe0000041,0x20000050,0xc0000041,0xe0000072,0xa0000003,0xc0000012,0x60000041,0xc0000032,0x20000001,0xc0000002,0xe0000042,0x60000042,0x80000002,0x00000000,0x00000000,0x80000000,0x00000002,0x00000040,0x00000000,0x80000040,0x80000000,0x00000040,0x80000001,0x00000060,0x80000003,0x40000002,0xc0000040,0xc0000002,0x80000000,0x80000000,0x80000002,0x00000040,0x00000002,0x80000000,0x80000000,0x80000000,0x00000002,0x00000040,0x00000000,0x80000040,0x80000002,0x00000000,0x80000000,0x80000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000004,0x00000080,0x00000004,0x00000009,0x00000105,0x00000089,0x00000016,0x0000020b,0x0000011b,0x0000012d,0x0000041e,0x00000224,0x00000050,0x0000092e,0x0000046c,0x000005b6,0x0000106a,0x00000b90,0x00000152 } } +, {2,47,0,58,0,19, { 0x20000010,0x2400001c,0xec000014,0x0c000002,0xc0000010,0xb400001c,0x2c000004,0xbc000018,0xb0000010,0x0000000c,0xb8000010,0x08000018,0x78000010,0x08000014,0x70000010,0xb800001c,0xe8000000,0xb0000004,0x58000010,0xb000000c,0x48000000,0xb0000000,0xb8000010,0x98000010,0xa0000000,0x00000000,0x00000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0x20000000,0x00000010,0x60000000,0x00000018,0xe0000000,0x90000000,0x30000010,0xb0000000,0x20000000,0x20000000,0xa0000000,0x00000010,0x80000000,0x20000000,0x20000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000041,0x40000022,0x80000005,0xc0000082,0xc0000046,0x4000004b,0x80000107,0x00000089,0x00000014,0x8000024b,0x0000011b,0x8000016d,0x8000041a,0x000002e4 } } +, {2,48,0,58,0,20, { 0xbc00001a,0x20000010,0x2400001c,0xec000014,0x0c000002,0xc0000010,0xb400001c,0x2c000004,0xbc000018,0xb0000010,0x0000000c,0xb8000010,0x08000018,0x78000010,0x08000014,0x70000010,0xb800001c,0xe8000000,0xb0000004,0x58000010,0xb000000c,0x48000000,0xb0000000,0xb8000010,0x98000010,0xa0000000,0x00000000,0x00000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0x20000000,0x00000010,0x60000000,0x00000018,0xe0000000,0x90000000,0x30000010,0xb0000000,0x20000000,0x20000000,0xa0000000,0x00000010,0x80000000,0x20000000,0x20000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000041,0x40000022,0x80000005,0xc0000082,0xc0000046,0x4000004b,0x80000107,0x00000089,0x00000014,0x8000024b,0x0000011b,0x8000016d,0x8000041a } } +, {2,49,0,58,0,21, { 0x3c000004,0xbc00001a,0x20000010,0x2400001c,0xec000014,0x0c000002,0xc0000010,0xb400001c,0x2c000004,0xbc000018,0xb0000010,0x0000000c,0xb8000010,0x08000018,0x78000010,0x08000014,0x70000010,0xb800001c,0xe8000000,0xb0000004,0x58000010,0xb000000c,0x48000000,0xb0000000,0xb8000010,0x98000010,0xa0000000,0x00000000,0x00000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0x20000000,0x00000010,0x60000000,0x00000018,0xe0000000,0x90000000,0x30000010,0xb0000000,0x20000000,0x20000000,0xa0000000,0x00000010,0x80000000,0x20000000,0x20000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000041,0x40000022,0x80000005,0xc0000082,0xc0000046,0x4000004b,0x80000107,0x00000089,0x00000014,0x8000024b,0x0000011b,0x8000016d } } +, {2,49,2,58,0,22, { 0xf0000010,0xf000006a,0x80000040,0x90000070,0xb0000053,0x30000008,0x00000043,0xd0000072,0xb0000010,0xf0000062,0xc0000042,0x00000030,0xe0000042,0x20000060,0xe0000041,0x20000050,0xc0000041,0xe0000072,0xa0000003,0xc0000012,0x60000041,0xc0000032,0x20000001,0xc0000002,0xe0000042,0x60000042,0x80000002,0x00000000,0x00000000,0x80000000,0x00000002,0x00000040,0x00000000,0x80000040,0x80000000,0x00000040,0x80000001,0x00000060,0x80000003,0x40000002,0xc0000040,0xc0000002,0x80000000,0x80000000,0x80000002,0x00000040,0x00000002,0x80000000,0x80000000,0x80000000,0x00000002,0x00000040,0x00000000,0x80000040,0x80000002,0x00000000,0x80000000,0x80000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000004,0x00000080,0x00000004,0x00000009,0x00000105,0x00000089,0x00000016,0x0000020b,0x0000011b,0x0000012d,0x0000041e,0x00000224,0x00000050,0x0000092e,0x0000046c,0x000005b6 } } +, {2,50,0,65,0,23, { 0xb400001c,0x3c000004,0xbc00001a,0x20000010,0x2400001c,0xec000014,0x0c000002,0xc0000010,0xb400001c,0x2c000004,0xbc000018,0xb0000010,0x0000000c,0xb8000010,0x08000018,0x78000010,0x08000014,0x70000010,0xb800001c,0xe8000000,0xb0000004,0x58000010,0xb000000c,0x48000000,0xb0000000,0xb8000010,0x98000010,0xa0000000,0x00000000,0x00000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0x20000000,0x00000010,0x60000000,0x00000018,0xe0000000,0x90000000,0x30000010,0xb0000000,0x20000000,0x20000000,0xa0000000,0x00000010,0x80000000,0x20000000,0x20000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000041,0x40000022,0x80000005,0xc0000082,0xc0000046,0x4000004b,0x80000107,0x00000089,0x00000014,0x8000024b,0x0000011b } } +, {2,50,2,65,0,24, { 0xd0000072,0xf0000010,0xf000006a,0x80000040,0x90000070,0xb0000053,0x30000008,0x00000043,0xd0000072,0xb0000010,0xf0000062,0xc0000042,0x00000030,0xe0000042,0x20000060,0xe0000041,0x20000050,0xc0000041,0xe0000072,0xa0000003,0xc0000012,0x60000041,0xc0000032,0x20000001,0xc0000002,0xe0000042,0x60000042,0x80000002,0x00000000,0x00000000,0x80000000,0x00000002,0x00000040,0x00000000,0x80000040,0x80000000,0x00000040,0x80000001,0x00000060,0x80000003,0x40000002,0xc0000040,0xc0000002,0x80000000,0x80000000,0x80000002,0x00000040,0x00000002,0x80000000,0x80000000,0x80000000,0x00000002,0x00000040,0x00000000,0x80000040,0x80000002,0x00000000,0x80000000,0x80000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000004,0x00000080,0x00000004,0x00000009,0x00000105,0x00000089,0x00000016,0x0000020b,0x0000011b,0x0000012d,0x0000041e,0x00000224,0x00000050,0x0000092e,0x0000046c } } +, {2,51,0,65,0,25, { 0xc0000010,0xb400001c,0x3c000004,0xbc00001a,0x20000010,0x2400001c,0xec000014,0x0c000002,0xc0000010,0xb400001c,0x2c000004,0xbc000018,0xb0000010,0x0000000c,0xb8000010,0x08000018,0x78000010,0x08000014,0x70000010,0xb800001c,0xe8000000,0xb0000004,0x58000010,0xb000000c,0x48000000,0xb0000000,0xb8000010,0x98000010,0xa0000000,0x00000000,0x00000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0x20000000,0x00000010,0x60000000,0x00000018,0xe0000000,0x90000000,0x30000010,0xb0000000,0x20000000,0x20000000,0xa0000000,0x00000010,0x80000000,0x20000000,0x20000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000041,0x40000022,0x80000005,0xc0000082,0xc0000046,0x4000004b,0x80000107,0x00000089,0x00000014,0x8000024b } } +, {2,51,2,65,0,26, { 0x00000043,0xd0000072,0xf0000010,0xf000006a,0x80000040,0x90000070,0xb0000053,0x30000008,0x00000043,0xd0000072,0xb0000010,0xf0000062,0xc0000042,0x00000030,0xe0000042,0x20000060,0xe0000041,0x20000050,0xc0000041,0xe0000072,0xa0000003,0xc0000012,0x60000041,0xc0000032,0x20000001,0xc0000002,0xe0000042,0x60000042,0x80000002,0x00000000,0x00000000,0x80000000,0x00000002,0x00000040,0x00000000,0x80000040,0x80000000,0x00000040,0x80000001,0x00000060,0x80000003,0x40000002,0xc0000040,0xc0000002,0x80000000,0x80000000,0x80000002,0x00000040,0x00000002,0x80000000,0x80000000,0x80000000,0x00000002,0x00000040,0x00000000,0x80000040,0x80000002,0x00000000,0x80000000,0x80000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000004,0x00000080,0x00000004,0x00000009,0x00000105,0x00000089,0x00000016,0x0000020b,0x0000011b,0x0000012d,0x0000041e,0x00000224,0x00000050,0x0000092e } } +, {2,52,0,65,0,27, { 0x0c000002,0xc0000010,0xb400001c,0x3c000004,0xbc00001a,0x20000010,0x2400001c,0xec000014,0x0c000002,0xc0000010,0xb400001c,0x2c000004,0xbc000018,0xb0000010,0x0000000c,0xb8000010,0x08000018,0x78000010,0x08000014,0x70000010,0xb800001c,0xe8000000,0xb0000004,0x58000010,0xb000000c,0x48000000,0xb0000000,0xb8000010,0x98000010,0xa0000000,0x00000000,0x00000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0x20000000,0x00000010,0x60000000,0x00000018,0xe0000000,0x90000000,0x30000010,0xb0000000,0x20000000,0x20000000,0xa0000000,0x00000010,0x80000000,0x20000000,0x20000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000041,0x40000022,0x80000005,0xc0000082,0xc0000046,0x4000004b,0x80000107,0x00000089,0x00000014 } } +, {2,53,0,65,0,28, { 0xcc000014,0x0c000002,0xc0000010,0xb400001c,0x3c000004,0xbc00001a,0x20000010,0x2400001c,0xec000014,0x0c000002,0xc0000010,0xb400001c,0x2c000004,0xbc000018,0xb0000010,0x0000000c,0xb8000010,0x08000018,0x78000010,0x08000014,0x70000010,0xb800001c,0xe8000000,0xb0000004,0x58000010,0xb000000c,0x48000000,0xb0000000,0xb8000010,0x98000010,0xa0000000,0x00000000,0x00000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0x20000000,0x00000010,0x60000000,0x00000018,0xe0000000,0x90000000,0x30000010,0xb0000000,0x20000000,0x20000000,0xa0000000,0x00000010,0x80000000,0x20000000,0x20000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000041,0x40000022,0x80000005,0xc0000082,0xc0000046,0x4000004b,0x80000107,0x00000089 } } +, {2,54,0,65,0,29, { 0x0400001c,0xcc000014,0x0c000002,0xc0000010,0xb400001c,0x3c000004,0xbc00001a,0x20000010,0x2400001c,0xec000014,0x0c000002,0xc0000010,0xb400001c,0x2c000004,0xbc000018,0xb0000010,0x0000000c,0xb8000010,0x08000018,0x78000010,0x08000014,0x70000010,0xb800001c,0xe8000000,0xb0000004,0x58000010,0xb000000c,0x48000000,0xb0000000,0xb8000010,0x98000010,0xa0000000,0x00000000,0x00000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0x20000000,0x00000010,0x60000000,0x00000018,0xe0000000,0x90000000,0x30000010,0xb0000000,0x20000000,0x20000000,0xa0000000,0x00000010,0x80000000,0x20000000,0x20000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000041,0x40000022,0x80000005,0xc0000082,0xc0000046,0x4000004b,0x80000107 } } +, {2,55,0,65,0,30, { 0x00000010,0x0400001c,0xcc000014,0x0c000002,0xc0000010,0xb400001c,0x3c000004,0xbc00001a,0x20000010,0x2400001c,0xec000014,0x0c000002,0xc0000010,0xb400001c,0x2c000004,0xbc000018,0xb0000010,0x0000000c,0xb8000010,0x08000018,0x78000010,0x08000014,0x70000010,0xb800001c,0xe8000000,0xb0000004,0x58000010,0xb000000c,0x48000000,0xb0000000,0xb8000010,0x98000010,0xa0000000,0x00000000,0x00000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0x20000000,0x00000010,0x60000000,0x00000018,0xe0000000,0x90000000,0x30000010,0xb0000000,0x20000000,0x20000000,0xa0000000,0x00000010,0x80000000,0x20000000,0x20000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000041,0x40000022,0x80000005,0xc0000082,0xc0000046,0x4000004b } } +, {2,56,0,65,0,31, { 0x2600001a,0x00000010,0x0400001c,0xcc000014,0x0c000002,0xc0000010,0xb400001c,0x3c000004,0xbc00001a,0x20000010,0x2400001c,0xec000014,0x0c000002,0xc0000010,0xb400001c,0x2c000004,0xbc000018,0xb0000010,0x0000000c,0xb8000010,0x08000018,0x78000010,0x08000014,0x70000010,0xb800001c,0xe8000000,0xb0000004,0x58000010,0xb000000c,0x48000000,0xb0000000,0xb8000010,0x98000010,0xa0000000,0x00000000,0x00000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0x20000000,0x00000010,0x60000000,0x00000018,0xe0000000,0x90000000,0x30000010,0xb0000000,0x20000000,0x20000000,0xa0000000,0x00000010,0x80000000,0x20000000,0x20000000,0x20000000,0x80000000,0x00000010,0x00000000,0x20000010,0xa0000000,0x00000000,0x20000000,0x20000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000020,0x00000001,0x40000002,0x40000041,0x40000022,0x80000005,0xc0000082,0xc0000046 } } +, {0,0,0,0,0,0, {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}} +}; +void ubc_check(const uint32_t W[80], uint32_t dvmask[1]) +{ + uint32_t mask = ~((uint32_t)(0)); + mask &= (((((W[44]^W[45])>>29)&1)-1) | ~(DV_I_48_0_bit|DV_I_51_0_bit|DV_I_52_0_bit|DV_II_45_0_bit|DV_II_46_0_bit|DV_II_50_0_bit|DV_II_51_0_bit)); + mask &= (((((W[49]^W[50])>>29)&1)-1) | ~(DV_I_46_0_bit|DV_II_45_0_bit|DV_II_50_0_bit|DV_II_51_0_bit|DV_II_55_0_bit|DV_II_56_0_bit)); + mask &= (((((W[48]^W[49])>>29)&1)-1) | ~(DV_I_45_0_bit|DV_I_52_0_bit|DV_II_49_0_bit|DV_II_50_0_bit|DV_II_54_0_bit|DV_II_55_0_bit)); + mask &= ((((W[47]^(W[50]>>25))&(1<<4))-(1<<4)) | ~(DV_I_47_0_bit|DV_I_49_0_bit|DV_I_51_0_bit|DV_II_45_0_bit|DV_II_51_0_bit|DV_II_56_0_bit)); + mask &= (((((W[47]^W[48])>>29)&1)-1) | ~(DV_I_44_0_bit|DV_I_51_0_bit|DV_II_48_0_bit|DV_II_49_0_bit|DV_II_53_0_bit|DV_II_54_0_bit)); + mask &= (((((W[46]>>4)^(W[49]>>29))&1)-1) | ~(DV_I_46_0_bit|DV_I_48_0_bit|DV_I_50_0_bit|DV_I_52_0_bit|DV_II_50_0_bit|DV_II_55_0_bit)); + mask &= (((((W[46]^W[47])>>29)&1)-1) | ~(DV_I_43_0_bit|DV_I_50_0_bit|DV_II_47_0_bit|DV_II_48_0_bit|DV_II_52_0_bit|DV_II_53_0_bit)); + mask &= (((((W[45]>>4)^(W[48]>>29))&1)-1) | ~(DV_I_45_0_bit|DV_I_47_0_bit|DV_I_49_0_bit|DV_I_51_0_bit|DV_II_49_0_bit|DV_II_54_0_bit)); + mask &= (((((W[45]^W[46])>>29)&1)-1) | ~(DV_I_49_0_bit|DV_I_52_0_bit|DV_II_46_0_bit|DV_II_47_0_bit|DV_II_51_0_bit|DV_II_52_0_bit)); + mask &= (((((W[44]>>4)^(W[47]>>29))&1)-1) | ~(DV_I_44_0_bit|DV_I_46_0_bit|DV_I_48_0_bit|DV_I_50_0_bit|DV_II_48_0_bit|DV_II_53_0_bit)); + mask &= (((((W[43]>>4)^(W[46]>>29))&1)-1) | ~(DV_I_43_0_bit|DV_I_45_0_bit|DV_I_47_0_bit|DV_I_49_0_bit|DV_II_47_0_bit|DV_II_52_0_bit)); + mask &= (((((W[43]^W[44])>>29)&1)-1) | ~(DV_I_47_0_bit|DV_I_50_0_bit|DV_I_51_0_bit|DV_II_45_0_bit|DV_II_49_0_bit|DV_II_50_0_bit)); + mask &= (((((W[42]>>4)^(W[45]>>29))&1)-1) | ~(DV_I_44_0_bit|DV_I_46_0_bit|DV_I_48_0_bit|DV_I_52_0_bit|DV_II_46_0_bit|DV_II_51_0_bit)); + mask &= (((((W[41]>>4)^(W[44]>>29))&1)-1) | ~(DV_I_43_0_bit|DV_I_45_0_bit|DV_I_47_0_bit|DV_I_51_0_bit|DV_II_45_0_bit|DV_II_50_0_bit)); + mask &= (((((W[40]^W[41])>>29)&1)-1) | ~(DV_I_44_0_bit|DV_I_47_0_bit|DV_I_48_0_bit|DV_II_46_0_bit|DV_II_47_0_bit|DV_II_56_0_bit)); + mask &= (((((W[54]^W[55])>>29)&1)-1) | ~(DV_I_51_0_bit|DV_II_47_0_bit|DV_II_50_0_bit|DV_II_55_0_bit|DV_II_56_0_bit)); + mask &= (((((W[53]^W[54])>>29)&1)-1) | ~(DV_I_50_0_bit|DV_II_46_0_bit|DV_II_49_0_bit|DV_II_54_0_bit|DV_II_55_0_bit)); + mask &= (((((W[52]^W[53])>>29)&1)-1) | ~(DV_I_49_0_bit|DV_II_45_0_bit|DV_II_48_0_bit|DV_II_53_0_bit|DV_II_54_0_bit)); + mask &= ((((W[50]^(W[53]>>25))&(1<<4))-(1<<4)) | ~(DV_I_50_0_bit|DV_I_52_0_bit|DV_II_46_0_bit|DV_II_48_0_bit|DV_II_54_0_bit)); + mask &= (((((W[50]^W[51])>>29)&1)-1) | ~(DV_I_47_0_bit|DV_II_46_0_bit|DV_II_51_0_bit|DV_II_52_0_bit|DV_II_56_0_bit)); + mask &= ((((W[49]^(W[52]>>25))&(1<<4))-(1<<4)) | ~(DV_I_49_0_bit|DV_I_51_0_bit|DV_II_45_0_bit|DV_II_47_0_bit|DV_II_53_0_bit)); + mask &= ((((W[48]^(W[51]>>25))&(1<<4))-(1<<4)) | ~(DV_I_48_0_bit|DV_I_50_0_bit|DV_I_52_0_bit|DV_II_46_0_bit|DV_II_52_0_bit)); + mask &= (((((W[42]^W[43])>>29)&1)-1) | ~(DV_I_46_0_bit|DV_I_49_0_bit|DV_I_50_0_bit|DV_II_48_0_bit|DV_II_49_0_bit)); + mask &= (((((W[41]^W[42])>>29)&1)-1) | ~(DV_I_45_0_bit|DV_I_48_0_bit|DV_I_49_0_bit|DV_II_47_0_bit|DV_II_48_0_bit)); + mask &= (((((W[40]>>4)^(W[43]>>29))&1)-1) | ~(DV_I_44_0_bit|DV_I_46_0_bit|DV_I_50_0_bit|DV_II_49_0_bit|DV_II_56_0_bit)); + mask &= (((((W[39]>>4)^(W[42]>>29))&1)-1) | ~(DV_I_43_0_bit|DV_I_45_0_bit|DV_I_49_0_bit|DV_II_48_0_bit|DV_II_55_0_bit)); + if (mask & (DV_I_44_0_bit|DV_I_48_0_bit|DV_II_47_0_bit|DV_II_54_0_bit|DV_II_56_0_bit)) + mask &= (((((W[38]>>4)^(W[41]>>29))&1)-1) | ~(DV_I_44_0_bit|DV_I_48_0_bit|DV_II_47_0_bit|DV_II_54_0_bit|DV_II_56_0_bit)); + mask &= (((((W[37]>>4)^(W[40]>>29))&1)-1) | ~(DV_I_43_0_bit|DV_I_47_0_bit|DV_II_46_0_bit|DV_II_53_0_bit|DV_II_55_0_bit)); + if (mask & (DV_I_52_0_bit|DV_II_48_0_bit|DV_II_51_0_bit|DV_II_56_0_bit)) + mask &= (((((W[55]^W[56])>>29)&1)-1) | ~(DV_I_52_0_bit|DV_II_48_0_bit|DV_II_51_0_bit|DV_II_56_0_bit)); + if (mask & (DV_I_52_0_bit|DV_II_48_0_bit|DV_II_50_0_bit|DV_II_56_0_bit)) + mask &= ((((W[52]^(W[55]>>25))&(1<<4))-(1<<4)) | ~(DV_I_52_0_bit|DV_II_48_0_bit|DV_II_50_0_bit|DV_II_56_0_bit)); + if (mask & (DV_I_51_0_bit|DV_II_47_0_bit|DV_II_49_0_bit|DV_II_55_0_bit)) + mask &= ((((W[51]^(W[54]>>25))&(1<<4))-(1<<4)) | ~(DV_I_51_0_bit|DV_II_47_0_bit|DV_II_49_0_bit|DV_II_55_0_bit)); + if (mask & (DV_I_48_0_bit|DV_II_47_0_bit|DV_II_52_0_bit|DV_II_53_0_bit)) + mask &= (((((W[51]^W[52])>>29)&1)-1) | ~(DV_I_48_0_bit|DV_II_47_0_bit|DV_II_52_0_bit|DV_II_53_0_bit)); + if (mask & (DV_I_46_0_bit|DV_I_49_0_bit|DV_II_45_0_bit|DV_II_48_0_bit)) + mask &= (((((W[36]>>4)^(W[40]>>29))&1)-1) | ~(DV_I_46_0_bit|DV_I_49_0_bit|DV_II_45_0_bit|DV_II_48_0_bit)); + if (mask & (DV_I_52_0_bit|DV_II_48_0_bit|DV_II_49_0_bit)) + mask &= ((0-(((W[53]^W[56])>>29)&1)) | ~(DV_I_52_0_bit|DV_II_48_0_bit|DV_II_49_0_bit)); + if (mask & (DV_I_50_0_bit|DV_II_46_0_bit|DV_II_47_0_bit)) + mask &= ((0-(((W[51]^W[54])>>29)&1)) | ~(DV_I_50_0_bit|DV_II_46_0_bit|DV_II_47_0_bit)); + if (mask & (DV_I_49_0_bit|DV_I_51_0_bit|DV_II_45_0_bit)) + mask &= ((0-(((W[50]^W[52])>>29)&1)) | ~(DV_I_49_0_bit|DV_I_51_0_bit|DV_II_45_0_bit)); + if (mask & (DV_I_48_0_bit|DV_I_50_0_bit|DV_I_52_0_bit)) + mask &= ((0-(((W[49]^W[51])>>29)&1)) | ~(DV_I_48_0_bit|DV_I_50_0_bit|DV_I_52_0_bit)); + if (mask & (DV_I_47_0_bit|DV_I_49_0_bit|DV_I_51_0_bit)) + mask &= ((0-(((W[48]^W[50])>>29)&1)) | ~(DV_I_47_0_bit|DV_I_49_0_bit|DV_I_51_0_bit)); + if (mask & (DV_I_46_0_bit|DV_I_48_0_bit|DV_I_50_0_bit)) + mask &= ((0-(((W[47]^W[49])>>29)&1)) | ~(DV_I_46_0_bit|DV_I_48_0_bit|DV_I_50_0_bit)); + if (mask & (DV_I_45_0_bit|DV_I_47_0_bit|DV_I_49_0_bit)) + mask &= ((0-(((W[46]^W[48])>>29)&1)) | ~(DV_I_45_0_bit|DV_I_47_0_bit|DV_I_49_0_bit)); + mask &= ((((W[45]^W[47])&(1<<6))-(1<<6)) | ~(DV_I_47_2_bit|DV_I_49_2_bit|DV_I_51_2_bit)); + if (mask & (DV_I_44_0_bit|DV_I_46_0_bit|DV_I_48_0_bit)) + mask &= ((0-(((W[45]^W[47])>>29)&1)) | ~(DV_I_44_0_bit|DV_I_46_0_bit|DV_I_48_0_bit)); + mask &= (((((W[44]^W[46])>>6)&1)-1) | ~(DV_I_46_2_bit|DV_I_48_2_bit|DV_I_50_2_bit)); + if (mask & (DV_I_43_0_bit|DV_I_45_0_bit|DV_I_47_0_bit)) + mask &= ((0-(((W[44]^W[46])>>29)&1)) | ~(DV_I_43_0_bit|DV_I_45_0_bit|DV_I_47_0_bit)); + mask &= ((0-((W[41]^(W[42]>>5))&(1<<1))) | ~(DV_I_48_2_bit|DV_II_46_2_bit|DV_II_51_2_bit)); + mask &= ((0-((W[40]^(W[41]>>5))&(1<<1))) | ~(DV_I_47_2_bit|DV_I_51_2_bit|DV_II_50_2_bit)); + if (mask & (DV_I_44_0_bit|DV_I_46_0_bit|DV_II_56_0_bit)) + mask &= ((0-(((W[40]^W[42])>>4)&1)) | ~(DV_I_44_0_bit|DV_I_46_0_bit|DV_II_56_0_bit)); + mask &= ((0-((W[39]^(W[40]>>5))&(1<<1))) | ~(DV_I_46_2_bit|DV_I_50_2_bit|DV_II_49_2_bit)); + if (mask & (DV_I_43_0_bit|DV_I_45_0_bit|DV_II_55_0_bit)) + mask &= ((0-(((W[39]^W[41])>>4)&1)) | ~(DV_I_43_0_bit|DV_I_45_0_bit|DV_II_55_0_bit)); + if (mask & (DV_I_44_0_bit|DV_II_54_0_bit|DV_II_56_0_bit)) + mask &= ((0-(((W[38]^W[40])>>4)&1)) | ~(DV_I_44_0_bit|DV_II_54_0_bit|DV_II_56_0_bit)); + if (mask & (DV_I_43_0_bit|DV_II_53_0_bit|DV_II_55_0_bit)) + mask &= ((0-(((W[37]^W[39])>>4)&1)) | ~(DV_I_43_0_bit|DV_II_53_0_bit|DV_II_55_0_bit)); + mask &= ((0-((W[36]^(W[37]>>5))&(1<<1))) | ~(DV_I_47_2_bit|DV_I_50_2_bit|DV_II_46_2_bit)); + if (mask & (DV_I_45_0_bit|DV_I_48_0_bit|DV_II_47_0_bit)) + mask &= (((((W[35]>>4)^(W[39]>>29))&1)-1) | ~(DV_I_45_0_bit|DV_I_48_0_bit|DV_II_47_0_bit)); + if (mask & (DV_I_48_0_bit|DV_II_48_0_bit)) + mask &= ((0-((W[63]^(W[64]>>5))&(1<<0))) | ~(DV_I_48_0_bit|DV_II_48_0_bit)); + if (mask & (DV_I_45_0_bit|DV_II_45_0_bit)) + mask &= ((0-((W[63]^(W[64]>>5))&(1<<1))) | ~(DV_I_45_0_bit|DV_II_45_0_bit)); + if (mask & (DV_I_47_0_bit|DV_II_47_0_bit)) + mask &= ((0-((W[62]^(W[63]>>5))&(1<<0))) | ~(DV_I_47_0_bit|DV_II_47_0_bit)); + if (mask & (DV_I_46_0_bit|DV_II_46_0_bit)) + mask &= ((0-((W[61]^(W[62]>>5))&(1<<0))) | ~(DV_I_46_0_bit|DV_II_46_0_bit)); + mask &= ((0-((W[61]^(W[62]>>5))&(1<<2))) | ~(DV_I_46_2_bit|DV_II_46_2_bit)); + if (mask & (DV_I_45_0_bit|DV_II_45_0_bit)) + mask &= ((0-((W[60]^(W[61]>>5))&(1<<0))) | ~(DV_I_45_0_bit|DV_II_45_0_bit)); + if (mask & (DV_II_51_0_bit|DV_II_54_0_bit)) + mask &= (((((W[58]^W[59])>>29)&1)-1) | ~(DV_II_51_0_bit|DV_II_54_0_bit)); + if (mask & (DV_II_50_0_bit|DV_II_53_0_bit)) + mask &= (((((W[57]^W[58])>>29)&1)-1) | ~(DV_II_50_0_bit|DV_II_53_0_bit)); + if (mask & (DV_II_52_0_bit|DV_II_54_0_bit)) + mask &= ((((W[56]^(W[59]>>25))&(1<<4))-(1<<4)) | ~(DV_II_52_0_bit|DV_II_54_0_bit)); + if (mask & (DV_II_51_0_bit|DV_II_52_0_bit)) + mask &= ((0-(((W[56]^W[59])>>29)&1)) | ~(DV_II_51_0_bit|DV_II_52_0_bit)); + if (mask & (DV_II_49_0_bit|DV_II_52_0_bit)) + mask &= (((((W[56]^W[57])>>29)&1)-1) | ~(DV_II_49_0_bit|DV_II_52_0_bit)); + if (mask & (DV_II_51_0_bit|DV_II_53_0_bit)) + mask &= ((((W[55]^(W[58]>>25))&(1<<4))-(1<<4)) | ~(DV_II_51_0_bit|DV_II_53_0_bit)); + if (mask & (DV_II_50_0_bit|DV_II_52_0_bit)) + mask &= ((((W[54]^(W[57]>>25))&(1<<4))-(1<<4)) | ~(DV_II_50_0_bit|DV_II_52_0_bit)); + if (mask & (DV_II_49_0_bit|DV_II_51_0_bit)) + mask &= ((((W[53]^(W[56]>>25))&(1<<4))-(1<<4)) | ~(DV_II_49_0_bit|DV_II_51_0_bit)); + mask &= ((((W[51]^(W[50]>>5))&(1<<1))-(1<<1)) | ~(DV_I_50_2_bit|DV_II_46_2_bit)); + mask &= ((((W[48]^W[50])&(1<<6))-(1<<6)) | ~(DV_I_50_2_bit|DV_II_46_2_bit)); + if (mask & (DV_I_51_0_bit|DV_I_52_0_bit)) + mask &= ((0-(((W[48]^W[55])>>29)&1)) | ~(DV_I_51_0_bit|DV_I_52_0_bit)); + mask &= ((((W[47]^W[49])&(1<<6))-(1<<6)) | ~(DV_I_49_2_bit|DV_I_51_2_bit)); + mask &= ((((W[48]^(W[47]>>5))&(1<<1))-(1<<1)) | ~(DV_I_47_2_bit|DV_II_51_2_bit)); + mask &= ((((W[46]^W[48])&(1<<6))-(1<<6)) | ~(DV_I_48_2_bit|DV_I_50_2_bit)); + mask &= ((((W[47]^(W[46]>>5))&(1<<1))-(1<<1)) | ~(DV_I_46_2_bit|DV_II_50_2_bit)); + mask &= ((0-((W[44]^(W[45]>>5))&(1<<1))) | ~(DV_I_51_2_bit|DV_II_49_2_bit)); + mask &= ((((W[43]^W[45])&(1<<6))-(1<<6)) | ~(DV_I_47_2_bit|DV_I_49_2_bit)); + mask &= (((((W[42]^W[44])>>6)&1)-1) | ~(DV_I_46_2_bit|DV_I_48_2_bit)); + mask &= ((((W[43]^(W[42]>>5))&(1<<1))-(1<<1)) | ~(DV_II_46_2_bit|DV_II_51_2_bit)); + mask &= ((((W[42]^(W[41]>>5))&(1<<1))-(1<<1)) | ~(DV_I_51_2_bit|DV_II_50_2_bit)); + mask &= ((((W[41]^(W[40]>>5))&(1<<1))-(1<<1)) | ~(DV_I_50_2_bit|DV_II_49_2_bit)); + if (mask & (DV_I_52_0_bit|DV_II_51_0_bit)) + mask &= ((((W[39]^(W[43]>>25))&(1<<4))-(1<<4)) | ~(DV_I_52_0_bit|DV_II_51_0_bit)); + if (mask & (DV_I_51_0_bit|DV_II_50_0_bit)) + mask &= ((((W[38]^(W[42]>>25))&(1<<4))-(1<<4)) | ~(DV_I_51_0_bit|DV_II_50_0_bit)); + if (mask & (DV_I_48_2_bit|DV_I_51_2_bit)) + mask &= ((0-((W[37]^(W[38]>>5))&(1<<1))) | ~(DV_I_48_2_bit|DV_I_51_2_bit)); + if (mask & (DV_I_50_0_bit|DV_II_49_0_bit)) + mask &= ((((W[37]^(W[41]>>25))&(1<<4))-(1<<4)) | ~(DV_I_50_0_bit|DV_II_49_0_bit)); + if (mask & (DV_II_52_0_bit|DV_II_54_0_bit)) + mask &= ((0-((W[36]^W[38])&(1<<4))) | ~(DV_II_52_0_bit|DV_II_54_0_bit)); + mask &= ((0-((W[35]^(W[36]>>5))&(1<<1))) | ~(DV_I_46_2_bit|DV_I_49_2_bit)); + if (mask & (DV_I_51_0_bit|DV_II_47_0_bit)) + mask &= ((((W[35]^(W[39]>>25))&(1<<3))-(1<<3)) | ~(DV_I_51_0_bit|DV_II_47_0_bit)); +if (mask) { + + if (mask & DV_I_43_0_bit) + if ( + !((W[61]^(W[62]>>5)) & (1<<1)) + || !(!((W[59]^(W[63]>>25)) & (1<<5))) + || !((W[58]^(W[63]>>30)) & (1<<0)) + ) mask &= ~DV_I_43_0_bit; + if (mask & DV_I_44_0_bit) + if ( + !((W[62]^(W[63]>>5)) & (1<<1)) + || !(!((W[60]^(W[64]>>25)) & (1<<5))) + || !((W[59]^(W[64]>>30)) & (1<<0)) + ) mask &= ~DV_I_44_0_bit; + if (mask & DV_I_46_2_bit) + mask &= ((~((W[40]^W[42])>>2)) | ~DV_I_46_2_bit); + if (mask & DV_I_47_2_bit) + if ( + !((W[62]^(W[63]>>5)) & (1<<2)) + || !(!((W[41]^W[43]) & (1<<6))) + ) mask &= ~DV_I_47_2_bit; + if (mask & DV_I_48_2_bit) + if ( + !((W[63]^(W[64]>>5)) & (1<<2)) + || !(!((W[48]^(W[49]<<5)) & (1<<6))) + ) mask &= ~DV_I_48_2_bit; + if (mask & DV_I_49_2_bit) + if ( + !(!((W[49]^(W[50]<<5)) & (1<<6))) + || !((W[42]^W[50]) & (1<<1)) + || !(!((W[39]^(W[40]<<5)) & (1<<6))) + || !((W[38]^W[40]) & (1<<1)) + ) mask &= ~DV_I_49_2_bit; + if (mask & DV_I_50_0_bit) + mask &= ((((W[36]^W[37])<<7)) | ~DV_I_50_0_bit); + if (mask & DV_I_50_2_bit) + mask &= ((((W[43]^W[51])<<11)) | ~DV_I_50_2_bit); + if (mask & DV_I_51_0_bit) + mask &= ((((W[37]^W[38])<<9)) | ~DV_I_51_0_bit); + if (mask & DV_I_51_2_bit) + if ( + !(!((W[51]^(W[52]<<5)) & (1<<6))) + || !(!((W[49]^W[51]) & (1<<6))) + || !(!((W[37]^(W[37]>>5)) & (1<<1))) + || !(!((W[35]^(W[39]>>25)) & (1<<5))) + ) mask &= ~DV_I_51_2_bit; + if (mask & DV_I_52_0_bit) + mask &= ((((W[38]^W[39])<<11)) | ~DV_I_52_0_bit); + if (mask & DV_II_46_2_bit) + mask &= ((((W[47]^W[51])<<17)) | ~DV_II_46_2_bit); + if (mask & DV_II_48_0_bit) + if ( + !(!((W[36]^(W[40]>>25)) & (1<<3))) + || !((W[35]^(W[40]<<2)) & (1<<30)) + ) mask &= ~DV_II_48_0_bit; + if (mask & DV_II_49_0_bit) + if ( + !(!((W[37]^(W[41]>>25)) & (1<<3))) + || !((W[36]^(W[41]<<2)) & (1<<30)) + ) mask &= ~DV_II_49_0_bit; + if (mask & DV_II_49_2_bit) + if ( + !(!((W[53]^(W[54]<<5)) & (1<<6))) + || !(!((W[51]^W[53]) & (1<<6))) + || !((W[50]^W[54]) & (1<<1)) + || !(!((W[45]^(W[46]<<5)) & (1<<6))) + || !(!((W[37]^(W[41]>>25)) & (1<<5))) + || !((W[36]^(W[41]>>30)) & (1<<0)) + ) mask &= ~DV_II_49_2_bit; + if (mask & DV_II_50_0_bit) + if ( + !((W[55]^W[58]) & (1<<29)) + || !(!((W[38]^(W[42]>>25)) & (1<<3))) + || !((W[37]^(W[42]<<2)) & (1<<30)) + ) mask &= ~DV_II_50_0_bit; + if (mask & DV_II_50_2_bit) + if ( + !(!((W[54]^(W[55]<<5)) & (1<<6))) + || !(!((W[52]^W[54]) & (1<<6))) + || !((W[51]^W[55]) & (1<<1)) + || !((W[45]^W[47]) & (1<<1)) + || !(!((W[38]^(W[42]>>25)) & (1<<5))) + || !((W[37]^(W[42]>>30)) & (1<<0)) + ) mask &= ~DV_II_50_2_bit; + if (mask & DV_II_51_0_bit) + if ( + !(!((W[39]^(W[43]>>25)) & (1<<3))) + || !((W[38]^(W[43]<<2)) & (1<<30)) + ) mask &= ~DV_II_51_0_bit; + if (mask & DV_II_51_2_bit) + if ( + !(!((W[55]^(W[56]<<5)) & (1<<6))) + || !(!((W[53]^W[55]) & (1<<6))) + || !((W[52]^W[56]) & (1<<1)) + || !((W[46]^W[48]) & (1<<1)) + || !(!((W[39]^(W[43]>>25)) & (1<<5))) + || !((W[38]^(W[43]>>30)) & (1<<0)) + ) mask &= ~DV_II_51_2_bit; + if (mask & DV_II_52_0_bit) + if ( + !(!((W[59]^W[60]) & (1<<29))) + || !(!((W[40]^(W[44]>>25)) & (1<<3))) + || !(!((W[40]^(W[44]>>25)) & (1<<4))) + || !((W[39]^(W[44]<<2)) & (1<<30)) + ) mask &= ~DV_II_52_0_bit; + if (mask & DV_II_53_0_bit) + if ( + !((W[58]^W[61]) & (1<<29)) + || !(!((W[57]^(W[61]>>25)) & (1<<4))) + || !(!((W[41]^(W[45]>>25)) & (1<<3))) + || !(!((W[41]^(W[45]>>25)) & (1<<4))) + ) mask &= ~DV_II_53_0_bit; + if (mask & DV_II_54_0_bit) + if ( + !(!((W[58]^(W[62]>>25)) & (1<<4))) + || !(!((W[42]^(W[46]>>25)) & (1<<3))) + || !(!((W[42]^(W[46]>>25)) & (1<<4))) + ) mask &= ~DV_II_54_0_bit; + if (mask & DV_II_55_0_bit) + if ( + !(!((W[59]^(W[63]>>25)) & (1<<4))) + || !(!((W[57]^(W[59]>>25)) & (1<<4))) + || !(!((W[43]^(W[47]>>25)) & (1<<3))) + || !(!((W[43]^(W[47]>>25)) & (1<<4))) + ) mask &= ~DV_II_55_0_bit; + if (mask & DV_II_56_0_bit) + if ( + !(!((W[60]^(W[64]>>25)) & (1<<4))) + || !(!((W[44]^(W[48]>>25)) & (1<<3))) + || !(!((W[44]^(W[48]>>25)) & (1<<4))) + ) mask &= ~DV_II_56_0_bit; +} + + dvmask[0]=mask; +} diff --git a/sha1dc/ubc_check.h b/sha1dc/ubc_check.h new file mode 100644 index 0000000000..b349bed928 --- /dev/null +++ b/sha1dc/ubc_check.h @@ -0,0 +1,46 @@ +/*** +* Copyright 2017 Marc Stevens , Dan Shumow +* Distributed under the MIT Software License. +* See accompanying file LICENSE.txt or copy at +* https://opensource.org/licenses/MIT +***/ + +/* +// this file was generated by the 'parse_bitrel' program in the tools section +// using the data files from directory 'tools/data/3565' +// +// sha1_dvs contains a list of SHA-1 Disturbance Vectors (DV) to check +// dvType, dvK and dvB define the DV: I(K,B) or II(K,B) (see the paper) +// dm[80] is the expanded message block XOR-difference defined by the DV +// testt is the step to do the recompression from for collision detection +// maski and maskb define the bit to check for each DV in the dvmask returned by ubc_check +// +// ubc_check takes as input an expanded message block and verifies the unavoidable bitconditions for all listed DVs +// it returns a dvmask where each bit belonging to a DV is set if all unavoidable bitconditions for that DV have been met +// thus one needs to do the recompression check for each DV that has its bit set +*/ + +#ifndef UBC_CHECK_H +#define UBC_CHECK_H + +#if defined(__cplusplus) +extern "C" { +#endif + +#include + +#define DVMASKSIZE 1 +typedef struct { int dvType; int dvK; int dvB; int testt; int maski; int maskb; uint32_t dm[80]; } dv_info_t; +extern dv_info_t sha1_dvs[]; +void ubc_check(const uint32_t W[80], uint32_t dvmask[DVMASKSIZE]); + +#define DOSTORESTATE58 +#define DOSTORESTATE65 + +#define CHECK_DVMASK(_DVMASK) (0 != _DVMASK[0]) + +#if defined(__cplusplus) +} +#endif + +#endif /* UBC_CHECK_H */ From 45a574eec82424ac11c4c5fe117725597309b9c9 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Thu, 16 Mar 2017 18:08:10 -0400 Subject: [PATCH 2/6] sha1dc: adjust header includes for git We can replace system includes with git-compat-util.h or cache.h (and should make sure it is included first in all C files). And we can drop includes from headers entirely, as every C file should include git-compat-util.h itself. We will add in new include guards around the header files, though (otherwise you get into trouble including both sha1dc/sha1.h and cache.h). And finally, we'll use the full "sha1dc/" path for including related files. This isn't strictly necessary, but makes the expected resolution more obvious. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- sha1dc/sha1.c | 10 +++------- sha1dc/sha1.h | 6 ++++-- sha1dc/ubc_check.c | 4 ++-- sha1dc/ubc_check.h | 2 -- 4 files changed, 9 insertions(+), 13 deletions(-) diff --git a/sha1dc/sha1.c b/sha1dc/sha1.c index 27a535c6a7..d25d93abd8 100644 --- a/sha1dc/sha1.c +++ b/sha1dc/sha1.c @@ -5,13 +5,9 @@ * https://opensource.org/licenses/MIT ***/ -#include -#include -#include -#include - -#include "sha1.h" -#include "ubc_check.h" +#include "cache.h" +#include "sha1dc/sha1.h" +#include "sha1dc/ubc_check.h" /* diff --git a/sha1dc/sha1.h b/sha1dc/sha1.h index 88556179b5..7d4d423b9d 100644 --- a/sha1dc/sha1.h +++ b/sha1dc/sha1.h @@ -4,13 +4,13 @@ * See accompanying file LICENSE.txt or copy at * https://opensource.org/licenses/MIT ***/ +#ifndef SHA1DC_SHA1_H +#define SHA1DC_SHA1_H #if defined(__cplusplus) extern "C" { #endif -#include - /* uses SHA-1 message expansion to expand the first 16 words of W[] to 80 words */ /* void sha1_message_expansion(uint32_t W[80]); */ @@ -103,3 +103,5 @@ int SHA1DCFinal(unsigned char[20], SHA1_CTX*); #if defined(__cplusplus) } #endif + +#endif /* SHA1DC_SHA1_H */ diff --git a/sha1dc/ubc_check.c b/sha1dc/ubc_check.c index 27d0976daa..089dd4743d 100644 --- a/sha1dc/ubc_check.c +++ b/sha1dc/ubc_check.c @@ -24,8 +24,8 @@ // ubc_check has been verified against ubc_check_verify using the 'ubc_check_test' program in the tools section */ -#include -#include "ubc_check.h" +#include "git-compat-util.h" +#include "sha1dc/ubc_check.h" static const uint32_t DV_I_43_0_bit = (uint32_t)(1) << 0; static const uint32_t DV_I_44_0_bit = (uint32_t)(1) << 1; diff --git a/sha1dc/ubc_check.h b/sha1dc/ubc_check.h index b349bed928..b64c306d77 100644 --- a/sha1dc/ubc_check.h +++ b/sha1dc/ubc_check.h @@ -27,8 +27,6 @@ extern "C" { #endif -#include - #define DVMASKSIZE 1 typedef struct { int dvType; int dvK; int dvB; int testt; int maski; int maskb; uint32_t dm[80]; } dv_info_t; extern dv_info_t sha1_dvs[]; From c0c20060af3dfc55258e0b9168e0d9c564b5bdfd Mon Sep 17 00:00:00 2001 From: Jeff King Date: Thu, 16 Mar 2017 18:08:49 -0400 Subject: [PATCH 3/6] sha1dc: disable safe_hash feature The safe_hash feature is designed to make sha1dc a drop-in replacement for sha1, where colliding entries will get a permuted hash to un-collide them. However, since we're handling the collision case ourselves, this isn't helpful (and is actually harmful, as it means you get the wrong object id if you want to show it in a log message). Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- sha1dc/sha1.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sha1dc/sha1.c b/sha1dc/sha1.c index d25d93abd8..8ff2321dfb 100644 --- a/sha1dc/sha1.c +++ b/sha1dc/sha1.c @@ -1661,7 +1661,7 @@ void SHA1DCInit(SHA1_CTX* ctx) ctx->ihv[3] = 0x10325476; ctx->ihv[4] = 0xC3D2E1F0; ctx->found_collision = 0; - ctx->safe_hash = 1; + ctx->safe_hash = 0; ctx->ubc_check = 1; ctx->detect_coll = 1; ctx->reduced_round_coll = 0; From 8325e43b82dd0bd00c37abed45861bb8c155b022 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Thu, 16 Mar 2017 18:09:12 -0400 Subject: [PATCH 4/6] Makefile: add DC_SHA1 knob This knob lets you use the sha1dc implementation from: https://github.com/cr-marcstevens/sha1collisiondetection which can detect certain types of collision attacks (even when we only see half of the colliding pair). So it mitigates any attack which consists of getting the "good" half of a collision into a trusted repository, and then later replacing it with the "bad" half. The "good" half is rejected by the victim's version of Git (and even if they run an old version of Git, any sha1dc-enabled git will complain loudly if it ever has to interact with the object). The big downside is that it's slower than either the openssl or block-sha1 implementations. Here are some timings based off of linux.git: - compute sha1 over whole packfile sha1dc: 3.580s blk-sha1: 2.046s (-43%) openssl: 1.335s (-62%) - rev-list --all --objects sha1dc: 33.512s blk-sha1: 33.514s (+0.0%) openssl: 33.650s (+0.4%) - git log --no-merges -10000 -p sha1dc: 8.124s blk-sha1: 7.986s (-1.6%) openssl: 8.203s (+0.9%) - index-pack --verify sha1dc: 4m19s blk-sha1: 2m57s (-32%) openssl: 2m19s (-42%) So overall the sha1 computation with collision detection is about 1.75x slower than block-sha1, and 2.7x slower than sha1. But of course most operations do more than just sha1. Normal object access isn't really slowed at all (both the +/- changes there are well within the run-to-run noise); any changes are drowned out by the other work Git is doing. The most-affected operation is `index-pack --verify`, which is essentially just computing the sha1 on every object. This is similar to the `index-pack` invocation that the receiver of a push or fetch would perform. So clearly there's some extra CPU load here. There will also be some latency for the user, though keep in mind that such an operation will generally be network bound (this is about a 1.2GB packfile). Some of that extra CPU is "free" in the sense that we use it while the pack is streaming in anyway. But most of it comes during the delta-resolution phase, after the whole pack has been received. So we can imagine that for this (quite large) push, the user might have to wait an extra 100 seconds over openssl (which is what we use now). If we assume they can push to us at 20Mbit/s, that's 480s for a 1.2GB pack, which is only 20% slower. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- Makefile | 10 ++++++++++ hash.h | 2 ++ sha1dc/sha1.c | 20 ++++++++++++++++++++ sha1dc/sha1.h | 15 +++++++++++++++ 4 files changed, 47 insertions(+) diff --git a/Makefile b/Makefile index 25c21f08b1..05a96d7177 100644 --- a/Makefile +++ b/Makefile @@ -142,6 +142,10 @@ all:: # Define PPC_SHA1 environment variable when running make to make use of # a bundled SHA1 routine optimized for PowerPC. # +# Define DC_SHA1 to unconditionally enable the collision-detecting sha1 +# algorithm. This is slower, but may detect attempted collision attacks. +# Takes priority over other *_SHA1 knobs. +# # Define SHA1_MAX_BLOCK_SIZE to limit the amount of data that will be hashed # in one call to the platform's SHA1_Update(). e.g. APPLE_COMMON_CRYPTO # wants 'SHA1_MAX_BLOCK_SIZE=1024L*1024L*1024L' defined. @@ -1386,6 +1390,11 @@ ifdef APPLE_COMMON_CRYPTO SHA1_MAX_BLOCK_SIZE = 1024L*1024L*1024L endif +ifdef DC_SHA1 + LIB_OBJS += sha1dc/sha1.o + LIB_OBJS += sha1dc/ubc_check.o + BASIC_CFLAGS += -DSHA1_DC +else ifdef BLK_SHA1 LIB_OBJS += block-sha1/sha1.o BASIC_CFLAGS += -DSHA1_BLK @@ -1403,6 +1412,7 @@ else endif endif endif +endif ifdef SHA1_MAX_BLOCK_SIZE LIB_OBJS += compat/sha1-chunked.o diff --git a/hash.h b/hash.h index f0d9ddd0c2..a11fc9233f 100644 --- a/hash.h +++ b/hash.h @@ -7,6 +7,8 @@ #include #elif defined(SHA1_OPENSSL) #include +#elif defined(SHA1_DC) +#include "sha1dc/sha1.h" #else /* SHA1_BLK */ #include "block-sha1/sha1.h" #endif diff --git a/sha1dc/sha1.c b/sha1dc/sha1.c index 8ff2321dfb..6dd0da3608 100644 --- a/sha1dc/sha1.c +++ b/sha1dc/sha1.c @@ -1786,3 +1786,23 @@ int SHA1DCFinal(unsigned char output[20], SHA1_CTX *ctx) output[19] = (unsigned char)(ctx->ihv[4]); return ctx->found_collision; } + +void git_SHA1DCFinal(unsigned char hash[20], SHA1_CTX *ctx) +{ + if (!SHA1DCFinal(hash, ctx)) + return; + die("SHA-1 appears to be part of a collision attack: %s", + sha1_to_hex(hash)); +} + +void git_SHA1DCUpdate(SHA1_CTX *ctx, const void *vdata, unsigned long len) +{ + const char *data = vdata; + /* We expect an unsigned long, but sha1dc only takes an int */ + while (len > INT_MAX) { + SHA1DCUpdate(ctx, data, INT_MAX); + data += INT_MAX; + len -= INT_MAX; + } + SHA1DCUpdate(ctx, data, len); +} diff --git a/sha1dc/sha1.h b/sha1dc/sha1.h index 7d4d423b9d..bd8bd928fb 100644 --- a/sha1dc/sha1.h +++ b/sha1dc/sha1.h @@ -100,6 +100,21 @@ void SHA1DCUpdate(SHA1_CTX*, const char*, size_t); /* returns: 0 = no collision detected, otherwise = collision found => warn user for active attack */ int SHA1DCFinal(unsigned char[20], SHA1_CTX*); +/* + * Same as SHA1DCFinal, but convert collision attack case into a verbose die(). + */ +void git_SHA1DCFinal(unsigned char [20], SHA1_CTX *); + +/* + * Same as SHA1DCUpdate, but adjust types to match git's usual interface. + */ +void git_SHA1DCUpdate(SHA1_CTX *ctx, const void *data, unsigned long len); + +#define platform_SHA_CTX SHA1_CTX +#define platform_SHA1_Init SHA1DCInit +#define platform_SHA1_Update git_SHA1DCUpdate +#define platform_SHA1_Final git_SHA1DCFinal + #if defined(__cplusplus) } #endif From f5f5e7f06c210e833632c8f4cb907d0af581f473 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Thu, 16 Mar 2017 18:09:36 -0400 Subject: [PATCH 5/6] t0013: add a basic sha1 collision detection test We don't actually have a Git-object collision, so the best we can do is to run one of the shattered PDFs through test-sha1. This should trigger the collision check and die. In a sense this isn't really checking anything that the upstream sha1collisiondetection project doesn't cover already. But it at least makes sure that our build correctly uses the library. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- Makefile | 1 + t/t0013-sha1dc.sh | 19 +++++++++++++++++++ t/t0013/shattered-1.pdf | Bin 0 -> 422435 bytes 3 files changed, 20 insertions(+) create mode 100755 t/t0013-sha1dc.sh create mode 100644 t/t0013/shattered-1.pdf diff --git a/Makefile b/Makefile index 05a96d7177..fc9d89498b 100644 --- a/Makefile +++ b/Makefile @@ -2236,6 +2236,7 @@ GIT-BUILD-OPTIONS: FORCE @echo NO_PYTHON=\''$(subst ','\'',$(subst ','\'',$(NO_PYTHON)))'\' >>$@+ @echo NO_UNIX_SOCKETS=\''$(subst ','\'',$(subst ','\'',$(NO_UNIX_SOCKETS)))'\' >>$@+ @echo PAGER_ENV=\''$(subst ','\'',$(subst ','\'',$(PAGER_ENV)))'\' >>$@+ + @echo DC_SHA1=\''$(subst ','\'',$(subst ','\'',$(DC_SHA1)))'\' >>$@+ ifdef TEST_OUTPUT_DIRECTORY @echo TEST_OUTPUT_DIRECTORY=\''$(subst ','\'',$(subst ','\'',$(TEST_OUTPUT_DIRECTORY)))'\' >>$@+ endif diff --git a/t/t0013-sha1dc.sh b/t/t0013-sha1dc.sh new file mode 100755 index 0000000000..6d655cb161 --- /dev/null +++ b/t/t0013-sha1dc.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +test_description='test sha1 collision detection' +. ./test-lib.sh +TEST_DATA="$TEST_DIRECTORY/t0013" + +if test -z "$DC_SHA1" +then + skip_all='skipping sha1 collision tests, DC_SHA1 not set' + test_done +fi + +test_expect_success 'test-sha1 detects shattered pdf' ' + test_must_fail test-sha1 <"$TEST_DATA/shattered-1.pdf" 2>err && + test_i18ngrep collision err && + grep 38762cf7f55934b34d179ae6a4c80cadccbb7f0a err +' + +test_done diff --git a/t/t0013/shattered-1.pdf b/t/t0013/shattered-1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ba9aaa145ccd24ef760cf31c74d8f7ca1a2e47b0 GIT binary patch literal 422435 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 z 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 z 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

# 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