File Coverage

wrap_160.c
Criterion Covered Total %
statement 38 39 97.4
branch 13 14 92.8
condition n/a
subroutine n/a
pod n/a
total 51 53 96.2


line stmt bran cond sub pod time code
1             #include
2              
3             #include "rmd160.h"
4             #include "wrap_160.h"
5              
6 90           void RIPEMD160_init(Crypt__RIPEMD160 ripemd160)
7             {
8 90           MDinit(ripemd160->MDbuf);
9 90           ripemd160->local = (dword) 0;
10 90           ripemd160->count_lo = (dword) 0;
11 90           ripemd160->count_hi = (dword) 0;
12 90           }
13              
14 1000611           void RIPEMD160_update(Crypt__RIPEMD160 ripemd160, byte *strptr, dword len)
15             {
16             dword
17             i;
18             byte *
19             ptr;
20              
21 1000611 50         if (ripemd160->count_lo + len < ripemd160->count_lo) {
22 0           ripemd160->count_hi++;
23             }
24 1000611           ripemd160->count_lo += len;
25              
26 1000611 100         if (ripemd160->local > 0) {
27 984873           i = RIPEMD160_BLOCKSIZE - ripemd160->local;
28 984873 100         if (i > len) {
29 969025           i = len;
30             }
31 984873           memcpy(ripemd160->data + ripemd160->local, strptr, i);
32 984873           len -= i;
33 984873           strptr += i;
34 984873           ripemd160->local += i;
35 984873 100         if (ripemd160->local == RIPEMD160_BLOCKSIZE) {
36 15848           memset(ripemd160->X, 0, RIPEMD160_BLOCKSIZE);
37 15848           ptr = ripemd160->data;
38 1030120 100         for (i=0; i
39             /* byte i goes into word X[i div 4] at pos. 8*(i mod 4) */
40 1014272           ripemd160->X[i>>2] |= (dword) *ptr++ << (8 * (i&3));
41             }
42 15848           rmd160_compress(ripemd160->MDbuf, ripemd160->X);
43             } else {
44 969025           return;
45             }
46             }
47 32079 100         while (len >= RIPEMD160_BLOCKSIZE) {
48 493           memset(ripemd160->X, 0, RIPEMD160_BLOCKSIZE);
49 32045 100         for (i=0; i
50             /* byte i goes into word X[i div 4] at pos. 8*(i mod 4) */
51 31552           ripemd160->X[i>>2] |= (dword) *strptr++ << (8 * (i&3));
52             }
53 493           len -= RIPEMD160_BLOCKSIZE;
54 493           rmd160_compress(ripemd160->MDbuf, ripemd160->X);
55             }
56 31586           memcpy(ripemd160->data, strptr, len);
57 31586           ripemd160->local = len;
58             }
59              
60 85           void RIPEMD160_final(Crypt__RIPEMD160 ripemd160)
61             {
62 85           MDfinish(ripemd160->MDbuf,
63 85           ripemd160->data,
64 85           (dword) ripemd160->count_lo,
65 85           (dword) ripemd160->count_hi);
66 85           }