| GCC Code Coverage Report | |||||||||||||||||||||
        
  | 
    |||||||||||||||||||||
| Line | Branch | Exec | Source | 
1  | 
    /* $OpenBSD: pcbc_enc.c,v 1.6 2014/10/28 07:35:58 jsg Exp $ */  | 
    ||
2  | 
    /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)  | 
    ||
3  | 
    * All rights reserved.  | 
    ||
4  | 
    *  | 
    ||
5  | 
    * This package is an SSL implementation written  | 
    ||
6  | 
    * by Eric Young (eay@cryptsoft.com).  | 
    ||
7  | 
    * The implementation was written so as to conform with Netscapes SSL.  | 
    ||
8  | 
    *  | 
    ||
9  | 
    * This library is free for commercial and non-commercial use as long as  | 
    ||
10  | 
    * the following conditions are aheared to. The following conditions  | 
    ||
11  | 
    * apply to all code found in this distribution, be it the RC4, RSA,  | 
    ||
12  | 
    * lhash, DES, etc., code; not just the SSL code. The SSL documentation  | 
    ||
13  | 
    * included with this distribution is covered by the same copyright terms  | 
    ||
14  | 
    * except that the holder is Tim Hudson (tjh@cryptsoft.com).  | 
    ||
15  | 
    *  | 
    ||
16  | 
    * Copyright remains Eric Young's, and as such any Copyright notices in  | 
    ||
17  | 
    * the code are not to be removed.  | 
    ||
18  | 
    * If this package is used in a product, Eric Young should be given attribution  | 
    ||
19  | 
    * as the author of the parts of the library used.  | 
    ||
20  | 
    * This can be in the form of a textual message at program startup or  | 
    ||
21  | 
    * in documentation (online or textual) provided with the package.  | 
    ||
22  | 
    *  | 
    ||
23  | 
    * Redistribution and use in source and binary forms, with or without  | 
    ||
24  | 
    * modification, are permitted provided that the following conditions  | 
    ||
25  | 
    * are met:  | 
    ||
26  | 
    * 1. Redistributions of source code must retain the copyright  | 
    ||
27  | 
    * notice, this list of conditions and the following disclaimer.  | 
    ||
28  | 
    * 2. Redistributions in binary form must reproduce the above copyright  | 
    ||
29  | 
    * notice, this list of conditions and the following disclaimer in the  | 
    ||
30  | 
    * documentation and/or other materials provided with the distribution.  | 
    ||
31  | 
    * 3. All advertising materials mentioning features or use of this software  | 
    ||
32  | 
    * must display the following acknowledgement:  | 
    ||
33  | 
    * "This product includes cryptographic software written by  | 
    ||
34  | 
    * Eric Young (eay@cryptsoft.com)"  | 
    ||
35  | 
    * The word 'cryptographic' can be left out if the rouines from the library  | 
    ||
36  | 
    * being used are not cryptographic related :-).  | 
    ||
37  | 
    * 4. If you include any Windows specific code (or a derivative thereof) from  | 
    ||
38  | 
    * the apps directory (application code) you must include an acknowledgement:  | 
    ||
39  | 
    * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"  | 
    ||
40  | 
    *  | 
    ||
41  | 
    * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND  | 
    ||
42  | 
    * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE  | 
    ||
43  | 
    * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE  | 
    ||
44  | 
    * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE  | 
    ||
45  | 
    * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL  | 
    ||
46  | 
    * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS  | 
    ||
47  | 
    * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)  | 
    ||
48  | 
    * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT  | 
    ||
49  | 
    * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY  | 
    ||
50  | 
    * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF  | 
    ||
51  | 
    * SUCH DAMAGE.  | 
    ||
52  | 
    *  | 
    ||
53  | 
    * The licence and distribution terms for any publically available version or  | 
    ||
54  | 
    * derivative of this code cannot be changed. i.e. this code cannot simply be  | 
    ||
55  | 
    * copied and put under another distribution licence  | 
    ||
56  | 
    * [including the GNU Public Licence.]  | 
    ||
57  | 
    */  | 
    ||
58  | 
    |||
59  | 
    #include "des_locl.h"  | 
    ||
60  | 
    |||
61  | 
    void DES_pcbc_encrypt(const unsigned char *input, unsigned char *output,  | 
    ||
62  | 
    long length, DES_key_schedule *schedule,  | 
    ||
63  | 
    DES_cblock *ivec, int enc)  | 
    ||
64  | 
    	{ | 
    ||
65  | 
    DES_LONG sin0,sin1,xor0,xor1,tout0,tout1;  | 
    ||
66  | 
    24  | 
    DES_LONG tin[2];  | 
    |
67  | 
    const unsigned char *in;  | 
    ||
68  | 
    unsigned char *out,*iv;  | 
    ||
69  | 
    |||
70  | 
    in=input;  | 
    ||
71  | 
    out=output;  | 
    ||
72  | 
    12  | 
    iv = &(*ivec)[0];  | 
    |
73  | 
    |||
74  | 
    ✓✓ | 12  | 
    if (enc)  | 
    
75  | 
    		{ | 
    ||
76  | 
    c2l(iv,xor0);  | 
    ||
77  | 
    c2l(iv,xor1);  | 
    ||
78  | 
    ✓✓ | 54  | 
    for (; length>0; length-=8)  | 
    
79  | 
    			{ | 
    ||
80  | 
    ✓✓ | 24  | 
    if (length >= 8)  | 
    
81  | 
    				{ | 
    ||
82  | 
    18  | 
    c2l(in,sin0);  | 
    |
83  | 
    18  | 
    c2l(in,sin1);  | 
    |
84  | 
    18  | 
    }  | 
    |
85  | 
    else  | 
    ||
86  | 
    ✗✗✗✓ ✓✓✓✓ ✓  | 
    66  | 
    c2ln(in,sin0,sin1,length);  | 
    
87  | 
    24  | 
    tin[0]=sin0^xor0;  | 
    |
88  | 
    24  | 
    tin[1]=sin1^xor1;  | 
    |
89  | 
    24  | 
    DES_encrypt1((DES_LONG *)tin,schedule,DES_ENCRYPT);  | 
    |
90  | 
    24  | 
    tout0=tin[0];  | 
    |
91  | 
    24  | 
    tout1=tin[1];  | 
    |
92  | 
    24  | 
    xor0=sin0^tout0;  | 
    |
93  | 
    24  | 
    xor1=sin1^tout1;  | 
    |
94  | 
    24  | 
    l2c(tout0,out);  | 
    |
95  | 
    24  | 
    l2c(tout1,out);  | 
    |
96  | 
    }  | 
    ||
97  | 
    }  | 
    ||
98  | 
    else  | 
    ||
99  | 
    		{ | 
    ||
100  | 
    c2l(iv,xor0); c2l(iv,xor1);  | 
    ||
101  | 
    ✓✓ | 54  | 
    for (; length>0; length-=8)  | 
    
102  | 
    			{ | 
    ||
103  | 
    24  | 
    c2l(in,sin0);  | 
    |
104  | 
    24  | 
    c2l(in,sin1);  | 
    |
105  | 
    24  | 
    tin[0]=sin0;  | 
    |
106  | 
    24  | 
    tin[1]=sin1;  | 
    |
107  | 
    24  | 
    DES_encrypt1((DES_LONG *)tin,schedule,DES_DECRYPT);  | 
    |
108  | 
    24  | 
    tout0=tin[0]^xor0;  | 
    |
109  | 
    24  | 
    tout1=tin[1]^xor1;  | 
    |
110  | 
    ✓✓ | 24  | 
    if (length >= 8)  | 
    
111  | 
    				{ | 
    ||
112  | 
    18  | 
    l2c(tout0,out);  | 
    |
113  | 
    18  | 
    l2c(tout1,out);  | 
    |
114  | 
    18  | 
    }  | 
    |
115  | 
    else  | 
    ||
116  | 
    ✗✗✗✓ ✓✓✓✓ ✓  | 
    66  | 
    l2cn(tout0,tout1,out,length);  | 
    
117  | 
    24  | 
    xor0=tout0^sin0;  | 
    |
118  | 
    24  | 
    xor1=tout1^sin1;  | 
    |
119  | 
    }  | 
    ||
120  | 
    }  | 
    ||
121  | 
    12  | 
    tin[0]=tin[1]=0;  | 
    |
122  | 
    sin0=sin1=xor0=xor1=tout0=tout1=0;  | 
    ||
123  | 
    12  | 
    }  | 
    
| Generated by: GCOVR (Version 3.3) |