1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-04-17 15:44:34 +02:00

Add a DECRYPTION_INFO status.

* g10/status.h (STATUS_DECRYPTION_INFO): New.
* g10/status.c (get_status_string): Add new status string.
* g10/encr-data.c: Include status.h.
(decrypt_data): Print STATUS_DECRYPTION_INFO.
--
This is  backport of commit  5667e33.

DECRYPTION_INFO <mdc_method> <sym_algo>
   Print information about the symmetric encryption algorithm and
   the MDC method.  This will be emitted even if the decryption
   fails.
This commit is contained in:
Werner Koch 2012-01-13 16:20:53 +01:00
parent 1575678710
commit cfb193a1de
3 changed files with 29 additions and 17 deletions

View File

@ -30,7 +30,7 @@
#include "cipher.h" #include "cipher.h"
#include "options.h" #include "options.h"
#include "i18n.h" #include "i18n.h"
#include "status.h"
static int mdc_decode_filter( void *opaque, int control, IOBUF a, static int mdc_decode_filter( void *opaque, int control, IOBUF a,
byte *buf, size_t *ret_len); byte *buf, size_t *ret_len);
@ -91,6 +91,15 @@ decrypt_data( void *procctx, PKT_encrypted *ed, DEK *dek )
log_info(_("encrypted with unknown algorithm %d\n"), dek->algo ); log_info(_("encrypted with unknown algorithm %d\n"), dek->algo );
dek->algo_info_printed = 1; dek->algo_info_printed = 1;
} }
{
char buf[20];
snprintf (buf, sizeof buf, "%d %d", ed->mdc_method, dek->algo);
write_status_text (STATUS_DECRYPTION_INFO, buf);
}
if( (rc=check_cipher_algo(dek->algo)) ) if( (rc=check_cipher_algo(dek->algo)) )
goto leave; goto leave;
blocksize = cipher_get_blocksize(dek->algo); blocksize = cipher_get_blocksize(dek->algo);
@ -120,7 +129,7 @@ decrypt_data( void *procctx, PKT_encrypted *ed, DEK *dek )
{ {
log_error("key setup failed: %s\n", g10_errstr(rc) ); log_error("key setup failed: %s\n", g10_errstr(rc) );
goto leave; goto leave;
} }
if (!ed->buf) { if (!ed->buf) {
log_error(_("problem handling encrypted packet\n")); log_error(_("problem handling encrypted packet\n"));
@ -199,7 +208,7 @@ decrypt_data( void *procctx, PKT_encrypted *ed, DEK *dek )
/*log_hexdump("MDC calculated:",md_read( dfx->mdc_hash, 0), datalen);*/ /*log_hexdump("MDC calculated:",md_read( dfx->mdc_hash, 0), datalen);*/
/*log_hexdump("MDC message :", dfx->defer, 20);*/ /*log_hexdump("MDC message :", dfx->defer, 20);*/
} }
leave: leave:
release_dfx_context (dfx); release_dfx_context (dfx);

View File

@ -75,7 +75,7 @@ progress_cb ( void *ctx, int c )
} }
static const char * static const char *
get_status_string ( int no ) get_status_string ( int no )
{ {
const char *s; const char *s;
@ -165,6 +165,7 @@ get_status_string ( int no )
case STATUS_PKA_TRUST_GOOD : s = "PKA_TRUST_GOOD"; break; case STATUS_PKA_TRUST_GOOD : s = "PKA_TRUST_GOOD"; break;
case STATUS_BEGIN_SIGNING : s = "BEGIN_SIGNING"; break; case STATUS_BEGIN_SIGNING : s = "BEGIN_SIGNING"; break;
case STATUS_ERROR : s = "ERROR"; break; case STATUS_ERROR : s = "ERROR"; break;
case STATUS_DECRYPTION_INFO: s = "DECRYPTION_INFO"; break;
default: s = "?"; break; default: s = "?"; break;
} }
return s; return s;
@ -187,13 +188,13 @@ status_currently_allowed (int no)
prompt the user. */ prompt the user. */
switch (no) switch (no)
{ {
case STATUS_GET_BOOL: case STATUS_GET_BOOL:
case STATUS_GET_LINE: case STATUS_GET_LINE:
case STATUS_GET_HIDDEN: case STATUS_GET_HIDDEN:
case STATUS_GOT_IT: case STATUS_GOT_IT:
case STATUS_IMPORTED: case STATUS_IMPORTED:
case STATUS_IMPORT_OK: case STATUS_IMPORT_OK:
case STATUS_IMPORT_CHECK: case STATUS_IMPORT_CHECK:
case STATUS_IMPORT_RES: case STATUS_IMPORT_RES:
return 1; /* Yes. */ return 1; /* Yes. */
default: default:
@ -214,7 +215,7 @@ set_status_fd ( int fd )
if ( statusfp && statusfp != stdout && statusfp != stderr ) if ( statusfp && statusfp != stdout && statusfp != stderr )
fclose (statusfp); fclose (statusfp);
statusfp = NULL; statusfp = NULL;
if ( fd == -1 ) if ( fd == -1 )
return; return;
if( fd == 1 ) if( fd == 1 )
@ -260,7 +261,7 @@ write_status_text ( int no, const char *text)
fputs ( "\\n", statusfp ); fputs ( "\\n", statusfp );
else if (*text == '\r') else if (*text == '\r')
fputs ( "\\r", statusfp ); fputs ( "\\r", statusfp );
else else
putc ( *(const byte *)text, statusfp ); putc ( *(const byte *)text, statusfp );
} }
} }
@ -287,7 +288,7 @@ write_status_text_and_buffer ( int no, const char *string,
if( !statusfp || !status_currently_allowed (no) ) if( !statusfp || !status_currently_allowed (no) )
return; /* Not enabled or allowed. */ return; /* Not enabled or allowed. */
if (wrap == -1) { if (wrap == -1) {
lower_limit--; lower_limit--;
wrap = 0; wrap = 0;
@ -306,8 +307,8 @@ write_status_text_and_buffer ( int no, const char *string,
first = 0; first = 0;
} }
for (esc=0, s=buffer, n=len; n && !esc; s++, n-- ) { for (esc=0, s=buffer, n=len; n && !esc; s++, n-- ) {
if ( *s == '%' || *(const byte*)s <= lower_limit if ( *s == '%' || *(const byte*)s <= lower_limit
|| *(const byte*)s == 127 ) || *(const byte*)s == 127 )
esc = 1; esc = 1;
if ( wrap && ++count > wrap ) { if ( wrap && ++count > wrap ) {
dowrap=1; dowrap=1;
@ -317,7 +318,7 @@ write_status_text_and_buffer ( int no, const char *string,
if (esc) { if (esc) {
s--; n++; s--; n++;
} }
if (s != buffer) if (s != buffer)
fwrite (buffer, s-buffer, 1, statusfp ); fwrite (buffer, s-buffer, 1, statusfp );
if ( esc ) { if ( esc ) {
fprintf (statusfp, "%%%02X", *(const byte*)s ); fprintf (statusfp, "%%%02X", *(const byte*)s );
@ -535,7 +536,7 @@ myread(int fd, void *buf, size_t count)
raise (SIGHUP); /* no more input data */ raise (SIGHUP); /* no more input data */
#endif #endif
} }
} }
return rc; return rc;
} }

View File

@ -120,6 +120,8 @@
#define STATUS_ERROR 85 #define STATUS_ERROR 85
#define STATUS_DECRYPTION_INFO 86
/*-- status.c --*/ /*-- status.c --*/
void set_status_fd ( int fd ); void set_status_fd ( int fd );