auxFormat.c 2.49 KB
Newer Older
Zhao Xuefeng committed
1 2
#include"auxFormat.h"

Wentao Zhang committed
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
void unpackU96FormatToThreePacket(u8 *out, u32 *in) {
	u32 t[3] = { 0 }; \
		u32 t0 = in[0], t1 = in[1], t2 = in[2];		 \
		t[0] = ((t1 & 0x400) << 21) | ((t2 & 0x400) << 20) | \
		((t0 & 0x300) << 20) | ((t1 & 0x300) << 18) | ((t2 & 0x300) << 16) | \
		((t0 & 0xff) << 16) | ((t1 & 0xff) << 8) | (t2 & 0xff);		 \
		t[1] = ((t2 & 0x200000) << 10) | ((t0 & 0x100000) << 10) | ((t1 & 0x180000) << 9) | ((t2 & 0x180000) << 7) | \
		((t0 & 0xc0000) << 6) | ((t1 & 0x7f800) << 5) | ((t2 & 0x7f800) >> 3) | \
		((t0 & 0x3fc00) >> 10);		 \
		t[2] = ((t0 & 0x80000000)) | ((t1 & 0x80000000) >> 1) | ((t2 & 0xc0000000) >> 2) | \
		((t0 & 0x60000000) >> 3) | ((t1 & 0x60000000) >> 5) | ((t2 & 0x3fc00000) >> 6) | \
		((t0 & 0x1fe00000) >> 13) | ((t1 & 0x1fe00000) >> 21);		 \
		unpuckU32ToThree_3(t[0]);		 \
		unpuckU32ToThree_3(t[1]);		 \
		unpuckU32ToThree_3(t[2]);		 \
		memcpy(out, t, 12 * sizeof(unsigned char));		 \
}
Zhao Xuefeng committed
20
void packU48FormatToThreePacket(u32 * out, u8 * in) {
Wentao Zhang committed
21 22 23 24 25 26 27 28 29 30 31 32
	u32 t0 = U32BIG(*(u32*)(in)), t1 = (u32)U16BIG(*(u16*)(in + 4));	\
		puckU32ToThree_3(t0);	\
		puckU32ToThree_3(t1);	\
		out[0] =  \
		(((t1 & 0x40000000) >> 10) | ((t1 & 0x03000000) >> 6) | ((t1 & 0x000000ff) << 10)) | \
		((((t0 & 0x30000000) >> 20) | ((t0 & 0xff0000) >> 16)));	\
		out[1] =  \
		((((t1 & 0x30000000) >> 9) | ((t1 & 0xff0000) >> 5)) | \
		(((t0 & 0x80000000) >> 21) | ((t0 & 0xc000000) >> 18) | ((t0 & 0xff00) >> 8)));	\
		out[2] =  \
		(((t1 & 0x80000000) >> 10) | ((t1 & 0xc000000) >> 7) | ((t1 & 0xff00) << 3)) | \
			(((t0 & 0x40000000) >> 20) | ((t0 & 0x03000000) >> 16) | (t0 & 0x000000ff));	\
Zhao Xuefeng committed
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
}

unsigned char  constant7Format[104] = {
	/*constant7Format[127]:  12*9=108*/
0x01,0x08,0x40,0x02,0x10,0x80,0x05,0x09,0x48,0x42,0x12,0x90,
0x85,0x0c,0x41,0x0a,0x50,0x82,0x15,0x89,0x4d,0x4b,0x5a,0xd2,
0x97,0x9c,0xc4,0x06,0x11,0x88,0x45,0x0b,0x58,0xc2,0x17,0x99,
0xcd,0x4e,0x53,0x9a,0xd5,0x8e,0x54,0x83,0x1d,0xc9,0x4f,0x5b,
0xda,0xd7,0x9e,0xd4,0x86,0x14,0x81,0x0d,0x49,0x4a,0x52,0x92,
0x95,0x8c,0x44,0x03,0x18,0xc0,0x07,0x19,0xc8,0x47,0x1b,0xd8,
0xc7,0x1e,0xd1,0x8f,0x5c,0xc3,0x1f,0xd9,0xcf,0x5e,0xd3,0x9f,
0xdc,0xc6,0x16,0x91,0x8d,0x4c,0x43,0x1a,0xd0,0x87,0x1c,0xc1,
0x0f,0x59,0xca,0x57,0x9b,0xdd,0xce,0x56,};
void P384(unsigned int *s, unsigned char *round, unsigned char lunNum) {
	u32 rci,t1,t2;
	unsigned char  i;
	for (i = 0; i < lunNum; i++) {
		rci=constant7Format[i];
		P384_ARC_SC1(rci,s[3],s[6],s[9]);
		P384_2SC(s[1],s[4],s[7],s[10],s[2],s[5],s[8],s[11]);
		P384_SR();
	}
}