summaryrefslogtreecommitdiff
path: root/blake2.cpp
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2017-12-06 17:40:34 -0500
committerJeffrey Walton <noloader@gmail.com>2017-12-06 17:40:34 -0500
commitfe257e92a9bf3a0252cf256e27be25dc2651e07a (patch)
tree52718ec58015356f766c9d1f7010f463bbf683e7 /blake2.cpp
parentb436411de5235c2fd7be1296c1448c0c52fe6082 (diff)
downloadcryptopp-git-fe257e92a9bf3a0252cf256e27be25dc2651e07a.tar.gz
Add const-ness to internal BLAKE2 functions (GH #527)
Diffstat (limited to 'blake2.cpp')
-rw-r--r--blake2.cpp56
1 files changed, 28 insertions, 28 deletions
diff --git a/blake2.cpp b/blake2.cpp
index 62df6f1c..2fcba5f9 100644
--- a/blake2.cpp
+++ b/blake2.cpp
@@ -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 }
};
-template <unsigned int rnd, unsigned int idx>
-inline void BLAKE2B_G(word64 m[], word64& a, word64& b, word64& c, word64& d)
+template <unsigned int R, unsigned int N>
+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);
c = c + d;
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);
c = c + d;
b = rotrConstant<63>(b ^ c);
}
-template <unsigned int rnd>
-inline void BLAKE2B_ROUND(word64 m[], word64 v[])
+template <unsigned int R>
+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<rnd,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<rnd,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<rnd,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<rnd,7>(m,v[ 3],v[ 4],v[ 9],v[14]);
+ BLAKE2B_G<R,0>(m,v[ 0],v[ 4],v[ 8],v[12]);
+ BLAKE2B_G<R,1>(m,v[ 1],v[ 5],v[ 9],v[13]);
+ BLAKE2B_G<R,2>(m,v[ 2],v[ 6],v[10],v[14]);
+ BLAKE2B_G<R,3>(m,v[ 3],v[ 7],v[11],v[15]);
+ BLAKE2B_G<R,4>(m,v[ 0],v[ 5],v[10],v[15]);
+ BLAKE2B_G<R,5>(m,v[ 1],v[ 6],v[11],v[12]);
+ BLAKE2B_G<R,6>(m,v[ 2],v[ 7],v[ 8],v[13]);
+ BLAKE2B_G<R,7>(m,v[ 3],v[ 4],v[ 9],v[14]);
}
-template <unsigned int rnd, unsigned int idx>
-inline void BLAKE2S_G(word32 m[], word32& a, word32& b, word32& c, word32& d)
+template <unsigned int R, unsigned int N>
+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);
c = c + d;
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);
c = c + d;
b = rotrConstant<7>(b ^ c);
}
-template <unsigned int rnd>
-inline void BLAKE2S_ROUND(word32 m[], word32 v[])
+template <unsigned int R>
+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<rnd,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<rnd,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<rnd,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<rnd,7>(m,v[ 3],v[ 4],v[ 9],v[14]);
+ BLAKE2S_G<R,0>(m,v[ 0],v[ 4],v[ 8],v[12]);
+ BLAKE2S_G<R,1>(m,v[ 1],v[ 5],v[ 9],v[13]);
+ BLAKE2S_G<R,2>(m,v[ 2],v[ 6],v[10],v[14]);
+ BLAKE2S_G<R,3>(m,v[ 3],v[ 7],v[11],v[15]);
+ BLAKE2S_G<R,4>(m,v[ 0],v[ 5],v[10],v[15]);
+ BLAKE2S_G<R,5>(m,v[ 1],v[ 6],v[11],v[12]);
+ BLAKE2S_G<R,6>(m,v[ 2],v[ 7],v[ 8],v[13]);
+ BLAKE2S_G<R,7>(m,v[ 3],v[ 4],v[ 9],v[14]);
}
ANONYMOUS_NAMESPACE_END