@@ -78,9 +78,6 @@ namespace sha256_detail {
78
78
79
79
#ifndef BOOST_CRYPT_HAS_CUDA
80
80
BOOST_CRYPT_INLINE_CONSTEXPR boost::crypt::array<boost::crypt::uint32_t , 64 > sha256_k = {
81
- #else
82
- __constant__ boost::crypt::uint32_t sha256_k[64 ] = {
83
- #endif
84
81
0x428a2f98 , 0x71374491 , 0xb5c0fbcf , 0xe9b5dba5 , 0x3956c25b ,
85
82
0x59f111f1 , 0x923f82a4 , 0xab1c5ed5 , 0xd807aa98 , 0x12835b01 ,
86
83
0x243185be , 0x550c7dc3 , 0x72be5d74 , 0x80deb1fe , 0x9bdc06a7 ,
@@ -95,7 +92,7 @@ __constant__ boost::crypt::uint32_t sha256_k[64] = {
95
92
0x682e6ff3 , 0x748f82ee , 0x78a5636f , 0x84c87814 , 0x8cc70208 ,
96
93
0x90befffa , 0xa4506ceb , 0xbef9a3f7 , 0xc67178f2
97
94
};
98
-
95
+ # endif
99
96
100
97
// https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf
101
98
// See section 4.1.2
@@ -134,6 +131,27 @@ BOOST_CRYPT_GPU_ENABLED constexpr auto sha_maj(const boost::crypt::uint32_t x, c
134
131
// See definitions from the RFC on the rounds
135
132
constexpr auto sha256_hasher::sha256_process_message_block () -> void
136
133
{
134
+ // On host we prefer this array to be static but,
135
+ // in a CUDA environment it solves linking problems to move into the function
136
+
137
+ #ifdef BOOST_CRYPT_HAS_CUDA
138
+ constexpr boost::crypt::uint32_t sha256_k[64 ] = {
139
+ 0x428a2f98 , 0x71374491 , 0xb5c0fbcf , 0xe9b5dba5 , 0x3956c25b ,
140
+ 0x59f111f1 , 0x923f82a4 , 0xab1c5ed5 , 0xd807aa98 , 0x12835b01 ,
141
+ 0x243185be , 0x550c7dc3 , 0x72be5d74 , 0x80deb1fe , 0x9bdc06a7 ,
142
+ 0xc19bf174 , 0xe49b69c1 , 0xefbe4786 , 0x0fc19dc6 , 0x240ca1cc ,
143
+ 0x2de92c6f , 0x4a7484aa , 0x5cb0a9dc , 0x76f988da , 0x983e5152 ,
144
+ 0xa831c66d , 0xb00327c8 , 0xbf597fc7 , 0xc6e00bf3 , 0xd5a79147 ,
145
+ 0x06ca6351 , 0x14292967 , 0x27b70a85 , 0x2e1b2138 , 0x4d2c6dfc ,
146
+ 0x53380d13 , 0x650a7354 , 0x766a0abb , 0x81c2c92e , 0x92722c85 ,
147
+ 0xa2bfe8a1 , 0xa81a664b , 0xc24b8b70 , 0xc76c51a3 , 0xd192e819 ,
148
+ 0xd6990624 , 0xf40e3585 , 0x106aa070 , 0x19a4c116 , 0x1e376c08 ,
149
+ 0x2748774c , 0x34b0bcb5 , 0x391c0cb3 , 0x4ed8aa4a , 0x5b9cca4f ,
150
+ 0x682e6ff3 , 0x748f82ee , 0x78a5636f , 0x84c87814 , 0x8cc70208 ,
151
+ 0x90befffa , 0xa4506ceb , 0xbef9a3f7 , 0xc67178f2
152
+ };
153
+ #endif
154
+
137
155
using namespace sha256_detail ;
138
156
boost::crypt::array<boost::crypt::uint32_t , 64 > W {};
139
157
0 commit comments