diff options
author | Werner Koch <[email protected]> | 2017-07-17 13:52:26 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2017-07-17 13:53:16 +0000 |
commit | a149afe338d61d86985c533cde5e7dbcd31e8698 (patch) | |
tree | c930065acfb8403fe8391dc0d93b866f599bc52e /sm/call-agent.c | |
parent | agent: New GETINFO sub-command jent_active. (diff) | |
download | gnupg-a149afe338d61d86985c533cde5e7dbcd31e8698.tar.gz gnupg-a149afe338d61d86985c533cde5e7dbcd31e8698.zip |
gpg,sm: Check compliance of the RNG.
* common/compliance.c (gnupg_rng_is_compliant): New.
* g10/call-agent.c (start_agent) [W32]: Check rng compliance.
* sm/call-agent.c (start_agent) [W32]: Ditto.
* g10/encrypt.c (encrypt_simple, encrypt_crypt): Check that the RNG is
compliant.
* sm/encrypt.c (gpgsm_encrypt): Ditto.
* g10/sign.c (do_sign): Ditto.
* sm/sign.c (gpgsm_sign): Ditto.
--
Under Windows we need to check that the Jitter RNG is active in de-vs
mode. Under Linux this is not necessary because /dev/random can be
scrutinized and is believed to provide enough entropy.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'sm/call-agent.c')
-rw-r--r-- | sm/call-agent.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/sm/call-agent.c b/sm/call-agent.c index 0e47c1448..ba8fb122b 100644 --- a/sm/call-agent.c +++ b/sm/call-agent.c @@ -171,6 +171,25 @@ start_agent (ctrl_t ctrl) str_pinentry_mode (opt.pinentry_mode), gpg_strerror (rc)); } + + /* In DE_VS mode under Windows we require that the JENT RNG + * is active. */ +#ifdef HAVE_W32_SYSTEM + if (!rc && opt.compliance == CO_DE_VS) + { + if (assuan_transact (agent_ctx, "GETINFO jent_active", + NULL, NULL, NULL, NULL, NULL, NULL)) + { + rc = gpg_error (GPG_ERR_FORBIDDEN); + log_error (_("%s is not compliant with %s mode\n"), + GPG_AGENT_NAME, + gnupg_compliance_option_string (opt.compliance)); + gpgsm_status_with_error (ctrl, STATUS_ERROR, + "random-compliance", rc); + } + } +#endif /*HAVE_W32_SYSTEM*/ + } } |