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 1000618           void RIPEMD160_update(Crypt__RIPEMD160 ripemd160, byte *strptr, dword len)
15             {
16             dword
17             i;
18             byte *
19             ptr;
20              
21 1000618 50         if (ripemd160->count_lo + len < ripemd160->count_lo) {
22 0           ripemd160->count_hi++;
23             }
24 1000618           ripemd160->count_lo += len;
25              
26 1000618 100         if (ripemd160->local > 0) {
27 984880           i = RIPEMD160_BLOCKSIZE - ripemd160->local;
28 984880 100         if (i > len) {
29 969035           i = len;
30             }
31 984880           memcpy(ripemd160->data + ripemd160->local, strptr, i);
32 984880           len -= i;
33 984880           strptr += i;
34 984880           ripemd160->local += i;
35 984880 100         if (ripemd160->local == RIPEMD160_BLOCKSIZE) {
36 15845           memset(ripemd160->X, 0, RIPEMD160_BLOCKSIZE);
37 15845           ptr = ripemd160->data;
38 1029925 100         for (i=0; i
39             /* byte i goes into word X[i div 4] at pos. 8*(i mod 4) */
40 1014080           ripemd160->X[i>>2] |= (dword) *ptr++ << (8 * (i&3));
41             }
42 15845           rmd160_compress(ripemd160->MDbuf, ripemd160->X);
43             } else {
44 969035           return;
45             }
46             }
47 32079 100         while (len >= RIPEMD160_BLOCKSIZE) {
48 496           memset(ripemd160->X, 0, RIPEMD160_BLOCKSIZE);
49 32240 100         for (i=0; i
50             /* byte i goes into word X[i div 4] at pos. 8*(i mod 4) */
51 31744           ripemd160->X[i>>2] |= (dword) *strptr++ << (8 * (i&3));
52             }
53 496           len -= RIPEMD160_BLOCKSIZE;
54 496           rmd160_compress(ripemd160->MDbuf, ripemd160->X);
55             }
56 31583           memcpy(ripemd160->data, strptr, len);
57 31583           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           }