new upstream version 1.8.0
This commit is contained in:
parent
2f0819346c
commit
0c8865f0b9
37
curves.c
37
curves.c
@ -28,6 +28,10 @@
|
|||||||
|
|
||||||
#include "../src/gcrypt-int.h"
|
#include "../src/gcrypt-int.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define PGM "curves"
|
||||||
|
#include "t-common.h"
|
||||||
|
|
||||||
/* Number of curves defined in ../cipger/ecc.c */
|
/* Number of curves defined in ../cipger/ecc.c */
|
||||||
#define N_CURVES 14
|
#define N_CURVES 14
|
||||||
|
|
||||||
@ -48,31 +52,6 @@ static char const sample_key_1[] =
|
|||||||
static char const sample_key_1_curve[] = "NIST P-256";
|
static char const sample_key_1_curve[] = "NIST P-256";
|
||||||
static unsigned int sample_key_1_nbits = 256;
|
static unsigned int sample_key_1_nbits = 256;
|
||||||
|
|
||||||
/* Program option flags. */
|
|
||||||
static int verbose;
|
|
||||||
static int error_count;
|
|
||||||
|
|
||||||
static void
|
|
||||||
fail (const char *format, ...)
|
|
||||||
{
|
|
||||||
va_list arg_ptr;
|
|
||||||
|
|
||||||
va_start (arg_ptr, format);
|
|
||||||
vfprintf (stderr, format, arg_ptr);
|
|
||||||
va_end (arg_ptr);
|
|
||||||
error_count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
die (const char *format, ...)
|
|
||||||
{
|
|
||||||
va_list arg_ptr;
|
|
||||||
|
|
||||||
va_start (arg_ptr, format);
|
|
||||||
vfprintf (stderr, format, arg_ptr);
|
|
||||||
va_end (arg_ptr);
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -145,8 +124,6 @@ check_get_params (void)
|
|||||||
int
|
int
|
||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
int debug = 0;
|
|
||||||
|
|
||||||
if (argc > 1 && !strcmp (argv[1], "--verbose"))
|
if (argc > 1 && !strcmp (argv[1], "--verbose"))
|
||||||
verbose = 1;
|
verbose = 1;
|
||||||
else if (argc > 1 && !strcmp (argv[1], "--debug"))
|
else if (argc > 1 && !strcmp (argv[1], "--debug"))
|
||||||
@ -155,10 +132,10 @@ main (int argc, char **argv)
|
|||||||
if (!gcry_check_version (GCRYPT_VERSION))
|
if (!gcry_check_version (GCRYPT_VERSION))
|
||||||
die ("version mismatch\n");
|
die ("version mismatch\n");
|
||||||
|
|
||||||
gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
|
xgcry_control (GCRYCTL_DISABLE_SECMEM, 0);
|
||||||
gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
|
xgcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
|
||||||
if (debug)
|
if (debug)
|
||||||
gcry_control (GCRYCTL_SET_DEBUG_FLAGS, 1u, 0);
|
xgcry_control (GCRYCTL_SET_DEBUG_FLAGS, 1u, 0);
|
||||||
list_curves ();
|
list_curves ();
|
||||||
check_matching ();
|
check_matching ();
|
||||||
check_get_params ();
|
check_get_params ();
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
diff -up libgcrypt-1.6.3/random/random-csprng.c.urandom-only libgcrypt-1.6.3/random/random-csprng.c
|
|
||||||
--- libgcrypt-1.6.3/random/random-csprng.c.urandom-only 2015-02-27 10:54:03.000000000 +0100
|
|
||||||
+++ libgcrypt-1.6.3/random/random-csprng.c 2015-03-20 08:29:27.513113519 +0100
|
|
||||||
@@ -1125,8 +1125,7 @@ getfnc_gather_random (void))(void (*)(co
|
|
||||||
enum random_origins, size_t, int);
|
|
||||||
|
|
||||||
#if USE_RNDLINUX
|
|
||||||
- if ( !access (NAME_OF_DEV_RANDOM, R_OK)
|
|
||||||
- && !access (NAME_OF_DEV_URANDOM, R_OK))
|
|
||||||
+ if (!access (NAME_OF_DEV_URANDOM, R_OK))
|
|
||||||
{
|
|
||||||
fnc = _gcry_rndlinux_gather_random;
|
|
||||||
return fnc;
|
|
||||||
diff -up libgcrypt-1.6.3/random/rndlinux.c.urandom-only libgcrypt-1.6.3/random/rndlinux.c
|
|
||||||
--- libgcrypt-1.6.3/random/rndlinux.c.urandom-only 2015-03-20 08:36:13.472098269 +0100
|
|
||||||
+++ libgcrypt-1.6.3/random/rndlinux.c 2015-03-20 08:36:43.765097131 +0100
|
|
||||||
@@ -178,7 +178,11 @@ _gcry_rndlinux_gather_random (void (*add
|
|
||||||
{
|
|
||||||
if (fd_random == -1)
|
|
||||||
{
|
|
||||||
- fd_random = open_device (NAME_OF_DEV_RANDOM, (ever_opened & 1), 1);
|
|
||||||
+ /* We try to open /dev/random first but in case the open fails
|
|
||||||
+ we gracefully retry with /dev/urandom. */
|
|
||||||
+ fd_random = open_device (NAME_OF_DEV_RANDOM, 0, 0);
|
|
||||||
+ if (fd_random == -1)
|
|
||||||
+ fd_random = open_device (NAME_OF_DEV_URANDOM, (ever_opened & 1), 1);
|
|
||||||
ever_opened |= 1;
|
|
||||||
}
|
|
||||||
fd = fd_random;
|
|
@ -1,24 +0,0 @@
|
|||||||
diff -up libgcrypt-1.7.3/cipher/bufhelp.h.aliasing libgcrypt-1.7.3/cipher/bufhelp.h
|
|
||||||
--- libgcrypt-1.7.3/cipher/bufhelp.h.aliasing 2016-04-07 17:30:08.000000000 +0200
|
|
||||||
+++ libgcrypt-1.7.3/cipher/bufhelp.h 2016-11-22 17:00:13.065692916 +0100
|
|
||||||
@@ -35,6 +35,11 @@
|
|
||||||
# define BUFHELP_FAST_UNALIGNED_ACCESS 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#if _GCRY_GCC_VERSION >= 40400
|
|
||||||
+# pragma GCC push_options
|
|
||||||
+# pragma GCC optimize ("no-strict-aliasing")
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
|
|
||||||
#ifdef BUFHELP_FAST_UNALIGNED_ACCESS
|
|
||||||
/* Define type with one-byte alignment on architectures with fast unaligned
|
|
||||||
@@ -429,4 +434,8 @@ static inline void buf_put_le64(void *_b
|
|
||||||
|
|
||||||
#endif /*BUFHELP_FAST_UNALIGNED_ACCESS*/
|
|
||||||
|
|
||||||
+#if _GCRY_GCC_VERSION >= 40400
|
|
||||||
+# pragma GCC pop_options
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
#endif /*GCRYPT_BUFHELP_H*/
|
|
@ -1,104 +0,0 @@
|
|||||||
diff -up libgcrypt-1.7.3/random/random-drbg.c.cfgrandom libgcrypt-1.7.3/random/random-drbg.c
|
|
||||||
--- libgcrypt-1.7.3/random/random-drbg.c.cfgrandom 2016-04-07 17:30:08.000000000 +0200
|
|
||||||
+++ libgcrypt-1.7.3/random/random-drbg.c 2016-11-22 15:54:02.227319203 +0100
|
|
||||||
@@ -627,8 +627,13 @@ drbg_get_entropy (drbg_state_t drbg, uns
|
|
||||||
read_cb_size = len;
|
|
||||||
read_cb_len = 0;
|
|
||||||
#if USE_RNDLINUX
|
|
||||||
+ /* First read from /etc/gcrypt/rngseed if available */
|
|
||||||
+ _gcry_rndlinux_gather_random (drbg_read_cb, 0, len,
|
|
||||||
+ -1);
|
|
||||||
+ read_cb_len = 0;
|
|
||||||
+ /* then use /dev/urandom. */
|
|
||||||
rc = _gcry_rndlinux_gather_random (drbg_read_cb, 0, len,
|
|
||||||
- GCRY_VERY_STRONG_RANDOM);
|
|
||||||
+ GCRY_STRONG_RANDOM);
|
|
||||||
#elif USE_RNDUNIX
|
|
||||||
rc = _gcry_rndunix_gather_random (drbg_read_cb, 0, len,
|
|
||||||
GCRY_VERY_STRONG_RANDOM);
|
|
||||||
diff -up libgcrypt-1.7.3/random/rndlinux.c.cfgrandom libgcrypt-1.7.3/random/rndlinux.c
|
|
||||||
--- libgcrypt-1.7.3/random/rndlinux.c.cfgrandom 2016-07-14 11:19:17.000000000 +0200
|
|
||||||
+++ libgcrypt-1.7.3/random/rndlinux.c 2016-11-22 15:45:19.921141761 +0100
|
|
||||||
@@ -40,7 +40,9 @@
|
|
||||||
#include "g10lib.h"
|
|
||||||
#include "rand-internal.h"
|
|
||||||
|
|
||||||
-static int open_device (const char *name, int retry);
|
|
||||||
+#define NAME_OF_CFG_RNGSEED "/etc/gcrypt/rngseed"
|
|
||||||
+
|
|
||||||
+static int open_device (const char *name, int retry, int fatal);
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
@@ -63,7 +65,7 @@ set_cloexec_flag (int fd)
|
|
||||||
* a fatal error but retries until it is able to reopen the device.
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
-open_device (const char *name, int retry)
|
|
||||||
+open_device (const char *name, int retry, int fatal)
|
|
||||||
{
|
|
||||||
int fd;
|
|
||||||
|
|
||||||
@@ -71,6 +73,8 @@ open_device (const char *name, int retry
|
|
||||||
_gcry_random_progress ("open_dev_random", 'X', 1, 0);
|
|
||||||
again:
|
|
||||||
fd = open (name, O_RDONLY);
|
|
||||||
+ if (fd == -1 && !fatal)
|
|
||||||
+ return fd;
|
|
||||||
if (fd == -1 && retry)
|
|
||||||
{
|
|
||||||
struct timeval tv;
|
|
||||||
@@ -115,6 +119,7 @@ _gcry_rndlinux_gather_random (void (*add
|
|
||||||
{
|
|
||||||
static int fd_urandom = -1;
|
|
||||||
static int fd_random = -1;
|
|
||||||
+ static int fd_configured = -1;
|
|
||||||
static unsigned char ever_opened;
|
|
||||||
int fd;
|
|
||||||
int n;
|
|
||||||
@@ -138,6 +143,11 @@ _gcry_rndlinux_gather_random (void (*add
|
|
||||||
close (fd_urandom);
|
|
||||||
fd_urandom = -1;
|
|
||||||
}
|
|
||||||
+ if (fd_configured != -1)
|
|
||||||
+ {
|
|
||||||
+ close (fd_configured);
|
|
||||||
+ fd_configured = -1;
|
|
||||||
+ }
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -165,20 +175,30 @@ _gcry_rndlinux_gather_random (void (*add
|
|
||||||
that we always require the device to be existent but want a more
|
|
||||||
graceful behaviour if the rarely needed close operation has been
|
|
||||||
used and the device needs to be re-opened later. */
|
|
||||||
+
|
|
||||||
+ if (level == -1)
|
|
||||||
+ {
|
|
||||||
+ if (fd_configured == -1)
|
|
||||||
+ fd_configured = open_device ( NAME_OF_CFG_RNGSEED, 0, 0 );
|
|
||||||
+ fd = fd_configured;
|
|
||||||
+ if (fd == -1)
|
|
||||||
+ return -1;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (level >= 2)
|
|
||||||
{
|
|
||||||
if (fd_random == -1)
|
|
||||||
{
|
|
||||||
- fd_random = open_device (NAME_OF_DEV_RANDOM, (ever_opened & 1));
|
|
||||||
+ fd_random = open_device (NAME_OF_DEV_RANDOM, (ever_opened & 1), 1);
|
|
||||||
ever_opened |= 1;
|
|
||||||
}
|
|
||||||
fd = fd_random;
|
|
||||||
}
|
|
||||||
- else
|
|
||||||
+ else if (level != -1)
|
|
||||||
{
|
|
||||||
if (fd_urandom == -1)
|
|
||||||
{
|
|
||||||
- fd_urandom = open_device (NAME_OF_DEV_URANDOM, (ever_opened & 2));
|
|
||||||
+ fd_urandom = open_device (NAME_OF_DEV_URANDOM, (ever_opened & 2), 1);
|
|
||||||
ever_opened |= 2;
|
|
||||||
}
|
|
||||||
fd = fd_urandom;
|
|
@ -1,6 +1,6 @@
|
|||||||
diff -up libgcrypt-1.7.3/cipher/dsa.c.tests libgcrypt-1.7.3/cipher/dsa.c
|
diff -up libgcrypt-1.8.0/cipher/dsa.c.tests libgcrypt-1.8.0/cipher/dsa.c
|
||||||
--- libgcrypt-1.7.3/cipher/dsa.c.tests 2016-04-07 17:30:08.000000000 +0200
|
--- libgcrypt-1.8.0/cipher/dsa.c.tests 2016-04-07 17:30:08.000000000 +0200
|
||||||
+++ libgcrypt-1.7.3/cipher/dsa.c 2016-11-22 15:33:48.813026002 +0100
|
+++ libgcrypt-1.8.0/cipher/dsa.c 2017-08-15 15:10:39.551600227 +0200
|
||||||
@@ -457,11 +457,22 @@ generate_fips186 (DSA_secret_key *sk, un
|
@@ -457,11 +457,22 @@ generate_fips186 (DSA_secret_key *sk, un
|
||||||
&prime_q, &prime_p,
|
&prime_q, &prime_p,
|
||||||
r_counter,
|
r_counter,
|
||||||
@ -42,9 +42,9 @@ diff -up libgcrypt-1.7.3/cipher/dsa.c.tests libgcrypt-1.7.3/cipher/dsa.c
|
|||||||
return GPG_ERR_MISSING_VALUE;
|
return GPG_ERR_MISSING_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
diff -up libgcrypt-1.7.3/cipher/rsa.c.tests libgcrypt-1.7.3/cipher/rsa.c
|
diff -up libgcrypt-1.8.0/cipher/rsa.c.tests libgcrypt-1.8.0/cipher/rsa.c
|
||||||
--- libgcrypt-1.7.3/cipher/rsa.c.tests 2016-07-14 11:19:17.000000000 +0200
|
--- libgcrypt-1.8.0/cipher/rsa.c.tests 2017-07-06 10:21:36.000000000 +0200
|
||||||
+++ libgcrypt-1.7.3/cipher/rsa.c 2016-11-22 15:25:05.426838229 +0100
|
+++ libgcrypt-1.8.0/cipher/rsa.c 2017-08-15 15:10:39.551600227 +0200
|
||||||
@@ -696,7 +696,7 @@ generate_x931 (RSA_secret_key *sk, unsig
|
@@ -696,7 +696,7 @@ generate_x931 (RSA_secret_key *sk, unsig
|
||||||
|
|
||||||
*swapped = 0;
|
*swapped = 0;
|
||||||
@ -54,15 +54,15 @@ diff -up libgcrypt-1.7.3/cipher/rsa.c.tests libgcrypt-1.7.3/cipher/rsa.c
|
|||||||
e_value = 65537;
|
e_value = 65537;
|
||||||
|
|
||||||
/* Point 1 of section 4.1: k = 1024 + 256s with S >= 0 */
|
/* Point 1 of section 4.1: k = 1024 + 256s with S >= 0 */
|
||||||
diff -up libgcrypt-1.7.3/tests/keygen.c.tests libgcrypt-1.7.3/tests/keygen.c
|
diff -up libgcrypt-1.8.0/tests/keygen.c.tests libgcrypt-1.8.0/tests/keygen.c
|
||||||
--- libgcrypt-1.7.3/tests/keygen.c.tests 2016-04-07 17:30:08.000000000 +0200
|
--- libgcrypt-1.8.0/tests/keygen.c.tests 2017-08-15 15:10:39.551600227 +0200
|
||||||
+++ libgcrypt-1.7.3/tests/keygen.c 2016-11-22 15:25:33.178484464 +0100
|
+++ libgcrypt-1.8.0/tests/keygen.c 2017-08-15 15:16:05.433176171 +0200
|
||||||
@@ -257,11 +257,11 @@ check_rsa_keys (void)
|
@@ -200,11 +200,11 @@ check_rsa_keys (void)
|
||||||
|
|
||||||
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
- show ("creating 512 bit RSA key with e=257\n");
|
- info ("creating 512 bit RSA key with e=257\n");
|
||||||
+ show ("creating 1024 bit RSA key with e=257\n");
|
+ info ("creating 1024 bit RSA key with e=257\n");
|
||||||
rc = gcry_sexp_new (&keyparm,
|
rc = gcry_sexp_new (&keyparm,
|
||||||
"(genkey\n"
|
"(genkey\n"
|
||||||
" (rsa\n"
|
" (rsa\n"
|
||||||
@ -71,12 +71,12 @@ diff -up libgcrypt-1.7.3/tests/keygen.c.tests libgcrypt-1.7.3/tests/keygen.c
|
|||||||
" (rsa-use-e 3:257)\n"
|
" (rsa-use-e 3:257)\n"
|
||||||
" ))", 0, 1);
|
" ))", 0, 1);
|
||||||
if (rc)
|
if (rc)
|
||||||
@@ -282,11 +282,11 @@ check_rsa_keys (void)
|
@@ -225,11 +225,11 @@ check_rsa_keys (void)
|
||||||
gcry_sexp_release (key);
|
gcry_sexp_release (key);
|
||||||
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
- show ("creating 512 bit RSA key with default e\n");
|
- info ("creating 512 bit RSA key with default e\n");
|
||||||
+ show ("creating 1024 bit RSA key with default e\n");
|
+ info ("creating 1024 bit RSA key with default e\n");
|
||||||
rc = gcry_sexp_new (&keyparm,
|
rc = gcry_sexp_new (&keyparm,
|
||||||
"(genkey\n"
|
"(genkey\n"
|
||||||
" (rsa\n"
|
" (rsa\n"
|
||||||
@ -85,12 +85,12 @@ diff -up libgcrypt-1.7.3/tests/keygen.c.tests libgcrypt-1.7.3/tests/keygen.c
|
|||||||
" (rsa-use-e 1:0)\n"
|
" (rsa-use-e 1:0)\n"
|
||||||
" ))", 0, 1);
|
" ))", 0, 1);
|
||||||
if (rc)
|
if (rc)
|
||||||
@@ -366,12 +366,12 @@ check_dsa_keys (void)
|
@@ -309,12 +309,12 @@ check_dsa_keys (void)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
- show ("creating 1536 bit DSA key\n");
|
- info ("creating 1536 bit DSA key\n");
|
||||||
+ show ("creating 2048 bit DSA key\n");
|
+ info ("creating 2048 bit DSA key\n");
|
||||||
rc = gcry_sexp_new (&keyparm,
|
rc = gcry_sexp_new (&keyparm,
|
||||||
"(genkey\n"
|
"(genkey\n"
|
||||||
" (dsa\n"
|
" (dsa\n"
|
||||||
@ -101,10 +101,10 @@ diff -up libgcrypt-1.7.3/tests/keygen.c.tests libgcrypt-1.7.3/tests/keygen.c
|
|||||||
" ))", 0, 1);
|
" ))", 0, 1);
|
||||||
if (rc)
|
if (rc)
|
||||||
die ("error creating S-expression: %s\n", gpg_strerror (rc));
|
die ("error creating S-expression: %s\n", gpg_strerror (rc));
|
||||||
diff -up libgcrypt-1.7.3/tests/pubkey.c.tests libgcrypt-1.7.3/tests/pubkey.c
|
diff -up libgcrypt-1.8.0/tests/pubkey.c.tests libgcrypt-1.8.0/tests/pubkey.c
|
||||||
--- libgcrypt-1.7.3/tests/pubkey.c.tests 2016-07-14 11:19:17.000000000 +0200
|
--- libgcrypt-1.8.0/tests/pubkey.c.tests 2017-01-18 15:24:25.000000000 +0100
|
||||||
+++ libgcrypt-1.7.3/tests/pubkey.c 2016-11-22 18:40:23.220813982 +0100
|
+++ libgcrypt-1.8.0/tests/pubkey.c 2017-08-15 15:10:39.552600207 +0200
|
||||||
@@ -651,7 +651,7 @@ get_dsa_key_fips186_with_seed_new (gcry_
|
@@ -595,7 +595,7 @@ get_dsa_key_fips186_with_seed_new (gcry_
|
||||||
" (use-fips186)"
|
" (use-fips186)"
|
||||||
" (transient-key)"
|
" (transient-key)"
|
||||||
" (derive-parms"
|
" (derive-parms"
|
@ -1,6 +1,6 @@
|
|||||||
diff -up libgcrypt-1.7.6/random/rndlinux.c.use-poll libgcrypt-1.7.6/random/rndlinux.c
|
diff -up libgcrypt-1.8.0/random/rndlinux.c.use-poll libgcrypt-1.8.0/random/rndlinux.c
|
||||||
--- libgcrypt-1.7.6/random/rndlinux.c.use-poll 2017-01-30 14:20:13.665662981 +0100
|
--- libgcrypt-1.8.0/random/rndlinux.c.use-poll 2017-06-24 13:34:29.000000000 +0200
|
||||||
+++ libgcrypt-1.7.6/random/rndlinux.c 2017-01-30 14:27:45.957027214 +0100
|
+++ libgcrypt-1.8.0/random/rndlinux.c 2017-08-15 15:37:37.604629377 +0200
|
||||||
@@ -32,6 +32,7 @@
|
@@ -32,6 +32,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
@ -9,7 +9,7 @@ diff -up libgcrypt-1.7.6/random/rndlinux.c.use-poll libgcrypt-1.7.6/random/rndli
|
|||||||
#if defined(__linux__) && defined(HAVE_SYSCALL)
|
#if defined(__linux__) && defined(HAVE_SYSCALL)
|
||||||
# include <sys/syscall.h>
|
# include <sys/syscall.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -211,9 +212,8 @@ _gcry_rndlinux_gather_random (void (*add
|
@@ -216,9 +217,8 @@ _gcry_rndlinux_gather_random (void (*add
|
||||||
return with something we will actually use 100ms. */
|
return with something we will actually use 100ms. */
|
||||||
while (length)
|
while (length)
|
||||||
{
|
{
|
||||||
@ -20,7 +20,7 @@ diff -up libgcrypt-1.7.6/random/rndlinux.c.use-poll libgcrypt-1.7.6/random/rndli
|
|||||||
|
|
||||||
/* If we have a modern Linux kernel and we want to read from the
|
/* If we have a modern Linux kernel and we want to read from the
|
||||||
* the non-blocking /dev/urandom, we first try to use the new
|
* the non-blocking /dev/urandom, we first try to use the new
|
||||||
@@ -269,33 +269,22 @@ _gcry_rndlinux_gather_random (void (*add
|
@@ -276,36 +276,25 @@ _gcry_rndlinux_gather_random (void (*add
|
||||||
any_need_entropy = 1;
|
any_need_entropy = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,13 +35,19 @@ diff -up libgcrypt-1.7.6/random/rndlinux.c.use-poll libgcrypt-1.7.6/random/rndli
|
|||||||
+ pfd.fd = fd;
|
+ pfd.fd = fd;
|
||||||
+ pfd.events = POLLIN;
|
+ pfd.events = POLLIN;
|
||||||
+
|
+
|
||||||
+ if ( !(rc=poll(&pfd, 1, delay)) )
|
+ _gcry_pre_syscall ();
|
||||||
|
+ rc = poll(&pfd, 1, delay);
|
||||||
|
+ _gcry_post_syscall ();
|
||||||
|
+ if (!rc)
|
||||||
{
|
{
|
||||||
- FD_ZERO(&rfds);
|
- FD_ZERO(&rfds);
|
||||||
- FD_SET(fd, &rfds);
|
- FD_SET(fd, &rfds);
|
||||||
- tv.tv_sec = delay;
|
- tv.tv_sec = delay;
|
||||||
- tv.tv_usec = delay? 0 : 100000;
|
- tv.tv_usec = delay? 0 : 100000;
|
||||||
- if ( !(rc=select(fd+1, &rfds, NULL, NULL, &tv)) )
|
- _gcry_pre_syscall ();
|
||||||
|
- rc = select (fd+1, &rfds, NULL, NULL, &tv);
|
||||||
|
- _gcry_post_syscall ();
|
||||||
|
- if (!rc)
|
||||||
- {
|
- {
|
||||||
- any_need_entropy = 1;
|
- any_need_entropy = 1;
|
||||||
- delay = 3; /* Use 3 seconds henceforth. */
|
- delay = 3; /* Use 3 seconds henceforth. */
|
||||||
@ -68,4 +74,4 @@ diff -up libgcrypt-1.7.6/random/rndlinux.c.use-poll libgcrypt-1.7.6/random/rndli
|
|||||||
+ continue;
|
+ continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Read from the device. */
|
do
|
@ -1,32 +1,30 @@
|
|||||||
Name: libgcrypt
|
Name: libgcrypt
|
||||||
Version: 1.7.8
|
Version: 1.8.0
|
||||||
Release: 3%{?dist}
|
Release: 1%{?dist}
|
||||||
URL: http://www.gnupg.org/
|
URL: http://www.gnupg.org/
|
||||||
Source0: libgcrypt-%{version}-hobbled.tar.xz
|
Source0: libgcrypt-%{version}-hobbled.tar.xz
|
||||||
# The original libgcrypt sources now contain potentially patented ECC
|
# The original libgcrypt sources now contain potentially patented ECC
|
||||||
# cipher support. We have to remove it in the tarball we ship with
|
# cipher support. We have to remove it in the tarball we ship with
|
||||||
# the hobble-libgcrypt script.
|
# the hobble-libgcrypt script.
|
||||||
# (We replace it with RH approved ECC in Source4-5)
|
# (We replace it with RH approved ECC in Source4-5)
|
||||||
#Source0: ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-%{version}.tar.bz2
|
#Source0: ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-{version}.tar.bz2
|
||||||
#Source1: ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-%{version}.tar.bz2.sig
|
#Source1: ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-{version}.tar.bz2.sig
|
||||||
Source2: wk@g10code.com
|
Source2: wk@g10code.com
|
||||||
Source3: hobble-libgcrypt
|
Source3: hobble-libgcrypt
|
||||||
# Approved ECC support (from 1.6.1)
|
# Approved ECC support (from 1.6.1)
|
||||||
Source4: ecc-curves.c
|
Source4: ecc-curves.c
|
||||||
Source5: curves.c
|
Source5: curves.c
|
||||||
Source6: t-mpi-point.c
|
Source6: t-mpi-point.c
|
||||||
|
Source7: random.conf
|
||||||
# make FIPS hmac compatible with fipscheck - non upstreamable
|
# make FIPS hmac compatible with fipscheck - non upstreamable
|
||||||
# update on soname bump
|
# update on soname bump
|
||||||
Patch2: libgcrypt-1.6.2-use-fipscheck.patch
|
Patch2: libgcrypt-1.6.2-use-fipscheck.patch
|
||||||
# fix tests in the FIPS mode, allow CAVS testing of DSA keygen
|
# fix tests in the FIPS mode, allow CAVS testing of DSA keygen
|
||||||
Patch5: libgcrypt-1.7.3-tests.patch
|
Patch5: libgcrypt-1.8.0-tests.patch
|
||||||
# add configurable source of RNG seed and seed by default
|
|
||||||
# from /dev/urandom in the FIPS mode
|
|
||||||
Patch6: libgcrypt-1.7.3-fips-cfgrandom.patch
|
|
||||||
# update the CAVS tests
|
# update the CAVS tests
|
||||||
Patch7: libgcrypt-1.7.3-fips-cavs.patch
|
Patch7: libgcrypt-1.7.3-fips-cavs.patch
|
||||||
# use poll instead of select when gathering randomness
|
# use poll instead of select when gathering randomness
|
||||||
Patch11: libgcrypt-1.7.6-use-poll.patch
|
Patch11: libgcrypt-1.8.0-use-poll.patch
|
||||||
# slight optimalization of mpicoder.c to silence Valgrind (#968288)
|
# slight optimalization of mpicoder.c to silence Valgrind (#968288)
|
||||||
Patch13: libgcrypt-1.6.1-mpicoder-gccopt.patch
|
Patch13: libgcrypt-1.6.1-mpicoder-gccopt.patch
|
||||||
# fix tests to work with approved ECC
|
# fix tests to work with approved ECC
|
||||||
@ -35,10 +33,6 @@ Patch14: libgcrypt-1.7.3-ecc-test-fix.patch
|
|||||||
Patch18: libgcrypt-1.6.2-fips-ctor.patch
|
Patch18: libgcrypt-1.6.2-fips-ctor.patch
|
||||||
# Block some operations if in FIPS non-operational state
|
# Block some operations if in FIPS non-operational state
|
||||||
Patch22: libgcrypt-1.7.3-fips-reqs.patch
|
Patch22: libgcrypt-1.7.3-fips-reqs.patch
|
||||||
# do not use strict aliasing for bufhelp functions
|
|
||||||
Patch23: libgcrypt-1.7.3-aliasing.patch
|
|
||||||
# use only urandom if /dev/random cannot be opened
|
|
||||||
Patch24: libgcrypt-1.6.3-urandom-only.patch
|
|
||||||
|
|
||||||
%define gcrylibdir %{_libdir}
|
%define gcrylibdir %{_libdir}
|
||||||
|
|
||||||
@ -76,15 +70,13 @@ applications using libgcrypt.
|
|||||||
%{SOURCE3}
|
%{SOURCE3}
|
||||||
%patch2 -p1 -b .use-fipscheck
|
%patch2 -p1 -b .use-fipscheck
|
||||||
%patch5 -p1 -b .tests
|
%patch5 -p1 -b .tests
|
||||||
%patch6 -p1 -b .cfgrandom
|
|
||||||
%patch7 -p1 -b .cavs
|
%patch7 -p1 -b .cavs
|
||||||
%patch11 -p1 -b .use-poll
|
%patch11 -p1 -b .use-poll
|
||||||
%patch13 -p1 -b .gccopt
|
%patch13 -p1 -b .gccopt
|
||||||
%patch14 -p1 -b .eccfix
|
%patch14 -p1 -b .eccfix
|
||||||
%patch18 -p1 -b .fips-ctor
|
%patch18 -p1 -b .fips-ctor
|
||||||
%patch22 -p1 -b .fips-reqs
|
%patch22 -p1 -b .fips-reqs
|
||||||
%patch23 -p1 -b .aliasing
|
#%patch23 -p1 -b .aliasing
|
||||||
%patch24 -p1 -b .urandom-only
|
|
||||||
|
|
||||||
cp %{SOURCE4} cipher/
|
cp %{SOURCE4} cipher/
|
||||||
cp %{SOURCE5} %{SOURCE6} tests/
|
cp %{SOURCE5} %{SOURCE6} tests/
|
||||||
@ -155,6 +147,7 @@ popd
|
|||||||
# Create /etc/gcrypt (hardwired, not dependent on the configure invocation) so
|
# Create /etc/gcrypt (hardwired, not dependent on the configure invocation) so
|
||||||
# that _someone_ owns it.
|
# that _someone_ owns it.
|
||||||
mkdir -p -m 755 $RPM_BUILD_ROOT/etc/gcrypt
|
mkdir -p -m 755 $RPM_BUILD_ROOT/etc/gcrypt
|
||||||
|
install -m644 %{SOURCE7} $RPM_BUILD_ROOT/etc/gcrypt/random.conf
|
||||||
|
|
||||||
%post -p /sbin/ldconfig
|
%post -p /sbin/ldconfig
|
||||||
|
|
||||||
@ -174,6 +167,7 @@ exit 0
|
|||||||
%files
|
%files
|
||||||
%defattr(-,root,root,-)
|
%defattr(-,root,root,-)
|
||||||
%dir /etc/gcrypt
|
%dir /etc/gcrypt
|
||||||
|
%config(noreplace) /etc/gcrypt/random.conf
|
||||||
%{gcrylibdir}/libgcrypt.so.*
|
%{gcrylibdir}/libgcrypt.so.*
|
||||||
%{gcrylibdir}/.libgcrypt.so.*.hmac
|
%{gcrylibdir}/.libgcrypt.so.*.hmac
|
||||||
%{!?_licensedir:%global license %%doc}
|
%{!?_licensedir:%global license %%doc}
|
||||||
@ -196,6 +190,9 @@ exit 0
|
|||||||
%license COPYING
|
%license COPYING
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Aug 16 2017 Tomáš Mráz <tmraz@redhat.com> 1.8.0-1
|
||||||
|
- new upstream version 1.8.0
|
||||||
|
|
||||||
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.8-3
|
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.8-3
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||||
|
|
||||||
|
4
random.conf
Normal file
4
random.conf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# use only /dev/urandom - see https://www.2uo.de/myths-about-urandom/
|
||||||
|
only-urandom
|
||||||
|
# Keep jitter entropy generator enabled (should do no harm)
|
||||||
|
#disable-jent
|
114
t-mpi-point.c
114
t-mpi-point.c
@ -26,29 +26,8 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
#include "../src/gcrypt-int.h"
|
|
||||||
|
|
||||||
#define PGM "t-mpi-point"
|
#define PGM "t-mpi-point"
|
||||||
|
#include "t-common.h"
|
||||||
static const char *wherestr;
|
|
||||||
static int verbose;
|
|
||||||
static int debug;
|
|
||||||
static int error_count;
|
|
||||||
|
|
||||||
|
|
||||||
#define my_isascii(c) (!((c) & 0x80))
|
|
||||||
#define digitp(p) (*(p) >= '0' && *(p) <= '9')
|
|
||||||
#define hexdigitp(a) (digitp (a) \
|
|
||||||
|| (*(a) >= 'A' && *(a) <= 'F') \
|
|
||||||
|| (*(a) >= 'a' && *(a) <= 'f'))
|
|
||||||
#define xtoi_1(p) (*(p) <= '9'? (*(p)- '0'): \
|
|
||||||
*(p) <= 'F'? (*(p)-'A'+10):(*(p)-'a'+10))
|
|
||||||
#define xtoi_2(p) ((xtoi_1(p) * 16) + xtoi_1((p)+1))
|
|
||||||
#define xmalloc(a) gcry_xmalloc ((a))
|
|
||||||
#define xcalloc(a,b) gcry_xcalloc ((a),(b))
|
|
||||||
#define xfree(a) gcry_free ((a))
|
|
||||||
#define pass() do { ; } while (0)
|
|
||||||
|
|
||||||
|
|
||||||
static struct
|
static struct
|
||||||
{
|
{
|
||||||
@ -155,50 +134,6 @@ static const char sample_ed25519_d[] =
|
|||||||
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60";
|
"9d61b19deffd5a60ba844af492ec2cc44449c5697b326919703bac031cae7f60";
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
show (const char *format, ...)
|
|
||||||
{
|
|
||||||
va_list arg_ptr;
|
|
||||||
|
|
||||||
if (!verbose)
|
|
||||||
return;
|
|
||||||
fprintf (stderr, "%s: ", PGM);
|
|
||||||
va_start (arg_ptr, format);
|
|
||||||
vfprintf (stderr, format, arg_ptr);
|
|
||||||
va_end (arg_ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
fail (const char *format, ...)
|
|
||||||
{
|
|
||||||
va_list arg_ptr;
|
|
||||||
|
|
||||||
fflush (stdout);
|
|
||||||
fprintf (stderr, "%s: ", PGM);
|
|
||||||
if (wherestr)
|
|
||||||
fprintf (stderr, "%s: ", wherestr);
|
|
||||||
va_start (arg_ptr, format);
|
|
||||||
vfprintf (stderr, format, arg_ptr);
|
|
||||||
va_end (arg_ptr);
|
|
||||||
error_count++;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
die (const char *format, ...)
|
|
||||||
{
|
|
||||||
va_list arg_ptr;
|
|
||||||
|
|
||||||
fflush (stdout);
|
|
||||||
fprintf (stderr, "%s: ", PGM);
|
|
||||||
if (wherestr)
|
|
||||||
fprintf (stderr, "%s: ", wherestr);
|
|
||||||
va_start (arg_ptr, format);
|
|
||||||
vfprintf (stderr, format, arg_ptr);
|
|
||||||
va_end (arg_ptr);
|
|
||||||
exit (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
print_mpi_2 (const char *text, const char *text2, gcry_mpi_t a)
|
print_mpi_2 (const char *text, const char *text2, gcry_mpi_t a)
|
||||||
{
|
{
|
||||||
@ -310,7 +245,7 @@ hex2mpiopa (const char *string)
|
|||||||
die ("hex2mpiopa '%s' failed: parser error\n", string);
|
die ("hex2mpiopa '%s' failed: parser error\n", string);
|
||||||
val = gcry_mpi_set_opaque (NULL, buffer, buflen*8);
|
val = gcry_mpi_set_opaque (NULL, buffer, buflen*8);
|
||||||
if (!buffer)
|
if (!buffer)
|
||||||
die ("hex2mpiopa '%s' failed: set_opaque error%s\n", string);
|
die ("hex2mpiopa '%s' failed: set_opaque error\n", string);
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -360,11 +295,11 @@ ec_p_new (gcry_ctx_t *r_ctx, gcry_mpi_t p, gcry_mpi_t a)
|
|||||||
static void
|
static void
|
||||||
set_get_point (void)
|
set_get_point (void)
|
||||||
{
|
{
|
||||||
gcry_mpi_point_t point;
|
gcry_mpi_point_t point, point2;
|
||||||
gcry_mpi_t x, y, z;
|
gcry_mpi_t x, y, z;
|
||||||
|
|
||||||
wherestr = "set_get_point";
|
wherestr = "set_get_point";
|
||||||
show ("checking point setting functions\n");
|
info ("checking point setting functions\n");
|
||||||
|
|
||||||
point = gcry_mpi_point_new (0);
|
point = gcry_mpi_point_new (0);
|
||||||
x = gcry_mpi_set_ui (NULL, 17);
|
x = gcry_mpi_set_ui (NULL, 17);
|
||||||
@ -404,7 +339,22 @@ set_get_point (void)
|
|||||||
|| gcry_mpi_cmp_ui (y, 42) || gcry_mpi_cmp_ui (z, 11371))
|
|| gcry_mpi_cmp_ui (y, 42) || gcry_mpi_cmp_ui (z, 11371))
|
||||||
fail ("point_snatch_set/point_get failed\n");
|
fail ("point_snatch_set/point_get failed\n");
|
||||||
|
|
||||||
|
point2 = gcry_mpi_point_copy (point);
|
||||||
|
|
||||||
|
gcry_mpi_point_get (x, y, z, point2);
|
||||||
|
if (gcry_mpi_cmp_ui (x, 17)
|
||||||
|
|| gcry_mpi_cmp_ui (y, 42) || gcry_mpi_cmp_ui (z, 11371))
|
||||||
|
fail ("point_copy failed (1)\n");
|
||||||
|
|
||||||
gcry_mpi_point_release (point);
|
gcry_mpi_point_release (point);
|
||||||
|
|
||||||
|
gcry_mpi_point_get (x, y, z, point2);
|
||||||
|
if (gcry_mpi_cmp_ui (x, 17)
|
||||||
|
|| gcry_mpi_cmp_ui (y, 42) || gcry_mpi_cmp_ui (z, 11371))
|
||||||
|
fail ("point_copy failed (2)\n");
|
||||||
|
|
||||||
|
gcry_mpi_point_release (point2);
|
||||||
|
|
||||||
gcry_mpi_release (x);
|
gcry_mpi_release (x);
|
||||||
gcry_mpi_release (y);
|
gcry_mpi_release (y);
|
||||||
gcry_mpi_release (z);
|
gcry_mpi_release (z);
|
||||||
@ -419,7 +369,7 @@ context_alloc (void)
|
|||||||
gcry_mpi_t p, a;
|
gcry_mpi_t p, a;
|
||||||
|
|
||||||
wherestr = "context_alloc";
|
wherestr = "context_alloc";
|
||||||
show ("checking context functions\n");
|
info ("checking context functions\n");
|
||||||
|
|
||||||
p = gcry_mpi_set_ui (NULL, 1);
|
p = gcry_mpi_set_ui (NULL, 1);
|
||||||
a = gcry_mpi_set_ui (NULL, 1);
|
a = gcry_mpi_set_ui (NULL, 1);
|
||||||
@ -526,7 +476,7 @@ context_param (void)
|
|||||||
|
|
||||||
wherestr = "context_param";
|
wherestr = "context_param";
|
||||||
|
|
||||||
show ("checking standard curves\n");
|
info ("checking standard curves\n");
|
||||||
for (idx=0; test_curve[idx].desc; idx++)
|
for (idx=0; test_curve[idx].desc; idx++)
|
||||||
{
|
{
|
||||||
/* P-192 and Ed25519 are not supported in fips mode */
|
/* P-192 and Ed25519 are not supported in fips mode */
|
||||||
@ -535,7 +485,7 @@ context_param (void)
|
|||||||
if (!strcmp(test_curve[idx].desc, "NIST P-192")
|
if (!strcmp(test_curve[idx].desc, "NIST P-192")
|
||||||
|| !strcmp(test_curve[idx].desc, "Ed25519"))
|
|| !strcmp(test_curve[idx].desc, "Ed25519"))
|
||||||
{
|
{
|
||||||
show("skipping %s in fips mode\n", test_curve[idx].desc );
|
info ("skipping %s in fips mode\n", test_curve[idx].desc );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -568,7 +518,7 @@ context_param (void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
show ("checking sample public key (nistp256)\n");
|
info ("checking sample public key (nistp256)\n");
|
||||||
q = hex2mpi (sample_p256_q);
|
q = hex2mpi (sample_p256_q);
|
||||||
err = gcry_sexp_build (&keyparam, NULL,
|
err = gcry_sexp_build (&keyparam, NULL,
|
||||||
"(public-key(ecc(curve %s)(q %m)))",
|
"(public-key(ecc(curve %s)(q %m)))",
|
||||||
@ -639,7 +589,7 @@ context_param (void)
|
|||||||
if (gcry_fips_mode_active())
|
if (gcry_fips_mode_active())
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
show ("checking sample public key (Ed25519)\n");
|
info ("checking sample public key (Ed25519)\n");
|
||||||
q = hex2mpi (sample_ed25519_q);
|
q = hex2mpi (sample_ed25519_q);
|
||||||
gcry_sexp_release (keyparam);
|
gcry_sexp_release (keyparam);
|
||||||
err = gcry_sexp_build (&keyparam, NULL,
|
err = gcry_sexp_build (&keyparam, NULL,
|
||||||
@ -761,7 +711,7 @@ basic_ec_math (void)
|
|||||||
gcry_mpi_t x, y, z;
|
gcry_mpi_t x, y, z;
|
||||||
|
|
||||||
wherestr = "basic_ec_math";
|
wherestr = "basic_ec_math";
|
||||||
show ("checking basic math functions for EC\n");
|
info ("checking basic math functions for EC\n");
|
||||||
|
|
||||||
P = hex2mpi ("0xfffffffffffffffffffffffffffffffeffffffffffffffff");
|
P = hex2mpi ("0xfffffffffffffffffffffffffffffffeffffffffffffffff");
|
||||||
A = hex2mpi ("0xfffffffffffffffffffffffffffffffefffffffffffffffc");
|
A = hex2mpi ("0xfffffffffffffffffffffffffffffffefffffffffffffffc");
|
||||||
@ -847,7 +797,7 @@ twistededwards_math (void)
|
|||||||
gcry_mpi_t w, a, x, y, z, p, n, b, I;
|
gcry_mpi_t w, a, x, y, z, p, n, b, I;
|
||||||
|
|
||||||
wherestr = "twistededwards_math";
|
wherestr = "twistededwards_math";
|
||||||
show ("checking basic Twisted Edwards math\n");
|
info ("checking basic Twisted Edwards math\n");
|
||||||
|
|
||||||
err = gcry_mpi_ec_new (&ctx, NULL, "Ed25519");
|
err = gcry_mpi_ec_new (&ctx, NULL, "Ed25519");
|
||||||
if (err)
|
if (err)
|
||||||
@ -881,7 +831,7 @@ twistededwards_math (void)
|
|||||||
/* Check: p % 4 == 1 */
|
/* Check: p % 4 == 1 */
|
||||||
gcry_mpi_mod (w, p, GCRYMPI_CONST_FOUR);
|
gcry_mpi_mod (w, p, GCRYMPI_CONST_FOUR);
|
||||||
if (gcry_mpi_cmp_ui (w, 1))
|
if (gcry_mpi_cmp_ui (w, 1))
|
||||||
fail ("failed assertion: p % 4 == 1\n");
|
fail ("failed assertion: p %% 4 == 1\n");
|
||||||
|
|
||||||
/* Check: 2^{n-1} mod n == 1 */
|
/* Check: 2^{n-1} mod n == 1 */
|
||||||
gcry_mpi_sub_ui (a, n, 1);
|
gcry_mpi_sub_ui (a, n, 1);
|
||||||
@ -985,11 +935,11 @@ main (int argc, char **argv)
|
|||||||
if (!gcry_check_version (GCRYPT_VERSION))
|
if (!gcry_check_version (GCRYPT_VERSION))
|
||||||
die ("version mismatch\n");
|
die ("version mismatch\n");
|
||||||
|
|
||||||
gcry_control (GCRYCTL_DISABLE_SECMEM, 0);
|
xgcry_control (GCRYCTL_DISABLE_SECMEM, 0);
|
||||||
gcry_control (GCRYCTL_ENABLE_QUICK_RANDOM, 0);
|
xgcry_control (GCRYCTL_ENABLE_QUICK_RANDOM, 0);
|
||||||
if (debug)
|
if (debug)
|
||||||
gcry_control (GCRYCTL_SET_DEBUG_FLAGS, 1u, 0);
|
xgcry_control (GCRYCTL_SET_DEBUG_FLAGS, 1u, 0);
|
||||||
gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
|
xgcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
|
||||||
|
|
||||||
set_get_point ();
|
set_get_point ();
|
||||||
context_alloc ();
|
context_alloc ();
|
||||||
@ -1004,6 +954,6 @@ main (int argc, char **argv)
|
|||||||
twistededwards_math ();
|
twistededwards_math ();
|
||||||
}
|
}
|
||||||
|
|
||||||
show ("All tests completed. Errors: %d\n", error_count);
|
info ("All tests completed. Errors: %d\n", error_count);
|
||||||
return error_count ? 1 : 0;
|
return error_count ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user