blob: 429bc40f76880943a40edfd0356134680e6997ab [file] [log] [blame]
rjw1f884582022-01-06 17:20:42 +08001#include <string.h>
2#include <stdlib.h>
3#include <unistd.h>
4#include <sys/stat.h>
5#include <fcntl.h>
6#include <stdio.h>
7#include "md5.h"
8#include "mtk_device_wrap.h"
9#include "liblog/lynq_deflog.h"
10
11
12int ota_file_open(char* path, char* flag)
13{
14#if 1
15 if(strcmp(flag, "r") == 0 || strcmp(flag, "rb") == 0)
16 return mtk_device_wrap_open(path, O_RDONLY);
17 else if(strcmp(flag, "r+") == 0 || strcmp(flag, "rb+") == 0)
18 return mtk_device_wrap_open(path, O_RDWR | O_CREAT);
19 else if(strcmp(flag, "w+") == 0 ||strcmp(flag, "wb+") == 0 || strcmp(flag, "w") == 0 || strcmp(flag, "wb") == 0 )
20 return mtk_device_wrap_open(path, O_RDWR | O_CREAT | O_TRUNC);
21 else if(strcmp(flag, "a+") == 0 ||strcmp(flag, "ab+") == 0 || strcmp(flag, "a") == 0 || strcmp(flag, "ab") == 0 )
22 return mtk_device_wrap_open(path, O_RDWR | O_CREAT | O_APPEND);
23#endif
24}
25
26
27int ota_file_seek(int handle, int offset, int flag)
28{
29 return mtk_device_wrap_seek(handle,offset,flag);
30}
31
32
33
34int ota_file_read(char* buffer, size_t count, int file)
35{
36 return mtk_device_wrap_read(file,buffer,count);
37}
38
39
40
41void ota_file_close(int handle)
42{
43 mtk_device_wrap_close(handle);
44}
45
ll8882c802022-01-12 09:54:02 +000046#define MD5_READ_BUFFER_LEN 4*1024
rjw1f884582022-01-06 17:20:42 +080047int lynq_md5_file_verfy(char* filePath, char* file_md5)
48{
49 int ret = -1;
50 int handle;
51
52 LYVERBLOG("[+MD5]:calc file md5: %s\n", filePath);
53 handle = open(filePath, O_RDONLY);
54 LYVERBLOG("[+MD5]:handle:%d\n",handle);
55 if(handle >= 0){
56 {
57 int read_len = 0;
58 unsigned char buffer[MD5_READ_BUFFER_LEN] = {0};
59 unsigned char decrypt[16];
60 int i;
61 MD5_CTX md5;
62 MD5Init(&md5);
63 //strcpy(buffer,"12345");
64 while ((read_len = read(handle,buffer, MD5_READ_BUFFER_LEN)) > 0)
65 {
66 //printf("readlen:%d\n",read_len);
67 MD5Update(&md5, (unsigned char*)buffer, read_len);
68 memset(buffer,0,sizeof(buffer));
69 }
70 MD5Final(&md5, (unsigned char*)decrypt);
71 memset(buffer, 0, MD5_READ_BUFFER_LEN);
72 for(i = 0; i < 16; i++)
73 {
74 sprintf((char*)(buffer + i * 2), "%02x",decrypt[i]);
75 }
76 LYVERBLOG("[+MD5]:md5:%s\n", buffer);
77 LYVERBLOG("[+MD5]:md5:%s\n", file_md5);
78
79 ret = strncmp((const char*)buffer, (const char*)file_md5,32);
80 LYVERBLOG("[+MD5]:ret:%d\n", ret);
81 }
82 close(handle);
83 }
84 return ret;
85}
86
87#if 0
88int md5_file_verfy_new(char* filePath, char* file_md5,int packe_len)
89{
90 int ret = -1;
91 int handle;
92 int tatal_packe_len = 0;
93
94 LYVERBLOG("[+MD5]:calc file md5: %s\n", filePath);
95 handle = mtk_device_wrap_open(filePath, O_RDONLY);
96 LYVERBLOG("[+MD5]:handle:%d\n",handle);
97 if(handle >= 0){
98 {
99 int read_len = 0;
100 unsigned char buffer[MD5_READ_BUFFER_LEN] = {0};
101 unsigned char decrypt[16];
102 int i;
103 MD5_CTX md5;
104 MD5Init(&md5);
105 //strcpy(buffer,"12345");
106 tatal_packe_len = packe_len;
107 LYVERBLOG("[+MD5]:tatal_packe_len:%d\n", tatal_packe_len);
108 while ((read_len = mtk_device_wrap_read(handle,buffer, MD5_READ_BUFFER_LEN)) > 0)
109 {
110 //printf("readlen:%d\n",read_len);
111 if(tatal_packe_len >= read_len)
112 {
113 MD5Update(&md5, (unsigned char*)buffer, read_len);
114 tatal_packe_len -= read_len;
115 }
116 else if(tatal_packe_len > 0)
117 {
118 LYVERBLOG("[+MD5]:tatal_packe_len:%d\n", tatal_packe_len);
119 MD5Update(&md5, (unsigned char*)buffer, tatal_packe_len);
120 tatal_packe_len -= read_len;
121 }
122 LYVERBLOG("[+MD5]:tatal_packe_len:%d\n", tatal_packe_len);
123 memset(buffer,0,sizeof(buffer));
124 }
125 MD5Final(&md5, (unsigned char*)decrypt);
126 memset(buffer, 0, MD5_READ_BUFFER_LEN);
127 for(i = 0; i < 16; i++)
128 {
129 sprintf((char*)(buffer + i * 2), "%02x",decrypt[i]);
130 }
131 LYVERBLOG("[+MD5]:md5:%s\n", buffer);
132 LYVERBLOG("[+MD5]:md5:%s\n", file_md5);
133
134 ret = strncmp((const char*)buffer, (const char*)file_md5,32);
135 LYVERBLOG("[+MD5]:ret:%d\n", ret);
136 }
137 mtk_device_wrap_close(handle);
138 }
139 return ret;
140}
141#endif