OpenCoverage

i_skey.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/idea/i_skey.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: i_skey.c,v 1.4 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 <openssl/crypto.h>-
60#include <openssl/idea.h>-
61#include "idea_lcl.h"-
62-
63static IDEA_INT inverse(unsigned int xin);-
64void idea_set_encrypt_key(const unsigned char *key, IDEA_KEY_SCHEDULE *ks)-
65 {-
66 int i;-
67 IDEA_INT *kt,*kf,r0,r1,r2;-
68-
69 kt= &(ks->data[0][0]);-
70 n2s(key,kt[0]); n2s(key,kt[1]); n2s(key,kt[2]); n2s(key,kt[3]);-
71 n2s(key,kt[4]); n2s(key,kt[5]); n2s(key,kt[6]); n2s(key,kt[7]);-
72-
73 kf=kt;-
74 kt+=8;-
75 for (i=0; i<6; i++)
i<6Description
TRUEevaluated 12 times by 1 test
Evaluated by:
  • ideatest
FALSEnever evaluated
0-12
76 {-
77 r2= kf[1];-
78 r1= kf[2];-
79 *(kt++)= ((r2<<9) | (r1>>7))&0xffff;-
80 r0= kf[3];-
81 *(kt++)= ((r1<<9) | (r0>>7))&0xffff;-
82 r1= kf[4];-
83 *(kt++)= ((r0<<9) | (r1>>7))&0xffff;-
84 r0= kf[5];-
85 *(kt++)= ((r1<<9) | (r0>>7))&0xffff;-
86 r1= kf[6];-
87 *(kt++)= ((r0<<9) | (r1>>7))&0xffff;-
88 r0= kf[7];-
89 *(kt++)= ((r1<<9) | (r0>>7))&0xffff;-
90 r1= kf[0];-
91 if (i >= 5) break;
executed 2 times by 1 test: break;
Executed by:
  • ideatest
i >= 5Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • ideatest
FALSEevaluated 10 times by 1 test
Evaluated by:
  • ideatest
2-10
92 *(kt++)= ((r0<<9) | (r1>>7))&0xffff;-
93 *(kt++)= ((r1<<9) | (r2>>7))&0xffff;-
94 kf+=8;-
95 }
executed 10 times by 1 test: end of block
Executed by:
  • ideatest
10
96 }
executed 2 times by 1 test: end of block
Executed by:
  • ideatest
2
97-
98void idea_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, IDEA_KEY_SCHEDULE *dk)-
99 {-
100 int r;-
101 IDEA_INT *fp,*tp,t;-
102-
103 tp= &(dk->data[0][0]);-
104 fp= &(ek->data[8][0]);-
105 for (r=0; r<9; r++)
r<9Description
TRUEevaluated 18 times by 1 test
Evaluated by:
  • ideatest
FALSEnever evaluated
0-18
106 {-
107 *(tp++)=inverse(fp[0]);-
108 *(tp++)=((int)(0x10000L-fp[2])&0xffff);-
109 *(tp++)=((int)(0x10000L-fp[1])&0xffff);-
110 *(tp++)=inverse(fp[3]);-
111 if (r == 8) break;
executed 2 times by 1 test: break;
Executed by:
  • ideatest
r == 8Description
TRUEevaluated 2 times by 1 test
Evaluated by:
  • ideatest
FALSEevaluated 16 times by 1 test
Evaluated by:
  • ideatest
2-16
112 fp-=6;-
113 *(tp++)=fp[4];-
114 *(tp++)=fp[5];-
115 }
executed 16 times by 1 test: end of block
Executed by:
  • ideatest
16
116-
117 tp= &(dk->data[0][0]);-
118 t=tp[1];-
119 tp[1]=tp[2];-
120 tp[2]=t;-
121-
122 t=tp[49];-
123 tp[49]=tp[50];-
124 tp[50]=t;-
125 }
executed 2 times by 1 test: end of block
Executed by:
  • ideatest
2
126-
127/* taken directly from the 'paper' I'll have a look at it later */-
128static IDEA_INT inverse(unsigned int xin)-
129 {-
130 long n1,n2,q,r,b1,b2,t;-
131-
132 if (xin == 0)
xin == 0Description
TRUEnever evaluated
FALSEevaluated 36 times by 1 test
Evaluated by:
  • ideatest
0-36
133 b2=0;
never executed: b2=0;
0
134 else-
135 {-
136 n1=0x10001;-
137 n2=xin;-
138 b2=1;-
139 b1=0;-
140-
141 do {-
142 r=(n1%n2);-
143 q=(n1-r)/n2;-
144 if (r == 0)
r == 0Description
TRUEevaluated 36 times by 1 test
Evaluated by:
  • ideatest
FALSEevaluated 230 times by 1 test
Evaluated by:
  • ideatest
36-230
145 { if (b2 < 0) b2=0x10001+b2; }
executed 24 times by 1 test: b2=0x10001+b2;
Executed by:
  • ideatest
executed 36 times by 1 test: end of block
Executed by:
  • ideatest
b2 < 0Description
TRUEevaluated 24 times by 1 test
Evaluated by:
  • ideatest
FALSEevaluated 12 times by 1 test
Evaluated by:
  • ideatest
12-36
146 else-
147 {-
148 n1=n2;-
149 n2=r;-
150 t=b2;-
151 b2=b1-q*b2;-
152 b1=t;-
153 }
executed 230 times by 1 test: end of block
Executed by:
  • ideatest
230
154 } while (r != 0);
r != 0Description
TRUEevaluated 230 times by 1 test
Evaluated by:
  • ideatest
FALSEevaluated 36 times by 1 test
Evaluated by:
  • ideatest
36-230
155 }
executed 36 times by 1 test: end of block
Executed by:
  • ideatest
36
156 return((IDEA_INT)b2);
executed 36 times by 1 test: return((unsigned int)b2);
Executed by:
  • ideatest
36
157 }-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2