auxFormat.c 1.77 KB
Newer Older
Zhao Xuefeng committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
#include"auxFormat.h"

void P512(unsigned int *s, unsigned char *round, unsigned char rounds) {
	u32 rci, t1, t2, t3, t9;
	unsigned char i;
	for (i = 0; i < rounds; i++) {
		rci = round[0];
		P512_ARC_1(rci);
		for (i = 1; i < rounds; i++) {
			P512_2SC(s[0], s[4], s[8], s[12], s[1], s[5], s[9], s[13]);
			P512_2SC(s[2], s[6], s[10], s[14], s[3], s[7], s[11], s[15]);
			P512_SR_1();
			rci = round[i];
			P512_SR_ARC_2(rci);
		}
		P512_2SC(s[0], s[4], s[8], s[12], s[1], s[5], s[9], s[13]);
		P512_2SC(s[2], s[6], s[10], s[14], s[3], s[7], s[11], s[15]);
		P512_SR_1();
		P512_SR_2();

	}
}
void packU64FormatToFourPacket(u32 *out, u8 *in) {
	u32 t1, t2, temp1;
	t1 = U32BIG(((u32* )in)[0]);
	t2 = U32BIG(((u32* )in)[1]);
	puck32(t1);
	puck32(t1);
	puck32(t2);
	puck32(t2);
	out[3] = ((t2 >> 16) & 0x0000ff00) | ((t1 >> 24));
	out[2] = ((t2 >> 8) & 0x0000ff00) | ((t1 >> 16) & 0x000000ff);
	out[1] = (t2 & 0x0000ff00) | ((t1 >> 8) & 0x000000ff);
	out[0] = ((t2 << 8) & 0x0000ff00) | (t1 & 0x000000ff);
}

void unpackU128FormatToFourPacket(u8 *out, u32 *in) {
	u32 t[4] = { 0 };
	u32 r0;
	t[3] = (in[3] & 0xff000000) | ((in[2] >> 8) & 0x00ff0000)
			| ((in[1] >> 16) & 0x0000ff00) | (in[0] >> 24);
	t[2] = ((in[3] << 8) & 0xff000000) | (in[2] & 0x00ff0000)
			| ((in[1] >> 8) & 0x0000ff00) | ((in[0] >> 16) & 0x000000ff);
	t[1] = ((in[3] << 16) & 0xff000000) | ((in[2] << 8) & 0x00ff0000)
			| (in[1] & 0x0000ff00) | ((in[0] >> 8) & 0x000000ff);
	t[0] = ((in[3] << 24) & 0xff000000) | ((in[2] << 16) & 0x00ff0000)
			| ((in[1] << 8) & 0x0000ff00) | (in[0] & 0x000000ff);
	unpuck32(t[0]);
	unpuck32(t[0]);
	unpuck32(t[1]);
	unpuck32(t[1]);
	unpuck32(t[2]);
	unpuck32(t[2]);
	unpuck32(t[3]);
	unpuck32(t[3]);
	memcpy(out, t, 16 * sizeof(unsigned char));
}