aboutsummaryrefslogtreecommitdiff
path: root/cmd/verify.go
diff options
context:
space:
mode:
authoraxtloss <axtlos@getcryst.al>2024-02-17 22:00:50 +0100
committeraxtloss <axtlos@getcryst.al>2024-02-17 22:00:50 +0100
commit61cc5e9a02a38cd086d382e521509e85fecd6d07 (patch)
tree6f18b142f0237397d51976788eadf81e9c3e4ef2 /cmd/verify.go
parent296a1f89fb3bbc2751f55a9eab9ec492bee3adba (diff)
downloadfsverify-61cc5e9a02a38cd086d382e521509e85fecd6d07.tar.gz
fsverify-61cc5e9a02a38cd086d382e521509e85fecd6d07.tar.bz2
Fix fsverify signature verification
Diffstat (limited to '')
-rw-r--r--cmd/verify.go31
1 files changed, 14 insertions, 17 deletions
diff --git a/cmd/verify.go b/cmd/verify.go
index b4066b6..401787f 100644
--- a/cmd/verify.go
+++ b/cmd/verify.go
@@ -32,7 +32,6 @@ func validateThread(blockStart int, blockEnd int, bundleSize int, diskBytes []by
blockCount := math.Floor(float64(bundleSize / 2000))
totalReadBlocks := 0
- fmt.Println("DBFILE: ", dbfile)
db, err := core.OpenDB(dbfile, true)
if err != nil {
errChan <- err
@@ -49,16 +48,13 @@ func validateThread(blockStart int, blockEnd int, bundleSize int, diskBytes []by
err = core.VerifyBlock(block, node)
if err != nil {
- fmt.Println("fail")
errChan <- err
}
- var nodeSum string
for int64(totalReadBlocks) < int64(blockCount) {
if validateFailed {
return
}
- prevNodeSum := nodeSum
nodeSum, err := node.GetHash()
if err != nil {
fmt.Println("Using node ", nodeSum)
@@ -78,11 +74,9 @@ func validateThread(blockStart int, blockEnd int, bundleSize int, diskBytes []by
}
err = core.VerifyBlock(part, node)
if err != nil {
- fmt.Println("fail")
errChan <- err
validateFailed = true
return
- //fmt.Printf("Block '%s' ranging from %d to %d matches!\n", node.PrevNodeSum, node.BlockStart, node.BlockEnd)
}
}
@@ -90,23 +84,23 @@ func validateThread(blockStart int, blockEnd int, bundleSize int, diskBytes []by
}
func ValidateCommand(_ *cobra.Command, args []string) error {
- header, err := core.ReadHeader("./part.fsverify")
- fmt.Printf("Magic Number: %d\n", header.MagicNumber)
- fmt.Printf("Signature: %s", header.Signature)
- fmt.Printf("FsSize: %d\n", header.FilesystemSize)
- fmt.Printf("FsUnit: %d\n", header.FilesystemUnit)
- fmt.Printf("Table Size: %d\n", header.TableSize)
- fmt.Printf("Table Size Unit: %d\n", header.TableUnit)
+ if len(args) != 1 {
+ return fmt.Errorf("Usage: fsverify verify [disk]")
+ }
+ header, err := core.ReadHeader(config.FsVerifyPart)
+
+ if header.MagicNumber != 0xACAB {
+ return fmt.Errorf("sanity bit does not match. Expected %d, got %d", 0xACAB, header.MagicNumber)
+ }
+
if err != nil {
return err
}
fmt.Println("Reading DB")
- //dbfile, err := core.ReadDB("/dev/sda")
- dbfile, err := core.ReadDB("./part.fsverify")
+ dbfile, err := core.ReadDB(config.FsVerifyPart)
if err != nil {
return err
}
- fmt.Println("DBFILE: ", dbfile)
key, err := core.ReadKey()
if err != nil {
return err
@@ -117,7 +111,6 @@ func ValidateCommand(_ *cobra.Command, args []string) error {
return err
} else if !verified {
return fmt.Errorf("Signature verification failed\n")
- //fmt.Println("Signature verification failedw")
} else {
fmt.Println("Signature verification success!")
}
@@ -134,6 +127,10 @@ func ValidateCommand(_ *cobra.Command, args []string) error {
}
diskSize := diskInfo.Size()
+ if header.FilesystemSize*header.FilesystemUnit != int(diskSize) {
+ return fmt.Errorf("disk size does not match disk size specified in header. Expected %d, got %d", header.FilesystemSize*header.FilesystemUnit, diskSize)
+ }
+
bundleSize := math.Floor(float64(diskSize / int64(config.ProcCount)))
diskBytes := make([]byte, diskSize)
_, err = disk.Read(diskBytes)