Changeset View
Changeset View
Standalone View
Standalone View
b/g10/decrypt-data.c
Context not available. | |||||
else | else | ||||
iobuf_push_filter ( ed->buf, decode_filter, dfx ); | iobuf_push_filter ( ed->buf, decode_filter, dfx ); | ||||
proc_packets (ctrl, procctx, ed->buf ); | if (opt.unwrap_encryption) | ||||
{ | |||||
char *filename; | |||||
estream_t fp; | |||||
rc = get_output_file ("", 0, ed->buf, &filename, &fp); | |||||
if (! rc) | |||||
{ | |||||
iobuf_t output = iobuf_esopen (fp, "w", 0); | |||||
armor_filter_context_t *afx = NULL; | |||||
if (opt.armor) | |||||
{ | |||||
afx = new_armor_context (); | |||||
push_armor_filter (afx, output); | |||||
} | |||||
iobuf_copy (output, ed->buf); | |||||
if ((rc = iobuf_error (ed->buf))) | |||||
log_error (_("error reading: %s\n"), | |||||
filename, gpg_strerror (rc)); | |||||
else if ((rc = iobuf_error (output))) | |||||
log_error (_("error writing output ('%s'): %s\n"), | |||||
filename, gpg_strerror (rc)); | |||||
iobuf_close (output); | |||||
if (afx) | |||||
release_armor_context (afx); | |||||
} | |||||
} | |||||
else | |||||
proc_packets (ctrl, procctx, ed->buf ); | |||||
ed->buf = NULL; | ed->buf = NULL; | ||||
if (dfx->eof_seen > 1 ) | if (dfx->eof_seen > 1 ) | ||||
rc = gpg_error (GPG_ERR_INV_PACKET); | rc = gpg_error (GPG_ERR_INV_PACKET); | ||||
Context not available. | |||||
gcry_md_final (dfx->mdc_hash); | gcry_md_final (dfx->mdc_hash); | ||||
if ( dfx->defer[0] != '\xd3' | if ( dfx->defer[0] != '\xd3' | ||||
|| dfx->defer[1] != '\x14' | || dfx->defer[1] != '\x14' | ||||
|| datalen != 20 | || datalen != 20 | ||||
|| memcmp (gcry_md_read (dfx->mdc_hash, 0), dfx->defer+2, datalen)) | || memcmp (gcry_md_read (dfx->mdc_hash, 0), dfx->defer+2, datalen)) | ||||
rc = gpg_error (GPG_ERR_BAD_SIGNATURE); | rc = gpg_error (GPG_ERR_BAD_SIGNATURE); | ||||
/* log_printhex("MDC message:", dfx->defer, 22); */ | /* log_printhex("MDC message:", dfx->defer, 22); */ | ||||
/* log_printhex("MDC calc:", gcry_md_read (dfx->mdc_hash,0), datalen); */ | /* log_printhex("MDC calc:", gcry_md_read (dfx->mdc_hash,0), datalen); */ | ||||
} | } | ||||
leave: | leave: | ||||
release_dfx_context (dfx); | release_dfx_context (dfx); | ||||
return rc; | return rc; | ||||
Context not available. |