32 |
#include "wptContext.h" |
#include "wptContext.h" |
33 |
#include "wptNLS.h" |
#include "wptNLS.h" |
34 |
#include "wptErrors.h" |
#include "wptErrors.h" |
35 |
#include "wptCrypto.h" |
|
36 |
|
|
37 |
/* Return a printable digest of the buffer @mdbuf. */ |
/* Return a printable digest of the buffer @mdbuf. */ |
38 |
static const char* |
static const char* |
46 |
} |
} |
47 |
|
|
48 |
|
|
49 |
|
static const char* |
50 |
|
id2algo (int mdalgo) |
51 |
|
{ |
52 |
|
gpgme_hash_algo_t md = (gpgme_hash_algo_t)mdalgo; |
53 |
|
|
54 |
|
switch (md) { |
55 |
|
case GPGME_MD_MD5: return "MD5"; |
56 |
|
case GPGME_MD_SHA1: return "SHA1"; |
57 |
|
case GPGME_MD_RMD160: return "RMD160"; |
58 |
|
case GPGME_MD_SHA256: return "SHA256"; |
59 |
|
} |
60 |
|
return ""; |
61 |
|
} |
62 |
|
|
63 |
|
|
64 |
/* Dialog box procedure to show and calculate file digests. */ |
/* Dialog box procedure to show and calculate file digests. */ |
65 |
BOOL CALLBACK |
BOOL CALLBACK |
66 |
mdsum_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam) |
mdsum_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam) |
73 |
{0, 0, 0} |
{0, 0, 0} |
74 |
}; |
}; |
75 |
gpgme_data_t sumlist; |
gpgme_data_t sumlist; |
76 |
|
const char *name; |
77 |
char fname[300], mdasc[64]; |
char fname[300], mdasc[64]; |
78 |
byte mdbuf[20]; |
byte mdbuf[20]; |
79 |
int i; |
int i; |
105 |
SetForegroundWindow (dlg); |
SetForegroundWindow (dlg); |
106 |
break; |
break; |
107 |
|
|
108 |
|
case WM_SYSCOMMAND: |
109 |
|
if (wparam == SC_CLOSE) |
110 |
|
EndDialog (dlg, TRUE); |
111 |
|
return TRUE; |
112 |
|
|
113 |
case WM_DESTROY: |
case WM_DESTROY: |
114 |
if( lv ) { |
if( lv ) { |
115 |
listview_release( lv ); |
listview_release( lv ); |
126 |
case IDC_MDSUM_COPY: |
case IDC_MDSUM_COPY: |
127 |
if (gpgme_data_new (&sumlist)) |
if (gpgme_data_new (&sumlist)) |
128 |
BUG(0); |
BUG(0); |
129 |
if (md->mdalgo == 3) {/* rmd160 */ |
if (md->mdalgo == (int)GPGME_MD_RMD160) { |
130 |
const char *s = "# warning rmd160sum is not yet available\r\n"; |
const char *s = "# warning rmd160sum is not yet available\r\n"; |
131 |
gpgme_data_write (sumlist, s, strlen (s)); |
gpgme_data_write (sumlist, s, strlen (s)); |
132 |
} |
} |
139 |
gpgme_data_write (sumlist, fname, strlen (fname)); |
gpgme_data_write (sumlist, fname, strlen (fname)); |
140 |
gpgme_data_write (sumlist, "\r\n", 2); |
gpgme_data_write (sumlist, "\r\n", 2); |
141 |
} |
} |
142 |
const char *name = get_filesave_dlg (dlg, _("Select file to save checksums"), NULL, NULL); |
_snprintf (fname, sizeof (fname)-1, "%s_sums.txt", id2algo (md->mdalgo)); |
143 |
|
name = get_filesave_dlg (dlg, _("Select file to save checksums"), |
144 |
|
NULL, fname); |
145 |
if (name && *name) { |
if (name && *name) { |
146 |
gpg_data_release_and_set_file (sumlist, name); |
gpg_data_release_and_set_file (sumlist, name); |
147 |
log_box (_("File Manager"), MB_OK, "Checksums successfully saved in '%s'", name); |
log_box (_("File Manager"), MB_OK, |
148 |
|
_("Checksums successfully saved in '%s'"), name); |
149 |
} |
} |
150 |
else |
else |
151 |
gpgme_data_release (sumlist); |
gpgme_data_release (sumlist); |