[Feature][T8TSK-38][FOTA]Added all-inclusive upgrade
Change-Id: I5c137cd2022f015bcc1e1913ed42f0ff11c6dd23
diff --git a/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c b/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
index 9252126..d31a0d9 100755
--- a/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
+++ b/src/lynq/lib/liblynq-fota/rock_ua/rock_ua.c
@@ -476,7 +476,7 @@
do {
-
+ memset(delta_data,0,NAND_PAGE_SIZE);
ret = read(fd_delta, delta_data, NAND_PAGE_SIZE);
if (ret == 0) {
@@ -491,8 +491,8 @@
}
size -= NAND_PAGE_SIZE;
- //mtk_device_wrap_write(fd_curr,delta_data,NAND_PAGE_SIZE);
- mtk_device_wrap_write(fd_curr,delta_data,ret);
+ mtk_device_wrap_write(fd_curr,delta_data,NAND_PAGE_SIZE);
+ //mtk_device_wrap_write(fd_curr,delta_data,ret);
} while(size > 0);
@@ -502,9 +502,6 @@
}
-
-
-
unsigned char ram_buffer[ROCK_RAM_LEN];
@@ -1574,8 +1571,14 @@
if(da_head.full_sys>0) {
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE;
-
+ delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE;
+
+ if(current_slot==SLOT_B) {
+ system("flash_eraseall /dev/disk/by-partlabel/system_a");
+ } else {
+ system("flash_eraseall /dev/disk/by-partlabel/system_b");
+ }
+
if(current_slot==SLOT_B) {
fd_system_a = mtk_device_wrap_open(DEV_SYSTEM_A,O_RDWR);
if (fd_system_a < 0) {
@@ -1600,12 +1603,12 @@
retry_cnt = 0;
LYVERBLOG("+[UA]: Start upgrading system full.\n");
- do {
+ do{
status = delta_copyto_nand(delta_offset,da_head.full_sys);
-
- ROCK_SHA_FILE(fd_delta,delta_offset,da_head.full_sys,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_sys,digest_t);
- retry_cnt++;
+
+ ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_sys,digest_s);
+ ROCK_SHA_FILE(fd_curr,0,da_head.full_sys,digest_t);
+ retry_cnt++;
}while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
mtk_device_wrap_close(fd_curr);
@@ -1653,7 +1656,13 @@
if(da_head.full_boot>0) {
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys;
+ delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys;
+
+ if(current_slot==SLOT_B) {
+ system("flash_eraseall /dev/disk/by-partlabel/boot_a");
+ } else {
+ system("flash_eraseall /dev/disk/by-partlabel/boot_b");
+ }
if(current_slot==SLOT_B) {
fd_boot_a = mtk_device_wrap_open(DEV_BOOT_A,O_RDWR);
@@ -1678,11 +1687,11 @@
save_fota_status();
retry_cnt = 0;
LYVERBLOG("+[UA]: Start upgrading boot full.\n");
- do {
+ do{
status = delta_copyto_nand(delta_offset,da_head.full_boot);
- ROCK_SHA_FILE(fd_delta,delta_offset,da_head.full_boot,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_boot,digest_t);
- retry_cnt++;
+ ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_boot,digest_s);
+ ROCK_SHA_FILE(fd_curr,0,da_head.full_boot,digest_t);
+ retry_cnt++;
}while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
LYVERBLOG("+[UA]: boot full retry_cnt = %d\n",retry_cnt);
@@ -1728,8 +1737,14 @@
if(da_head.full_tee>0) {
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot;
-
+ delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot;
+
+ if(current_slot==SLOT_B) {
+ system("flash_eraseall /dev/disk/by-partlabel/tee_a");
+ } else {
+ system("flash_eraseall /dev/disk/by-partlabel/tee_b");
+ }
+
if(current_slot==SLOT_B) {
fd_tee_a = mtk_device_wrap_open(DEV_TEE_A,O_RDWR);
if (fd_tee_a < 0) {
@@ -1753,11 +1768,11 @@
save_fota_status();
retry_cnt = 0;
LYVERBLOG("+[UA]: Start upgrading tee full.\n");
- do {
+ do{
status = delta_copyto_nand(delta_offset,da_head.full_tee);
- ROCK_SHA_FILE(fd_delta,delta_offset,da_head.full_tee,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_tee,digest_t);
- retry_cnt++;
+ ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_tee,digest_s);
+ ROCK_SHA_FILE(fd_curr,0,da_head.full_tee,digest_t);
+ retry_cnt++;
}while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
mtk_device_wrap_close(fd_curr);
LYVERBLOG("+[UA]: tee full retry_cnt = %d\n",retry_cnt);
@@ -1800,7 +1815,13 @@
if(da_head.full_md1img>0) {
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee;
+ delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot + da_head.full_tee;
+
+ if(current_slot==SLOT_B) {
+ system("flash_eraseall /dev/disk/by-partlabel/md1img_a");
+ } else {
+ system("flash_eraseall /dev/disk/by-partlabel/md1img_b");
+ }
if(current_slot==SLOT_B) {
fd_md1img_a = mtk_device_wrap_open(DEV_MD1IMG_A,O_RDWR);
@@ -1825,11 +1846,11 @@
save_fota_status();
retry_cnt = 0;
LYVERBLOG("+[UA]: Start upgrading md1img full.\n");
- do {
- status = delta_copyto_nand(delta_offset,da_head.full_md1img);
- ROCK_SHA_FILE(fd_delta,delta_offset,da_head.full_md1img,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_md1img,digest_t);
- retry_cnt++;
+ do{
+ status = delta_copyto_nand(delta_offset,da_head.full_md1img);
+ ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_md1img,digest_s);
+ ROCK_SHA_FILE(fd_curr,0,da_head.full_md1img,digest_t);
+ retry_cnt++;
}while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
mtk_device_wrap_close(fd_curr);
@@ -1873,7 +1894,13 @@
if(da_head.full_md1dsp>0) {
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_md1img;
+ delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot + da_head.full_tee + da_head.full_md1img;
+
+ if(current_slot==SLOT_B) {
+ system("flash_eraseall /dev/disk/by-partlabel/md1dsp_a");
+ } else {
+ system("flash_eraseall /dev/disk/by-partlabel/md1dsp_b");
+ }
if(current_slot==SLOT_B) {
fd_md1dsp_a = mtk_device_wrap_open(DEV_MD1DSP_A,O_RDWR);
@@ -1898,11 +1925,11 @@
save_fota_status();
retry_cnt = 0;
LYVERBLOG("+[UA]: Start upgrading md1dsp full.\n");
- do {
- status = delta_copyto_nand(delta_offset,da_head.full_md1dsp);
- ROCK_SHA_FILE(fd_delta,delta_offset,da_head.full_md1dsp,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_md1dsp,digest_t);
- retry_cnt++;
+ do{
+ status = delta_copyto_nand(delta_offset,da_head.full_md1dsp);
+ ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_md1dsp,digest_s);
+ ROCK_SHA_FILE(fd_curr,0,da_head.full_md1dsp,digest_t);
+ retry_cnt++;
}while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
mtk_device_wrap_close(fd_curr);
@@ -1946,7 +1973,13 @@
if(da_head.full_vbmeta>0) {
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_md1img + da_head.full_md1dsp;
+ delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_boot + da_head.full_md1img + da_head.full_md1dsp;
+
+ if(current_slot==SLOT_B) {
+ system("flash_eraseall /dev/disk/by-partlabel/vbmeta_a");
+ } else {
+ system("flash_eraseall /dev/disk/by-partlabel/vbmeta_b");
+ }
if(current_slot==SLOT_B) {
fd_vbmeta_a = mtk_device_wrap_open(DEV_VBMETA_A,O_RDWR);
@@ -1971,11 +2004,11 @@
save_fota_status();
retry_cnt = 0;
LYVERBLOG("+[UA]: Start upgrading vbmeta full.\n");
- do {
- status = delta_copyto_nand(delta_offset,da_head.full_vbmeta);
- ROCK_SHA_FILE(fd_delta,delta_offset,da_head.full_vbmeta,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_vbmeta,digest_t);
- retry_cnt++;
+ do{
+ status = delta_copyto_nand(delta_offset,da_head.full_vbmeta);
+ ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_vbmeta,digest_s);
+ ROCK_SHA_FILE(fd_curr,0,da_head.full_vbmeta,digest_t);
+ retry_cnt++;
}while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
mtk_device_wrap_close(fd_curr);
@@ -3286,7 +3319,13 @@
if(da_head.full_sys>0) {
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE;
+ delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE;
+
+ if(current_slot==SLOT_B) {
+ system("flash_eraseall /dev/disk/by-partlabel/system_a");
+ } else {
+ system("flash_eraseall /dev/disk/by-partlabel/system_b");
+ }
if(current_slot==SLOT_B) {
fd_system_a = mtk_device_wrap_open(DEV_SYSTEM_A,O_RDWR);
@@ -3312,12 +3351,12 @@
retry_cnt = 0;
LYVERBLOG("+[UA]: Start upgrading system full.\n");
- do {
+ do{
status = delta_copyto_nand(delta_offset,da_head.full_sys);
-
- ROCK_SHA_FILE(fd_delta,delta_offset,da_head.full_sys,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_sys,digest_t);
- retry_cnt++;
+
+ ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_sys,digest_s);
+ ROCK_SHA_FILE(fd_curr,0,da_head.full_sys,digest_t);
+ retry_cnt++;
}while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
mtk_device_wrap_close(fd_curr);
@@ -3365,7 +3404,13 @@
if(da_head.full_boot>0) {
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys;
+ delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys;
+
+ if(current_slot==SLOT_B) {
+ system("flash_eraseall /dev/disk/by-partlabel/boot_a");
+ } else {
+ system("flash_eraseall /dev/disk/by-partlabel/boot_b");
+ }
if(current_slot==SLOT_B) {
fd_boot_a = mtk_device_wrap_open(DEV_BOOT_A,O_RDWR);
@@ -3390,11 +3435,11 @@
save_fota_status();
retry_cnt = 0;
LYVERBLOG("+[UA]: Start upgrading boot full.\n");
- do {
+ do{
status = delta_copyto_nand(delta_offset,da_head.full_boot);
- ROCK_SHA_FILE(fd_delta,delta_offset,da_head.full_boot,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_boot,digest_t);
- retry_cnt++;
+ ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_boot,digest_s);
+ ROCK_SHA_FILE(fd_curr,0,da_head.full_boot,digest_t);
+ retry_cnt++;
}while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
LYVERBLOG("+[UA]: boot full retry_cnt = %d\n",retry_cnt);
@@ -3440,7 +3485,13 @@
if(da_head.full_tee>0) {
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot;
+ delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot;
+
+ if(current_slot==SLOT_B) {
+ system("flash_eraseall /dev/disk/by-partlabel/tee_a");
+ } else {
+ system("flash_eraseall /dev/disk/by-partlabel/tee_b");
+ }
if(current_slot==SLOT_B) {
fd_tee_a = mtk_device_wrap_open(DEV_TEE_A,O_RDWR);
@@ -3465,11 +3516,11 @@
save_fota_status();
retry_cnt = 0;
LYVERBLOG("+[UA]: Start upgrading tee full.\n");
- do {
+ do{
status = delta_copyto_nand(delta_offset,da_head.full_tee);
- ROCK_SHA_FILE(fd_delta,delta_offset,da_head.full_tee,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_tee,digest_t);
- retry_cnt++;
+ ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_tee,digest_s);
+ ROCK_SHA_FILE(fd_curr,0,da_head.full_tee,digest_t);
+ retry_cnt++;
}while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
mtk_device_wrap_close(fd_curr);
LYVERBLOG("+[UA]: tee full retry_cnt = %d\n",retry_cnt);
@@ -3512,7 +3563,13 @@
if(da_head.full_md1img>0) {
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee;
+ delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot + da_head.full_tee;
+
+ if(current_slot==SLOT_B) {
+ system("flash_eraseall /dev/disk/by-partlabel/md1img_a");
+ } else {
+ system("flash_eraseall /dev/disk/by-partlabel/md1img_b");
+ }
if(current_slot==SLOT_B) {
fd_md1img_a = mtk_device_wrap_open(DEV_MD1IMG_A,O_RDWR);
@@ -3537,11 +3594,11 @@
save_fota_status();
retry_cnt = 0;
LYVERBLOG("+[UA]: Start upgrading md1img full.\n");
- do {
- status = delta_copyto_nand(delta_offset,da_head.full_md1img);
- ROCK_SHA_FILE(fd_delta,delta_offset,da_head.full_md1img,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_md1img,digest_t);
- retry_cnt++;
+ do{
+ status = delta_copyto_nand(delta_offset,da_head.full_md1img);
+ ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_md1img,digest_s);
+ ROCK_SHA_FILE(fd_curr,0,da_head.full_md1img,digest_t);
+ retry_cnt++;
}while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
mtk_device_wrap_close(fd_curr);
@@ -3585,7 +3642,13 @@
if(da_head.full_md1dsp>0) {
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_md1img;
+ delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot + da_head.full_tee + da_head.full_md1img;
+
+ if(current_slot==SLOT_B) {
+ system("flash_eraseall /dev/disk/by-partlabel/md1dsp_a");
+ } else {
+ system("flash_eraseall /dev/disk/by-partlabel/md1dsp_b");
+ }
if(current_slot==SLOT_B) {
fd_md1dsp_a = mtk_device_wrap_open(DEV_MD1DSP_A,O_RDWR);
@@ -3610,11 +3673,11 @@
save_fota_status();
retry_cnt = 0;
LYVERBLOG("+[UA]: Start upgrading md1dsp full.\n");
- do {
- status = delta_copyto_nand(delta_offset,da_head.full_md1dsp);
- ROCK_SHA_FILE(fd_delta,delta_offset,da_head.full_md1dsp,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_md1dsp,digest_t);
- retry_cnt++;
+ do{
+ status = delta_copyto_nand(delta_offset,da_head.full_md1dsp);
+ ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_md1dsp,digest_s);
+ ROCK_SHA_FILE(fd_curr,0,da_head.full_md1dsp,digest_t);
+ retry_cnt++;
}while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
mtk_device_wrap_close(fd_curr);
@@ -3658,7 +3721,13 @@
if(da_head.full_vbmeta>0) {
- delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_tee + da_head.full_md1img + da_head.full_md1dsp;
+ delta_offset = DELTA_HEARD_SIZE + delta_size + DELTA_FULL_HEARD_SIZE + da_head.full_sys + da_head.full_boot + da_head.full_tee + da_head.full_md1img + da_head.full_md1dsp;
+
+ if(current_slot==SLOT_B) {
+ system("flash_eraseall /dev/disk/by-partlabel/vbmeta_a");
+ } else {
+ system("flash_eraseall /dev/disk/by-partlabel/vbmeta_b");
+ }
if(current_slot==SLOT_B) {
fd_vbmeta_a = mtk_device_wrap_open(DEV_VBMETA_A,O_RDWR);
@@ -3683,11 +3752,11 @@
save_fota_status();
retry_cnt = 0;
LYVERBLOG("+[UA]: Start upgrading vbmeta full.\n");
- do {
- status = delta_copyto_nand(delta_offset,da_head.full_vbmeta);
- ROCK_SHA_FILE(fd_delta,delta_offset,da_head.full_vbmeta,digest_s);
- ROCK_SHA_FILE(fd_curr,0,da_head.full_vbmeta,digest_t);
- retry_cnt++;
+ do{
+ status = delta_copyto_nand(delta_offset,da_head.full_vbmeta);
+ ROCK_SHA_FILE_COMMON(fd_delta,delta_offset,da_head.full_vbmeta,digest_s);
+ ROCK_SHA_FILE(fd_curr,0,da_head.full_vbmeta,digest_t);
+ retry_cnt++;
}while((strncmp(digest_s,digest_t,SHA_DIGEST_SIZE)!=0)&&(retry_cnt <= 3));
mtk_device_wrap_close(fd_curr);
diff --git a/src/lynq/lib/liblynq-fota/rock_ua/sha.c b/src/lynq/lib/liblynq-fota/rock_ua/sha.c
old mode 100644
new mode 100755
index 1989113..bdb29de
--- a/src/lynq/lib/liblynq-fota/rock_ua/sha.c
+++ b/src/lynq/lib/liblynq-fota/rock_ua/sha.c
@@ -319,38 +319,78 @@
return digest;
}
-#define NAND_PAGE_SIZE 2048
+#define NAND_PAGE_SIZE_SHA 4096
+
+const uint8_t* ROCK_SHA_FILE_COMMON(int fd_sha, int offset,int totle_size, uint8_t *digest) {
+ const uint8_t *p;
+ int i = 0;
+ //int fd_sha;
+ int size = 0;
+ int totale_size_common = totle_size;
+ char data[NAND_PAGE_SIZE_SHA];
+
+
+ lseek(fd_sha, offset, SEEK_SET);
+ SHA_CTX ctx;
+ SHA_init(&ctx);
+
+ do{
+ if(totale_size_common >= NAND_PAGE_SIZE_SHA)
+ {
+ size = read(fd_sha,data,NAND_PAGE_SIZE_SHA);
+ }
+ else
+ {
+ size = read(fd_sha,data,totale_size_common);
+ }
+ SHA_update(&ctx, data, size);
+ totale_size_common -= size;
+
+ }while(totale_size_common>0);
+ p = SHA_final(&ctx);
+ for (i = 0; i < SHA_DIGEST_SIZE; ++i)
+ {
+ digest[i] = *p++;
+ }
+ return digest;
+}
const uint8_t* ROCK_SHA_FILE(int fd_sha, int offset,int totle_size, uint8_t *digest) {
const uint8_t *p;
int i = 0;
- //int fd_sha;
- int size = 0;
- char data[NAND_PAGE_SIZE];
+ //int fd_sha;
+ int size = 0;
+ int totale_size_file = totle_size;
+ char data[NAND_PAGE_SIZE_SHA];
- mtk_device_wrap_seek(fd_sha, offset, SEEK_SET);
+ mtk_device_wrap_seek(fd_sha, offset, SEEK_SET);
SHA_CTX ctx;
SHA_init(&ctx);
- do {
- size = mtk_device_wrap_read(fd_sha,data,NAND_PAGE_SIZE);
- SHA_update(&ctx, data, size);
- totle_size -= NAND_PAGE_SIZE;
+ do{
+ if(totale_size_file >= NAND_PAGE_SIZE_SHA)
+ {
+ size = mtk_device_wrap_read(fd_sha,data,NAND_PAGE_SIZE_SHA);
+ }
+ else
+ {
+ size = mtk_device_wrap_read(fd_sha,data,totale_size_file);
+ }
+ SHA_update(&ctx, data, size);
+ totale_size_file -= size;
- }while(totle_size>0);
+ }while(totale_size_file>0);
p = SHA_final(&ctx);
- for (i = 0; i < SHA_DIGEST_SIZE; ++i) {
+ for (i = 0; i < SHA_DIGEST_SIZE; ++i)
+ {
digest[i] = *p++;
}
-
-
return digest;
}
-
// Take a string 'str' of 40 hex digits and parse it into the 20
// byte array 'digest'. 'str' may contain only the digest or be of
// the form "<digest>:<anything>". Return 0 on success, -1 on any