]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libblkid: btrfs: add support for sha256 checksums
authorThomas Weißschuh <thomas@t-8ch.de>
Fri, 18 Nov 2022 19:02:54 +0000 (20:02 +0100)
committerThomas Weißschuh <thomas@t-8ch.de>
Mon, 21 Nov 2022 14:29:58 +0000 (15:29 +0100)
libblkid/src/superblocks/btrfs.c

index 15817d4e4fedb34c00f21a66b756b26953da8df2..de39b70fb83aef5105e71f65dec1c32e677e6594 100644 (file)
 
 #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));