]> glassweightruler.freedombox.rocks Git - Ventoy.git/commitdiff
Add .md5/.sha1/.sha256/.sha512 check file feature.
authorlongpanda <admin@ventoy.net>
Sun, 24 Oct 2021 10:52:09 +0000 (18:52 +0800)
committerlongpanda <admin@ventoy.net>
Sun, 24 Oct 2021 10:52:09 +0000 (18:52 +0800)
Hotkey m is for calculate checksum and print the result.
If also exist a .md5/.sha1/.sha256/.sha512 file, then it will check the result with the value in the file.
The .md5/.sha1/.sha256/.sha512 suffix is appended to the original file name not replace the original suffix.
For example:
/ISO/Ubuntu-20.04-amd64-desktop.iso
/ISO/Ubuntu-20.04-amd64-desktop.iso.md5

EDK2/edk2_mod/edk2-edk2-stable201911/MdeModulePkg/Application/Ventoy/VentoyProtocol.c
GRUB2/MOD_SRC/grub-2.04/grub-core/commands/hashsum.c
INSTALL/grub/checksum.cfg

index 1f44355b28a48c678bd63de983098f5681350f62..56cb39489e8a9eb9650d92716f67bc91ae4f26a6 100644 (file)
@@ -1484,7 +1484,7 @@ STATIC EFI_STATUS EFIAPI ventoy_wrapper_file_open
         {
             AsciiStrCpyS(OldName, sizeof(OldName), g_img_replace_list[i].old_file_name[j]);
             if ((0 == AsciiStrCmp(OldName, TmpName)) ||
-                 (AsciiStrnCmp(OldName, "\\loader\\entries", 15) == 0 && 
+                 (AsciiStrnCmp(OldName, "\\loader\\entries\\", 16) == 0 && 
                   AsciiStrCmp(OldName + 16, TmpName) == 0
                   )  
                 )
index 8be3d8ac556a418ab5890d54a071d68a2627b63a..7dc63f188f682709b5602f7a598b855f1a6c2f35 100644 (file)
@@ -224,6 +224,8 @@ grub_cmd_hashsum (struct grub_extcmd_context *ctxt,
   int keep = state[3].set;
   int uncompress = state[4].set;
   unsigned unread = 0;
+  int len = 0;
+  char hashsum[256];
 
   for (i = 0; i < ARRAY_SIZE (aliases); i++)
     if (grub_strcmp (ctxt->extcmd->cmd->name, aliases[i].name) == 0)
@@ -282,8 +284,12 @@ grub_cmd_hashsum (struct grub_extcmd_context *ctxt,
          continue;
        }
       for (j = 0; j < hash->mdlen; j++)
-       grub_printf ("%02x", ((grub_uint8_t *) result)[j]);
+         {
+           grub_printf ("%02x", ((grub_uint8_t *) result)[j]);
+        len += grub_snprintf(hashsum + len, sizeof(hashsum) - len, "%02x", ((grub_uint8_t *) result)[j]);
+      }
       grub_printf ("  %s\n", args[i]);
+      grub_env_set("VT_LAST_CHECK_SUM", hashsum);
     }
 
   if (unread)
index 53dc638797bfeb3dfc2818a4d49f90816610d5b0..cea88fce58566ee38a077b70bea58809342ea579 100644 (file)
-menuentry "Calculate md5sum" --class=checksum_md5 {
-    md5sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
-    
-    echo -e "\n\npress ENTER to exit ..."
-    read vtInputKey
-}
 
-menuentry "Calculate sha1sum" --class=checksum_sha1 {
-    sha1sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
-    
-    echo -e "\n\npress ENTER to exit ..."
-    read vtInputKey
-}
+if [ -e "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.md5" ]; then
+    set default=0
+    menuentry "Calculate and check md5sum" --class=checksum_md5 {
+        md5sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
+        
+        vt_1st_line "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.md5" vtReadChecksum
+        
+        if vt_str_begin "$vtReadChecksum" "$VT_LAST_CHECK_SUM"; then
+            echo -e "\n\nCheck MD5 value with .md5 file.  [ OK ]"
+        else
+            echo -e "\n\nCheck MD5 value with .md5 file.  [ FAIL ]"
+            echo "The MD5 value in .md5 file is:"
+            echo "$vtReadChecksum"
+        fi
+        
+        echo -e "\n\npress ENTER to exit ..."
+        read vtInputKey
+    }
+else
+    menuentry "Calculate md5sum" --class=checksum_md5 {
+        md5sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
+        
+        echo -e "\n\npress ENTER to exit ..."
+        read vtInputKey
+    }
+fi
 
-menuentry "Calculate sha256sum" --class=checksum_sha256 {
-    sha256sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
-    
-    echo -e "\n\npress ENTER to exit ..."
-    read vtInputKey
-}
+if [ -e "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha1" ]; then
+    set default=1
+    menuentry "Calculate and check sha1sum" --class=checksum_sha1 {
+        sha1sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
+        
+        vt_1st_line "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha1" vtReadChecksum
+        
+        if vt_str_begin "$vtReadChecksum" "$VT_LAST_CHECK_SUM"; then
+            echo -e "\n\nCheck SHA1 value with .sha1 file.  [ OK ]"
+        else
+            echo -e "\n\nCheck SHA1 value with .sha1 file.  [ FAIL ]"
+            echo "The SHA1 value in .sha1 file is:"
+            echo "$vtReadChecksum"
+        fi
+        
+        echo -e "\n\npress ENTER to exit ..."
+        read vtInputKey
+    }
+else
+    menuentry "Calculate sha1sum" --class=checksum_sha1 {
+        sha1sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
+        
+        echo -e "\n\npress ENTER to exit ..."
+        read vtInputKey
+    }
+fi
+
+
+
+if [ -e "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha256" ]; then
+    set default=2
+    menuentry "Calculate and check sha256sum" --class=checksum_sha256 {
+        sha256sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
+        
+        vt_1st_line "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha256" vtReadChecksum
+        
+        if vt_str_begin "$vtReadChecksum" "$VT_LAST_CHECK_SUM"; then
+            echo -e "\n\nCheck SHA256 value with .sha256 file.  [ OK ]"
+        else
+            echo -e "\n\nCheck SHA256 value with .sha256 file.  [ FAIL ]"
+            echo "The SHA256 value in .sha256 file is:"
+            echo "$vtReadChecksum"
+        fi
+        
+        echo -e "\n\npress ENTER to exit ..."
+        read vtInputKey
+    }
+else
+    menuentry "Calculate sha256sum" --class=checksum_sha256 {
+        sha256sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
+        
+        echo -e "\n\npress ENTER to exit ..."
+        read vtInputKey
+    }
+fi
+
+
+
+if [ -e "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha512" ]; then
+    set default=3
+    menuentry "Calculate and check sha512sum" --class=checksum_sha512{
+        sha512sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
+        
+        vt_1st_line "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}.sha512" vtReadChecksum
+        
+        if vt_str_begin "$vtReadChecksum" "$VT_LAST_CHECK_SUM"; then
+            echo -e "\n\nCheck SHA512 value with .sha512 file.  [ OK ]"
+        else
+            echo -e "\n\nCheck SHA512 value with .sha512 file.  [ FAIL ]"
+            echo "The SHA512 value in .sha512 file is:"
+            echo "$vtReadChecksum"
+        fi
+        
+        echo -e "\n\npress ENTER to exit ..."
+        read vtInputKey
+    }
+else
+    menuentry "Calculate sha512sum" --class=checksum_sha512{
+        sha512sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
+        
+        echo -e "\n\npress ENTER to exit ..."
+        read vtInputKey
+    }
+fi
 
-menuentry "Calculate sha512sum" --class=checksum_sha512{
-    sha512sum "${vtoy_iso_part}${VTOY_CHKSUM_FILE_PATH}"
-    
-    echo -e "\n\npress ENTER to exit ..."
-    read vtInputKey
-}
 
 menuentry 'Return to previous menu [Esc]' --class=vtoyret VTOY_RET {
     echo 'Return ...'