Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions include/aws/crt/checksum/CRC.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,21 @@ namespace Aws
* the non bit-reflected polynomial 0xad93d23594c93659) and inverts the CRC input and output bits.
*/
uint64_t AWS_CRT_CPP_API ComputeCRC64NVME(ByteCursor input, uint64_t previousCRC64NVME = 0) noexcept;

/**
* Combines two CRC32 (Ethernet, gzip) checksums computed over separate data blocks.
*/
uint32_t AWS_CRT_CPP_API CombineCRC32(uint32_t crc1, uint32_t crc2, uint64_t len2) noexcept;

/**
* Combines two CRC32C (Castagnoli, iSCSI) checksums computed over separate data blocks.
*/
uint32_t AWS_CRT_CPP_API CombineCRC32C(uint32_t crc1, uint32_t crc2, uint64_t len2) noexcept;

/**
* Combines two CRC64-NVME checksums computed over separate data blocks.
*/
uint64_t AWS_CRT_CPP_API CombineCRC64NVME(uint64_t crc1, uint64_t crc2, uint64_t len2) noexcept;
} // namespace Checksum
} // namespace Crt
} // namespace Aws
15 changes: 15 additions & 0 deletions source/checksum/CRC.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,21 @@ namespace Aws
return aws_checksums_crc64nvme_ex(input.ptr, input.len, previousCRC64NVME);
}

uint32_t CombineCRC32(uint32_t crc1, uint32_t crc2, uint64_t len2) noexcept
{
return aws_checksums_crc32_combine(crc1, crc2, len2);
}

uint32_t CombineCRC32C(uint32_t crc1, uint32_t crc2, uint64_t len2) noexcept
{
return aws_checksums_crc32c_combine(crc1, crc2, len2);
}

uint64_t CombineCRC64NVME(uint64_t crc1, uint64_t crc2, uint64_t len2) noexcept
{
return aws_checksums_crc64nvme_combine(crc1, crc2, len2);
}

} // namespace Checksum
} // namespace Crt
} // namespace Aws