about summary refs log blame commit diff stats
path: root/src/tools/aesgcm_download.c
blob: 6b60ba083f0835d718160a23c536490962787b62 (plain) (tree)
"Downloading '%s' failed: Unable to create " "temporary ciphertext file for writing " "(%s).", https_url, err_buf); return NULL; } FILE* outfh = fopen(aesgcm_dl->filename, "wb"); if (outfh == NULL) { strerror_r(errno, err_buf, err_len); http_print_transfer_update(aesgcm_dl->window, aesgcm_dl->url, "Downloading '%s' failed: Unable to open " "output file at '%s' for writing (%s).", https_url, aesgcm_dl->filename, err_buf); return NULL; } HTTPDownload* http_dl = malloc(sizeof(HTTPDownload)); http_dl->window = aesgcm_dl->window; http_dl->worker = aesgcm_dl->worker; http_dl->url = strdup(https_url); http_dl->filename = strdup(tmpname); aesgcm_dl->http_dl = http_dl; http_file_get(http_dl); // TODO(wstrm): Verify result. FILE* tmpfh = fopen(tmpname, "rb"); if (tmpfh == NULL) { strerror_r(errno, err_buf, err_len); http_print_transfer_update(aesgcm_dl->window, aesgcm_dl->url, "Downloading '%s' failed: Unable to open " "temporary file at '%s' for reading (%s).", aesgcm_dl->url, aesgcm_dl->filename, err_buf); return NULL; } gcry_error_t crypt_res; crypt_res = omemo_decrypt_file(tmpfh, outfh, http_dl->bytes_received, fragment); if (fclose(tmpfh) == EOF) { strerror_r(errno, err_buf, err_len); cons_show_error(err_buf); } remove(tmpname); free(tmpname); if (crypt_res != GPG_ERR_NO_ERROR) { http_print_transfer_update(aesgcm_dl->window, aesgcm_dl->url, "Downloading '%s' failed: Failed to decrypt " "file (%s).", https_url, gcry_strerror(crypt_res)); } if (fclose(outfh) == EOF) { strerror_r(errno, err_buf, err_len); cons_show_error(err_buf); } free(https_url); free(fragment); free(aesgcm_dl->filename); free(aesgcm_dl->url); free(aesgcm_dl); return NULL; } void aesgcm_download_cancel_processes(ProfWin* window) { http_download_cancel_processes(window); } void aesgcm_download_add_download(AESGCMDownload* aesgcm_dl) { http_download_add_download(aesgcm_dl->http_dl); }