VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   32 Branches   54 Tags
b24413180f560 (Greg Kroah-Hartman   2017-11-01 15:07:57 +0100   1) // SPDX-License-Identifier: GPL-2.0
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700   2) /*
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700   3)  * SHA1 routine optimized to do word accesses rather than byte accesses,
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700   4)  * and to avoid unnecessary copies into the context array.
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700   5)  *
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700   6)  * This was based on the git SHA1 implementation.
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700   7)  */
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700   8) 
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700   9) #include <linux/kernel.h>
8bc3bcc93a2b4 (Paul Gortmaker       2011-11-16 21:29:17 -0500  10) #include <linux/export.h>
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  11) #include <linux/bitops.h>
a24d22b225ce1 (Eric Biggers         2020-11-12 21:20:21 -0800  12) #include <crypto/sha1.h>
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  13) #include <asm/unaligned.h>
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700  14) 
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  15) /*
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  16)  * If you have 32 registers or more, the compiler can (and should)
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  17)  * try to change the array[] accesses into registers. However, on
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  18)  * machines with less than ~25 registers, that won't really work,
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  19)  * and at least gcc will make an unholy mess of it.
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  20)  *
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  21)  * So to avoid that mess which just slows things down, we force
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  22)  * the stores to memory to actually happen (we might be better off
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  23)  * with a 'W(t)=(val);asm("":"+m" (W(t))' there instead, as
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  24)  * suggested by Artur Skawina - that will also make gcc unable to
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  25)  * try to do the silly "optimize away loads" part because it won't
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  26)  * see what the value will be).
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  27)  *
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  28)  * Ben Herrenschmidt reports that on PPC, the C version comes close
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  29)  * to the optimized asm with this (ie on PPC you don't want that
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  30)  * 'volatile', since there are lots of registers).
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  31)  *
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  32)  * On ARM we get the best code generation by forcing a full memory barrier
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  33)  * between each SHA_ROUND, otherwise gcc happily get wild with spilling and
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  34)  * the stack frame size simply explode and performance goes down the drain.
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  35)  */
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700  36) 
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  37) #ifdef CONFIG_X86
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  38)   #define setW(x, val) (*(volatile __u32 *)&W(x) = (val))
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  39) #elif defined(CONFIG_ARM)
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  40)   #define setW(x, val) do { W(x) = (val); __asm__("":::"memory"); } while (0)
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  41) #else
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  42)   #define setW(x, val) (W(x) = (val))
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  43) #endif
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700  44) 
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  45) /* This "rolls" over the 512-bit array */
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  46) #define W(x) (array[(x)&15])
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700  47) 
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  48) /*
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  49)  * Where do we get the source from? The first 16 iterations get it from
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  50)  * the input data, the next mix it from the 512-bit array.
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  51)  */
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  52) #define SHA_SRC(t) get_unaligned_be32((__u32 *)data + t)
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  53) #define SHA_MIX(t) rol32(W(t+13) ^ W(t+8) ^ W(t+2) ^ W(t), 1)
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  54) 
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  55) #define SHA_ROUND(t, input, fn, constant, A, B, C, D, E) do { \
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  56) 	__u32 TEMP = input(t); setW(t, TEMP); \
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  57) 	E += TEMP + rol32(A,5) + (fn) + (constant); \
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  58) 	B = ror32(B, 2); } while (0)
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  59) 
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  60) #define T_0_15(t, A, B, C, D, E)  SHA_ROUND(t, SHA_SRC, (((C^D)&B)^D) , 0x5a827999, A, B, C, D, E )
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  61) #define T_16_19(t, A, B, C, D, E) SHA_ROUND(t, SHA_MIX, (((C^D)&B)^D) , 0x5a827999, A, B, C, D, E )
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  62) #define T_20_39(t, A, B, C, D, E) SHA_ROUND(t, SHA_MIX, (B^C^D) , 0x6ed9eba1, A, B, C, D, E )
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  63) #define T_40_59(t, A, B, C, D, E) SHA_ROUND(t, SHA_MIX, ((B&C)+(D&(B^C))) , 0x8f1bbcdc, A, B, C, D, E )
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  64) #define T_60_79(t, A, B, C, D, E) SHA_ROUND(t, SHA_MIX, (B^C^D) ,  0xca62c1d6, A, B, C, D, E )
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700  65) 
72fd4a35a8243 (Robert P. J. Day     2007-02-10 01:45:59 -0800  66) /**
6b0b0fa2bce61 (Eric Biggers         2020-05-02 11:24:25 -0700  67)  * sha1_transform - single block SHA1 transform (deprecated)
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700  68)  *
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700  69)  * @digest: 160 bit digest to update
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700  70)  * @data:   512 bits of data to hash
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  71)  * @array:  16 words of workspace (see note)
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700  72)  *
6b0b0fa2bce61 (Eric Biggers         2020-05-02 11:24:25 -0700  73)  * This function executes SHA-1's internal compression function.  It updates the
6b0b0fa2bce61 (Eric Biggers         2020-05-02 11:24:25 -0700  74)  * 160-bit internal state (@digest) with a single 512-bit data block (@data).
6b0b0fa2bce61 (Eric Biggers         2020-05-02 11:24:25 -0700  75)  *
6b0b0fa2bce61 (Eric Biggers         2020-05-02 11:24:25 -0700  76)  * Don't use this function.  SHA-1 is no longer considered secure.  And even if
6b0b0fa2bce61 (Eric Biggers         2020-05-02 11:24:25 -0700  77)  * you do have to use SHA-1, this isn't the correct way to hash something with
6b0b0fa2bce61 (Eric Biggers         2020-05-02 11:24:25 -0700  78)  * SHA-1 as this doesn't handle padding and finalization.
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700  79)  *
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700  80)  * Note: If the hash is security sensitive, the caller should be sure
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700  81)  * to clear the workspace. This is left to the caller to avoid
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700  82)  * unnecessary clears between chained hashing operations.
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700  83)  */
6b0b0fa2bce61 (Eric Biggers         2020-05-02 11:24:25 -0700  84) void sha1_transform(__u32 *digest, const char *data, __u32 *array)
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700  85) {
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  86) 	__u32 A, B, C, D, E;
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  87) 
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  88) 	A = digest[0];
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  89) 	B = digest[1];
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  90) 	C = digest[2];
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  91) 	D = digest[3];
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  92) 	E = digest[4];
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  93) 
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  94) 	/* Round 1 - iterations 0-16 take their input from 'data' */
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  95) 	T_0_15( 0, A, B, C, D, E);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  96) 	T_0_15( 1, E, A, B, C, D);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  97) 	T_0_15( 2, D, E, A, B, C);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  98) 	T_0_15( 3, C, D, E, A, B);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700  99) 	T_0_15( 4, B, C, D, E, A);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 100) 	T_0_15( 5, A, B, C, D, E);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 101) 	T_0_15( 6, E, A, B, C, D);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 102) 	T_0_15( 7, D, E, A, B, C);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 103) 	T_0_15( 8, C, D, E, A, B);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 104) 	T_0_15( 9, B, C, D, E, A);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 105) 	T_0_15(10, A, B, C, D, E);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 106) 	T_0_15(11, E, A, B, C, D);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 107) 	T_0_15(12, D, E, A, B, C);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 108) 	T_0_15(13, C, D, E, A, B);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 109) 	T_0_15(14, B, C, D, E, A);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 110) 	T_0_15(15, A, B, C, D, E);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 111) 
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 112) 	/* Round 1 - tail. Input from 512-bit mixing array */
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 113) 	T_16_19(16, E, A, B, C, D);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 114) 	T_16_19(17, D, E, A, B, C);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 115) 	T_16_19(18, C, D, E, A, B);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 116) 	T_16_19(19, B, C, D, E, A);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 117) 
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 118) 	/* Round 2 */
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 119) 	T_20_39(20, A, B, C, D, E);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 120) 	T_20_39(21, E, A, B, C, D);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 121) 	T_20_39(22, D, E, A, B, C);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 122) 	T_20_39(23, C, D, E, A, B);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 123) 	T_20_39(24, B, C, D, E, A);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 124) 	T_20_39(25, A, B, C, D, E);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 125) 	T_20_39(26, E, A, B, C, D);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 126) 	T_20_39(27, D, E, A, B, C);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 127) 	T_20_39(28, C, D, E, A, B);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 128) 	T_20_39(29, B, C, D, E, A);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 129) 	T_20_39(30, A, B, C, D, E);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 130) 	T_20_39(31, E, A, B, C, D);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 131) 	T_20_39(32, D, E, A, B, C);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 132) 	T_20_39(33, C, D, E, A, B);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 133) 	T_20_39(34, B, C, D, E, A);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 134) 	T_20_39(35, A, B, C, D, E);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 135) 	T_20_39(36, E, A, B, C, D);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 136) 	T_20_39(37, D, E, A, B, C);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 137) 	T_20_39(38, C, D, E, A, B);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 138) 	T_20_39(39, B, C, D, E, A);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 139) 
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 140) 	/* Round 3 */
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 141) 	T_40_59(40, A, B, C, D, E);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 142) 	T_40_59(41, E, A, B, C, D);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 143) 	T_40_59(42, D, E, A, B, C);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 144) 	T_40_59(43, C, D, E, A, B);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 145) 	T_40_59(44, B, C, D, E, A);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 146) 	T_40_59(45, A, B, C, D, E);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 147) 	T_40_59(46, E, A, B, C, D);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 148) 	T_40_59(47, D, E, A, B, C);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 149) 	T_40_59(48, C, D, E, A, B);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 150) 	T_40_59(49, B, C, D, E, A);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 151) 	T_40_59(50, A, B, C, D, E);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 152) 	T_40_59(51, E, A, B, C, D);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 153) 	T_40_59(52, D, E, A, B, C);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 154) 	T_40_59(53, C, D, E, A, B);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 155) 	T_40_59(54, B, C, D, E, A);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 156) 	T_40_59(55, A, B, C, D, E);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 157) 	T_40_59(56, E, A, B, C, D);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 158) 	T_40_59(57, D, E, A, B, C);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 159) 	T_40_59(58, C, D, E, A, B);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 160) 	T_40_59(59, B, C, D, E, A);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 161) 
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 162) 	/* Round 4 */
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 163) 	T_60_79(60, A, B, C, D, E);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 164) 	T_60_79(61, E, A, B, C, D);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 165) 	T_60_79(62, D, E, A, B, C);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 166) 	T_60_79(63, C, D, E, A, B);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 167) 	T_60_79(64, B, C, D, E, A);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 168) 	T_60_79(65, A, B, C, D, E);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 169) 	T_60_79(66, E, A, B, C, D);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 170) 	T_60_79(67, D, E, A, B, C);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 171) 	T_60_79(68, C, D, E, A, B);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 172) 	T_60_79(69, B, C, D, E, A);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 173) 	T_60_79(70, A, B, C, D, E);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 174) 	T_60_79(71, E, A, B, C, D);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 175) 	T_60_79(72, D, E, A, B, C);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 176) 	T_60_79(73, C, D, E, A, B);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 177) 	T_60_79(74, B, C, D, E, A);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 178) 	T_60_79(75, A, B, C, D, E);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 179) 	T_60_79(76, E, A, B, C, D);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 180) 	T_60_79(77, D, E, A, B, C);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 181) 	T_60_79(78, C, D, E, A, B);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 182) 	T_60_79(79, B, C, D, E, A);
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 183) 
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 184) 	digest[0] += A;
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 185) 	digest[1] += B;
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 186) 	digest[2] += C;
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 187) 	digest[3] += D;
1eb19a12bd221 (Mandeep Singh Baines 2011-08-05 18:46:27 -0700 188) 	digest[4] += E;
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700 189) }
6b0b0fa2bce61 (Eric Biggers         2020-05-02 11:24:25 -0700 190) EXPORT_SYMBOL(sha1_transform);
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700 191) 
72fd4a35a8243 (Robert P. J. Day     2007-02-10 01:45:59 -0800 192) /**
6b0b0fa2bce61 (Eric Biggers         2020-05-02 11:24:25 -0700 193)  * sha1_init - initialize the vectors for a SHA1 digest
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700 194)  * @buf: vector to initialize
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700 195)  */
6b0b0fa2bce61 (Eric Biggers         2020-05-02 11:24:25 -0700 196) void sha1_init(__u32 *buf)
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700 197) {
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700 198) 	buf[0] = 0x67452301;
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700 199) 	buf[1] = 0xefcdab89;
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700 200) 	buf[2] = 0x98badcfe;
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700 201) 	buf[3] = 0x10325476;
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700 202) 	buf[4] = 0xc3d2e1f0;
^1da177e4c3f4 (Linus Torvalds       2005-04-16 15:20:36 -0700 203) }
6b0b0fa2bce61 (Eric Biggers         2020-05-02 11:24:25 -0700 204) EXPORT_SYMBOL(sha1_init);