Posted to tcl by mjanssen at Sun Jun 29 11:52:24 GMT 2008view raw
- critcl::ccommand MixColumns {cd interp objc objv} {
- Tcl_Obj * resObj = Tcl_NewListObj (0,0);
- Tcl_Obj * tempObj = NULL;
- int i;
- int r0,r1,r2,r3,s0,s1,s2,s3;
- Tcl_WideInt w;
- for (i=0;i<4;i++) {
- Tcl_ListObjIndex(interp,objv[1],i,&tempObj);
- Tcl_GetWideIntFromObj(interp,tempObj,&w);
- r0= (w >> 24) & 255;
- r1= (w >> 16) & 255;
- r2= (w >> 8 ) & 255;
- r3= w & 255;
- s0= xtime[r0] ^ (r1^xtime[r1]) ^ r2 ^ r3;
- s1= r0 ^ xtime[r1] ^ (r2^xtime[r2])^ r3;
- s2= r0 ^ r1 ^ (xtime[r2]) ^ (r3^xtime[r3]);
- s3= r0^xtime[r0] ^ r1 ^ r2 ^ xtime[r3];
- Tcl_Obj * l=Tcl_NewWideIntObj((s0 << 24) | (s1 << 16) | (s2 << | s3 );
- Tcl_ListObjAppendElement(interp,resObj,l);
- }
- Tcl_SetObjResult(interp,resObj);
- return TCL_OK;
- }