MCPcopy Create free account
hub / github.com/RsyncProject/rsync / get_checksum2

Function get_checksum2

checksum.c:304–399  ·  view source on GitHub ↗

The "sum" buffer must be at least MAX_DIGEST_LEN bytes! */

Source from the content-addressed store, hash-verified

302
303/* The "sum" buffer must be at least MAX_DIGEST_LEN bytes! */
304void get_checksum2(char *buf, int32 len, char *sum)
305{
306#ifdef USE_OPENSSL
307 if (xfer_sum_evp_md) {
308 static EVP_MD_CTX *evp = NULL;
309 uchar seedbuf[4];
310 if (!evp && !(evp = EVP_MD_CTX_create()))
311 out_of_memory("get_checksum2");
312 EVP_DigestInit_ex(evp, xfer_sum_evp_md, NULL);
313 if (checksum_seed) {
314 SIVALu(seedbuf, 0, checksum_seed);
315 EVP_DigestUpdate(evp, seedbuf, 4);
316 }
317 EVP_DigestUpdate(evp, (uchar *)buf, len);
318 EVP_DigestFinal_ex(evp, (uchar *)sum, NULL);
319 } else
320#endif
321 switch (xfer_sum_nni->num) {
322#ifdef SUPPORT_XXHASH
323 case CSUM_XXH64:
324 SIVAL64(sum, 0, XXH64(buf, len, checksum_seed));
325 break;
326#endif
327#ifdef SUPPORT_XXH3
328 case CSUM_XXH3_64:
329 SIVAL64(sum, 0, XXH3_64bits_withSeed(buf, len, checksum_seed));
330 break;
331 case CSUM_XXH3_128: {
332 XXH128_hash_t digest = XXH3_128bits_withSeed(buf, len, checksum_seed);
333 SIVAL64(sum, 0, digest.low64);
334 SIVAL64(sum, 8, digest.high64);
335 break;
336 }
337#endif
338 case CSUM_MD5: {
339 md_context m5;
340 uchar seedbuf[4];
341 md5_begin(&m5);
342 if (proper_seed_order) {
343 if (checksum_seed) {
344 SIVALu(seedbuf, 0, checksum_seed);
345 md5_update(&m5, seedbuf, 4);
346 }
347 md5_update(&m5, (uchar *)buf, len);
348 } else {
349 md5_update(&m5, (uchar *)buf, len);
350 if (checksum_seed) {
351 SIVALu(seedbuf, 0, checksum_seed);
352 md5_update(&m5, seedbuf, 4);
353 }
354 }
355 md5_result(&m5, (uchar *)sum);
356 break;
357 }
358 case CSUM_MD4:
359 case CSUM_MD4_OLD:
360 case CSUM_MD4_BUSTED:
361 case CSUM_MD4_ARCHAIC: {

Callers 2

hash_searchFunction · 0.85
generate_and_send_sumsFunction · 0.85

Calls 9

SIVALuFunction · 0.85
SIVAL64Function · 0.85
md5_beginFunction · 0.85
md5_updateFunction · 0.85
md5_resultFunction · 0.85
mdfour_beginFunction · 0.85
SIVALFunction · 0.85
mdfour_updateFunction · 0.85
mdfour_resultFunction · 0.85

Tested by

no test coverage detected