1
0
Fork 0
mirror of git://git.gnupg.org/gnupg.git synced 2025-07-03 22:56:33 +02:00

agent: Add option --pss to pksign to be used by smartcards.

* agent/command.c (cmd_sethash): Add option --pss and allow for
--hash=null.
* agent/agent.h (struct server_control_s): Add digest.is_pss and
zero where needed.
* agent/pksign.c (agent_pksign_do): Allow for PSS with cards.
* scd/command.c (cmd_pksign): Add for --hash=none.
--

This is not a full implementaion of PSS but allows scdaemon card
drivers to detect already PSS formatted data.

Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
Werner Koch 2020-08-10 10:01:03 +02:00
parent 373c975859
commit bb096905b9
No known key found for this signature in database
GPG key ID: E3FDFF218E45B72B
5 changed files with 31 additions and 8 deletions

View file

@ -497,6 +497,12 @@ agent_pksign_do (ctrl_t ctrl, const char *cache_nonce,
err = do_encode_dsa (data, datalen,
algo, s_skey,
&s_hash);
else if (ctrl->digest.is_pss)
{
log_info ("signing with rsaPSS is currently only supported"
" for (some) smartcards\n");
err = gpg_error (GPG_ERR_NOT_SUPPORTED);
}
else
err = do_encode_md (data, datalen,
ctrl->digest.algo,
@ -540,7 +546,13 @@ agent_pksign_do (ctrl_t ctrl, const char *cache_nonce,
if (s_hash == NULL)
{
if (ctrl->digest.algo == MD_USER_TLS_MD5SHA1)
if (ctrl->digest.is_pss)
{
err = gcry_sexp_build (&s_hash, NULL,
"(data (flags raw) (value %b))",
(int)datalen, data);
}
else if (ctrl->digest.algo == MD_USER_TLS_MD5SHA1)
err = do_encode_raw_pkcs1 (data, datalen,
gcry_pk_get_nbits (sexp_key), &s_hash);
else