OpenCoverage

fcrypt.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/libressl/src/crypto/des/fcrypt.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* $OpenBSD: fcrypt.c,v 1.12 2016/12/26 21:30:10 jca Exp $ */-
2-
3#include <stdio.h>-
4-
5/* This version of crypt has been developed from my MIT compatible-
6 * DES library.-
7 * Eric Young (eay@cryptsoft.com)-
8 */-
9-
10/* Modification by Jens Kupferschmidt (Cu)-
11 * I have included directive PARA for shared memory computers.-
12 * I have included a directive LONGCRYPT to using this routine to cipher-
13 * passwords with more than 8 bytes like HP-UX 10.x it used. The MAXPLEN-
14 * definition is the maximum of length of password and can changed. I have-
15 * defined 24.-
16 */-
17-
18#include "des_locl.h"-
19-
20/* Added more values to handle illegal salt values the way normal-
21 * crypt() implementations do. The patch was sent by -
22 * Bjorn Gronvall <bg@sics.se>-
23 */-
24static unsigned const char con_salt[128]={-
250xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,-
260xDA,0xDB,0xDC,0xDD,0xDE,0xDF,0xE0,0xE1,-
270xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,-
280xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,0xF1,-
290xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,-
300xFA,0xFB,0xFC,0xFD,0xFE,0xFF,0x00,0x01,-
310x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,-
320x0A,0x0B,0x05,0x06,0x07,0x08,0x09,0x0A,-
330x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,-
340x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,-
350x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,-
360x23,0x24,0x25,0x20,0x21,0x22,0x23,0x24,-
370x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,-
380x2D,0x2E,0x2F,0x30,0x31,0x32,0x33,0x34,-
390x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,-
400x3D,0x3E,0x3F,0x40,0x41,0x42,0x43,0x44,-
41};-
42-
43static unsigned const char cov_2char[64]={-
440x2E,0x2F,0x30,0x31,0x32,0x33,0x34,0x35,-
450x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,-
460x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,-
470x4D,0x4E,0x4F,0x50,0x51,0x52,0x53,0x54,-
480x55,0x56,0x57,0x58,0x59,0x5A,0x61,0x62,-
490x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,-
500x6B,0x6C,0x6D,0x6E,0x6F,0x70,0x71,0x72,-
510x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A-
52};-
53-
54char *DES_crypt(const char *buf, const char *salt)-
55 {-
56 static char buff[14];-
57-
58 return(DES_fcrypt(buf,salt,buff));
executed 2 times by 1 test: return(DES_fcrypt(buf,salt,buff));
Executed by:
  • destest
2
59 }-
60-
61-
62char *DES_fcrypt(const char *buf, const char *salt, char *ret)-
63 {-
64 unsigned int i,j,x,y;-
65 DES_LONG Eswap0,Eswap1;-
66 DES_LONG out[2],ll;-
67 DES_cblock key;-
68 DES_key_schedule ks;-
69 unsigned char bb[9];-
70 unsigned char *b=bb;-
71 unsigned char c,u;-
72-
73 /* eay 25/08/92-
74 * If you call crypt("pwd","*") as often happens when you-
75 * have * as the pwd field in /etc/passwd, the function-
76 * returns *\0xxxxxxxxx-
77 * The \0 makes the string look like * so the pwd "*" would-
78 * crypt to "*". This was found when replacing the crypt in-
79 * our shared libraries. People found that the disabled-
80 * accounts effectively had no passwd :-(. */-
81 x=ret[0]=((salt[0] == '\0')?'A':salt[0]);
(salt[0] == '\0')Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • destest
0-2
82 Eswap0=con_salt[x]<<2;-
83 x=ret[1]=((salt[1] == '\0')?'A':salt[1]);
(salt[1] == '\0')Description
TRUEnever evaluated
FALSEevaluated 2 times by 1 test
Evaluated by:
  • destest
0-2
84 Eswap1=con_salt[x]<<6;-
85/* EAY-
86r=strlen(buf);-
87r=(r+7)/8;-
88*/-
89 for (i=0; i<8; i++)
i<8Description
TRUEevaluated 16 times by 1 test
Evaluated by:
  • destest
FALSEevaluated 1 time by 1 test
Evaluated by:
  • destest
1-16
90 {-
91 c= *(buf++);-
92 if (!c) break;
executed 1 time by 1 test: break;
Executed by:
  • destest
!cDescription
TRUEevaluated 1 time by 1 test
Evaluated by:
  • destest
FALSEevaluated 15 times by 1 test
Evaluated by:
  • destest
1-15
93 key[i]=(c<<1);-
94 }
executed 15 times by 1 test: end of block
Executed by:
  • destest
15
95 for (; i<8; i++)
i<8Description
TRUEevaluated 1 time by 1 test
Evaluated by:
  • destest
FALSEevaluated 2 times by 1 test
Evaluated by:
  • destest
1-2
96 key[i]=0;
executed 1 time by 1 test: key[i]=0;
Executed by:
  • destest
1
97-
98 DES_set_key_unchecked(&key,&ks);-
99 fcrypt_body(&(out[0]),&ks,Eswap0,Eswap1);-
100-
101 ll=out[0]; l2c(ll,b);-
102 ll=out[1]; l2c(ll,b);-
103 y=0;-
104 u=0x80;-
105 bb[8]=0;-
106 for (i=2; i<13; i++)
i<13Description
TRUEevaluated 22 times by 1 test
Evaluated by:
  • destest
FALSEevaluated 2 times by 1 test
Evaluated by:
  • destest
2-22
107 {-
108 c=0;-
109 for (j=0; j<6; j++)
j<6Description
TRUEevaluated 132 times by 1 test
Evaluated by:
  • destest
FALSEevaluated 22 times by 1 test
Evaluated by:
  • destest
22-132
110 {-
111 c<<=1;-
112 if (bb[y] & u) c|=1;
executed 58 times by 1 test: c|=1;
Executed by:
  • destest
bb[y] & uDescription
TRUEevaluated 58 times by 1 test
Evaluated by:
  • destest
FALSEevaluated 74 times by 1 test
Evaluated by:
  • destest
58-74
113 u>>=1;-
114 if (!u)
!uDescription
TRUEevaluated 16 times by 1 test
Evaluated by:
  • destest
FALSEevaluated 116 times by 1 test
Evaluated by:
  • destest
16-116
115 {-
116 y++;-
117 u=0x80;-
118 }
executed 16 times by 1 test: end of block
Executed by:
  • destest
16
119 }
executed 132 times by 1 test: end of block
Executed by:
  • destest
132
120 ret[i]=cov_2char[c];-
121 }
executed 22 times by 1 test: end of block
Executed by:
  • destest
22
122 ret[13]='\0';-
123 return(ret);
executed 2 times by 1 test: return(ret);
Executed by:
  • destest
2
124 }-
125-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.2.2