Add const-ness to internal BLAKE2 functions (GH #527)

pull/548/head
Jeffrey Walton 2017-12-06 17:40:34 -05:00
parent b436411de5
commit fe257e92a9
No known key found for this signature in database
GPG Key ID: B36AB348921B1838
1 changed files with 28 additions and 28 deletions

View File

@ -79,56 +79,56 @@ const byte BLAKE2B_SIGMA[12][16] = {
{ 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 } { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 }
}; };
template <unsigned int rnd, unsigned int idx> template <unsigned int R, unsigned int N>
inline void BLAKE2B_G(word64 m[], word64& a, word64& b, word64& c, word64& d) inline void BLAKE2B_G(const word64 m[16], word64& a, word64& b, word64& c, word64& d)
{ {
a = a + b + m[BLAKE2B_SIGMA[rnd][2*idx+0]]; a = a + b + m[BLAKE2B_SIGMA[R][2*N+0]];
d = rotrConstant<32>(d ^ a); d = rotrConstant<32>(d ^ a);
c = c + d; c = c + d;
b = rotrConstant<24>(b ^ c); b = rotrConstant<24>(b ^ c);
a = a + b + m[BLAKE2B_SIGMA[rnd][2*idx+1]]; a = a + b + m[BLAKE2B_SIGMA[R][2*N+1]];
d = rotrConstant<16>(d ^ a); d = rotrConstant<16>(d ^ a);
c = c + d; c = c + d;
b = rotrConstant<63>(b ^ c); b = rotrConstant<63>(b ^ c);
} }
template <unsigned int rnd> template <unsigned int R>
inline void BLAKE2B_ROUND(word64 m[], word64 v[]) inline void BLAKE2B_ROUND(const word64 m[16], word64 v[16])
{ {
BLAKE2B_G<rnd,0>(m,v[ 0],v[ 4],v[ 8],v[12]); BLAKE2B_G<R,0>(m,v[ 0],v[ 4],v[ 8],v[12]);
BLAKE2B_G<rnd,1>(m,v[ 1],v[ 5],v[ 9],v[13]); BLAKE2B_G<R,1>(m,v[ 1],v[ 5],v[ 9],v[13]);
BLAKE2B_G<rnd,2>(m,v[ 2],v[ 6],v[10],v[14]); BLAKE2B_G<R,2>(m,v[ 2],v[ 6],v[10],v[14]);
BLAKE2B_G<rnd,3>(m,v[ 3],v[ 7],v[11],v[15]); BLAKE2B_G<R,3>(m,v[ 3],v[ 7],v[11],v[15]);
BLAKE2B_G<rnd,4>(m,v[ 0],v[ 5],v[10],v[15]); BLAKE2B_G<R,4>(m,v[ 0],v[ 5],v[10],v[15]);
BLAKE2B_G<rnd,5>(m,v[ 1],v[ 6],v[11],v[12]); BLAKE2B_G<R,5>(m,v[ 1],v[ 6],v[11],v[12]);
BLAKE2B_G<rnd,6>(m,v[ 2],v[ 7],v[ 8],v[13]); BLAKE2B_G<R,6>(m,v[ 2],v[ 7],v[ 8],v[13]);
BLAKE2B_G<rnd,7>(m,v[ 3],v[ 4],v[ 9],v[14]); BLAKE2B_G<R,7>(m,v[ 3],v[ 4],v[ 9],v[14]);
} }
template <unsigned int rnd, unsigned int idx> template <unsigned int R, unsigned int N>
inline void BLAKE2S_G(word32 m[], word32& a, word32& b, word32& c, word32& d) inline void BLAKE2S_G(const word32 m[16], word32& a, word32& b, word32& c, word32& d)
{ {
a = a + b + m[BLAKE2S_SIGMA[rnd][2*idx+0]]; a = a + b + m[BLAKE2S_SIGMA[R][2*N+0]];
d = rotrConstant<16>(d ^ a); d = rotrConstant<16>(d ^ a);
c = c + d; c = c + d;
b = rotrConstant<12>(b ^ c); b = rotrConstant<12>(b ^ c);
a = a + b + m[BLAKE2S_SIGMA[rnd][2*idx+1]]; a = a + b + m[BLAKE2S_SIGMA[R][2*N+1]];
d = rotrConstant<8>(d ^ a); d = rotrConstant<8>(d ^ a);
c = c + d; c = c + d;
b = rotrConstant<7>(b ^ c); b = rotrConstant<7>(b ^ c);
} }
template <unsigned int rnd> template <unsigned int R>
inline void BLAKE2S_ROUND(word32 m[], word32 v[]) inline void BLAKE2S_ROUND(const word32 m[16], word32 v[])
{ {
BLAKE2S_G<rnd,0>(m,v[ 0],v[ 4],v[ 8],v[12]); BLAKE2S_G<R,0>(m,v[ 0],v[ 4],v[ 8],v[12]);
BLAKE2S_G<rnd,1>(m,v[ 1],v[ 5],v[ 9],v[13]); BLAKE2S_G<R,1>(m,v[ 1],v[ 5],v[ 9],v[13]);
BLAKE2S_G<rnd,2>(m,v[ 2],v[ 6],v[10],v[14]); BLAKE2S_G<R,2>(m,v[ 2],v[ 6],v[10],v[14]);
BLAKE2S_G<rnd,3>(m,v[ 3],v[ 7],v[11],v[15]); BLAKE2S_G<R,3>(m,v[ 3],v[ 7],v[11],v[15]);
BLAKE2S_G<rnd,4>(m,v[ 0],v[ 5],v[10],v[15]); BLAKE2S_G<R,4>(m,v[ 0],v[ 5],v[10],v[15]);
BLAKE2S_G<rnd,5>(m,v[ 1],v[ 6],v[11],v[12]); BLAKE2S_G<R,5>(m,v[ 1],v[ 6],v[11],v[12]);
BLAKE2S_G<rnd,6>(m,v[ 2],v[ 7],v[ 8],v[13]); BLAKE2S_G<R,6>(m,v[ 2],v[ 7],v[ 8],v[13]);
BLAKE2S_G<rnd,7>(m,v[ 3],v[ 4],v[ 9],v[14]); BLAKE2S_G<R,7>(m,v[ 3],v[ 4],v[ 9],v[14]);
} }
ANONYMOUS_NAMESPACE_END ANONYMOUS_NAMESPACE_END