Introduction
Introduction Statistics Contact Development Disclaimer Help
sha1block.c - 9base - revived minimalist port of Plan 9 userland to Unix
git clone git://git.suckless.org/9base
Log
Files
Refs
README
LICENSE
---
sha1block.c (4673B)
---
1 #include "os.h"
2
3 void
4 _sha1block(uchar *p, ulong len, u32int *s)
5 {
6 u32int a, b, c, d, e, x;
7 uchar *end;
8 u32int *wp, *wend;
9 u32int w[80];
10
11 /* at this point, we have a multiple of 64 bytes */
12 for(end = p+len; p < end;){
13 a = s[0];
14 b = s[1];
15 c = s[2];
16 d = s[3];
17 e = s[4];
18
19 wend = w + 15;
20 for(wp = w; wp < wend; wp += 5){
21 wp[0] = (p[0]<<24) | (p[1]<<16) | (p[2]<<8) | p[…
22 e += ((a<<5) | (a>>27)) + wp[0];
23 e += 0x5a827999 + (((c^d)&b)^d);
24 b = (b<<30)|(b>>2);
25
26 wp[1] = (p[4]<<24) | (p[5]<<16) | (p[6]<<8) | p[…
27 d += ((e<<5) | (e>>27)) + wp[1];
28 d += 0x5a827999 + (((b^c)&a)^c);
29 a = (a<<30)|(a>>2);
30
31 wp[2] = (p[8]<<24) | (p[9]<<16) | (p[10]<<8) | p…
32 c += ((d<<5) | (d>>27)) + wp[2];
33 c += 0x5a827999 + (((a^b)&e)^b);
34 e = (e<<30)|(e>>2);
35
36 wp[3] = (p[12]<<24) | (p[13]<<16) | (p[14]<<8) |…
37 b += ((c<<5) | (c>>27)) + wp[3];
38 b += 0x5a827999 + (((e^a)&d)^a);
39 d = (d<<30)|(d>>2);
40
41 wp[4] = (p[16]<<24) | (p[17]<<16) | (p[18]<<8) |…
42 a += ((b<<5) | (b>>27)) + wp[4];
43 a += 0x5a827999 + (((d^e)&c)^e);
44 c = (c<<30)|(c>>2);
45
46 p += 20;
47 }
48
49 wp[0] = (p[0]<<24) | (p[1]<<16) | (p[2]<<8) | p[3];
50 e += ((a<<5) | (a>>27)) + wp[0];
51 e += 0x5a827999 + (((c^d)&b)^d);
52 b = (b<<30)|(b>>2);
53
54 x = wp[-2] ^ wp[-7] ^ wp[-13] ^ wp[-15];
55 wp[1] = (x<<1) | (x>>31);
56 d += ((e<<5) | (e>>27)) + wp[1];
57 d += 0x5a827999 + (((b^c)&a)^c);
58 a = (a<<30)|(a>>2);
59
60 x = wp[-1] ^ wp[-6] ^ wp[-12] ^ wp[-14];
61 wp[2] = (x<<1) | (x>>31);
62 c += ((d<<5) | (d>>27)) + wp[2];
63 c += 0x5a827999 + (((a^b)&e)^b);
64 e = (e<<30)|(e>>2);
65
66 x = wp[0] ^ wp[-5] ^ wp[-11] ^ wp[-13];
67 wp[3] = (x<<1) | (x>>31);
68 b += ((c<<5) | (c>>27)) + wp[3];
69 b += 0x5a827999 + (((e^a)&d)^a);
70 d = (d<<30)|(d>>2);
71
72 x = wp[1] ^ wp[-4] ^ wp[-10] ^ wp[-12];
73 wp[4] = (x<<1) | (x>>31);
74 a += ((b<<5) | (b>>27)) + wp[4];
75 a += 0x5a827999 + (((d^e)&c)^e);
76 c = (c<<30)|(c>>2);
77
78 wp += 5;
79 p += 4;
80
81 wend = w + 40;
82 for(; wp < wend; wp += 5){
83 x = wp[-3] ^ wp[-8] ^ wp[-14] ^ wp[-16];
84 wp[0] = (x<<1) | (x>>31);
85 e += ((a<<5) | (a>>27)) + wp[0];
86 e += 0x6ed9eba1 + (b^c^d);
87 b = (b<<30)|(b>>2);
88
89 x = wp[-2] ^ wp[-7] ^ wp[-13] ^ wp[-15];
90 wp[1] = (x<<1) | (x>>31);
91 d += ((e<<5) | (e>>27)) + wp[1];
92 d += 0x6ed9eba1 + (a^b^c);
93 a = (a<<30)|(a>>2);
94
95 x = wp[-1] ^ wp[-6] ^ wp[-12] ^ wp[-14];
96 wp[2] = (x<<1) | (x>>31);
97 c += ((d<<5) | (d>>27)) + wp[2];
98 c += 0x6ed9eba1 + (e^a^b);
99 e = (e<<30)|(e>>2);
100
101 x = wp[0] ^ wp[-5] ^ wp[-11] ^ wp[-13];
102 wp[3] = (x<<1) | (x>>31);
103 b += ((c<<5) | (c>>27)) + wp[3];
104 b += 0x6ed9eba1 + (d^e^a);
105 d = (d<<30)|(d>>2);
106
107 x = wp[1] ^ wp[-4] ^ wp[-10] ^ wp[-12];
108 wp[4] = (x<<1) | (x>>31);
109 a += ((b<<5) | (b>>27)) + wp[4];
110 a += 0x6ed9eba1 + (c^d^e);
111 c = (c<<30)|(c>>2);
112 }
113
114 wend = w + 60;
115 for(; wp < wend; wp += 5){
116 x = wp[-3] ^ wp[-8] ^ wp[-14] ^ wp[-16];
117 wp[0] = (x<<1) | (x>>31);
118 e += ((a<<5) | (a>>27)) + wp[0];
119 e += 0x8f1bbcdc + ((b&c)|((b|c)&d));
120 b = (b<<30)|(b>>2);
121
122 x = wp[-2] ^ wp[-7] ^ wp[-13] ^ wp[-15];
123 wp[1] = (x<<1) | (x>>31);
124 d += ((e<<5) | (e>>27)) + wp[1];
125 d += 0x8f1bbcdc + ((a&b)|((a|b)&c));
126 a = (a<<30)|(a>>2);
127
128 x = wp[-1] ^ wp[-6] ^ wp[-12] ^ wp[-14];
129 wp[2] = (x<<1) | (x>>31);
130 c += ((d<<5) | (d>>27)) + wp[2];
131 c += 0x8f1bbcdc + ((e&a)|((e|a)&b));
132 e = (e<<30)|(e>>2);
133
134 x = wp[0] ^ wp[-5] ^ wp[-11] ^ wp[-13];
135 wp[3] = (x<<1) | (x>>31);
136 b += ((c<<5) | (c>>27)) + wp[3];
137 b += 0x8f1bbcdc + ((d&e)|((d|e)&a));
138 d = (d<<30)|(d>>2);
139
140 x = wp[1] ^ wp[-4] ^ wp[-10] ^ wp[-12];
141 wp[4] = (x<<1) | (x>>31);
142 a += ((b<<5) | (b>>27)) + wp[4];
143 a += 0x8f1bbcdc + ((c&d)|((c|d)&e));
144 c = (c<<30)|(c>>2);
145 }
146
147 wend = w + 80;
148 for(; wp < wend; wp += 5){
149 x = wp[-3] ^ wp[-8] ^ wp[-14] ^ wp[-16];
150 wp[0] = (x<<1) | (x>>31);
151 e += ((a<<5) | (a>>27)) + wp[0];
152 e += 0xca62c1d6 + (b^c^d);
153 b = (b<<30)|(b>>2);
154
155 x = wp[-2] ^ wp[-7] ^ wp[-13] ^ wp[-15];
156 wp[1] = (x<<1) | (x>>31);
157 d += ((e<<5) | (e>>27)) + wp[1];
158 d += 0xca62c1d6 + (a^b^c);
159 a = (a<<30)|(a>>2);
160
161 x = wp[-1] ^ wp[-6] ^ wp[-12] ^ wp[-14];
162 wp[2] = (x<<1) | (x>>31);
163 c += ((d<<5) | (d>>27)) + wp[2];
164 c += 0xca62c1d6 + (e^a^b);
165 e = (e<<30)|(e>>2);
166
167 x = wp[0] ^ wp[-5] ^ wp[-11] ^ wp[-13];
168 wp[3] = (x<<1) | (x>>31);
169 b += ((c<<5) | (c>>27)) + wp[3];
170 b += 0xca62c1d6 + (d^e^a);
171 d = (d<<30)|(d>>2);
172
173 x = wp[1] ^ wp[-4] ^ wp[-10] ^ wp[-12];
174 wp[4] = (x<<1) | (x>>31);
175 a += ((b<<5) | (b>>27)) + wp[4];
176 a += 0xca62c1d6 + (c^d^e);
177 c = (c<<30)|(c>>2);
178 }
179
180 /* save state */
181 s[0] += a;
182 s[1] += b;
183 s[2] += c;
184 s[3] += d;
185 s[4] += e;
186 }
187 }
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.