mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
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 <wk@gnupg.org>
This commit is contained in:
parent
bbbd0db34b
commit
a149afe338
8 changed files with 131 additions and 0 deletions
|
@ -466,6 +466,46 @@ gnupg_digest_is_allowed (enum gnupg_compliance_mode compliance, int producer,
|
|||
}
|
||||
|
||||
|
||||
/* Return True if the random number generator is compliant in
|
||||
* COMPLIANCE mode. */
|
||||
int
|
||||
gnupg_rng_is_compliant (enum gnupg_compliance_mode compliance)
|
||||
{
|
||||
static int result = -1;
|
||||
|
||||
if (result != -1)
|
||||
; /* Use cached result. */
|
||||
else if (compliance == CO_DE_VS)
|
||||
{
|
||||
/* In DE_VS mode under Windows we require that the JENT RNG
|
||||
* is active. */
|
||||
#ifdef HAVE_W32_SYSTEM
|
||||
# if GCRYPT_VERSION_NUMBER >= 0x010800
|
||||
char *buf;
|
||||
char *fields[5];
|
||||
|
||||
buf = gcry_get_config (0, "rng-type");
|
||||
if (buf
|
||||
&& split_fields_colon (buf, fields, DIM (fields)) >= 5
|
||||
&& atoi (fields[4]) > 0)
|
||||
result = 1;
|
||||
else
|
||||
result = 0;
|
||||
gcry_free (buf);
|
||||
# else
|
||||
result = 0; /* No JENT - can't be compliant. */
|
||||
# endif
|
||||
#else /*!HAVE_W32_SYSTEM*/
|
||||
result = 1; /* Not Windows - RNG is good. */
|
||||
#endif /*!HAVE_W32_SYSTEM*/
|
||||
}
|
||||
else
|
||||
result = 1;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
const char *
|
||||
gnupg_status_compliance_flag (enum gnupg_compliance_mode compliance)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue