5 #define Mk16(A, B) ((A<<8)+B)
7 #define Lo8(v16) ((U8)( (v16) & 0xFF))
8 #define Hi8(v16) ((U8)(((v16)>>8) & 0xFF))
12 typedef struct _Seedvar
27 void Tkip_Init(U8
*key
, U8
*ta
, Seedvar
*Seed
, U8
*initiv
);
28 void Tkip_clear(Seedvar
*Seed
);
31 void Tkip_setkey(U8
*key
, U8
*ta
, Seedvar
*Seed
);
33 // phase1 key mixing function
34 char Tkip_phase1_key_mix(U32 IV32
, Seedvar
*Seed
);
36 // phase2 key mixing function
37 char Tkip_phase2_key_mix(U16 IV16
, Seedvar
*Seed
);
39 // get generated seeds
40 void Tkip_getseeds(U16 IV16
, U8
*RC4Key
, Seedvar
*Seed
);
43 void Tkip_updateiv(Seedvar
*Seed
);
46 /************************************************************/
48 /* Returns a 16 bit value from a 64K entry table. The Table */
49 /* is synthesized from two 256 entry byte wide tables. */
50 /************************************************************/
51 unsigned int tkip_sbox(unsigned int index
);
53 // rotate right by 1 bit.
54 unsigned int rotr1(unsigned int a
);