OpenCoverage

poly1305.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/openssh/src/poly1305.c
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8-
9-
10-
11-
12-
13-
14void-
15poly1305_auth(unsigned char out[16], const unsigned char *m, size_t inlen, const unsigned char key[32]) {-
16 uint32_t t0,t1,t2,t3;-
17 uint32_t h0,h1,h2,h3,h4;-
18 uint32_t r0,r1,r2,r3,r4;-
19 uint32_t s1,s2,s3,s4;-
20 uint32_t b, nb;-
21 size_t j;-
22 uint64_t t[5];-
23 uint64_t f0,f1,f2,f3;-
24 uint32_t g0,g1,g2,g3,g4;-
25 uint64_t c;-
26 unsigned char mp[16];-
27-
28-
29 t0 = (((uint32_t)((key+0)[0])) | ((uint32_t)((key+0)[1]) << 8) | ((uint32_t)((key+0)[2]) << 16) | ((uint32_t)((key+0)[3]) << 24));-
30 t1 = (((uint32_t)((key+4)[0])) | ((uint32_t)((key+4)[1]) << 8) | ((uint32_t)((key+4)[2]) << 16) | ((uint32_t)((key+4)[3]) << 24));-
31 t2 = (((uint32_t)((key+8)[0])) | ((uint32_t)((key+8)[1]) << 8) | ((uint32_t)((key+8)[2]) << 16) | ((uint32_t)((key+8)[3]) << 24));-
32 t3 = (((uint32_t)((key+12)[0])) | ((uint32_t)((key+12)[1]) << 8) | ((uint32_t)((key+12)[2]) << 16) | ((uint32_t)((key+12)[3]) << 24));-
33-
34-
35 r0 = t0 & 0x3ffffff; t0 >>= 26; t0 |= t1 << 6;-
36 r1 = t0 & 0x3ffff03; t1 >>= 20; t1 |= t2 << 12;-
37 r2 = t1 & 0x3ffc0ff; t2 >>= 14; t2 |= t3 << 18;-
38 r3 = t2 & 0x3f03fff; t3 >>= 8;-
39 r4 = t3 & 0x00fffff;-
40-
41 s1 = r1 * 5;-
42 s2 = r2 * 5;-
43 s3 = r3 * 5;-
44 s4 = r4 * 5;-
45-
46-
47 h0 = 0;-
48 h1 = 0;-
49 h2 = 0;-
50 h3 = 0;-
51 h4 = 0;-
52-
53-
54 if (inlen < 16
inlen < 16Description
TRUEevaluated 512 times by 1 test
Evaluated by:
  • test_kex
FALSEevaluated 1152 times by 1 test
Evaluated by:
  • test_kex
) goto
executed 512 times by 1 test: goto poly1305_donna_atmost15bytes;
Executed by:
  • test_kex
poly1305_donna_atmost15bytes;
executed 512 times by 1 test: goto poly1305_donna_atmost15bytes;
Executed by:
  • test_kex
512-1152
55poly1305_donna_16bytes:
code before this statement executed 1152 times by 1 test: poly1305_donna_16bytes:
Executed by:
  • test_kex
1152
56 m += 16;-
57 inlen -= 16;-
58-
59 t0 = (((uint32_t)((m-16)[0])) | ((uint32_t)((m-16)[1]) << 8) | ((uint32_t)((m-16)[2]) << 16) | ((uint32_t)((m-16)[3]) << 24));-
60 t1 = (((uint32_t)((m-12)[0])) | ((uint32_t)((m-12)[1]) << 8) | ((uint32_t)((m-12)[2]) << 16) | ((uint32_t)((m-12)[3]) << 24));-
61 t2 = (((uint32_t)((m-8)[0])) | ((uint32_t)((m-8)[1]) << 8) | ((uint32_t)((m-8)[2]) << 16) | ((uint32_t)((m-8)[3]) << 24));-
62 t3 = (((uint32_t)((m-4)[0])) | ((uint32_t)((m-4)[1]) << 8) | ((uint32_t)((m-4)[2]) << 16) | ((uint32_t)((m-4)[3]) << 24));-
63-
64 h0 += t0 & 0x3ffffff;-
65 h1 += ((((uint64_t)t1 << 32) | t0) >> 26) & 0x3ffffff;-
66 h2 += ((((uint64_t)t2 << 32) | t1) >> 20) & 0x3ffffff;-
67 h3 += ((((uint64_t)t3 << 32) | t2) >> 14) & 0x3ffffff;-
68 h4 += (t3 >> 8) | (1 << 24);-
69-
70-
71poly1305_donna_mul:
code before this statement executed 46460 times by 1 test: poly1305_donna_mul:
Executed by:
  • test_kex
46460
72 t[0] = ((uint64_t)(h0) * (r0)) + ((uint64_t)(h1) * (s4)) + ((uint64_t)(h2) * (s3)) + ((uint64_t)(h3) * (s2)) + ((uint64_t)(h4) * (s1));-
73 t[1] = ((uint64_t)(h0) * (r1)) + ((uint64_t)(h1) * (r0)) + ((uint64_t)(h2) * (s4)) + ((uint64_t)(h3) * (s3)) + ((uint64_t)(h4) * (s2));-
74 t[2] = ((uint64_t)(h0) * (r2)) + ((uint64_t)(h1) * (r1)) + ((uint64_t)(h2) * (r0)) + ((uint64_t)(h3) * (s4)) + ((uint64_t)(h4) * (s3));-
75 t[3] = ((uint64_t)(h0) * (r3)) + ((uint64_t)(h1) * (r2)) + ((uint64_t)(h2) * (r1)) + ((uint64_t)(h3) * (r0)) + ((uint64_t)(h4) * (s4));-
76 t[4] = ((uint64_t)(h0) * (r4)) + ((uint64_t)(h1) * (r3)) + ((uint64_t)(h2) * (r2)) + ((uint64_t)(h3) * (r1)) + ((uint64_t)(h4) * (r0));-
77-
78 h0 = (uint32_t)t[0] & 0x3ffffff; c = (t[0] >> 26);-
79 t[1] += c; h1 = (uint32_t)t[1] & 0x3ffffff; b = (uint32_t)(t[1] >> 26);-
80 t[2] += b; h2 = (uint32_t)t[2] & 0x3ffffff; b = (uint32_t)(t[2] >> 26);-
81 t[3] += b; h3 = (uint32_t)t[3] & 0x3ffffff; b = (uint32_t)(t[3] >> 26);-
82 t[4] += b; h4 = (uint32_t)t[4] & 0x3ffffff; b = (uint32_t)(t[4] >> 26);-
83 h0 += b * 5;-
84-
85 if (inlen >= 16
inlen >= 16Description
TRUEevaluated 45308 times by 1 test
Evaluated by:
  • test_kex
FALSEevaluated 2816 times by 1 test
Evaluated by:
  • test_kex
) goto
executed 45308 times by 1 test: goto poly1305_donna_16bytes;
Executed by:
  • test_kex
poly1305_donna_16bytes;
executed 45308 times by 1 test: goto poly1305_donna_16bytes;
Executed by:
  • test_kex
2816-45308
86-
87-
88poly1305_donna_atmost15bytes:
code before this statement executed 2816 times by 1 test: poly1305_donna_atmost15bytes:
Executed by:
  • test_kex
2816
89 if (!inlen
!inlenDescription
TRUEevaluated 1664 times by 1 test
Evaluated by:
  • test_kex
FALSEevaluated 1664 times by 1 test
Evaluated by:
  • test_kex
) goto
executed 1664 times by 1 test: goto poly1305_donna_finish;
Executed by:
  • test_kex
poly1305_donna_finish;
executed 1664 times by 1 test: goto poly1305_donna_finish;
Executed by:
  • test_kex
1664
90-
91 for (j = 0; j < inlen
j < inlenDescription
TRUEevaluated 14304 times by 1 test
Evaluated by:
  • test_kex
FALSEevaluated 1664 times by 1 test
Evaluated by:
  • test_kex
; j++) mp[j] = m[j];
executed 14304 times by 1 test: mp[j] = m[j];
Executed by:
  • test_kex
1664-14304
92 mp[j++] = 1;-
93 for (; j < 16
j < 16Description
TRUEevaluated 10656 times by 1 test
Evaluated by:
  • test_kex
FALSEevaluated 1664 times by 1 test
Evaluated by:
  • test_kex
; j++) mp[j] = 0;
executed 10656 times by 1 test: mp[j] = 0;
Executed by:
  • test_kex
1664-10656
94 inlen = 0;-
95-
96 t0 = (((uint32_t)((mp+0)[0])) | ((uint32_t)((mp+0)[1]) << 8) | ((uint32_t)((mp+0)[2]) << 16) | ((uint32_t)((mp+0)[3]) << 24));-
97 t1 = (((uint32_t)((mp+4)[0])) | ((uint32_t)((mp+4)[1]) << 8) | ((uint32_t)((mp+4)[2]) << 16) | ((uint32_t)((mp+4)[3]) << 24));-
98 t2 = (((uint32_t)((mp+8)[0])) | ((uint32_t)((mp+8)[1]) << 8) | ((uint32_t)((mp+8)[2]) << 16) | ((uint32_t)((mp+8)[3]) << 24));-
99 t3 = (((uint32_t)((mp+12)[0])) | ((uint32_t)((mp+12)[1]) << 8) | ((uint32_t)((mp+12)[2]) << 16) | ((uint32_t)((mp+12)[3]) << 24));-
100-
101 h0 += t0 & 0x3ffffff;-
102 h1 += ((((uint64_t)t1 << 32) | t0) >> 26) & 0x3ffffff;-
103 h2 += ((((uint64_t)t2 << 32) | t1) >> 20) & 0x3ffffff;-
104 h3 += ((((uint64_t)t3 << 32) | t2) >> 14) & 0x3ffffff;-
105 h4 += (t3 >> 8);-
106-
107 goto
executed 1664 times by 1 test: goto poly1305_donna_mul;
Executed by:
  • test_kex
poly1305_donna_mul;
executed 1664 times by 1 test: goto poly1305_donna_mul;
Executed by:
  • test_kex
1664
108-
109poly1305_donna_finish:-
110 b = h0 >> 26; h0 = h0 & 0x3ffffff;-
111 h1 += b; b = h1 >> 26; h1 = h1 & 0x3ffffff;-
112 h2 += b; b = h2 >> 26; h2 = h2 & 0x3ffffff;-
113 h3 += b; b = h3 >> 26; h3 = h3 & 0x3ffffff;-
114 h4 += b; b = h4 >> 26; h4 = h4 & 0x3ffffff;-
115 h0 += b * 5; b = h0 >> 26; h0 = h0 & 0x3ffffff;-
116 h1 += b;-
117-
118 g0 = h0 + 5; b = g0 >> 26; g0 &= 0x3ffffff;-
119 g1 = h1 + b; b = g1 >> 26; g1 &= 0x3ffffff;-
120 g2 = h2 + b; b = g2 >> 26; g2 &= 0x3ffffff;-
121 g3 = h3 + b; b = g3 >> 26; g3 &= 0x3ffffff;-
122 g4 = h4 + b - (1 << 26);-
123-
124 b = (g4 >> 31) - 1;-
125 nb = ~b;-
126 h0 = (h0 & nb) | (g0 & b);-
127 h1 = (h1 & nb) | (g1 & b);-
128 h2 = (h2 & nb) | (g2 & b);-
129 h3 = (h3 & nb) | (g3 & b);-
130 h4 = (h4 & nb) | (g4 & b);-
131-
132 f0 = ((h0 ) | (h1 << 26)) + (uint64_t)(((uint32_t)((&key[16])[0])) | ((uint32_t)((&key[16])[1]) << 8) | ((uint32_t)((&key[16])[2]) << 16) | ((uint32_t)((&key[16])[3]) << 24));-
133 f1 = ((h1 >> 6) | (h2 << 20)) + (uint64_t)(((uint32_t)((&key[20])[0])) | ((uint32_t)((&key[20])[1]) << 8) | ((uint32_t)((&key[20])[2]) << 16) | ((uint32_t)((&key[20])[3]) << 24));-
134 f2 = ((h2 >> 12) | (h3 << 14)) + (uint64_t)(((uint32_t)((&key[24])[0])) | ((uint32_t)((&key[24])[1]) << 8) | ((uint32_t)((&key[24])[2]) << 16) | ((uint32_t)((&key[24])[3]) << 24));-
135 f3 = ((h3 >> 18) | (h4 << 8)) + (uint64_t)(((uint32_t)((&key[28])[0])) | ((uint32_t)((&key[28])[1]) << 8) | ((uint32_t)((&key[28])[2]) << 16) | ((uint32_t)((&key[28])[3]) << 24));-
136-
137 do { (&out[ 0])[0] = (uint8_t)((f0)); (&out[ 0])[1] = (uint8_t)((f0) >> 8); (&out[ 0])[2] = (uint8_t)((f0) >> 16); (&out[ 0])[3] = (uint8_t)((f0) >> 24); } while (0); f1 += (f0 >> 32);-
138 do { (&out[ 4])[0] = (uint8_t)((f1)); (&out[ 4])[1] = (uint8_t)((f1) >> 8); (&out[ 4])[2] = (uint8_t)((f1) >> 16); (&out[ 4])[3] = (uint8_t)((f1) >> 24); } while (0); f2 += (f1 >> 32);-
139 do { (&out[ 8])[0] = (uint8_t)((f2)); (&out[ 8])[1] = (uint8_t)((f2) >> 8); (&out[ 8])[2] = (uint8_t)((f2) >> 16); (&out[ 8])[3] = (uint8_t)((f2) >> 24); } while (0); f3 += (f2 >> 32);-
140 do { (&out[12])[0] = (uint8_t)((f3)); (&out[12])[1] = (uint8_t)((f3) >> 8); (&out[12])[2] = (uint8_t)((f3) >> 16); (&out[12])[3] = (uint8_t)((f3) >> 24); } while (0);-
141}
executed 1664 times by 1 test: end of block
Executed by:
  • test_kex
1664
Switch to Source codePreprocessed file

Generated by Squish Coco 4.2.2