MCPcopy Index your code
hub / github.com/RsyncProject/rsync / sum_update

Function sum_update

checksum.c:622–679  ·  view source on GitHub ↗

Feed data into a hash digest accumulator. */

Source from the content-addressed store, hash-verified

620
621/* Feed data into a hash digest accumulator. */
622void sum_update(const char *p, int32 len)
623{
624#ifdef USE_OPENSSL
625 if (cur_sum_evp_md) {
626 EVP_DigestUpdate(ctx_evp, (uchar *)p, len);
627 } else
628#endif
629 switch (cur_sum_nni->num) {
630#ifdef SUPPORT_XXHASH
631 case CSUM_XXH64:
632 XXH64_update(xxh64_state, p, len);
633 break;
634#endif
635#ifdef SUPPORT_XXH3
636 case CSUM_XXH3_64:
637 XXH3_64bits_update(xxh3_state, p, len);
638 break;
639 case CSUM_XXH3_128:
640 XXH3_128bits_update(xxh3_state, p, len);
641 break;
642#endif
643 case CSUM_MD5:
644 md5_update(&ctx_md, (uchar *)p, len);
645 break;
646 case CSUM_MD4:
647 case CSUM_MD4_OLD:
648 case CSUM_MD4_BUSTED:
649 case CSUM_MD4_ARCHAIC:
650 if (len + sumresidue < CSUM_CHUNK) {
651 memcpy(ctx_md.buffer + sumresidue, p, len);
652 sumresidue += len;
653 break;
654 }
655
656 if (sumresidue) {
657 int32 i = CSUM_CHUNK - sumresidue;
658 memcpy(ctx_md.buffer + sumresidue, p, i);
659 mdfour_update(&ctx_md, (uchar *)ctx_md.buffer, CSUM_CHUNK);
660 len -= i;
661 p += i;
662 }
663
664 while (len >= CSUM_CHUNK) {
665 mdfour_update(&ctx_md, (uchar *)p, CSUM_CHUNK);
666 len -= CSUM_CHUNK;
667 p += CSUM_CHUNK;
668 }
669
670 sumresidue = len;
671 if (sumresidue)
672 memcpy(ctx_md.buffer, p, sumresidue);
673 break;
674 case CSUM_NONE:
675 break;
676 default: /* paranoia to prevent missing case values */
677 exit_cleanup(RERR_UNSUPPORTED);
678 }
679}

Callers 9

gen_challengeFunction · 0.85
generate_hashFunction · 0.85
sum_initFunction · 0.85
verify_digestFunction · 0.85
matchedFunction · 0.85
match_sumsFunction · 0.85
rsync_xal_getFunction · 0.85
rsync_xal_setFunction · 0.85
receive_dataFunction · 0.85

Calls 2

md5_updateFunction · 0.85
mdfour_updateFunction · 0.85

Tested by

no test coverage detected