mirror of
git://git.gnupg.org/gnupg.git
synced 2024-06-08 23:37:47 +02:00
Change --show-session-key to print the session key earlier.
* g10/mainproc.c (proc_encrypted): Move show_session_key code to ... * g10/decrypt-data.c (decrypt_data): here. -- This feature can be used to return the session key for just a part of a file. For example to downloading just the first 32k of a huge file, decrypting that incomplete part and while ignoring all the errors break out the session key. The session key may then be used on the server to decrypt the entire file without the need to have the private key on the server. This is the same feature as commit101a54add3
for 2.1 and commit3ae90ff28c
for 2.0. GnuPG-bug-id: 1389 Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
4466fdba7b
commit
fa3f555d75
|
@ -100,6 +100,16 @@ decrypt_data( void *procctx, PKT_encrypted *ed, DEK *dek )
|
|||
write_status_text (STATUS_DECRYPTION_INFO, buf);
|
||||
}
|
||||
|
||||
if (opt.show_session_key)
|
||||
{
|
||||
char *buf = xmalloc (dek->keylen*2 + 20);
|
||||
sprintf (buf, "%d:", dek->algo);
|
||||
for (i=0; i < dek->keylen; i++ )
|
||||
sprintf(buf+strlen(buf), "%02X", dek->key[i] );
|
||||
log_info ("session key: `%s'\n", buf);
|
||||
write_status_text (STATUS_SESSION_KEY, buf);
|
||||
}
|
||||
|
||||
if( (rc=check_cipher_algo(dek->algo)) )
|
||||
goto leave;
|
||||
blocksize = cipher_get_blocksize(dek->algo);
|
||||
|
|
|
@ -587,6 +587,7 @@ proc_encrypted( CTX c, PACKET *pkt )
|
|||
}
|
||||
else if( !c->dek )
|
||||
result = G10ERR_NO_SECKEY;
|
||||
|
||||
if( !result )
|
||||
result = decrypt_data( c, pkt->pkt.encrypted, c->dek );
|
||||
|
||||
|
@ -600,16 +601,6 @@ proc_encrypted( CTX c, PACKET *pkt )
|
|||
write_status( STATUS_GOODMDC );
|
||||
else if(!opt.no_mdc_warn)
|
||||
log_info (_("WARNING: message was not integrity protected\n"));
|
||||
if(opt.show_session_key)
|
||||
{
|
||||
int i;
|
||||
char *buf = xmalloc ( c->dek->keylen*2 + 20 );
|
||||
sprintf ( buf, "%d:", c->dek->algo );
|
||||
for(i=0; i < c->dek->keylen; i++ )
|
||||
sprintf(buf+strlen(buf), "%02X", c->dek->key[i] );
|
||||
log_info( "session key: `%s'\n", buf );
|
||||
write_status_text ( STATUS_SESSION_KEY, buf );
|
||||
}
|
||||
}
|
||||
else if( result == G10ERR_BAD_SIGN ) {
|
||||
log_error(_("WARNING: encrypted message has been manipulated!\n"));
|
||||
|
|
Loading…
Reference in New Issue
Block a user