diff --git a/agent/ChangeLog b/agent/ChangeLog index 7293e23ce..b80cbead2 100644 --- a/agent/ChangeLog +++ b/agent/ChangeLog @@ -1,5 +1,7 @@ 2004-07-19 Moritz Schulte + * command-ssh.c (ssh_identity_register): passphrase must not be freed. + * Makefile.am (gpg_agent_SOURCES): Adding: gpg-stream.c, gpg-stream.h, buffer.c, buffer.h, command-ssh.c. diff --git a/agent/command-ssh.c b/agent/command-ssh.c index cc8144e22..a487c9f06 100644 --- a/agent/command-ssh.c +++ b/agent/command-ssh.c @@ -486,14 +486,32 @@ ssh_receive_key_secret (gpg_stream_t stream, ssh_key_secret_t *key_secret) if (err) break; + log_debug ("key->p = "); + gcry_mpi_dump (key.material.rsa.p); + log_debug ("\n"); + log_debug ("key->q = "); + gcry_mpi_dump (key.material.rsa.q); + log_debug ("\n"); + log_debug ("key->u = "); + gcry_mpi_dump (key.material.rsa.iqmp); + log_debug ("\n"); + if (gcry_mpi_cmp (key.material.rsa.p, key.material.rsa.q)) { /* P shall be smaller then Q! */ gcry_mpi_t tmp = NULL; + log_debug ("p >= q! swapping primes.\n"); + tmp = key.material.rsa.p; key.material.rsa.p = key.material.rsa.q; key.material.rsa.q = tmp; + + gcry_mpi_invm (key.material.rsa.iqmp, key.material.rsa.p, key.material.rsa.q); + + log_debug ("new key->u = "); + gcry_mpi_dump (key.material.rsa.iqmp); + log_debug ("\n"); } break; @@ -1308,10 +1326,7 @@ ssh_identity_register (ssh_key_secret_t *key, int ttl) out: - if (passphrase) - gcry_free (passphrase); - if (buffer) - free (buffer); + free (buffer); return err; }