FreeCalypso > hg > freecalypso-sw
annotate gsm-fw/comlib/cl_des.c @ 992:a7b0b426f9ca
target-utils: boot ROM UART autodetection revamped
The new implementation should work with both the familiar Calypso C035
boot ROM version found in our regular targets as well as the older
Calypso F741979B version found on the vintage D-Sample board.
| author | Mychaela Falconia <falcon@ivan.Harhan.ORG> | 
|---|---|
| date | Wed, 30 Dec 2015 21:28:41 +0000 | 
| parents | 39bacc7d5c49 | 
| children | 
| rev | line source | 
|---|---|
| 664 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 1 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 2 +----------------------------------------------------------------------------- | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 3 | Project : COMLIB | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 4 | Modul : cl_des.c | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 5 +----------------------------------------------------------------------------- | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 6 | Copyright 2002 Texas Instruments Berlin, AG | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 7 | All rights reserved. | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 8 | | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 9 | This file is confidential and a trade secret of Texas | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 10 | Instruments Berlin, AG | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 11 | The receipt of or possession of this file does not convey | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 12 | any rights to reproduce or disclose its contents or to | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 13 | manufacture, use, or sell anything it may describe, in | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 14 | whole, or in part, without the specific written consent of | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 15 | Texas Instruments Berlin, AG. | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 16 +----------------------------------------------------------------------------- | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 17 | Purpose : Definitions of common library functions: Implementation of | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 18 DES algorithm | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 19 +----------------------------------------------------------------------------- | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 20 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 21 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 22 * Version 1.0 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 23 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 24 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 25 /**********************************************************************************/ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 26 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 27 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 28 NOTE: | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 29 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 30 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 31 /**********************************************************************************/ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 32 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 33 #ifndef CL_DES_C | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 34 #define CL_DES_C | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 35 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 36 #include <string.h> | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 37 #include "typedefs.h" | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 38 #include "cl_des.h" | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 39 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 40 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 41 /* 64+64+17*56+16*48+64+17*32+17*32 = 3000 bytes */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 42 static UBYTE binmsg[64] , binkey[64], cd[17][56] , deskey[16][48] , ip[64]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 43 static UBYTE l[17][32] , r[17][32]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 44 /* 64+64+32+32+64+64+17*3+2 = 373 bytes */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 45 static UBYTE rnew[64] , xorres[64] , scale[32] , perm[32] , rl[64] , encpt[64]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 46 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 47 /* 64+16+48+64+48+32+64+8*66 = 864 bytes */ | 
| 665 
39bacc7d5c49
gsm-fw: starting to compile comlib
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
664diff
changeset | 48 static | 
| 664 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 49 const UBYTE shtamt[16] = {1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1}; | 
| 665 
39bacc7d5c49
gsm-fw: starting to compile comlib
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
664diff
changeset | 50 static | 
| 664 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 51 const UBYTE iporder[64] = {58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 52 46,38,30,22,14,6,64,56,48,40,32,24,16,8,57,49,41,33, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 53 25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 54 13,5,63,55,47,39,31,23,15,7}; | 
| 665 
39bacc7d5c49
gsm-fw: starting to compile comlib
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
664diff
changeset | 55 static | 
| 664 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 56 const UBYTE pc1[64] = {57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 57 35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 58 46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4}; | 
| 665 
39bacc7d5c49
gsm-fw: starting to compile comlib
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
664diff
changeset | 59 static | 
| 664 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 60 const UBYTE pc2[48] = {14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 61 16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 62 48,44,49,39,56,34,53,46,42,50,36,29,32}; | 
| 665 
39bacc7d5c49
gsm-fw: starting to compile comlib
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
664diff
changeset | 63 static | 
| 664 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 64 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, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 65 16,17,16,17,18,19,20,21,20,21,22,23,24,25,24,25,26,27, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 66 28,29,28, 29,30,31,32,1}; | 
| 665 
39bacc7d5c49
gsm-fw: starting to compile comlib
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
664diff
changeset | 67 static | 
| 664 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 68 const UBYTE sp[32] = {16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 69 2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25}; | 
| 665 
39bacc7d5c49
gsm-fw: starting to compile comlib
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
664diff
changeset | 70 static | 
| 664 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 71 const UBYTE ipinv[64] = {40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,38,6,46, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 72 14,54,22,62,30,37,5,45,13,53,21,61,29,36,4,44,12,52, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 73 20,60,28,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 74 26,33,1,41,9,49,17,57,25}; | 
| 665 
39bacc7d5c49
gsm-fw: starting to compile comlib
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
664diff
changeset | 75 static | 
| 664 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 76 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, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 77 1,10,6,12,11,9,5,3,8,4,1,14,8,13,6,2,11,15,12,9,7,3,10, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 78 5,0,15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13}, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 79 {15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,3,13,4,7,15,2,8, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 80 14,12,0,1,10,6,9,11,5,0,14,7,11,10,4,13,1,5,8,12,6,9,3, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 81 2,15,13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9}, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 82 {10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8,13,7,0,9,3,4,6, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 83 10,2,8,5,14,12,11,15,1,13,6,4,9,8,15,3,0,11,1,2,12,5, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 84 10,14,7,1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12 }, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 85 {7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15,13,8,11,5,6,15, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 86 0,3,4,7,2,12,1,10,14,9,10,6,9,0,12,11,7,13,15,1,3,14, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 87 5,2,8,4,3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14 }, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 88 {2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,14,11,2,12,4,7, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 89 13,1,5,0,15,10,3,9,8,6,4,2,1,11,10,13,7,8,15,9,12,5,6, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 90 3,0,14,11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3 }, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 91 {12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11,10,15,4,2,7,12, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 92 9,5,6,1,13,14,0,11,3,8,9,14,15,5,2,8,12,3,7,0,4,10,1, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 93 13,11,6,4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13 }, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 94 {4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1,13,0,11,7,4,9,1, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 95 10,14,3,5,12,2,15,8,6,1,4,11,13,12,3,7,14,10,15,6,8,0, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 96 5,9,2,6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12 }, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 97 {13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7,1,15,13,8,10,3,7, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 98 4,12,5,6,11,0,14,9,2,7,11,4,1,9,12,14,2,0,6,10,13,15,3, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 99 5,8,2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11 }}; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 100 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 101 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 102 /*==== FUNCTIONS ==================================================*/ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 103 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 104 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 105 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 106 | Function : des_hex2bin4 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 107 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 108 | Description : The function converts a 4 bit hex value to 4 binary values | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 109 | | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 110 | Parameters : hex : value in hex | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 111 | m : pointer to buffer of 4 elements to store binary values | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 112 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 113 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 114 LOCAL void des_hex2bin4(UBYTE hex, UBYTE *m) | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 115 { | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 116 m[0] = (hex & 0x08) >> 3; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 117 m[1] = (hex & 0x04) >> 2; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 118 m[2] = (hex & 0x02) >> 1; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 119 m[3] = hex & 0x01; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 120 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 121 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 122 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 123 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 124 | Function : des_hex2bin8 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 125 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 126 | Description : The function converts a 8 bit hex value to 8 binary values | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 127 | | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 128 | Parameters : hex : value in hex | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 129 | m : pointer to buffer of 8 elements to store binary values | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 130 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 131 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 132 LOCAL void des_hex2bin8(UBYTE hex, UBYTE *m) | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 133 { | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 134 m[0] = (hex & 0x80) >> 7; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 135 m[1] = (hex & 0x40) >> 6; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 136 m[2] = (hex & 0x20) >> 5; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 137 m[3] = (hex & 0x10) >> 4; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 138 m[4] = (hex & 0x08) >> 3; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 139 m[5] = (hex & 0x04) >> 2; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 140 m[6] = (hex & 0x02) >> 1; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 141 m[7] = hex & 0x01; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 142 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 143 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 144 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 145 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 146 | Function : des_bin2hex | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 147 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 148 | Description : The function converts 8 bin values to an 8 bit hex value | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 149 | | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 150 | Parameters : m[8] : input bin values | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 151 | Return : converted hex value | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 152 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 153 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 154 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 155 LOCAL UBYTE des_bin2hex(UBYTE *m) | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 156 { | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 157 UBYTE hex; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 158 return hex = (m[0]<<7) | (m[1]<<6) | (m[2]<<5) | (m[3]<<4) | | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 159 (m[4]<<3) | (m[5]<<2) | (m[6]<<1) | m[7]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 160 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 161 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 162 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 163 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 164 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 165 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 166 | Function : des_shift | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 167 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 168 | Description : The function performs shifting | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 169 | | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 170 | Parameters : dst : pointer to destination buffer | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 171 | src : pointer to source buffer | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 172 | sht : shift value | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 173 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 174 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 175 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 176 LOCAL void des_shift(UBYTE *dst, UBYTE *src, UBYTE sht) | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 177 { | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 178 UBYTE c1 , c2 , d1 , d2; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 179 int i; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 180 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 181 c1 = src[0]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 182 c2 = src[1]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 183 d1 = src[28]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 184 d2 = src[29]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 185 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 186 for ( i = 0 ; i < 28 - sht ; i++) { | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 187 dst[i] = src[i + sht]; /* copying c[i] */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 188 dst[28 + i] = src[28 + i + sht]; /* copying d[i] */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 189 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 190 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 191 if (sht == 1){ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 192 dst[27] = c1; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 193 dst[55] = d1; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 194 } else { | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 195 dst[26] = c1; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 196 dst[27] = c2; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 197 dst[54] = d1; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 198 dst[55] = d2; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 199 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 200 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 201 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 202 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 203 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 204 | Function : des_indx | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 205 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 206 | Description : The function generates index for S table | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 207 | | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 208 | Parameters : m[6] : | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 209 | Return : index value | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 210 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 211 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 212 LOCAL UBYTE des_indx(UBYTE *m) | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 213 { | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 214 return( (((m[0]<<1) + m[5])<<4) + ((m[1]<<3) + (m[2]<<2) + (m[3]<<1) + m[4])); | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 215 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 216 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 217 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 218 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 219 | Function : cl_des | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 220 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 221 | Description : The function performs DES encrypting or decrypting | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 222 | | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 223 | Parameters : inMsgPtr : pointer to input message M. The length of message | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 224 | has to be min. 8 bytes e.g. M = 0123456789abcdef | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 225 | desKeyPtr : pointer to DES key. Length has to be 8 bytes | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 226 | outMsgPtr : output encrypted/decrypted message. The length is 8 b. | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 227 | code : CL_DES_ENCRYPTION, CL_DES_DECRYPTION | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 228 +------------------------------------------------------------------------------ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 229 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 230 EXTERN void cl_des(UBYTE *inMsgPtr, UBYTE *desKeyPtr, UBYTE *outMsgPtr, UBYTE code) | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 231 { | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 232 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 233 int y , z , g; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 234 UBYTE temp, more; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 235 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 236 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 237 * convert message from hex to bin format | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 238 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 239 for(y = 0; y < 8; y++){ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 240 des_hex2bin8(inMsgPtr[y], &binmsg[8 * y]); | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 241 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 242 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 243 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 244 * Convert DES key value from hex to bin format | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 245 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 246 for( y = 0; y < 8; y++){ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 247 des_hex2bin8(desKeyPtr[y], &binkey[8 * y]); | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 248 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 249 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 250 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 251 * Step 1: Create 16 subkeys, each of which is 48-bits long. | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 252 * | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 253 * The 64-bit key is permuted according to the table pc1, | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 254 * to get the 56 bit subkey K+. The subkey K+ consists of left | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 255 * and right halves C0 and D0, where each half has 28 bits. | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 256 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 257 for(y = 0 ; y < 56 ; y++) | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 258 cd[0][y] = binkey[pc1[y] - 1]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 259 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 260 * Create futher 15 subkeys C1-C16 and D1-D16 by left shifts of | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 261 * each previous key, i.e. C2 and D2 are obtained from C1 and D1 and so on. | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 262 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 263 for(y = 0 ; y < 16 ; y++) | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 264 des_shift(cd[y + 1] , cd[y] , shtamt[y]); | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 265 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 266 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 267 * Form the keys K1-K16 by applying the pc2 permutation | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 268 * table to each of the concatenated pairs CnDn. | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 269 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 270 for(y = 0; y < 16; y++){ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 271 for(z = 0 ; z < 48 ; z++){ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 272 deskey[y][z] = cd[y + 1][pc2[z] - 1]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 273 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 274 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 275 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 276 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 277 * Step 2: Encode each 64-bit block of data | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 278 * | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 279 * Perform initial permutation IP of th e64 bits the message data M. | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 280 * This rearranges the bits according to the iporder table. | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 281 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 282 for(y = 0; y < 64; y++) | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 283 ip[y] = binmsg[iporder[y] - 1]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 284 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 285 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 286 * Divide the permuted block IP into left half L0 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 287 * and a right half R0 each of 32 bits. | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 288 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 289 for(y = 0; y < 32; y++){ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 290 l[0][y] = ip[y]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 291 r[0][y] = ip[y + 32]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 292 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 293 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 294 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 295 * Proceed through 16 iterations, operation on two blocks: | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 296 * a data block of 32 bits and a key Kn of 48 bits to produce a block of 32 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 297 * bits. This results in a final block L16R16. In each iteration, we take | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 298 * the right 32 bits of the previous result and make them the left 32 bits | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 299 * of the current step. For the right 32 bits in the current step, we XOR | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 300 * the left 32 bits of the previous step. | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 301 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 302 for (y = 0; y < 16; y++){ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 303 if (code == CL_DES_ENCRYPTION)/* encryption */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 304 g = y; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 305 else /* decryption */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 306 g = 15 - y; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 307 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 308 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 309 * Copie the right bits Rn of the current step | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 310 * to the left bits Ln+1 of the next step | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 311 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 312 for(z = 0; z < 32; z++) | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 313 l[y + 1][z] = r[y][z]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 314 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 315 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 316 * Expand the block Rn from 32 to 48 bits by using the selection table E. | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 317 * Then XOR the result with the key Kn+1. | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 318 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 319 for(z = 0; z < 48; z++){ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 320 rnew[z] = r[y][e[z] - 1]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 321 xorres[z] = (rnew[z] ^ deskey[g][z]); | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 322 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 323 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 324 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 325 * We now have 48 bits, or eight groups of six bits. We use them as | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 326 * addresses in tables calle "S boxes". Each group of six bits will | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 327 * give us an address in a different S box. | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 328 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 329 for(z = 0; z < 8; z++){ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 330 temp = s[z][des_indx(&xorres[z * 6])]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 331 des_hex2bin4(temp, &scale[z * 4]); | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 332 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 333 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 334 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 335 * Perform a permutation P of the S box output. | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 336 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 337 for(z = 0; z < 32; z++) | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 338 perm[z] = scale[sp[z] - 1]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 339 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 340 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 341 * XOR the result with the left half of current step | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 342 * and copie it to the right half of the next step | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 343 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 344 for(z = 0; z < 32; z++) | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 345 r[y+1][z] = (l[y][z] ^ perm[z]); | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 346 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 347 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 348 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 349 * Reserve the order of the final block L16R16 to R16L16 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 350 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 351 for( z = 0; z < 32; z++){ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 352 rl[z] = r[16][z]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 353 rl[z + 32] = l[16][z]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 354 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 355 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 356 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 357 * Apply the final inverse permutation IP | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 358 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 359 for( z = 0; z < 64; z++){ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 360 encpt[z] = rl[ipinv[z] - 1]; | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 361 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 362 | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 363 /* | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 364 * Convert from bin to hex format | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 365 */ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 366 for(z = 0; z < 8; z++){ | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 367 outMsgPtr[z] = des_bin2hex(&encpt[8 * z]); | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 368 } | 
| 
d36f647c2432
gsm-fw/comlib: initial import of TI's source
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: diff
changeset | 369 } | 
| 665 
39bacc7d5c49
gsm-fw: starting to compile comlib
 Michael Spacefalcon <msokolov@ivan.Harhan.ORG> parents: 
664diff
changeset | 370 #endif /* CL_DES_C */ | 
