コード例 #1
0
ファイル: ripemd.c プロジェクト: Bjelijah/EcamTurnH265
static void ripemd128_transform(uint32_t *state, const uint8_t buffer[64], int ext)
{
    uint32_t a, b, c, d, e, f, g, h, t;
    uint32_t block[16];
    int n;

    if (ext) {
        a = state[0]; b = state[1]; c = state[2]; d = state[3];
        e = state[4]; f = state[5]; g = state[6]; h = state[7];
    } else {
        a = e = state[0];
        b = f = state[1];
        c = g = state[2];
        d = h = state[3];
    }

    for (n = 0; n < 16; n++)
        block[n] = AV_RL32(buffer + 4 * n);
    n = 0;

#if CONFIG_SMALL
    for (; n < 16;) {
        ROUND128_0_TO_15(a,b,c,d,e,f,g,h);
        t = d; d = c; c = b; b = a; a = t;
        t = h; h = g; g = f; f = e; e = t;
    }
    SWAP(a,e)

    for (; n < 32;) {
        ROUND128_16_TO_31(a,b,c,d,e,f,g,h);
        t = d; d = c; c = b; b = a; a = t;
        t = h; h = g; g = f; f = e; e = t;
    }
    SWAP(b,f)

    for (; n < 48;) {
        ROUND128_32_TO_47(a,b,c,d,e,f,g,h);
        t = d; d = c; c = b; b = a; a = t;
        t = h; h = g; g = f; f = e; e = t;
    }
    SWAP(c,g)

    for (; n < 64;) {
        ROUND128_48_TO_63(a,b,c,d,e,f,g,h);
        t = d; d = c; c = b; b = a; a = t;
        t = h; h = g; g = f; f = e; e = t;
    }
    SWAP(d,h)
#else

#define R128_0                         \
    ROUND128_0_TO_15(a,b,c,d,e,f,g,h); \
    ROUND128_0_TO_15(d,a,b,c,h,e,f,g); \
    ROUND128_0_TO_15(c,d,a,b,g,h,e,f); \
    ROUND128_0_TO_15(b,c,d,a,f,g,h,e)

    R128_0; R128_0; R128_0; R128_0;
    SWAP(a,e)

#define R128_16                         \
    ROUND128_16_TO_31(a,b,c,d,e,f,g,h); \
    ROUND128_16_TO_31(d,a,b,c,h,e,f,g); \
    ROUND128_16_TO_31(c,d,a,b,g,h,e,f); \
    ROUND128_16_TO_31(b,c,d,a,f,g,h,e)

    R128_16; R128_16; R128_16; R128_16;
    SWAP(b,f)

#define R128_32                         \
    ROUND128_32_TO_47(a,b,c,d,e,f,g,h); \
    ROUND128_32_TO_47(d,a,b,c,h,e,f,g); \
    ROUND128_32_TO_47(c,d,a,b,g,h,e,f); \
    ROUND128_32_TO_47(b,c,d,a,f,g,h,e)

    R128_32; R128_32; R128_32; R128_32;
    SWAP(c,g)

#define R128_48                         \
    ROUND128_48_TO_63(a,b,c,d,e,f,g,h); \
    ROUND128_48_TO_63(d,a,b,c,h,e,f,g); \
    ROUND128_48_TO_63(c,d,a,b,g,h,e,f); \
    ROUND128_48_TO_63(b,c,d,a,f,g,h,e)

    R128_48; R128_48; R128_48; R128_48;
    SWAP(d,h)
#endif

    if (ext) {
        state[0] += a; state[1] += b; state[2] += c; state[3] += d;
        state[4] += e; state[5] += f; state[6] += g; state[7] += h;
    } else {
        h += c + state[1];
        state[1] = state[2] + d + e;
        state[2] = state[3] + a + f;
        state[3] = state[0] + b + g;
        state[0] = h;
    }
}
コード例 #2
0
ファイル: ripemd.c プロジェクト: huangzongwu/FFmpeg
static void ripemd128_transform(uint32_t *state, const uint8_t buffer[64], int ext)
{
    uint32_t a, b, c, d, e, f, g, h;
    uint32_t block[16];
    int n;

    if (ext) {
        a = state[0]; b = state[1]; c = state[2]; d = state[3];
        e = state[4]; f = state[5]; g = state[6]; h = state[7];
    } else {
        a = e = state[0];
        b = f = state[1];
        c = g = state[2];
        d = h = state[3];
    }

    for (n = 0; n < 16; n++)
        block[n] = AV_RL32(buffer + 4 * n);

    for (n = 0; n < 16;) {
        ROUND128_0_TO_15(a,b,c,d,e,f,g,h);
        ROUND128_0_TO_15(d,a,b,c,h,e,f,g);
        ROUND128_0_TO_15(c,d,a,b,g,h,e,f);
        ROUND128_0_TO_15(b,c,d,a,f,g,h,e);
    }
    SWAP(a,e)

    for (; n < 32;) {
        ROUND128_16_TO_31(a,b,c,d,e,f,g,h);
        ROUND128_16_TO_31(d,a,b,c,h,e,f,g);
        ROUND128_16_TO_31(c,d,a,b,g,h,e,f);
        ROUND128_16_TO_31(b,c,d,a,f,g,h,e);
    }
    SWAP(b,f)

    for (; n < 48;) {
        ROUND128_32_TO_47(a,b,c,d,e,f,g,h);
        ROUND128_32_TO_47(d,a,b,c,h,e,f,g);
        ROUND128_32_TO_47(c,d,a,b,g,h,e,f);
        ROUND128_32_TO_47(b,c,d,a,f,g,h,e);
    }
    SWAP(c,g)

    for (; n < 64;) {
        ROUND128_48_TO_63(a,b,c,d,e,f,g,h);
        ROUND128_48_TO_63(d,a,b,c,h,e,f,g);
        ROUND128_48_TO_63(c,d,a,b,g,h,e,f);
        ROUND128_48_TO_63(b,c,d,a,f,g,h,e);
    }
    SWAP(d,h)

    if (ext) {
        state[0] += a; state[1] += b; state[2] += c; state[3] += d;
        state[4] += e; state[5] += f; state[6] += g; state[7] += h;
    } else {
        h += c + state[1];
        state[1] = state[2] + d + e;
        state[2] = state[3] + a + f;
        state[3] = state[0] + b + g;
        state[0] = h;
    }
}