From 767b5aff01fa1b7b5811db9849ece588ba046864 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Thomas=20Wei=C3=9Fschuh?= Date: Fri, 18 Nov 2022 20:02:54 +0100 Subject: [PATCH] libblkid: btrfs: add support for sha256 checksums --- libblkid/src/superblocks/btrfs.c | 9 +++++++++ 1 file changed, 9 insertions(+) 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)); -- 2.47.3