mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
gpg: Move S2K encoding function to a shared file.
* g10/passphrase.c (encode_s2k_iterations): Move function to ... * common/openpgp-s2k.c: new file. Remove default intialization code. * common/openpgpdefs.h (S2K_DECODE_COUNT): New to keep only one copy. * g10/call-agent.c (agent_get_s2k_count): Change to return the count and print an error. * agent/protect.c: Include openpgpdefs.h * g10/card-util.c (gen_kdf_data): Adjust for changes * g10/gpgcompose.c: Include call-agent.h. (sk_esk): Adjust for changes. * g10/passphrase (passphrase_to_dek): Adjust for changes. * g10/main.h (S2K_DECODE_COUNT): Remove macro. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
0415b80227
commit
ec13b1c562
12 changed files with 111 additions and 71 deletions
|
@ -1461,19 +1461,19 @@ gpg_agent_get_confirmation (const char *desc)
|
|||
}
|
||||
|
||||
|
||||
/* Return the S2K iteration count as computed by gpg-agent. */
|
||||
gpg_error_t
|
||||
agent_get_s2k_count (unsigned long *r_count)
|
||||
/* Return the S2K iteration count as computed by gpg-agent. On error
|
||||
* print a warning and return a default value. */
|
||||
unsigned long
|
||||
agent_get_s2k_count (void)
|
||||
{
|
||||
gpg_error_t err;
|
||||
membuf_t data;
|
||||
char *buf;
|
||||
|
||||
*r_count = 0;
|
||||
unsigned long count = 0;
|
||||
|
||||
err = start_agent (NULL, 0);
|
||||
if (err)
|
||||
return err;
|
||||
goto leave;
|
||||
|
||||
init_membuf (&data, 32);
|
||||
err = assuan_transact (agent_ctx, "GETINFO s2k_count",
|
||||
|
@ -1489,10 +1489,22 @@ agent_get_s2k_count (unsigned long *r_count)
|
|||
err = gpg_error_from_syserror ();
|
||||
else
|
||||
{
|
||||
*r_count = strtoul (buf, NULL, 10);
|
||||
count = strtoul (buf, NULL, 10);
|
||||
xfree (buf);
|
||||
}
|
||||
}
|
||||
|
||||
leave:
|
||||
if (err || count < 65536)
|
||||
{
|
||||
/* Don't print an error if an older agent is used. */
|
||||
if (err && gpg_err_code (err) != GPG_ERR_ASS_PARAMETER)
|
||||
log_error (_("problem with the agent: %s\n"), gpg_strerror (err));
|
||||
|
||||
/* Default to 65536 which was used up to 2.0.13. */
|
||||
return 65536;
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue