MCPcopy Create free account
hub / github.com/abbeycode/UnrarKit / blake2s_compress

Function blake2s_compress

Libraries/unrar/blake2s.cpp:86–120  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

84
85
86static void blake2s_compress( blake2s_state *S, const byte block[BLAKE2S_BLOCKBYTES] )
87{
88 uint32 m[16];
89 uint32 v[16];
90
91 for( size_t i = 0; i < 16; ++i )
92 m[i] = RawGet4( block + i * 4 );
93
94 for( size_t i = 0; i < 8; ++i )
95 v[i] = S->h[i];
96
97 v[ 8] = blake2s_IV[0];
98 v[ 9] = blake2s_IV[1];
99 v[10] = blake2s_IV[2];
100 v[11] = blake2s_IV[3];
101 v[12] = S->t[0] ^ blake2s_IV[4];
102 v[13] = S->t[1] ^ blake2s_IV[5];
103 v[14] = S->f[0] ^ blake2s_IV[6];
104 v[15] = S->f[1] ^ blake2s_IV[7];
105
106 for ( uint r = 0; r <= 9; ++r ) // No gain on i7 if unrolled, but exe size grows.
107 {
108 G(r,0,m,v[ 0],v[ 4],v[ 8],v[12]);
109 G(r,1,m,v[ 1],v[ 5],v[ 9],v[13]);
110 G(r,2,m,v[ 2],v[ 6],v[10],v[14]);
111 G(r,3,m,v[ 3],v[ 7],v[11],v[15]);
112 G(r,4,m,v[ 0],v[ 5],v[10],v[15]);
113 G(r,5,m,v[ 1],v[ 6],v[11],v[12]);
114 G(r,6,m,v[ 2],v[ 7],v[ 8],v[13]);
115 G(r,7,m,v[ 3],v[ 4],v[ 9],v[14]);
116 }
117
118 for( size_t i = 0; i < 8; ++i )
119 S->h[i] = S->h[i] ^ v[i] ^ v[i + 8];
120}
121
122
123void blake2s_update( blake2s_state *S, const byte *in, size_t inlen )

Callers 2

blake2s_updateFunction · 0.85
blake2s_finalFunction · 0.85

Calls 1

RawGet4Function · 0.85

Tested by

no test coverage detected