FreeCalypso > hg > freecalypso-tools
annotate rvinterf/etmsync/cl_des.c @ 298:734b38f634db
c1xx-calextr: output implemented
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Sat, 18 Nov 2017 17:58:35 +0000 | 
| parents | 3d148edb87c2 | 
| children | 
| rev | line source | 
|---|---|
| 14 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 * This DES implementation is used for the purpose of decrypting | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 * Pirelli's factory IMEI record; it has been lifted out of TI's | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 * reference GSM firmware source. | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 #include "cl_des.h" | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 typedef unsigned char UBYTE; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 /* 64+64+17*56+16*48+64+17*32+17*32 = 3000 bytes */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 static UBYTE binmsg[64] , binkey[64], cd[17][56] , deskey[16][48] , ip[64]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 static UBYTE l[17][32] , r[17][32]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 /* 64+64+32+32+64+64+17*3+2 = 373 bytes */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 static UBYTE rnew[64] , xorres[64] , scale[32] , perm[32] , rl[64] , encpt[64]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 /* 64+16+48+64+48+32+64+8*66 = 864 bytes */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 static | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 const UBYTE shtamt[16] = {1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1}; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 static | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 const UBYTE iporder[64] = {58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 46,38,30,22,14,6,64,56,48,40,32,24,16,8,57,49,41,33, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 13,5,63,55,47,39,31,23,15,7}; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 static | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 const UBYTE pc1[64] = {57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 27 35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4}; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 static | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 const UBYTE pc2[48] = {14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 48,44,49,39,56,34,53,46,42,50,36,29,32}; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 33 static | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 34 const UBYTE e[48] = {32,1,2,3,4,5,4,5,6,7,8,9,8,9,10,11,12,13,12,13,14,15, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 35 16,17,16,17,18,19,20,21,20,21,22,23,24,25,24,25,26,27, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 36 28,29,28, 29,30,31,32,1}; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 37 static | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 38 const UBYTE sp[32] = {16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 39 2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25}; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 40 static | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 const UBYTE ipinv[64] = {40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,38,6,46, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 42 14,54,22,62,30,37,5,45,13,53,21,61,29,36,4,44,12,52, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 43 20,60,28,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 44 26,33,1,41,9,49,17,57,25}; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 static | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 const UBYTE s[8][66] = {{14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,0,15,7,4,14,2,13, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 47 1,10,6,12,11,9,5,3,8,4,1,14,8,13,6,2,11,15,12,9,7,3,10, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 5,0,15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13}, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 {15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,3,13,4,7,15,2,8, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 14,12,0,1,10,6,9,11,5,0,14,7,11,10,4,13,1,5,8,12,6,9,3, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 2,15,13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9}, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 {10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8,13,7,0,9,3,4,6, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 10,2,8,5,14,12,11,15,1,13,6,4,9,8,15,3,0,11,1,2,12,5, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 10,14,7,1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12 }, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 {7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15,13,8,11,5,6,15, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 56 0,3,4,7,2,12,1,10,14,9,10,6,9,0,12,11,7,13,15,1,3,14, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 57 5,2,8,4,3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14 }, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 58 {2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,14,11,2,12,4,7, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 59 13,1,5,0,15,10,3,9,8,6,4,2,1,11,10,13,7,8,15,9,12,5,6, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 60 3,0,14,11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3 }, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 61 {12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11,10,15,4,2,7,12, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 62 9,5,6,1,13,14,0,11,3,8,9,14,15,5,2,8,12,3,7,0,4,10,1, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 63 13,11,6,4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13 }, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 64 {4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1,13,0,11,7,4,9,1, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 65 10,14,3,5,12,2,15,8,6,1,4,11,13,12,3,7,14,10,15,6,8,0, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 66 5,9,2,6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12 }, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 67 {13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7,1,15,13,8,10,3,7, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 68 4,12,5,6,11,0,14,9,2,7,11,4,1,9,12,14,2,0,6,10,13,15,3, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 69 5,8,2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11 }}; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 70 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 71 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 72 /*==== FUNCTIONS ==================================================*/ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 73 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 74 #define LOCAL static | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 75 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 76 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 77 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 78 | Function : des_hex2bin4 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 79 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 80 | Description : The function converts a 4 bit hex value to 4 binary values | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 81 | | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 82 | Parameters : hex : value in hex | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 83 | m : pointer to buffer of 4 elements to store binary values | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 84 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 85 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 86 LOCAL void des_hex2bin4(UBYTE hex, UBYTE *m) | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 87 { | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 88 m[0] = (hex & 0x08) >> 3; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 89 m[1] = (hex & 0x04) >> 2; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 90 m[2] = (hex & 0x02) >> 1; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 91 m[3] = hex & 0x01; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 92 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 93 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 94 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 95 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 96 | Function : des_hex2bin8 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 97 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 98 | Description : The function converts a 8 bit hex value to 8 binary values | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 99 | | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 100 | Parameters : hex : value in hex | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 101 | m : pointer to buffer of 8 elements to store binary values | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 102 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 103 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 104 LOCAL void des_hex2bin8(UBYTE hex, UBYTE *m) | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 105 { | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 106 m[0] = (hex & 0x80) >> 7; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 107 m[1] = (hex & 0x40) >> 6; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 108 m[2] = (hex & 0x20) >> 5; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 109 m[3] = (hex & 0x10) >> 4; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 110 m[4] = (hex & 0x08) >> 3; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 111 m[5] = (hex & 0x04) >> 2; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 112 m[6] = (hex & 0x02) >> 1; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 113 m[7] = hex & 0x01; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 114 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 115 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 116 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 117 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 118 | Function : des_bin2hex | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 119 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 120 | Description : The function converts 8 bin values to an 8 bit hex value | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 121 | | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 122 | Parameters : m[8] : input bin values | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 123 | Return : converted hex value | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 124 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 125 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 126 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 127 LOCAL UBYTE des_bin2hex(UBYTE *m) | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 128 { | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 129 UBYTE hex; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 130 return hex = (m[0]<<7) | (m[1]<<6) | (m[2]<<5) | (m[3]<<4) | | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 131 (m[4]<<3) | (m[5]<<2) | (m[6]<<1) | m[7]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 132 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 133 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 134 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 135 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 136 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 137 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 138 | Function : des_shift | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 139 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 140 | Description : The function performs shifting | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 141 | | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 142 | Parameters : dst : pointer to destination buffer | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 143 | src : pointer to source buffer | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 144 | sht : shift value | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 145 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 146 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 147 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 148 LOCAL void des_shift(UBYTE *dst, UBYTE *src, UBYTE sht) | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 149 { | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 150 UBYTE c1 , c2 , d1 , d2; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 151 int i; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 152 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 153 c1 = src[0]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 154 c2 = src[1]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 155 d1 = src[28]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 156 d2 = src[29]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 157 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 158 for ( i = 0 ; i < 28 - sht ; i++) { | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 159 dst[i] = src[i + sht]; /* copying c[i] */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 160 dst[28 + i] = src[28 + i + sht]; /* copying d[i] */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 161 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 162 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 163 if (sht == 1){ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 164 dst[27] = c1; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 165 dst[55] = d1; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 166 } else { | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 167 dst[26] = c1; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 168 dst[27] = c2; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 169 dst[54] = d1; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 170 dst[55] = d2; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 171 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 172 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 173 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 174 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 175 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 176 | Function : des_indx | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 177 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 178 | Description : The function generates index for S table | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 179 | | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 180 | Parameters : m[6] : | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 181 | Return : index value | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 182 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 183 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 184 LOCAL UBYTE des_indx(UBYTE *m) | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 185 { | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 186 return( (((m[0]<<1) + m[5])<<4) + ((m[1]<<3) + (m[2]<<2) + (m[3]<<1) + m[4])); | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 187 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 188 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 189 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 190 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 191 | Function : cl_des | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 192 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 193 | Description : The function performs DES encrypting or decrypting | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 194 | | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 195 | Parameters : inMsgPtr : pointer to input message M. The length of message | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 196 | has to be min. 8 bytes e.g. M = 0123456789abcdef | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 197 | desKeyPtr : pointer to DES key. Length has to be 8 bytes | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 198 | outMsgPtr : output encrypted/decrypted message. The length is 8 b. | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 199 | code : CL_DES_ENCRYPTION, CL_DES_DECRYPTION | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 200 +------------------------------------------------------------------------------ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 201 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 202 void cl_des(UBYTE *inMsgPtr, UBYTE *desKeyPtr, UBYTE *outMsgPtr, UBYTE code) | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 203 { | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 204 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 205 int y , z , g; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 206 UBYTE temp, more; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 207 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 208 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 209 * convert message from hex to bin format | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 210 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 211 for(y = 0; y < 8; y++){ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 212 des_hex2bin8(inMsgPtr[y], &binmsg[8 * y]); | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 213 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 214 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 215 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 216 * Convert DES key value from hex to bin format | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 217 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 218 for( y = 0; y < 8; y++){ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 219 des_hex2bin8(desKeyPtr[y], &binkey[8 * y]); | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 220 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 221 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 222 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 223 * Step 1: Create 16 subkeys, each of which is 48-bits long. | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 224 * | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 225 * The 64-bit key is permuted according to the table pc1, | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 226 * to get the 56 bit subkey K+. The subkey K+ consists of left | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 227 * and right halves C0 and D0, where each half has 28 bits. | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 228 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 229 for(y = 0 ; y < 56 ; y++) | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 230 cd[0][y] = binkey[pc1[y] - 1]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 231 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 232 * Create futher 15 subkeys C1-C16 and D1-D16 by left shifts of | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 233 * each previous key, i.e. C2 and D2 are obtained from C1 and D1 and so on. | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 234 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 235 for(y = 0 ; y < 16 ; y++) | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 236 des_shift(cd[y + 1] , cd[y] , shtamt[y]); | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 237 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 238 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 239 * Form the keys K1-K16 by applying the pc2 permutation | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 240 * table to each of the concatenated pairs CnDn. | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 241 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 242 for(y = 0; y < 16; y++){ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 243 for(z = 0 ; z < 48 ; z++){ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 244 deskey[y][z] = cd[y + 1][pc2[z] - 1]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 245 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 246 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 247 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 248 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 249 * Step 2: Encode each 64-bit block of data | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 250 * | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 251 * Perform initial permutation IP of th e64 bits the message data M. | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 252 * This rearranges the bits according to the iporder table. | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 253 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 254 for(y = 0; y < 64; y++) | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 255 ip[y] = binmsg[iporder[y] - 1]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 256 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 257 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 258 * Divide the permuted block IP into left half L0 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 259 * and a right half R0 each of 32 bits. | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 260 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 261 for(y = 0; y < 32; y++){ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 262 l[0][y] = ip[y]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 263 r[0][y] = ip[y + 32]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 264 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 265 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 266 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 267 * Proceed through 16 iterations, operation on two blocks: | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 268 * a data block of 32 bits and a key Kn of 48 bits to produce a block of 32 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 269 * bits. This results in a final block L16R16. In each iteration, we take | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 270 * the right 32 bits of the previous result and make them the left 32 bits | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 271 * of the current step. For the right 32 bits in the current step, we XOR | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 272 * the left 32 bits of the previous step. | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 273 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 274 for (y = 0; y < 16; y++){ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 275 if (code == CL_DES_ENCRYPTION)/* encryption */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 276 g = y; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 277 else /* decryption */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 278 g = 15 - y; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 279 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 280 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 281 * Copie the right bits Rn of the current step | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 282 * to the left bits Ln+1 of the next step | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 283 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 284 for(z = 0; z < 32; z++) | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 285 l[y + 1][z] = r[y][z]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 286 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 287 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 288 * Expand the block Rn from 32 to 48 bits by using the selection table E. | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 289 * Then XOR the result with the key Kn+1. | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 290 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 291 for(z = 0; z < 48; z++){ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 292 rnew[z] = r[y][e[z] - 1]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 293 xorres[z] = (rnew[z] ^ deskey[g][z]); | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 294 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 295 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 296 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 297 * We now have 48 bits, or eight groups of six bits. We use them as | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 298 * addresses in tables calle "S boxes". Each group of six bits will | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 299 * give us an address in a different S box. | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 300 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 301 for(z = 0; z < 8; z++){ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 302 temp = s[z][des_indx(&xorres[z * 6])]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 303 des_hex2bin4(temp, &scale[z * 4]); | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 304 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 305 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 306 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 307 * Perform a permutation P of the S box output. | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 308 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 309 for(z = 0; z < 32; z++) | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 310 perm[z] = scale[sp[z] - 1]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 311 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 312 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 313 * XOR the result with the left half of current step | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 314 * and copie it to the right half of the next step | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 315 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 316 for(z = 0; z < 32; z++) | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 317 r[y+1][z] = (l[y][z] ^ perm[z]); | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 318 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 319 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 320 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 321 * Reserve the order of the final block L16R16 to R16L16 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 322 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 323 for( z = 0; z < 32; z++){ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 324 rl[z] = r[16][z]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 325 rl[z + 32] = l[16][z]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 326 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 327 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 328 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 329 * Apply the final inverse permutation IP | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 330 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 331 for( z = 0; z < 64; z++){ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 332 encpt[z] = rl[ipinv[z] - 1]; | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 333 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 334 | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 335 /* | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 336 * Convert from bin to hex format | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 337 */ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 338 for(z = 0; z < 8; z++){ | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 339 outMsgPtr[z] = des_bin2hex(&encpt[8 * z]); | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 340 } | 
| 
3d148edb87c2
eliminated the dependency on OpenSSL for Pirelli IMEI DES decryption
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 341 } | 
