MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / sha_final

Function sha_final

src/common/sha.cpp:298–342  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

296// finish computing the SHA digest
297
298void sha_final(unsigned char digest[SHA_DIGESTSIZE], SHA_INFO *sha_info)
299{
300 const Sha1::LONG lo_bit_count = sha_info->count_lo;
301 const Sha1::LONG hi_bit_count = sha_info->count_hi;
302 unsigned int count = (int) ((lo_bit_count >> 3) & 0x3f);
303 sha_info->data[count++] = 0x80;
304 if (count > SHA_BLOCKSIZE - 8)
305 {
306 memset(sha_info->data + count, 0, SHA_BLOCKSIZE - count);
307 sha_transform(sha_info);
308 memset(sha_info->data, 0, SHA_BLOCKSIZE - 8);
309 }
310 else {
311 memset(sha_info->data + count, 0, SHA_BLOCKSIZE - 8 - count);
312 }
313 sha_info->data[56] = (unsigned char) ((hi_bit_count >> 24) & 0xff);
314 sha_info->data[57] = (unsigned char) ((hi_bit_count >> 16) & 0xff);
315 sha_info->data[58] = (unsigned char) ((hi_bit_count >> 8) & 0xff);
316 sha_info->data[59] = (unsigned char) ((hi_bit_count >> 0) & 0xff);
317 sha_info->data[60] = (unsigned char) ((lo_bit_count >> 24) & 0xff);
318 sha_info->data[61] = (unsigned char) ((lo_bit_count >> 16) & 0xff);
319 sha_info->data[62] = (unsigned char) ((lo_bit_count >> 8) & 0xff);
320 sha_info->data[63] = (unsigned char) ((lo_bit_count >> 0) & 0xff);
321 sha_transform(sha_info);
322 digest[ 0] = (unsigned char) ((sha_info->digest[0] >> 24) & 0xff);
323 digest[ 1] = (unsigned char) ((sha_info->digest[0] >> 16) & 0xff);
324 digest[ 2] = (unsigned char) ((sha_info->digest[0] >> 8) & 0xff);
325 digest[ 3] = (unsigned char) ((sha_info->digest[0] ) & 0xff);
326 digest[ 4] = (unsigned char) ((sha_info->digest[1] >> 24) & 0xff);
327 digest[ 5] = (unsigned char) ((sha_info->digest[1] >> 16) & 0xff);
328 digest[ 6] = (unsigned char) ((sha_info->digest[1] >> 8) & 0xff);
329 digest[ 7] = (unsigned char) ((sha_info->digest[1] ) & 0xff);
330 digest[ 8] = (unsigned char) ((sha_info->digest[2] >> 24) & 0xff);
331 digest[ 9] = (unsigned char) ((sha_info->digest[2] >> 16) & 0xff);
332 digest[10] = (unsigned char) ((sha_info->digest[2] >> 8) & 0xff);
333 digest[11] = (unsigned char) ((sha_info->digest[2] ) & 0xff);
334 digest[12] = (unsigned char) ((sha_info->digest[3] >> 24) & 0xff);
335 digest[13] = (unsigned char) ((sha_info->digest[3] >> 16) & 0xff);
336 digest[14] = (unsigned char) ((sha_info->digest[3] >> 8) & 0xff);
337 digest[15] = (unsigned char) ((sha_info->digest[3] ) & 0xff);
338 digest[16] = (unsigned char) ((sha_info->digest[4] >> 24) & 0xff);
339 digest[17] = (unsigned char) ((sha_info->digest[4] >> 16) & 0xff);
340 digest[18] = (unsigned char) ((sha_info->digest[4] >> 8) & 0xff);
341 digest[19] = (unsigned char) ((sha_info->digest[4] ) & 0xff);
342}
343
344} // anonymous namespace
345

Callers 4

hashBased64Method · 0.85
getHashMethod · 0.85
clearMethod · 0.85
getHashMethod · 0.85

Calls 1

sha_transformFunction · 0.85

Tested by

no test coverage detected