diff options
Diffstat (limited to 'utils/nwztools/upgtools/upg.c')
-rw-r--r-- | utils/nwztools/upgtools/upg.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/utils/nwztools/upgtools/upg.c b/utils/nwztools/upgtools/upg.c index 44d3eca789..8a6a9f0754 100644 --- a/utils/nwztools/upgtools/upg.c +++ b/utils/nwztools/upgtools/upg.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include <stdlib.h> | 22 | #include <stdlib.h> |
23 | #include <string.h> | 23 | #include <string.h> |
24 | #include <ctype.h> | 24 | #include <ctype.h> |
25 | #include <openssl/md5.h> | 25 | #include "md5.h" |
26 | 26 | ||
27 | struct nwz_model_t g_model_list[] = | 27 | struct nwz_model_t g_model_list[] = |
28 | { | 28 | { |
@@ -97,19 +97,14 @@ struct upg_file_t *upg_read_memory(void *buf, size_t size, char key[NWZ_KEY_SIZE | |||
97 | struct upg_md5_t *md5 = buf; | 97 | struct upg_md5_t *md5 = buf; |
98 | cprintf(BLUE, "Preliminary\n"); | 98 | cprintf(BLUE, "Preliminary\n"); |
99 | cprintf(GREEN, " MD5: "); | 99 | cprintf(GREEN, " MD5: "); |
100 | for(int i = 0; i < MD5_DIGEST_LENGTH; i++) | 100 | for(int i = 0; i < NWZ_MD5_SIZE; i++) |
101 | cprintf(YELLOW, "%02x", md5->md5[i]); | 101 | cprintf(YELLOW, "%02x", md5->md5[i]); |
102 | cprintf(OFF, " "); | 102 | cprintf(OFF, " "); |
103 | 103 | ||
104 | /* check MD5 */ | 104 | /* check MD5 */ |
105 | uint8_t actual_md5[MD5_DIGEST_LENGTH]; | 105 | uint8_t actual_md5[NWZ_MD5_SIZE]; |
106 | { | 106 | MD5_CalculateDigest(actual_md5, (md5 + 1), size - sizeof(struct upg_header_t)); |
107 | MD5_CTX c; | 107 | if(memcmp(actual_md5, md5->md5, NWZ_MD5_SIZE) != 0) |
108 | MD5_Init(&c); | ||
109 | MD5_Update(&c, md5 + 1, size - sizeof(struct upg_header_t)); | ||
110 | MD5_Final(actual_md5, &c); | ||
111 | } | ||
112 | if(memcmp(actual_md5, md5->md5, MD5_DIGEST_LENGTH) != 0) | ||
113 | { | 108 | { |
114 | cprintf(RED, "Mismatch\n"); | 109 | cprintf(RED, "Mismatch\n"); |
115 | err_printf(GREY, "MD5 Mismatch\n"); | 110 | err_printf(GREY, "MD5 Mismatch\n"); |
@@ -223,12 +218,7 @@ void *upg_write_memory(struct upg_file_t *file, char key[NWZ_KEY_SIZE], | |||
223 | /* encrypt everything and hash everything */ | 218 | /* encrypt everything and hash everything */ |
224 | fwp_write(hdr, tot_size - sizeof(*md5), hdr, (void *)key); | 219 | fwp_write(hdr, tot_size - sizeof(*md5), hdr, (void *)key); |
225 | /* write final MD5 */ | 220 | /* write final MD5 */ |
226 | { | 221 | MD5_CalculateDigest(md5->md5, (void *)hdr, tot_size - sizeof(*md5)); |
227 | MD5_CTX c; | ||
228 | MD5_Init(&c); | ||
229 | MD5_Update(&c, (void *)hdr, tot_size - sizeof(*md5)); | ||
230 | MD5_Final(md5->md5, &c); | ||
231 | } | ||
232 | *out_size = tot_size; | 222 | *out_size = tot_size; |
233 | return buf; | 223 | return buf; |
234 | } | 224 | } |