diff --git a/.vs/rufus.vcxproj b/.vs/rufus.vcxproj
index effde61e..a4128ac7 100644
--- a/.vs/rufus.vcxproj
+++ b/.vs/rufus.vcxproj
@@ -397,7 +397,7 @@
-
+
diff --git a/.vs/rufus.vcxproj.filters b/.vs/rufus.vcxproj.filters
index 5a82626c..fa818f9a 100644
--- a/.vs/rufus.vcxproj.filters
+++ b/.vs/rufus.vcxproj.filters
@@ -66,7 +66,7 @@
Source Files
-
+
Source Files
diff --git a/src/Makefile.am b/src/Makefile.am
index b04205e3..ef95f391 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -14,7 +14,7 @@ AM_V_WINDRES = $(AM_V_WINDRES_$(V))
%_rc.o: %.rc ../res/loc/embedded.loc
$(AM_V_WINDRES) $(AM_RCFLAGS) -i $< -o $@
-rufus_SOURCES = badblocks.c checksum.c cpu.c dev.c dos.c dos_locale.c drive.c format.c format_ext.c format_fat32.c icon.c iso.c \
+rufus_SOURCES = badblocks.c cpu.c dev.c dos.c dos_locale.c drive.c format.c format_ext.c format_fat32.c hash.c icon.c iso.c \
localization.c net.c parser.c pki.c process.c re.c rufus.c smart.c stdfn.c stdio.c stdlg.c syslinux.c ui.c vhd.c wue.c
rufus_CFLAGS = -I$(srcdir)/ms-sys/inc -I$(srcdir)/syslinux/libfat -I$(srcdir)/syslinux/libinstaller -I$(srcdir)/syslinux/win -I$(srcdir)/libcdio $(AM_CFLAGS) \
-DEXT2_FLAT_INCLUDES=0 -DSOLUTION=rufus
diff --git a/src/Makefile.in b/src/Makefile.in
index 493c4dbe..e83fd54a 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -87,13 +87,14 @@ mkinstalldirs = $(install_sh) -d
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
PROGRAMS = $(noinst_PROGRAMS)
-am_rufus_OBJECTS = rufus-badblocks.$(OBJEXT) rufus-checksum.$(OBJEXT) \
- rufus-cpu.$(OBJEXT) rufus-dev.$(OBJEXT) rufus-dos.$(OBJEXT) \
+am_rufus_OBJECTS = rufus-badblocks.$(OBJEXT) rufus-cpu.$(OBJEXT) \
+ rufus-dev.$(OBJEXT) rufus-dos.$(OBJEXT) \
rufus-dos_locale.$(OBJEXT) rufus-drive.$(OBJEXT) \
rufus-format.$(OBJEXT) rufus-format_ext.$(OBJEXT) \
- rufus-format_fat32.$(OBJEXT) rufus-icon.$(OBJEXT) \
- rufus-iso.$(OBJEXT) rufus-localization.$(OBJEXT) \
- rufus-net.$(OBJEXT) rufus-parser.$(OBJEXT) rufus-pki.$(OBJEXT) \
+ rufus-format_fat32.$(OBJEXT) rufus-hash.$(OBJEXT) \
+ rufus-icon.$(OBJEXT) rufus-iso.$(OBJEXT) \
+ rufus-localization.$(OBJEXT) rufus-net.$(OBJEXT) \
+ rufus-parser.$(OBJEXT) rufus-pki.$(OBJEXT) \
rufus-process.$(OBJEXT) rufus-re.$(OBJEXT) \
rufus-rufus.$(OBJEXT) rufus-smart.$(OBJEXT) \
rufus-stdfn.$(OBJEXT) rufus-stdio.$(OBJEXT) \
@@ -281,7 +282,7 @@ AM_V_WINDRES_0 = @echo " RC $@";$(WINDRES)
AM_V_WINDRES_1 = $(WINDRES)
AM_V_WINDRES_ = $(AM_V_WINDRES_$(AM_DEFAULT_VERBOSITY))
AM_V_WINDRES = $(AM_V_WINDRES_$(V))
-rufus_SOURCES = badblocks.c checksum.c cpu.c dev.c dos.c dos_locale.c drive.c format.c format_ext.c format_fat32.c icon.c iso.c \
+rufus_SOURCES = badblocks.c cpu.c dev.c dos.c dos_locale.c drive.c format.c format_ext.c format_fat32.c hash.c icon.c iso.c \
localization.c net.c parser.c pki.c process.c re.c rufus.c smart.c stdfn.c stdio.c stdlg.c syslinux.c ui.c vhd.c wue.c
rufus_CFLAGS = -I$(srcdir)/ms-sys/inc -I$(srcdir)/syslinux/libfat -I$(srcdir)/syslinux/libinstaller -I$(srcdir)/syslinux/win -I$(srcdir)/libcdio $(AM_CFLAGS) \
@@ -351,12 +352,6 @@ rufus-badblocks.o: badblocks.c
rufus-badblocks.obj: badblocks.c
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-badblocks.obj `if test -f 'badblocks.c'; then $(CYGPATH_W) 'badblocks.c'; else $(CYGPATH_W) '$(srcdir)/badblocks.c'; fi`
-rufus-checksum.o: checksum.c
- $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-checksum.o `test -f 'checksum.c' || echo '$(srcdir)/'`checksum.c
-
-rufus-checksum.obj: checksum.c
- $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-checksum.obj `if test -f 'checksum.c'; then $(CYGPATH_W) 'checksum.c'; else $(CYGPATH_W) '$(srcdir)/checksum.c'; fi`
-
rufus-cpu.o: cpu.c
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-cpu.o `test -f 'cpu.c' || echo '$(srcdir)/'`cpu.c
@@ -405,6 +400,12 @@ rufus-format_fat32.o: format_fat32.c
rufus-format_fat32.obj: format_fat32.c
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-format_fat32.obj `if test -f 'format_fat32.c'; then $(CYGPATH_W) 'format_fat32.c'; else $(CYGPATH_W) '$(srcdir)/format_fat32.c'; fi`
+rufus-hash.o: hash.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-hash.o `test -f 'hash.c' || echo '$(srcdir)/'`hash.c
+
+rufus-hash.obj: hash.c
+ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-hash.obj `if test -f 'hash.c'; then $(CYGPATH_W) 'hash.c'; else $(CYGPATH_W) '$(srcdir)/hash.c'; fi`
+
rufus-icon.o: icon.c
$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rufus_CFLAGS) $(CFLAGS) -c -o rufus-icon.o `test -f 'icon.c' || echo '$(srcdir)/'`icon.c
diff --git a/src/checksum.c b/src/hash.c
similarity index 89%
rename from src/checksum.c
rename to src/hash.c
index fb7cac3e..363bcb99 100644
--- a/src/checksum.c
+++ b/src/hash.c
@@ -5,7 +5,7 @@
* Copyright © 2004-2019 Tom St Denis
* Copyright © 2004 g10 Code GmbH
* Copyright © 2002-2015 Wei Dai & Igor Pavlov
- * Copyright © 2015-2021 Pete Batard
+ * Copyright © 2015-2023 Pete Batard
* Copyright © 2022 Jeffrey Walton
*
* This program is free software: you can redistribute it and/or modify
@@ -61,6 +61,7 @@
#include
#include
#include
+#include
#include
#include "db.h"
@@ -112,9 +113,9 @@
// would modify the buffer being processed.
/* Globals */
-char sum_str[CHECKSUM_MAX][150];
-uint32_t proc_bufnum, sum_count[CHECKSUM_MAX] = { MD5_HASHSIZE, SHA1_HASHSIZE, SHA256_HASHSIZE, SHA512_HASHSIZE };
-HANDLE data_ready[CHECKSUM_MAX] = { 0 }, thread_ready[CHECKSUM_MAX] = { 0 };
+char hash_str[HASH_MAX][150];
+uint32_t proc_bufnum, hash_count[HASH_MAX] = { MD5_HASHSIZE, SHA1_HASHSIZE, SHA256_HASHSIZE, SHA512_HASHSIZE };
+HANDLE data_ready[HASH_MAX] = { 0 }, thread_ready[HASH_MAX] = { 0 };
DWORD read_size[NUM_BUFFERS];
BOOL enable_extra_hashes = FALSE;
uint8_t ALIGNED(64) buffer[NUM_BUFFERS][BUFFER_SIZE];
@@ -173,16 +174,16 @@ static const uint64_t K512[80] = {
};
/*
- * For convenience, we use a common context for all the checksum algorithms,
+ * For convenience, we use a common context for all the hash algorithms,
* which means some elements may be unused...
*/
typedef struct ALIGNED(64) {
uint8_t buf[MAX_BLOCKSIZE];
uint64_t state[8];
uint64_t bytecount;
-} SUM_CONTEXT;
+} HASH_CONTEXT;
-static void md5_init(SUM_CONTEXT *ctx)
+static void md5_init(HASH_CONTEXT *ctx)
{
memset(ctx, 0, sizeof(*ctx));
ctx->state[0] = 0x67452301;
@@ -191,7 +192,7 @@ static void md5_init(SUM_CONTEXT *ctx)
ctx->state[3] = 0x10325476;
}
-static void sha1_init(SUM_CONTEXT *ctx)
+static void sha1_init(HASH_CONTEXT *ctx)
{
memset(ctx, 0, sizeof(*ctx));
ctx->state[0] = 0x67452301;
@@ -201,7 +202,7 @@ static void sha1_init(SUM_CONTEXT *ctx)
ctx->state[4] = 0xc3d2e1f0;
}
-static void sha256_init(SUM_CONTEXT *ctx)
+static void sha256_init(HASH_CONTEXT *ctx)
{
memset(ctx, 0, sizeof(*ctx));
ctx->state[0] = 0x6a09e667;
@@ -214,7 +215,7 @@ static void sha256_init(SUM_CONTEXT *ctx)
ctx->state[7] = 0x5be0cd19;
}
-static void sha512_init(SUM_CONTEXT* ctx)
+static void sha512_init(HASH_CONTEXT* ctx)
{
memset(ctx, 0, sizeof(*ctx));
ctx->state[0] = 0x6a09e667f3bcc908ULL;
@@ -228,7 +229,7 @@ static void sha512_init(SUM_CONTEXT* ctx)
}
/* Transform the message X which consists of 16 32-bit-words (SHA-1) */
-static void sha1_transform_cc(SUM_CONTEXT *ctx, const uint8_t *data)
+static void sha1_transform_cc(HASH_CONTEXT *ctx, const uint8_t *data)
{
uint32_t a, b, c, d, e, tm, x[16];
@@ -572,7 +573,7 @@ static void sha1_transform_x86(uint64_t state64[5], const uint8_t *data, size_t
#endif /* CPU_X86_SHA1_ACCELERATION */
/* Transform the message X which consists of 16 32-bit-words (SHA-1) */
-static void sha1_transform(SUM_CONTEXT *ctx, const uint8_t *data)
+static void sha1_transform(HASH_CONTEXT *ctx, const uint8_t *data)
{
#ifdef CPU_X86_SHA1_ACCELERATION
if (cpu_has_sha1_accel)
@@ -589,7 +590,7 @@ static void sha1_transform(SUM_CONTEXT *ctx, const uint8_t *data)
}
/* Transform the message X which consists of 16 32-bit-words (SHA-256) */
-static __inline void sha256_transform_cc(SUM_CONTEXT *ctx, const uint8_t *data)
+static __inline void sha256_transform_cc(HASH_CONTEXT *ctx, const uint8_t *data)
{
uint32_t a, b, c, d, e, f, g, h, j, x[16];
@@ -883,7 +884,7 @@ static __inline void sha256_transform_x86(uint64_t state64[8], const uint8_t *da
}
#endif /* CPU_X86_SHA256_ACCELERATION */
-static __inline void sha256_transform(SUM_CONTEXT *ctx, const uint8_t *data)
+static __inline void sha256_transform(HASH_CONTEXT *ctx, const uint8_t *data)
{
#ifdef CPU_X86_SHA256_ACCELERATION
if (cpu_has_sha256_accel)
@@ -904,7 +905,7 @@ static __inline void sha256_transform(SUM_CONTEXT *ctx, const uint8_t *data)
* This is an algorithm that *REALLY* benefits from being executed as 64-bit
* code rather than 32-bit, as it's more than twice as fast then...
*/
-static __inline void sha512_transform(SUM_CONTEXT* ctx, const uint8_t* data)
+static __inline void sha512_transform(HASH_CONTEXT* ctx, const uint8_t* data)
{
uint64_t a, b, c, d, e, f, g, h, W[80];
uint32_t i;
@@ -967,7 +968,7 @@ static __inline void sha512_transform(SUM_CONTEXT* ctx, const uint8_t* data)
}
/* Transform the message X which consists of 16 32-bit-words (MD5) */
-static void md5_transform(SUM_CONTEXT *ctx, const uint8_t *data)
+static void md5_transform(HASH_CONTEXT *ctx, const uint8_t *data)
{
uint32_t a, b, c, d, x[16];
@@ -1080,7 +1081,7 @@ static void md5_transform(SUM_CONTEXT *ctx, const uint8_t *data)
}
/* Update the message digest with the contents of the buffer (SHA-1) */
-static void sha1_write(SUM_CONTEXT *ctx, const uint8_t *buf, size_t len)
+static void sha1_write(HASH_CONTEXT *ctx, const uint8_t *buf, size_t len)
{
size_t num = ctx->bytecount & (SHA1_BLOCKSIZE - 1);
@@ -1132,7 +1133,7 @@ static void sha1_write(SUM_CONTEXT *ctx, const uint8_t *buf, size_t len)
}
/* Update the message digest with the contents of the buffer (SHA-256) */
-static void sha256_write(SUM_CONTEXT *ctx, const uint8_t *buf, size_t len)
+static void sha256_write(HASH_CONTEXT *ctx, const uint8_t *buf, size_t len)
{
size_t num = ctx->bytecount & (SHA256_BLOCKSIZE - 1);
@@ -1184,7 +1185,7 @@ static void sha256_write(SUM_CONTEXT *ctx, const uint8_t *buf, size_t len)
}
/* Update the message digest with the contents of the buffer (SHA-512) */
-static void sha512_write(SUM_CONTEXT* ctx, const uint8_t* buf, size_t len)
+static void sha512_write(HASH_CONTEXT* ctx, const uint8_t* buf, size_t len)
{
size_t num = ctx->bytecount & (SHA512_BLOCKSIZE - 1);
@@ -1219,7 +1220,7 @@ static void sha512_write(SUM_CONTEXT* ctx, const uint8_t* buf, size_t len)
}
/* Update the message digest with the contents of the buffer (MD5) */
-static void md5_write(SUM_CONTEXT *ctx, const uint8_t *buf, size_t len)
+static void md5_write(HASH_CONTEXT *ctx, const uint8_t *buf, size_t len)
{
size_t num = ctx->bytecount & (MD5_BLOCKSIZE - 1);
@@ -1254,7 +1255,7 @@ static void md5_write(SUM_CONTEXT *ctx, const uint8_t *buf, size_t len)
}
/* Finalize the computation and write the digest in ctx->state[] (SHA-1) */
-static void sha1_final(SUM_CONTEXT *ctx)
+static void sha1_final(HASH_CONTEXT *ctx)
{
size_t pos = ((size_t)ctx->bytecount) & (SHA1_BLOCKSIZE - 1);
uint64_t bitcount = ctx->bytecount << 3;
@@ -1297,7 +1298,7 @@ static void sha1_final(SUM_CONTEXT *ctx)
}
/* Finalize the computation and write the digest in ctx->state[] (SHA-256) */
-static void sha256_final(SUM_CONTEXT *ctx)
+static void sha256_final(HASH_CONTEXT *ctx)
{
size_t pos = ((size_t)ctx->bytecount) & (SHA256_BLOCKSIZE - 1);
uint64_t bitcount = ctx->bytecount << 3;
@@ -1343,7 +1344,7 @@ static void sha256_final(SUM_CONTEXT *ctx)
}
/* Finalize the computation and write the digest in ctx->state[] (SHA-256) */
-static void sha512_final(SUM_CONTEXT* ctx)
+static void sha512_final(HASH_CONTEXT* ctx)
{
size_t pos = ((size_t)ctx->bytecount) & (SHA512_BLOCKSIZE - 1);
/* 16 EB ought to be enough for everybody... */
@@ -1400,7 +1401,7 @@ static void sha512_final(SUM_CONTEXT* ctx)
}
/* Finalize the computation and write the digest in ctx->state[] (MD5) */
-static void md5_final(SUM_CONTEXT *ctx)
+static void md5_final(HASH_CONTEXT *ctx)
{
size_t count = ((size_t)ctx->bytecount) & (MD5_BLOCKSIZE - 1);
uint64_t bitcount = ctx->bytecount << 3;
@@ -1456,29 +1457,29 @@ static void md5_final(SUM_CONTEXT *ctx)
//#define NULL_TEST
#ifdef NULL_TEST
// These 'null' calls are useful for testing load balancing and individual algorithm speed
-static void null_init(SUM_CONTEXT *ctx) { memset(ctx, 0, sizeof(*ctx)); }
-static void null_write(SUM_CONTEXT *ctx, const uint8_t *buf, size_t len) { }
-static void null_final(SUM_CONTEXT *ctx) { }
+static void null_init(HASH_CONTEXT *ctx) { memset(ctx, 0, sizeof(*ctx)); }
+static void null_write(HASH_CONTEXT *ctx, const uint8_t *buf, size_t len) { }
+static void null_final(HASH_CONTEXT *ctx) { }
#endif
-typedef void sum_init_t(SUM_CONTEXT *ctx);
-typedef void sum_write_t(SUM_CONTEXT *ctx, const uint8_t *buf, size_t len);
-typedef void sum_final_t(SUM_CONTEXT *ctx);
-sum_init_t *sum_init[CHECKSUM_MAX] = { md5_init, sha1_init , sha256_init, sha512_init };
-sum_write_t *sum_write[CHECKSUM_MAX] = { md5_write, sha1_write , sha256_write, sha512_write };
-sum_final_t *sum_final[CHECKSUM_MAX] = { md5_final, sha1_final , sha256_final, sha512_final };
+typedef void hash_init_t(HASH_CONTEXT *ctx);
+typedef void hash_write_t(HASH_CONTEXT *ctx, const uint8_t *buf, size_t len);
+typedef void hash_final_t(HASH_CONTEXT *ctx);
+hash_init_t *hash_init[HASH_MAX] = { md5_init, sha1_init , sha256_init, sha512_init };
+hash_write_t *hash_write[HASH_MAX] = { md5_write, sha1_write , sha256_write, sha512_write };
+hash_final_t *hash_final[HASH_MAX] = { md5_final, sha1_final , sha256_final, sha512_final };
-// Compute an individual checksum without threading or buffering, for a single file
-BOOL HashFile(const unsigned type, const char* path, uint8_t* sum)
+// Compute an individual hash without threading or buffering, for a single file
+BOOL HashFile(const unsigned type, const char* path, uint8_t* hash)
{
BOOL r = FALSE;
- SUM_CONTEXT sum_ctx = { {0} };
+ HASH_CONTEXT hash_ctx = { {0} };
HANDLE h = INVALID_HANDLE_VALUE;
DWORD rs = 0;
uint64_t rb;
uint8_t buf[4096];
- if ((type >= CHECKSUM_MAX) || (path == NULL) || (sum == NULL))
+ if ((type >= HASH_MAX) || (path == NULL) || (hash == NULL))
goto out;
h = CreateFileU(path, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL);
@@ -1488,7 +1489,7 @@ BOOL HashFile(const unsigned type, const char* path, uint8_t* sum)
goto out;
}
- sum_init[type](&sum_ctx);
+ hash_init[type](&hash_ctx);
for (rb = 0; ; rb += rs) {
CHECK_FOR_USER_CANCEL;
if (!ReadFile(h, buf, sizeof(buf), &rs, NULL)) {
@@ -1498,11 +1499,11 @@ BOOL HashFile(const unsigned type, const char* path, uint8_t* sum)
}
if (rs == 0)
break;
- sum_write[type](&sum_ctx, buf, (size_t)rs);
+ hash_write[type](&hash_ctx, buf, (size_t)rs);
}
- sum_final[type](&sum_ctx);
+ hash_final[type](&hash_ctx);
- memcpy(sum, sum_ctx.buf, sum_count[type]);
+ memcpy(hash, hash_ctx.buf, hash_count[type]);
r = TRUE;
out:
@@ -1510,19 +1511,19 @@ out:
return r;
}
-BOOL HashBuffer(const unsigned type, const uint8_t* buf, const size_t len, uint8_t* sum)
+BOOL HashBuffer(const unsigned type, const uint8_t* buf, const size_t len, uint8_t* hash)
{
BOOL r = FALSE;
- SUM_CONTEXT sum_ctx = { {0} };
+ HASH_CONTEXT hash_ctx = { {0} };
- if ((type >= CHECKSUM_MAX) || (sum == NULL))
+ if ((type >= HASH_MAX) || (hash == NULL))
goto out;
- sum_init[type](&sum_ctx);
- sum_write[type](&sum_ctx, buf, len);
- sum_final[type](&sum_ctx);
+ hash_init[type](&hash_ctx);
+ hash_write[type](&hash_ctx, buf, len);
+ hash_final[type](&hash_ctx);
- memcpy(sum, sum_ctx.buf, sum_count[type]);
+ memcpy(hash, hash_ctx.buf, hash_count[type]);
r = TRUE;
out:
@@ -1530,9 +1531,9 @@ out:
}
/*
- * Checksum dialog callback
+ * Hash dialog callback
*/
-INT_PTR CALLBACK ChecksumCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
+INT_PTR CALLBACK HashCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
int i, dw, dh;
RECT rc;
@@ -1541,7 +1542,7 @@ INT_PTR CALLBACK ChecksumCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM
switch (message) {
case WM_INITDIALOG:
- apply_localization(IDD_CHECKSUM, hDlg);
+ apply_localization(IDD_HASH, hDlg);
hDC = GetDC(hDlg);
hFont = CreateFontA(-MulDiv(9, GetDeviceCaps(hDC, LOGPIXELSY), 72),
0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET,
@@ -1551,11 +1552,11 @@ INT_PTR CALLBACK ChecksumCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM
SendDlgItemMessageA(hDlg, IDC_SHA1, WM_SETFONT, (WPARAM)hFont, TRUE);
SendDlgItemMessageA(hDlg, IDC_SHA256, WM_SETFONT, (WPARAM)hFont, TRUE);
SendDlgItemMessageA(hDlg, IDC_SHA512, WM_SETFONT, (WPARAM)hFont, TRUE);
- SetWindowTextA(GetDlgItem(hDlg, IDC_MD5), sum_str[0]);
- SetWindowTextA(GetDlgItem(hDlg, IDC_SHA1), sum_str[1]);
- SetWindowTextA(GetDlgItem(hDlg, IDC_SHA256), sum_str[2]);
+ SetWindowTextA(GetDlgItem(hDlg, IDC_MD5), hash_str[0]);
+ SetWindowTextA(GetDlgItem(hDlg, IDC_SHA1), hash_str[1]);
+ SetWindowTextA(GetDlgItem(hDlg, IDC_SHA256), hash_str[2]);
if (enable_extra_hashes)
- SetWindowTextA(GetDlgItem(hDlg, IDC_SHA512), sum_str[3]);
+ SetWindowTextA(GetDlgItem(hDlg, IDC_SHA512), hash_str[3]);
else
SetWindowTextU(GetDlgItem(hDlg, IDC_SHA512), lmprintf(MSG_311, "-"));
@@ -1566,7 +1567,7 @@ INT_PTR CALLBACK ChecksumCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM
GetWindowRect(GetDlgItem(hDlg, IDC_MD5), &rc);
dw = rc.right - rc.left;
dh = rc.bottom - rc.top;
- DrawTextU(hDC, sum_str[0], -1, &rc, DT_CALCRECT);
+ DrawTextU(hDC, hash_str[0], -1, &rc, DT_CALCRECT);
dw = rc.right - rc.left - dw + 12; // Ideally we'd compute the field borders from the system, but hey...
dh = rc.bottom - rc.top - dh + 6;
ResizeMoveCtrl(hDlg, GetDlgItem(hDlg, IDC_SHA256), 0, 0, dw, dh, 1.0f);
@@ -1574,7 +1575,7 @@ INT_PTR CALLBACK ChecksumCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM
GetWindowRect(GetDlgItem(hDlg, IDC_SHA1), &rc);
dw = rc.right - rc.left;
- DrawTextU(hDC, sum_str[1], -1, &rc, DT_CALCRECT);
+ DrawTextU(hDC, hash_str[1], -1, &rc, DT_CALCRECT);
dw = rc.right - rc.left - dw + 12;
ResizeMoveCtrl(hDlg, GetDlgItem(hDlg, IDC_MD5), 0, 0, dw, 0, 1.0f);
ResizeMoveCtrl(hDlg, GetDlgItem(hDlg, IDC_SHA1), 0, 0, dw, 0, 1.0f);
@@ -1594,7 +1595,7 @@ INT_PTR CALLBACK ChecksumCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM
switch (LOWORD(wParam)) {
case IDOK:
case IDCANCEL:
- reset_localization(IDD_CHECKSUM);
+ reset_localization(IDD_HASH);
EndDialog(hDlg, LOWORD(wParam));
return (INT_PTR)TRUE;
}
@@ -1603,12 +1604,12 @@ INT_PTR CALLBACK ChecksumCallback(HWND hDlg, UINT message, WPARAM wParam, LPARAM
}
// Individual thread that computes one of MD5, SHA1, SHA256 or SHA512 in parallel
-DWORD WINAPI IndividualSumThread(void* param)
+DWORD WINAPI IndividualHashThread(void* param)
{
- SUM_CONTEXT sum_ctx = { {0} }; // There's a memset in sum_init, but static analyzers still bug us
+ HASH_CONTEXT hash_ctx = { {0} }; // There's a memset in hash_init, but static analyzers still bug us
uint32_t i = (uint32_t)(uintptr_t)param, j;
- sum_init[i](&sum_ctx);
+ hash_init[i](&hash_ctx);
// Signal that we're ready to service requests
if (!SetEvent(thread_ready[i]))
goto error;
@@ -1616,45 +1617,45 @@ DWORD WINAPI IndividualSumThread(void* param)
// Wait for requests
while (1) {
if (WaitForSingleObject(data_ready[i], WAIT_TIME) != WAIT_OBJECT_0) {
- uprintf("Failed to wait for event for checksum thread #%d: %s", i, WindowsErrorString());
+ uprintf("Failed to wait for event for hash thread #%d: %s", i, WindowsErrorString());
return 1;
}
if (read_size[proc_bufnum] != 0) {
- sum_write[i](&sum_ctx, buffer[proc_bufnum], (size_t)read_size[proc_bufnum]);
+ hash_write[i](&hash_ctx, buffer[proc_bufnum], (size_t)read_size[proc_bufnum]);
if (!SetEvent(thread_ready[i]))
goto error;
} else {
- sum_final[i](&sum_ctx);
- memset(&sum_str[i], 0, ARRAYSIZE(sum_str[i]));
- for (j = 0; j < sum_count[i]; j++) {
- sum_str[i][2 * j] = ((sum_ctx.buf[j] >> 4) < 10) ?
- ((sum_ctx.buf[j] >> 4) + '0') : ((sum_ctx.buf[j] >> 4) - 0xa + 'a');
- sum_str[i][2 * j + 1] = ((sum_ctx.buf[j] & 15) < 10) ?
- ((sum_ctx.buf[j] & 15) + '0') : ((sum_ctx.buf[j] & 15) - 0xa + 'a');
+ hash_final[i](&hash_ctx);
+ memset(&hash_str[i], 0, ARRAYSIZE(hash_str[i]));
+ for (j = 0; j < hash_count[i]; j++) {
+ hash_str[i][2 * j] = ((hash_ctx.buf[j] >> 4) < 10) ?
+ ((hash_ctx.buf[j] >> 4) + '0') : ((hash_ctx.buf[j] >> 4) - 0xa + 'a');
+ hash_str[i][2 * j + 1] = ((hash_ctx.buf[j] & 15) < 10) ?
+ ((hash_ctx.buf[j] & 15) + '0') : ((hash_ctx.buf[j] & 15) - 0xa + 'a');
}
- sum_str[i][2 * j] = 0;
+ hash_str[i][2 * j] = 0;
return 0;
}
}
error:
- uprintf("Failed to set event for checksum thread #%d: %s", i, WindowsErrorString());
+ uprintf("Failed to set event for hash thread #%d: %s", i, WindowsErrorString());
return 1;
}
-DWORD WINAPI SumThread(void* param)
+DWORD WINAPI HashThread(void* param)
{
DWORD_PTR* thread_affinity = (DWORD_PTR*)param;
- HANDLE sum_thread[CHECKSUM_MAX] = { NULL, NULL, NULL, NULL };
+ HANDLE hash_thread[HASH_MAX] = { NULL, NULL, NULL, NULL };
DWORD wr;
VOID* fd = NULL;
uint64_t processed_bytes;
int i, read_bufnum, r = -1;
- int num_checksums = CHECKSUM_MAX - (enable_extra_hashes ? 0 : 1);
+ int num_hashes = HASH_MAX - (enable_extra_hashes ? 0 : 1);
if ((image_path == NULL) || (thread_affinity == NULL))
ExitThread(r);
- uprintf("\r\nComputing checksum for '%s'...", image_path);
+ uprintf("\r\nComputing hash for '%s'...", image_path);
if (thread_affinity[0] != 0)
// Use the first affinity mask, as our read thread is the least
@@ -1663,24 +1664,24 @@ DWORD WINAPI SumThread(void* param)
// is usually in this first mask, for other tasks.
SetThreadAffinityMask(GetCurrentThread(), thread_affinity[0]);
- for (i = 0; i < num_checksums; i++) {
+ for (i = 0; i < num_hashes; i++) {
// NB: Can't use a single manual-reset event for data_ready as we
// wouldn't be able to ensure the event is reset before the thread
// gets into its next wait loop
data_ready[i] = CreateEvent(NULL, FALSE, FALSE, NULL);
thread_ready[i] = CreateEvent(NULL, FALSE, FALSE, NULL);
if ((data_ready[i] == NULL) || (thread_ready[i] == NULL)) {
- uprintf("Unable to create checksum thread event: %s", WindowsErrorString());
+ uprintf("Unable to create hash thread event: %s", WindowsErrorString());
goto out;
}
- sum_thread[i] = CreateThread(NULL, 0, IndividualSumThread, (LPVOID)(uintptr_t)i, 0, NULL);
- if (sum_thread[i] == NULL) {
- uprintf("Unable to start checksum thread #%d", i);
+ hash_thread[i] = CreateThread(NULL, 0, IndividualHashThread, (LPVOID)(uintptr_t)i, 0, NULL);
+ if (hash_thread[i] == NULL) {
+ uprintf("Unable to start hash thread #%d", i);
goto out;
}
- SetThreadPriority(sum_thread[i], default_thread_priority);
+ SetThreadPriority(hash_thread[i], default_thread_priority);
if (thread_affinity[i+1] != 0)
- SetThreadAffinityMask(sum_thread[i], thread_affinity[i+1]);
+ SetThreadAffinityMask(hash_thread[i], thread_affinity[i+1]);
}
fd = CreateFileAsync(image_path, GENERIC_READ, FILE_SHARE_READ, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN);
@@ -1717,12 +1718,12 @@ DWORD WINAPI SumThread(void* param)
// 3. Launch the next asynchronous read operation
ReadFileAsync(fd, buffer[read_bufnum], BUFFER_SIZE);
- // 4. Wait for all the sum threads to indicate that they are ready to process data
- wr = WaitForMultipleObjects(num_checksums, thread_ready, TRUE, WAIT_TIME);
+ // 4. Wait for all the hash threads to indicate that they are ready to process data
+ wr = WaitForMultipleObjects(num_hashes, thread_ready, TRUE, WAIT_TIME);
if (wr != WAIT_OBJECT_0) {
if (wr == STATUS_TIMEOUT)
SetLastError(ERROR_TIMEOUT);
- uprintf("Checksum threads failed to signal: %s", WindowsErrorString());
+ uprintf("Hash threads failed to signal: %s", WindowsErrorString());
goto out;
}
@@ -1731,43 +1732,43 @@ DWORD WINAPI SumThread(void* param)
proc_bufnum = (read_bufnum + NUM_BUFFERS - 1) % NUM_BUFFERS;
// 6. Signal the waiting threads that there is data available
- for (i = 0; i < num_checksums; i++) {
+ for (i = 0; i < num_hashes; i++) {
if (!SetEvent(data_ready[i])) {
- uprintf("Could not signal checksum thread %d: %s", i, WindowsErrorString());
+ uprintf("Could not signal hash thread %d: %s", i, WindowsErrorString());
goto out;
}
}
}
// Our last event with read_size=0 signaled the threads to exit - wait for that to happen
- if (WaitForMultipleObjects(num_checksums, sum_thread, TRUE, WAIT_TIME) != WAIT_OBJECT_0) {
- uprintf("Checksum threads did not finalize: %s", WindowsErrorString());
+ if (WaitForMultipleObjects(num_hashes, hash_thread, TRUE, WAIT_TIME) != WAIT_OBJECT_0) {
+ uprintf("Hash threads did not finalize: %s", WindowsErrorString());
goto out;
}
- uprintf(" MD5: %s", sum_str[0]);
- uprintf(" SHA1: %s", sum_str[1]);
- uprintf(" SHA256: %s", sum_str[2]);
+ uprintf(" MD5: %s", hash_str[0]);
+ uprintf(" SHA1: %s", hash_str[1]);
+ uprintf(" SHA256: %s", hash_str[2]);
if (enable_extra_hashes) {
- char c = sum_str[3][SHA512_HASHSIZE];
- sum_str[3][SHA512_HASHSIZE] = 0;
- uprintf(" SHA512: %s", sum_str[3]);
- sum_str[3][SHA512_HASHSIZE] = c;
- uprintf(" %s", &sum_str[3][SHA512_HASHSIZE]);
+ char c = hash_str[3][SHA512_HASHSIZE];
+ hash_str[3][SHA512_HASHSIZE] = 0;
+ uprintf(" SHA512: %s", hash_str[3]);
+ hash_str[3][SHA512_HASHSIZE] = c;
+ uprintf(" %s", &hash_str[3][SHA512_HASHSIZE]);
}
r = 0;
out:
- for (i = 0; i < num_checksums; i++) {
- if (sum_thread[i] != NULL)
- TerminateThread(sum_thread[i], 1);
+ for (i = 0; i < num_hashes; i++) {
+ if (hash_thread[i] != NULL)
+ TerminateThread(hash_thread[i], 1);
safe_closehandle(data_ready[i]);
safe_closehandle(thread_ready[i]);
}
CloseFileAsync(fd);
PostMessage(hMainDialog, UM_FORMAT_COMPLETED, (WPARAM)FALSE, 0);
if (r == 0)
- MyDialogBox(hMainInstance, IDD_CHECKSUM, hMainDialog, ChecksumCallback);
+ MyDialogBox(hMainInstance, IDD_HASH, hMainDialog, HashCallback);
ExitThread(r);
}
@@ -1777,11 +1778,11 @@ out:
BOOL IsBufferInDB(const unsigned char* buf, const size_t len)
{
int i;
- uint8_t sum[32];
- if (!HashBuffer(CHECKSUM_SHA256, buf, len, sum))
+ uint8_t hash[32];
+ if (!HashBuffer(HASH_SHA256, buf, len, hash))
return FALSE;
for (i = 0; i < ARRAYSIZE(sha256db); i += 32)
- if (memcmp(sum, &sha256db[i], 32) == 0)
+ if (memcmp(hash, &sha256db[i], 32) == 0)
return TRUE;
return FALSE;
}
@@ -1789,11 +1790,11 @@ BOOL IsBufferInDB(const unsigned char* buf, const size_t len)
BOOL IsFileInDB(const char* path)
{
int i;
- uint8_t sum[32];
- if (!HashFile(CHECKSUM_SHA256, path, sum))
+ uint8_t hash[32];
+ if (!HashFile(HASH_SHA256, path, hash))
return FALSE;
for (i = 0; i < ARRAYSIZE(sha256db); i += 32)
- if (memcmp(sum, &sha256db[i], 32) == 0)
+ if (memcmp(hash, &sha256db[i], 32) == 0)
return TRUE;
return FALSE;
}
@@ -1838,7 +1839,7 @@ const char test_msg[] = "Did you ever hear the tragedy of Darth Plagueis The Wis
* Much rather copy paste from md5sum/sha#sum output from Linux and just
* convert the string.
*/
-const char* test_hash[CHECKSUM_MAX][4] = {
+const char* test_hash[HASH_MAX][4] = {
{
"d41d8cd98f00b204e9800998ecf8427e",
"74cac558072300385f7ab4dff7465e3c",
@@ -1863,12 +1864,12 @@ const char* test_hash[CHECKSUM_MAX][4] = {
};
/* Tests the message digest algorithms */
-int TestChecksum(void)
+int TestHashes(void)
{
- const uint32_t blocksize[CHECKSUM_MAX] = { MD5_BLOCKSIZE, SHA1_BLOCKSIZE, SHA256_BLOCKSIZE, SHA512_BLOCKSIZE };
+ const uint32_t blocksize[HASH_MAX] = { MD5_BLOCKSIZE, SHA1_BLOCKSIZE, SHA256_BLOCKSIZE, SHA512_BLOCKSIZE };
const char* hash_name[4] = { "MD5 ", "SHA1 ", "SHA256", "SHA512" };
int i, j, errors = 0;
- uint8_t sum[MAX_HASHSIZE], *sum_expected;
+ uint8_t hash[MAX_HASHSIZE], *hash_expected;
size_t full_msg_len = strlen(test_msg);
char* msg = malloc(full_msg_len + 1);
if (msg == NULL)
@@ -1878,7 +1879,7 @@ int TestChecksum(void)
uprintf("SHA1 acceleration: %s", (cpu_has_sha1_accel ? "TRUE" : "FALSE"));
uprintf("SHA256 acceleration: %s", (cpu_has_sha256_accel ? "TRUE" : "FALSE"));
- for (j = 0; j < CHECKSUM_MAX; j++) {
+ for (j = 0; j < HASH_MAX; j++) {
size_t copy_msg_len[4];
copy_msg_len[0] = 0;
copy_msg_len[1] = 3;
@@ -1890,15 +1891,15 @@ int TestChecksum(void)
memset(msg, 0, full_msg_len + 1);
if (i != 0)
memcpy(msg, test_msg, copy_msg_len[i]);
- HashBuffer(j, msg, copy_msg_len[i], sum);
- sum_expected = to_bin(test_hash[j][i]);
- if (memcmp(sum, sum_expected, sum_count[j]) != 0) {
+ HashBuffer(j, msg, copy_msg_len[i], hash);
+ hash_expected = to_bin(test_hash[j][i]);
+ if (memcmp(hash, hash_expected, hash_count[j]) != 0) {
uprintf("Test %s %d: FAIL", hash_name[j], i);
errors++;
} else {
uprintf("Test %s %d: PASS", hash_name[j], i);
}
- free(sum_expected);
+ free(hash_expected);
}
}
diff --git a/src/iso.c b/src/iso.c
index 09def36e..a25d4d59 100644
--- a/src/iso.c
+++ b/src/iso.c
@@ -664,7 +664,7 @@ static void update_md5sum(void)
size = read_file(modified_path.String[i], &buf);
if (size == 0)
continue;
- HashBuffer(CHECKSUM_MD5, buf, size, sum);
+ HashBuffer(HASH_MD5, buf, size, sum);
free(buf);
while ((pos > 0) && (md5_data[pos - 1] != '\n'))
pos--;
diff --git a/src/license.h b/src/license.h
index f0455f1b..47462ed1 100644
--- a/src/license.h
+++ b/src/license.h
@@ -114,18 +114,22 @@ const char* additional_copyrights =
"https://kolibrios.org/\\line\n"
"GNU General Public License (GPL) v2 or later\\line\n"
"\\line\n"
-"MD5 checksum by Ron Rivest, Colin Plumb et al.\\line\n"
+"MD5 hash by Ron Rivest, Colin Plumb et al.\\line\n"
"Public Domain\\line\n"
"\\line\n"
-"SHA-1 checksum from GnuPG:\\line\n"
+"SHA-1 digest functions from GnuPG:\\line\n"
"https://www.gnupg.org/\\line\n"
"GNU General Public License (GPL) v3 or later\\line\n"
"\\line\n"
-"SHA-256 checksum from 7-zip by Igor Pavlov and Crypto++ by Wei Dai:\\line\n"
+"SHA-256 digest functions 7-zip by Igor Pavlov and Crypto++ by Wei Dai:\\line\n"
"https://7-zip.org/\\line\n"
"https://github.com/weidai11/cryptopp/\\line\n"
"Public Domain\\line\n"
"\\line\n"
+"SHA-512 digest functions from libtomcrypt:\\line\n"
+"https://github.com/libtom/libtomcrypt\\line\n"
+"Public Domain\\line\n"
+"\\line\n"
"About and License dialogs inspired by WinSCP by Martin Prikryl\\line\n"
"https://winscp.net/\\line\n"
"GNU General Public License (GPL) v3 or later\\line\n"
diff --git a/src/localization_data.h b/src/localization_data.h
index 37364e5f..e556f339 100644
--- a/src/localization_data.h
+++ b/src/localization_data.h
@@ -35,7 +35,7 @@ const loc_control_id control_id[] = {
LOC_CTRL(IDD_LOG),
LOC_CTRL(IDD_UPDATE_POLICY),
LOC_CTRL(IDD_NEW_VERSION),
- LOC_CTRL(IDD_CHECKSUM),
+ LOC_CTRL(IDD_HASH),
LOC_CTRL(IDD_LIST),
LOC_CTRL(IDC_DEVICE),
LOC_CTRL(IDC_FILE_SYSTEM),
@@ -532,6 +532,6 @@ loc_dlg_list loc_dlg[] = {
LOC_DLG(IDD_LOG),
LOC_DLG(IDD_UPDATE_POLICY),
LOC_DLG(IDD_NEW_VERSION),
- LOC_DLG(IDD_CHECKSUM),
+ LOC_DLG(IDD_HASH),
LOC_DLG(IDD_LIST),
};
diff --git a/src/resource.h b/src/resource.h
index 2b0558b6..a156350a 100644
--- a/src/resource.h
+++ b/src/resource.h
@@ -10,7 +10,7 @@
#define IDD_LOG 106
#define IDD_UPDATE_POLICY 107
#define IDD_NEW_VERSION 108
-#define IDD_CHECKSUM 109
+#define IDD_HASH 109
#define IDD_LIST 110
#define IDI_ICON 120
#define IDI_LANG_16 121
diff --git a/src/rufus.c b/src/rufus.c
index 7bee7fdc..ebd12dbe 100755
--- a/src/rufus.c
+++ b/src/rufus.c
@@ -865,7 +865,7 @@ static void EnableControls(BOOL enable, BOOL remove_checkboxes)
{
op_in_progress = !enable;
- // The following only get disabled on format/checksum and otherwise remain enabled,
+ // The following only get disabled on format/hash and otherwise remain enabled,
// even if no device or image are selected
EnableWindow(hDeviceList, enable);
EnableWindow(hBootType, enable);
@@ -877,7 +877,7 @@ static void EnableControls(BOOL enable, BOOL remove_checkboxes)
SendMessage(hMultiToolbar, TB_ENABLEBUTTON, (WPARAM)IDC_ABOUT, (LPARAM)enable);
SendMessage(hMultiToolbar, TB_ENABLEBUTTON, (WPARAM)IDC_SETTINGS, (LPARAM)enable);
- // Checksum button is enabled if an image has been selected
+ // Hash button is enabled if an image has been selected
EnableWindow(hHashToolbar, enable && (boot_type == BT_IMAGE) && (image_path != NULL));
// Toggle CLOSE/CANCEL
@@ -2320,7 +2320,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
static ULONG ulRegister = 0;
static LPITEMIDLIST pidlDesktop = NULL;
static SHChangeNotifyEntry NotifyEntry;
- static DWORD_PTR thread_affinity[CHECKSUM_MAX + 1];
+ static DWORD_PTR thread_affinity[HASH_MAX + 1];
static HFONT hyperlink_font = NULL;
static wchar_t wtooltip[128];
LONG lPos;
@@ -2742,14 +2742,14 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
// Disable all controls except cancel
EnableControls(FALSE, FALSE);
InitProgress(FALSE);
- SetThreadAffinity(thread_affinity, CHECKSUM_MAX + 1);
- format_thread = CreateThread(NULL, 0, SumThread, (LPVOID)thread_affinity, 0, NULL);
+ SetThreadAffinity(thread_affinity, HASH_MAX + 1);
+ format_thread = CreateThread(NULL, 0, HashThread, (LPVOID)thread_affinity, 0, NULL);
if (format_thread != NULL) {
SetThreadPriority(format_thread, default_thread_priority);
PrintInfo(0, -1);
SendMessage(hMainDialog, UM_TIMER_START, 0, 0);
} else {
- uprintf("Unable to start checksum thread");
+ uprintf("Unable to start hash thread");
FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | APPERR(ERROR_CANT_START_THREAD);
PostMessage(hMainDialog, UM_FORMAT_COMPLETED, (WPARAM)FALSE, 0);
}
@@ -3855,11 +3855,14 @@ relaunch:
continue;
}
#if defined(_DEBUG) || defined(TEST) || defined(ALPHA)
-extern int TestChecksum(void);
+extern int TestHashes(void);
// Ctrl-T => Alternate Test mode that doesn't require a full rebuild
if ((ctrl_without_focus || ((GetKeyState(VK_CONTROL) & 0x8000) && (msg.message == WM_KEYDOWN)))
&& (msg.wParam == 'T')) {
- TestChecksum();
+// uint8_t sum[32] = { 0 };
+// PE256("D:\\Incoming\\bootx64.efi", sum);
+// DumpBufferHex(sum, 32);
+ TestHashes();
continue;
}
#endif
diff --git a/src/rufus.h b/src/rufus.h
index 20091aac..0717b1d7 100644
--- a/src/rufus.h
+++ b/src/rufus.h
@@ -307,12 +307,12 @@ enum image_option_type {
IMOP_MAX
};
-enum checksum_type {
- CHECKSUM_MD5 = 0,
- CHECKSUM_SHA1,
- CHECKSUM_SHA256,
- CHECKSUM_SHA512,
- CHECKSUM_MAX
+enum hash_type {
+ HASH_MD5 = 0,
+ HASH_SHA1,
+ HASH_SHA256,
+ HASH_SHA512,
+ HASH_MAX
};
enum file_io_type {
@@ -721,7 +721,7 @@ extern HANDLE CreatePreallocatedFile(const char* lpFileName, DWORD dwDesiredAcce
#define GetTextWidth(hDlg, id) GetTextSize(GetDlgItem(hDlg, id), NULL).cx
DWORD WINAPI SaveImageThread(void* param);
-DWORD WINAPI SumThread(void* param);
+DWORD WINAPI HashThread(void* param);
/* Hash tables */
typedef struct htab_entry {
diff --git a/src/rufus.rc b/src/rufus.rc
index bf2a0136..e434bd14 100644
--- a/src/rufus.rc
+++ b/src/rufus.rc
@@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDD_DIALOG DIALOGEX 12, 12, 232, 326
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_ACCEPTFILES
-CAPTION "Rufus 4.2.2047"
+CAPTION "Rufus 4.2.2048"
FONT 9, "Segoe UI Symbol", 400, 0, 0x0
BEGIN
LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP
@@ -95,7 +95,7 @@ BEGIN
DEFPUSHBUTTON "OK",IDOK,253,216,50,12,WS_GROUP
END
-IDD_CHECKSUM DIALOGEX 0, 0, 301, 110
+IDD_HASH DIALOGEX 0, 0, 301, 110
STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Checksums"
FONT 9, "Segoe UI Symbol", 400, 0, 0x0
@@ -247,12 +247,12 @@ END
// TEXTINCLUDE
//
-1 TEXTINCLUDE
+1 TEXTINCLUDE
BEGIN
"resource.h\0"
END
-2 TEXTINCLUDE
+2 TEXTINCLUDE
BEGIN
"#ifndef _USING_V110_SDK71_\r\n"
"#define _USING_V110_SDK71_\r\n"
@@ -264,7 +264,7 @@ BEGIN
"\0"
END
-3 TEXTINCLUDE
+3 TEXTINCLUDE
BEGIN
"\r\n"
"IDR_LC_RUFUS_LOC RCDATA ""../res/loc/embedded.loc""\r\n"
@@ -351,7 +351,7 @@ BEGIN
BEGIN
END
- IDD_CHECKSUM, DIALOG
+ IDD_HASH, DIALOG
BEGIN
END
@@ -392,8 +392,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 4,2,2047,0
- PRODUCTVERSION 4,2,2047,0
+ FILEVERSION 4,2,2048,0
+ PRODUCTVERSION 4,2,2048,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -411,13 +411,13 @@ BEGIN
VALUE "Comments", "https://rufus.ie"
VALUE "CompanyName", "Akeo Consulting"
VALUE "FileDescription", "Rufus"
- VALUE "FileVersion", "4.2.2047"
+ VALUE "FileVersion", "4.2.2048"
VALUE "InternalName", "Rufus"
VALUE "LegalCopyright", "© 2011-2023 Pete Batard (GPL v3)"
VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html"
VALUE "OriginalFilename", "rufus-4.2.exe"
VALUE "ProductName", "Rufus"
- VALUE "ProductVersion", "4.2.2047"
+ VALUE "ProductVersion", "4.2.2048"
END
END
BLOCK "VarFileInfo"