From: Thomas Weißschuh Date: Fri, 18 Nov 2022 19:02:54 +0000 (+0100) Subject: libblkid: btrfs: add support for sha256 checksums X-Git-Tag: v2.39-rc1~410^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=767b5aff01fa1b7b5811db9849ece588ba046864;p=thirdparty%2Futil-linux.git libblkid: btrfs: add support for sha256 checksums --- diff --git a/libblkid/src/superblocks/btrfs.c b/libblkid/src/superblocks/btrfs.c index 15817d4e4f..de39b70fb8 100644 --- a/libblkid/src/superblocks/btrfs.c +++ b/libblkid/src/superblocks/btrfs.c @@ -19,14 +19,17 @@ #include "superblocks.h" #include "crc32c.h" +#include "sha256.h" enum btrfs_super_block_csum_type { BTRFS_SUPER_BLOCK_CSUM_TYPE_CRC32C = 0, + BTRFS_SUPER_BLOCK_CSUM_TYPE_SHA256 = 2, }; union btrfs_super_block_csum { uint8_t bytes[32]; uint32_t crc32c; + uint8_t sha256[UL_SHA256LENGTH]; }; struct btrfs_super_block { @@ -224,6 +227,12 @@ static int btrfs_verify_csum(blkid_probe pr, const struct btrfs_super_block *bfs return blkid_probe_verify_csum(pr, crc, le32_to_cpu(bfs->csum.crc32c)); } + case BTRFS_SUPER_BLOCK_CSUM_TYPE_SHA256: { + uint8_t sha256[UL_SHA256LENGTH]; + ul_SHA256(sha256, csum_data, csum_data_size); + return blkid_probe_verify_csum_buf(pr, UL_SHA256LENGTH, + sha256, bfs->csum.sha256); + } default: DBG(LOWPROBE, ul_debug("(btrfs) unknown checksum type %d, skipping validation", csum_type));