import libgcrypt-1.8.3-2.el8
This commit is contained in:
		
						commit
						5144193108
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | SOURCES/libgcrypt-1.8.3-hobbled.tar.xz | ||||||
							
								
								
									
										1
									
								
								.libgcrypt.metadata
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.libgcrypt.metadata
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1 @@ | |||||||
|  | e89427b41b148a28583825079d45a7a64234fdbf SOURCES/libgcrypt-1.8.3-hobbled.tar.xz | ||||||
							
								
								
									
										144
									
								
								SOURCES/curves.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								SOURCES/curves.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,144 @@ | |||||||
|  | /* curves.c -  ECC curves regression tests
 | ||||||
|  |  *	Copyright (C) 2011 Free Software Foundation, Inc. | ||||||
|  |  * | ||||||
|  |  * This file is part of Libgcrypt. | ||||||
|  |  * | ||||||
|  |  * Libgcrypt is free software; you can redistribute it and/or modify | ||||||
|  |  * it under the terms of the GNU Lesser General Public License as | ||||||
|  |  * published by the Free Software Foundation; either version 2.1 of | ||||||
|  |  * the License, or (at your option) any later version. | ||||||
|  |  * | ||||||
|  |  * Libgcrypt is distributed in the hope that it will be useful, | ||||||
|  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||||
|  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||||
|  |  * GNU Lesser General Public License for more details. | ||||||
|  |  * | ||||||
|  |  * You should have received a copy of the GNU Lesser General Public | ||||||
|  |  * License along with this program; if not, write to the Free Software | ||||||
|  |  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #ifdef HAVE_CONFIG_H | ||||||
|  | #include <config.h> | ||||||
|  | #endif | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <string.h> | ||||||
|  | #include <stdarg.h> | ||||||
|  | 
 | ||||||
|  | #include "../src/gcrypt-int.h" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #define PGM "curves" | ||||||
|  | #include "t-common.h" | ||||||
|  | 
 | ||||||
|  | /* Number of curves defined in ../cipger/ecc.c */ | ||||||
|  | #define N_CURVES 14 | ||||||
|  | 
 | ||||||
|  | /* A real world sample public key.  */ | ||||||
|  | static char const sample_key_1[] = | ||||||
|  | "(public-key\n" | ||||||
|  | " (ecdsa\n" | ||||||
|  | "  (p #00FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF#)\n" | ||||||
|  | "  (a #00FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC#)\n" | ||||||
|  | "  (b #5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B#)\n" | ||||||
|  | "  (g #046B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296" | ||||||
|  |         "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5#)\n" | ||||||
|  | "  (n #00FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551#)\n" | ||||||
|  | "  (h #000000000000000000000000000000000000000000000000000000000000000001#)\n" | ||||||
|  | "  (q #0442B927242237639A36CE9221B340DB1A9AB76DF2FE3E171277F6A4023DED146EE" | ||||||
|  |       "86525E38CCECFF3FB8D152CC6334F70D23A525175C1BCBDDE6E023B2228770E#)\n" | ||||||
|  | "  ))"; | ||||||
|  | static char const sample_key_1_curve[] = "NIST P-256"; | ||||||
|  | static unsigned int sample_key_1_nbits = 256; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | static void | ||||||
|  | list_curves (void) | ||||||
|  | { | ||||||
|  |   int idx; | ||||||
|  |   const char *name; | ||||||
|  |   unsigned int nbits; | ||||||
|  | 
 | ||||||
|  |   for (idx=0; (name = gcry_pk_get_curve (NULL, idx, &nbits)); idx++) | ||||||
|  |     { | ||||||
|  |       if (verbose) | ||||||
|  |         printf ("%s - %u bits\n", name, nbits); | ||||||
|  |     } | ||||||
|  |   if (idx != N_CURVES) | ||||||
|  |     fail ("expected %d curves but got %d\n", N_CURVES, idx); | ||||||
|  |   if (gcry_pk_get_curve (NULL, -1, NULL)) | ||||||
|  |     fail ("curve iteration failed\n"); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | static void | ||||||
|  | check_matching (void) | ||||||
|  | { | ||||||
|  |   gpg_error_t err; | ||||||
|  |   gcry_sexp_t key; | ||||||
|  |   const char *name; | ||||||
|  |   unsigned int nbits; | ||||||
|  | 
 | ||||||
|  |   err = gcry_sexp_new (&key, sample_key_1, 0, 1); | ||||||
|  |   if (err) | ||||||
|  |     die ("parsing s-expression string failed: %s\n", gpg_strerror (err)); | ||||||
|  |   name = gcry_pk_get_curve (key, 0, &nbits); | ||||||
|  |   if (!name) | ||||||
|  |     fail ("curve name not found for sample_key_1\n"); | ||||||
|  |   else if (strcmp (name, sample_key_1_curve)) | ||||||
|  |     fail ("expected curve name %s but got %s for sample_key_1\n", | ||||||
|  |           sample_key_1_curve, name); | ||||||
|  |   else if (nbits != sample_key_1_nbits) | ||||||
|  |     fail ("expected curve size %u but got %u for sample_key_1\n", | ||||||
|  |           sample_key_1_nbits, nbits); | ||||||
|  | 
 | ||||||
|  |   gcry_sexp_release (key); | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | static void | ||||||
|  | check_get_params (void) | ||||||
|  | { | ||||||
|  |   gcry_sexp_t param; | ||||||
|  |   const char *name; | ||||||
|  | 
 | ||||||
|  |   param = gcry_pk_get_param (GCRY_PK_ECDSA, sample_key_1_curve); | ||||||
|  |   if (!param) | ||||||
|  |     fail ("error gerring parameters for `%s'\n", sample_key_1_curve); | ||||||
|  | 
 | ||||||
|  |   name = gcry_pk_get_curve (param, 0, NULL); | ||||||
|  |   if (!name) | ||||||
|  |     fail ("get_param: curve name not found for sample_key_1\n"); | ||||||
|  |   else if (strcmp (name, sample_key_1_curve)) | ||||||
|  |     fail ("get_param: expected curve name %s but got %s for sample_key_1\n", | ||||||
|  |           sample_key_1_curve, name); | ||||||
|  | 
 | ||||||
|  |   gcry_sexp_release (param); | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | int | ||||||
|  | main (int argc, char **argv) | ||||||
|  | { | ||||||
|  |   if (argc > 1 && !strcmp (argv[1], "--verbose")) | ||||||
|  |     verbose = 1; | ||||||
|  |   else if (argc > 1 && !strcmp (argv[1], "--debug")) | ||||||
|  |     verbose = debug = 1; | ||||||
|  | 
 | ||||||
|  |   if (!gcry_check_version (GCRYPT_VERSION)) | ||||||
|  |     die ("version mismatch\n"); | ||||||
|  | 
 | ||||||
|  |   xgcry_control (GCRYCTL_DISABLE_SECMEM, 0); | ||||||
|  |   xgcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0); | ||||||
|  |   if (debug) | ||||||
|  |     xgcry_control (GCRYCTL_SET_DEBUG_FLAGS, 1u, 0); | ||||||
|  |   list_curves (); | ||||||
|  |   check_matching (); | ||||||
|  |   check_get_params (); | ||||||
|  | 
 | ||||||
|  |   return error_count ? 1 : 0; | ||||||
|  | } | ||||||
							
								
								
									
										1207
									
								
								SOURCES/ecc-curves.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1207
									
								
								SOURCES/ecc-curves.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										11
									
								
								SOURCES/hobble-libgcrypt
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								SOURCES/hobble-libgcrypt
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,11 @@ | |||||||
|  | #!/bin/sh | ||||||
|  | 
 | ||||||
|  | # Quit out if anything fails. | ||||||
|  | set -e -x | ||||||
|  | 
 | ||||||
|  | # Clean out patent-or-otherwise-encumbered code. | ||||||
|  | # EC:    ????????? ??/??/2015 | ||||||
|  | 
 | ||||||
|  | rm -f cipher/ecc-curves.c | ||||||
|  | rm -f tests/curves.c | ||||||
|  | rm -f tests/t-mpi-point.c | ||||||
							
								
								
									
										104
									
								
								SOURCES/libgcrypt-1.6.1-mpicoder-gccopt.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								SOURCES/libgcrypt-1.6.1-mpicoder-gccopt.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,104 @@ | |||||||
|  | diff -up libgcrypt-1.6.1/mpi/mpicoder.c.gccopt libgcrypt-1.6.1/mpi/mpicoder.c
 | ||||||
|  | --- libgcrypt-1.6.1/mpi/mpicoder.c.gccopt	2014-02-28 15:37:53.983139821 +0100
 | ||||||
|  | +++ libgcrypt-1.6.1/mpi/mpicoder.c	2014-02-28 15:47:35.312576387 +0100
 | ||||||
|  | @@ -627,16 +627,16 @@ _gcry_mpi_print (enum gcry_mpi_format fo
 | ||||||
|  |            extra = 1; | ||||||
|  |  	} | ||||||
|  |   | ||||||
|  | -      if (buffer && n > len)
 | ||||||
|  | -        {
 | ||||||
|  | -          /* The provided buffer is too short. */
 | ||||||
|  | -          xfree (tmp);
 | ||||||
|  | -          return GPG_ERR_TOO_SHORT;
 | ||||||
|  | -	}
 | ||||||
|  |        if (buffer) | ||||||
|  |          { | ||||||
|  |            unsigned char *s = buffer; | ||||||
|  |   | ||||||
|  | +          if (n > len)
 | ||||||
|  | +            {
 | ||||||
|  | +              /* The provided buffer is too short. */
 | ||||||
|  | +              xfree (tmp);
 | ||||||
|  | +              return GPG_ERR_TOO_SHORT;
 | ||||||
|  | +            }
 | ||||||
|  |            if (extra == 1) | ||||||
|  |              *s++ = 0; | ||||||
|  |            else if (extra) | ||||||
|  | @@ -654,13 +654,12 @@ _gcry_mpi_print (enum gcry_mpi_format fo
 | ||||||
|  |        /* Note:  We ignore the sign for this format.  */ | ||||||
|  |        /* FIXME: for performance reasons we should put this into | ||||||
|  |  	 mpi_aprint because we can then use the buffer directly.  */ | ||||||
|  | -
 | ||||||
|  | -      if (buffer && n > len)
 | ||||||
|  | -        return GPG_ERR_TOO_SHORT;
 | ||||||
|  |        if (buffer) | ||||||
|  |          { | ||||||
|  |            unsigned char *tmp; | ||||||
|  |   | ||||||
|  | +          if (n > len)
 | ||||||
|  | +            return GPG_ERR_TOO_SHORT;
 | ||||||
|  |            tmp = _gcry_mpi_get_buffer (a, 0, &n, NULL); | ||||||
|  |            if (!tmp) | ||||||
|  |              return gpg_err_code_from_syserror (); | ||||||
|  | @@ -678,14 +677,14 @@ _gcry_mpi_print (enum gcry_mpi_format fo
 | ||||||
|  |        if (negative) | ||||||
|  |          return GPG_ERR_INV_ARG; | ||||||
|  |   | ||||||
|  | -      if (buffer && n+2 > len)
 | ||||||
|  | -        return GPG_ERR_TOO_SHORT;
 | ||||||
|  | -
 | ||||||
|  |        if (buffer) | ||||||
|  |          { | ||||||
|  |            unsigned char *tmp; | ||||||
|  |            unsigned char *s = buffer; | ||||||
|  |   | ||||||
|  | +          if (n+2 > len)
 | ||||||
|  | +            return GPG_ERR_TOO_SHORT;
 | ||||||
|  | +
 | ||||||
|  |            s[0] = nbits >> 8; | ||||||
|  |            s[1] = nbits; | ||||||
|  |   | ||||||
|  | @@ -724,16 +723,16 @@ _gcry_mpi_print (enum gcry_mpi_format fo
 | ||||||
|  |            extra=1; | ||||||
|  |  	} | ||||||
|  |   | ||||||
|  | -      if (buffer && n+4 > len)
 | ||||||
|  | -        {
 | ||||||
|  | -          xfree(tmp);
 | ||||||
|  | -          return GPG_ERR_TOO_SHORT;
 | ||||||
|  | -	}
 | ||||||
|  | -
 | ||||||
|  |        if (buffer) | ||||||
|  |          { | ||||||
|  |            unsigned char *s = buffer; | ||||||
|  |   | ||||||
|  | +          if (n+4 > len)
 | ||||||
|  | +            {
 | ||||||
|  | +              xfree(tmp);
 | ||||||
|  | +              return GPG_ERR_TOO_SHORT;
 | ||||||
|  | +            }
 | ||||||
|  | +
 | ||||||
|  |            *s++ = n >> 24; | ||||||
|  |            *s++ = n >> 16; | ||||||
|  |            *s++ = n >> 8; | ||||||
|  | @@ -761,15 +760,15 @@ _gcry_mpi_print (enum gcry_mpi_format fo
 | ||||||
|  |        if (!n || (*tmp & 0x80)) | ||||||
|  |          extra = 2; | ||||||
|  |   | ||||||
|  | -      if (buffer && 2*n + extra + negative + 1 > len)
 | ||||||
|  | -        {
 | ||||||
|  | -          xfree(tmp);
 | ||||||
|  | -          return GPG_ERR_TOO_SHORT;
 | ||||||
|  | -	}
 | ||||||
|  |        if (buffer) | ||||||
|  |          { | ||||||
|  |            unsigned char *s = buffer; | ||||||
|  |   | ||||||
|  | +          if (2*n + extra + negative + 1 > len)
 | ||||||
|  | +            {
 | ||||||
|  | +              xfree(tmp);
 | ||||||
|  | +              return GPG_ERR_TOO_SHORT;
 | ||||||
|  | +	    }
 | ||||||
|  |            if (negative) | ||||||
|  |              *s++ = '-'; | ||||||
|  |            if (extra) | ||||||
							
								
								
									
										89
									
								
								SOURCES/libgcrypt-1.6.2-use-fipscheck.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								SOURCES/libgcrypt-1.6.2-use-fipscheck.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,89 @@ | |||||||
|  | diff -up libgcrypt-1.6.2/src/fips.c.use-fipscheck libgcrypt-1.6.2/src/fips.c
 | ||||||
|  | --- libgcrypt-1.6.2/src/fips.c.use-fipscheck	2014-08-21 14:50:39.000000000 +0200
 | ||||||
|  | +++ libgcrypt-1.6.2/src/fips.c	2014-09-26 11:42:20.999588282 +0200
 | ||||||
|  | @@ -578,23 +578,50 @@ run_random_selftests (void)
 | ||||||
|  |    return !!err; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | +#ifdef ENABLE_HMAC_BINARY_CHECK
 | ||||||
|  | +static int
 | ||||||
|  | +get_library_path(const char *libname, const char *symbolname, char *path, size_t pathlen)
 | ||||||
|  | +{
 | ||||||
|  | +    Dl_info info;
 | ||||||
|  | +    void *dl, *sym;
 | ||||||
|  | +    int rv = -1;
 | ||||||
|  | +
 | ||||||
|  | +        dl = dlopen(libname, RTLD_LAZY);
 | ||||||
|  | +        if (dl == NULL) {
 | ||||||
|  | +            return -1;
 | ||||||
|  | +        }       
 | ||||||
|  | +
 | ||||||
|  | +    sym = dlsym(dl, symbolname);
 | ||||||
|  | +
 | ||||||
|  | +    if (sym != NULL && dladdr(sym, &info)) {
 | ||||||
|  | +	strncpy(path, info.dli_fname, pathlen-1);
 | ||||||
|  | +	path[pathlen-1] = '\0';
 | ||||||
|  | +	rv = 0;
 | ||||||
|  | +    }
 | ||||||
|  | +
 | ||||||
|  | +    dlclose(dl);	
 | ||||||
|  | +    
 | ||||||
|  | +    return rv;
 | ||||||
|  | +}
 | ||||||
|  | +#endif
 | ||||||
|  | +
 | ||||||
|  |  /* Run an integrity check on the binary.  Returns 0 on success.  */ | ||||||
|  |  static int | ||||||
|  |  check_binary_integrity (void) | ||||||
|  |  { | ||||||
|  |  #ifdef ENABLE_HMAC_BINARY_CHECK | ||||||
|  |    gpg_error_t err; | ||||||
|  | -  Dl_info info;
 | ||||||
|  | +  char libpath[4096];
 | ||||||
|  |    unsigned char digest[32]; | ||||||
|  |    int dlen; | ||||||
|  |    char *fname = NULL; | ||||||
|  | -  const char key[] = "What am I, a doctor or a moonshuttle conductor?";
 | ||||||
|  | -
 | ||||||
|  | -  if (!dladdr ("gcry_check_version", &info))
 | ||||||
|  | +  const char key[] = "orboDeJITITejsirpADONivirpUkvarP";
 | ||||||
|  | +  
 | ||||||
|  | +  if (get_library_path ("libgcrypt.so.20", "gcry_check_version", libpath, sizeof(libpath)))
 | ||||||
|  |      err = gpg_error_from_syserror (); | ||||||
|  |    else | ||||||
|  |      { | ||||||
|  | -      dlen = _gcry_hmac256_file (digest, sizeof digest, info.dli_fname,
 | ||||||
|  | +      dlen = _gcry_hmac256_file (digest, sizeof digest, libpath,
 | ||||||
|  |                                   key, strlen (key)); | ||||||
|  |        if (dlen < 0) | ||||||
|  |          err = gpg_error_from_syserror (); | ||||||
|  | @@ -602,7 +629,7 @@ check_binary_integrity (void)
 | ||||||
|  |          err = gpg_error (GPG_ERR_INTERNAL); | ||||||
|  |        else | ||||||
|  |          { | ||||||
|  | -          fname = xtrymalloc (strlen (info.dli_fname) + 1 + 5 + 1 );
 | ||||||
|  | +          fname = xtrymalloc (strlen (libpath) + 1 + 5 + 1 );
 | ||||||
|  |            if (!fname) | ||||||
|  |              err = gpg_error_from_syserror (); | ||||||
|  |            else | ||||||
|  | @@ -611,7 +638,7 @@ check_binary_integrity (void)
 | ||||||
|  |                char *p; | ||||||
|  |   | ||||||
|  |                /* Prefix the basename with a dot.  */ | ||||||
|  | -              strcpy (fname, info.dli_fname);
 | ||||||
|  | +              strcpy (fname, libpath);
 | ||||||
|  |                p = strrchr (fname, '/'); | ||||||
|  |                if (p) | ||||||
|  |                  p++; | ||||||
|  | diff -up libgcrypt-1.6.2/src/Makefile.in.use-fipscheck libgcrypt-1.6.2/src/Makefile.in
 | ||||||
|  | --- libgcrypt-1.6.2/src/Makefile.in.use-fipscheck	2014-08-21 15:14:08.000000000 +0200
 | ||||||
|  | +++ libgcrypt-1.6.2/src/Makefile.in	2014-09-26 11:41:13.271059281 +0200
 | ||||||
|  | @@ -449,7 +449,7 @@ libgcrypt_la_LIBADD = $(gcrypt_res) \
 | ||||||
|  |  	../cipher/libcipher.la \ | ||||||
|  |  	../random/librandom.la \ | ||||||
|  |  	../mpi/libmpi.la \ | ||||||
|  | -	../compat/libcompat.la  $(GPG_ERROR_LIBS)
 | ||||||
|  | +	../compat/libcompat.la  $(GPG_ERROR_LIBS) -ldl
 | ||||||
|  |   | ||||||
|  |  dumpsexp_SOURCES = dumpsexp.c | ||||||
|  |  dumpsexp_CFLAGS = $(arch_gpg_error_cflags) | ||||||
							
								
								
									
										122
									
								
								SOURCES/libgcrypt-1.7.3-ecc-test-fix.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								SOURCES/libgcrypt-1.7.3-ecc-test-fix.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,122 @@ | |||||||
|  | diff -up libgcrypt-1.7.3/tests/benchmark.c.eccfix libgcrypt-1.7.3/tests/benchmark.c
 | ||||||
|  | --- libgcrypt-1.7.3/tests/benchmark.c.eccfix	2016-07-14 11:19:17.000000000 +0200
 | ||||||
|  | +++ libgcrypt-1.7.3/tests/benchmark.c	2016-11-22 16:21:00.109004197 +0100
 | ||||||
|  | @@ -1412,7 +1412,7 @@ ecc_bench (int iterations, int print_hea
 | ||||||
|  |  { | ||||||
|  |  #if USE_ECC | ||||||
|  |    gpg_error_t err; | ||||||
|  | -  const char *p_sizes[] = { "192", "224", "256", "384", "521", "Ed25519",
 | ||||||
|  | +  const char *p_sizes[] = { "224", "256", "384", "521", "Ed25519",
 | ||||||
|  |                "gost256", "gost512" }; | ||||||
|  |    int testno; | ||||||
|  |   | ||||||
|  | diff -up libgcrypt-1.7.3/tests/dsa-rfc6979.c.eccfix libgcrypt-1.7.3/tests/dsa-rfc6979.c
 | ||||||
|  | --- libgcrypt-1.7.3/tests/dsa-rfc6979.c.eccfix	2016-02-18 09:38:03.000000000 +0100
 | ||||||
|  | +++ libgcrypt-1.7.3/tests/dsa-rfc6979.c	2016-11-22 16:22:11.804674008 +0100
 | ||||||
|  | @@ -210,16 +210,6 @@ check_dsa_rfc6979 (void)
 | ||||||
|  |        " ))" | ||||||
|  |      }, | ||||||
|  |      { | ||||||
|  | -      "ECDSA, 192 bits (prime field)",
 | ||||||
|  | -      "(private-key"
 | ||||||
|  | -      " (ecdsa"
 | ||||||
|  | -      " (curve \"NIST P-192\")"
 | ||||||
|  | -      " (q #04AC2C77F529F91689FEA0EA5EFEC7F210D8EEA0B9E047ED56"
 | ||||||
|  | -      "       3BC723E57670BD4887EBC732C523063D0A7C957BC97C1C43#)"
 | ||||||
|  | -      " (d #6FAB034934E4C0FC9AE67F5B5659A9D7D1FEFD187EE09FD4#)"
 | ||||||
|  | -      " ))"
 | ||||||
|  | -    },
 | ||||||
|  | -    {
 | ||||||
|  |        "ECDSA, 224 bits (prime field)", | ||||||
|  |        "(private-key" | ||||||
|  |        " (ecdsa" | ||||||
|  | @@ -443,89 +433,6 @@ check_dsa_rfc6979 (void)
 | ||||||
|  |        "C9F0BDABCC0D880BB137A994CC7F3980CE91CC10FAF529FC46565B15CEA854E1" | ||||||
|  |      }, | ||||||
|  |      { | ||||||
|  | -      "ECDSA, 192 bits (prime field)",
 | ||||||
|  | -      "With SHA-1, message = \"sample\"",
 | ||||||
|  | -      "sha1", "sample",
 | ||||||
|  | -      "37D7CA00D2C7B0E5E412AC03BD44BA837FDD5B28CD3B0021",
 | ||||||
|  | -      "98C6BD12B23EAF5E2A2045132086BE3EB8EBD62ABF6698FF",
 | ||||||
|  | -      "57A22B07DEA9530F8DE9471B1DC6624472E8E2844BC25B64"
 | ||||||
|  | -    },
 | ||||||
|  | -    {
 | ||||||
|  | -      "ECDSA, 192 bits (prime field)",
 | ||||||
|  | -      "With SHA-224, message = \"sample\"",
 | ||||||
|  | -      "sha224", "sample",
 | ||||||
|  | -      "4381526B3FC1E7128F202E194505592F01D5FF4C5AF015D8",
 | ||||||
|  | -      "A1F00DAD97AEEC91C95585F36200C65F3C01812AA60378F5",
 | ||||||
|  | -      "E07EC1304C7C6C9DEBBE980B9692668F81D4DE7922A0F97A"
 | ||||||
|  | -    },
 | ||||||
|  | -    {
 | ||||||
|  | -      "ECDSA, 192 bits (prime field)",
 | ||||||
|  | -      "With SHA-256, message = \"sample\"",
 | ||||||
|  | -      "sha256", "sample",
 | ||||||
|  | -      "32B1B6D7D42A05CB449065727A84804FB1A3E34D8F261496",
 | ||||||
|  | -      "4B0B8CE98A92866A2820E20AA6B75B56382E0F9BFD5ECB55",
 | ||||||
|  | -      "CCDB006926EA9565CBADC840829D8C384E06DE1F1E381B85"
 | ||||||
|  | -    },
 | ||||||
|  | -    {
 | ||||||
|  | -      "ECDSA, 192 bits (prime field)",
 | ||||||
|  | -      "With SHA-384, message = \"sample\"",
 | ||||||
|  | -      "sha384", "sample",
 | ||||||
|  | -      "4730005C4FCB01834C063A7B6760096DBE284B8252EF4311",
 | ||||||
|  | -      "DA63BF0B9ABCF948FBB1E9167F136145F7A20426DCC287D5",
 | ||||||
|  | -      "C3AA2C960972BD7A2003A57E1C4C77F0578F8AE95E31EC5E"
 | ||||||
|  | -    },
 | ||||||
|  | -    {
 | ||||||
|  | -      "ECDSA, 192 bits (prime field)",
 | ||||||
|  | -      "With SHA-512, message = \"sample\"",
 | ||||||
|  | -      "sha512", "sample",
 | ||||||
|  | -      "A2AC7AB055E4F20692D49209544C203A7D1F2C0BFBC75DB1",
 | ||||||
|  | -      "4D60C5AB1996BD848343B31C00850205E2EA6922DAC2E4B8",
 | ||||||
|  | -      "3F6E837448F027A1BF4B34E796E32A811CBB4050908D8F67"
 | ||||||
|  | -    },
 | ||||||
|  | -    {
 | ||||||
|  | -      "ECDSA, 192 bits (prime field)",
 | ||||||
|  | -      "With SHA-1, message = \"test\"",
 | ||||||
|  | -      "sha1", "test",
 | ||||||
|  | -      "D9CF9C3D3297D3260773A1DA7418DB5537AB8DD93DE7FA25",
 | ||||||
|  | -      "0F2141A0EBBC44D2E1AF90A50EBCFCE5E197B3B7D4DE036D",
 | ||||||
|  | -      "EB18BC9E1F3D7387500CB99CF5F7C157070A8961E38700B7"
 | ||||||
|  | -    },
 | ||||||
|  | -    {
 | ||||||
|  | -      "ECDSA, 192 bits (prime field)",
 | ||||||
|  | -      "With SHA-224, message = \"test\"",
 | ||||||
|  | -      "sha224", "test",
 | ||||||
|  | -      "F5DC805F76EF851800700CCE82E7B98D8911B7D510059FBE",
 | ||||||
|  | -      "6945A1C1D1B2206B8145548F633BB61CEF04891BAF26ED34",
 | ||||||
|  | -      "B7FB7FDFC339C0B9BD61A9F5A8EAF9BE58FC5CBA2CB15293"
 | ||||||
|  | -    },
 | ||||||
|  | -    {
 | ||||||
|  | -      "ECDSA, 192 bits (prime field)",
 | ||||||
|  | -      "With SHA-256, message = \"test\"",
 | ||||||
|  | -      "sha256", "test",
 | ||||||
|  | -      "5C4CE89CF56D9E7C77C8585339B006B97B5F0680B4306C6C",
 | ||||||
|  | -      "3A718BD8B4926C3B52EE6BBE67EF79B18CB6EB62B1AD97AE",
 | ||||||
|  | -      "5662E6848A4A19B1F1AE2F72ACD4B8BBE50F1EAC65D9124F"
 | ||||||
|  | -    },
 | ||||||
|  | -    {
 | ||||||
|  | -      "ECDSA, 192 bits (prime field)",
 | ||||||
|  | -      "With SHA-384, message = \"test\"",
 | ||||||
|  | -      "sha384", "test",
 | ||||||
|  | -      "5AFEFB5D3393261B828DB6C91FBC68C230727B030C975693",
 | ||||||
|  | -      "B234B60B4DB75A733E19280A7A6034BD6B1EE88AF5332367",
 | ||||||
|  | -      "7994090B2D59BB782BE57E74A44C9A1C700413F8ABEFE77A"
 | ||||||
|  | -    },
 | ||||||
|  | -    {
 | ||||||
|  | -      "ECDSA, 192 bits (prime field)",
 | ||||||
|  | -      "With SHA-512, message = \"test\"",
 | ||||||
|  | -      "sha512", "test",
 | ||||||
|  | -      "0758753A5254759C7CFBAD2E2D9B0792EEE44136C9480527",
 | ||||||
|  | -      "FE4F4AE86A58B6507946715934FE2D8FF9D95B6B098FE739",
 | ||||||
|  | -      "74CF5605C98FBA0E1EF34D4B5A1577A7DCF59457CAE52290"
 | ||||||
|  | -    },
 | ||||||
|  | -
 | ||||||
|  | -
 | ||||||
|  | -
 | ||||||
|  | -    {
 | ||||||
|  |        "ECDSA, 224 bits (prime field)", | ||||||
|  |        "With SHA-1, message = \"sample\"", | ||||||
|  |        "sha1", "sample", | ||||||
							
								
								
									
										1311
									
								
								SOURCES/libgcrypt-1.7.3-fips-cavs.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1311
									
								
								SOURCES/libgcrypt-1.7.3-fips-cavs.patch
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										35
									
								
								SOURCES/libgcrypt-1.7.3-fips-reqs.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								SOURCES/libgcrypt-1.7.3-fips-reqs.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,35 @@ | |||||||
|  | diff -up libgcrypt-1.7.3/src/visibility.c.fips-reqs libgcrypt-1.7.3/src/visibility.c
 | ||||||
|  | --- libgcrypt-1.7.3/src/visibility.c.fips-reqs	2016-03-23 12:59:34.000000000 +0100
 | ||||||
|  | +++ libgcrypt-1.7.3/src/visibility.c	2016-11-22 16:29:36.992042480 +0100
 | ||||||
|  | @@ -1288,6 +1288,8 @@ gcry_kdf_derive (const void *passphrase,
 | ||||||
|  |                   unsigned long iterations, | ||||||
|  |                   size_t keysize, void *keybuffer) | ||||||
|  |  { | ||||||
|  | +  if (!fips_is_operational ())
 | ||||||
|  | +    return gpg_error (fips_not_operational ());
 | ||||||
|  |    return gpg_error (_gcry_kdf_derive (passphrase, passphraselen, algo, hashalgo, | ||||||
|  |                                        salt, saltlen, iterations, | ||||||
|  |                                        keysize, keybuffer)); | ||||||
|  | @@ -1343,6 +1345,13 @@ void
 | ||||||
|  |  gcry_mpi_randomize (gcry_mpi_t w, | ||||||
|  |                      unsigned int nbits, enum gcry_random_level level) | ||||||
|  |  { | ||||||
|  | +  if (!fips_is_operational ())
 | ||||||
|  | +    {
 | ||||||
|  | +      (void)fips_not_operational ();
 | ||||||
|  | +      fips_signal_fatal_error ("called in non-operational state");
 | ||||||
|  | +      fips_noreturn ();
 | ||||||
|  | +    }
 | ||||||
|  | +
 | ||||||
|  |    _gcry_mpi_randomize (w, nbits, level); | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | @@ -1368,6 +1377,8 @@ gcry_prime_generate (gcry_mpi_t *prime,
 | ||||||
|  |                       gcry_random_level_t random_level, | ||||||
|  |                       unsigned int flags) | ||||||
|  |  { | ||||||
|  | +  if (!fips_is_operational ())
 | ||||||
|  | +    return gpg_error (fips_not_operational ());
 | ||||||
|  |    return gpg_error (_gcry_prime_generate (prime, prime_bits, factor_bits, | ||||||
|  |                                            factors, cb_func, cb_arg, | ||||||
|  |                                            random_level, flags)); | ||||||
							
								
								
									
										115
									
								
								SOURCES/libgcrypt-1.8.0-tests.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										115
									
								
								SOURCES/libgcrypt-1.8.0-tests.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,115 @@ | |||||||
|  | diff -up libgcrypt-1.8.0/cipher/dsa.c.tests libgcrypt-1.8.0/cipher/dsa.c
 | ||||||
|  | --- libgcrypt-1.8.0/cipher/dsa.c.tests	2016-04-07 17:30:08.000000000 +0200
 | ||||||
|  | +++ 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
 | ||||||
|  |                                               &prime_q, &prime_p, | ||||||
|  |                                               r_counter, | ||||||
|  |                                               r_seed, r_seedlen); | ||||||
|  | -      else
 | ||||||
|  | -        ec = _gcry_generate_fips186_3_prime (nbits, qbits, NULL, 0,
 | ||||||
|  | +      else if (!domain->p || !domain->q)
 | ||||||
|  | +        ec = _gcry_generate_fips186_3_prime (nbits, qbits,
 | ||||||
|  | +                                             initial_seed.seed,
 | ||||||
|  | +                                             initial_seed.seedlen,
 | ||||||
|  |                                               &prime_q, &prime_p, | ||||||
|  |                                               r_counter, | ||||||
|  |                                               r_seed, r_seedlen, NULL); | ||||||
|  | +      else
 | ||||||
|  | +        {
 | ||||||
|  | +          /* Domain parameters p and q are given; use them.  */
 | ||||||
|  | +          prime_p = mpi_copy (domain->p);
 | ||||||
|  | +          prime_q = mpi_copy (domain->q);
 | ||||||
|  | +          gcry_assert (mpi_get_nbits (prime_p) == nbits);
 | ||||||
|  | +          gcry_assert (mpi_get_nbits (prime_q) == qbits);
 | ||||||
|  | +          ec = 0;
 | ||||||
|  | +        }
 | ||||||
|  |        sexp_release (initial_seed.sexp); | ||||||
|  |        if (ec) | ||||||
|  |          goto leave; | ||||||
|  | @@ -855,13 +866,12 @@ dsa_generate (const gcry_sexp_t genparms
 | ||||||
|  |        sexp_release (l1); | ||||||
|  |        sexp_release (domainsexp); | ||||||
|  |   | ||||||
|  | -      /* Check that all domain parameters are available.  */
 | ||||||
|  | -      if (!domain.p || !domain.q || !domain.g)
 | ||||||
|  | +      /* Check that p and q domain parameters are available.  */
 | ||||||
|  | +      if (!domain.p || !domain.q || (!domain.g && !(flags & PUBKEY_FLAG_USE_FIPS186)))
 | ||||||
|  |          { | ||||||
|  |            _gcry_mpi_release (domain.p); | ||||||
|  |            _gcry_mpi_release (domain.q); | ||||||
|  |            _gcry_mpi_release (domain.g); | ||||||
|  | -          sexp_release (deriveparms);
 | ||||||
|  |            return GPG_ERR_MISSING_VALUE; | ||||||
|  |          } | ||||||
|  |   | ||||||
|  | diff -up libgcrypt-1.8.0/cipher/rsa.c.tests libgcrypt-1.8.0/cipher/rsa.c
 | ||||||
|  | --- libgcrypt-1.8.0/cipher/rsa.c.tests	2017-07-06 10:21:36.000000000 +0200
 | ||||||
|  | +++ 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
 | ||||||
|  |   | ||||||
|  |    *swapped = 0; | ||||||
|  |   | ||||||
|  | -  if (e_value == 1)   /* Alias for a secure value. */
 | ||||||
|  | +  if (e_value == 1 || e_value == 0)   /* Alias for a secure value. */
 | ||||||
|  |      e_value = 65537; | ||||||
|  |   | ||||||
|  |    /* Point 1 of section 4.1:  k = 1024 + 256s with S >= 0  */ | ||||||
|  | diff -up libgcrypt-1.8.0/tests/keygen.c.tests libgcrypt-1.8.0/tests/keygen.c
 | ||||||
|  | --- libgcrypt-1.8.0/tests/keygen.c.tests	2017-08-15 15:10:39.551600227 +0200
 | ||||||
|  | +++ libgcrypt-1.8.0/tests/keygen.c	2017-08-15 15:16:05.433176171 +0200
 | ||||||
|  | @@ -200,11 +200,11 @@ check_rsa_keys (void)
 | ||||||
|  |   | ||||||
|  |   | ||||||
|  |    if (verbose) | ||||||
|  | -    info ("creating 512 bit RSA key with e=257\n");
 | ||||||
|  | +    info ("creating 1024 bit RSA key with e=257\n");
 | ||||||
|  |    rc = gcry_sexp_new (&keyparm, | ||||||
|  |                        "(genkey\n" | ||||||
|  |                        " (rsa\n" | ||||||
|  | -                      "  (nbits 3:512)\n"
 | ||||||
|  | +                      "  (nbits 4:1024)\n"
 | ||||||
|  |                        "  (rsa-use-e 3:257)\n" | ||||||
|  |                        " ))", 0, 1); | ||||||
|  |    if (rc) | ||||||
|  | @@ -225,11 +225,11 @@ check_rsa_keys (void)
 | ||||||
|  |    gcry_sexp_release (key); | ||||||
|  |   | ||||||
|  |    if (verbose) | ||||||
|  | -    info ("creating 512 bit RSA key with default e\n");
 | ||||||
|  | +    info ("creating 1024 bit RSA key with default e\n");
 | ||||||
|  |    rc = gcry_sexp_new (&keyparm, | ||||||
|  |                        "(genkey\n" | ||||||
|  |                        " (rsa\n" | ||||||
|  | -                      "  (nbits 3:512)\n"
 | ||||||
|  | +                      "  (nbits 4:1024)\n"
 | ||||||
|  |                        "  (rsa-use-e 1:0)\n" | ||||||
|  |                        " ))", 0, 1); | ||||||
|  |    if (rc) | ||||||
|  | @@ -309,12 +309,12 @@ check_dsa_keys (void)
 | ||||||
|  |      } | ||||||
|  |   | ||||||
|  |    if (verbose) | ||||||
|  | -    info ("creating 1536 bit DSA key\n");
 | ||||||
|  | +    info ("creating 2048 bit DSA key\n");
 | ||||||
|  |    rc = gcry_sexp_new (&keyparm, | ||||||
|  |                        "(genkey\n" | ||||||
|  |                        " (dsa\n" | ||||||
|  | -                      "  (nbits 4:1536)\n"
 | ||||||
|  | -                      "  (qbits 3:224)\n"
 | ||||||
|  | +                      "  (nbits 4:2048)\n"
 | ||||||
|  | +                      "  (qbits 3:256)\n"
 | ||||||
|  |                        " ))", 0, 1); | ||||||
|  |    if (rc) | ||||||
|  |      die ("error creating S-expression: %s\n", gpg_strerror (rc)); | ||||||
|  | diff -up libgcrypt-1.8.0/tests/pubkey.c.tests libgcrypt-1.8.0/tests/pubkey.c
 | ||||||
|  | --- libgcrypt-1.8.0/tests/pubkey.c.tests	2017-01-18 15:24:25.000000000 +0100
 | ||||||
|  | +++ libgcrypt-1.8.0/tests/pubkey.c	2017-08-15 15:10:39.552600207 +0200
 | ||||||
|  | @@ -595,7 +595,7 @@ get_dsa_key_fips186_with_seed_new (gcry_
 | ||||||
|  |       "    (use-fips186)" | ||||||
|  |       "    (transient-key)" | ||||||
|  |       "    (derive-parms" | ||||||
|  | -     "      (seed #0cb1990c1fd3626055d7a0096f8fa99807399871#))))",
 | ||||||
|  | +     "      (seed #8b4c4d671fff82e8ed932260206d0571e3a1c2cee8cd94cb73fe58f9b67488fa#))))",
 | ||||||
|  |       0, 1); | ||||||
|  |    if (rc) | ||||||
|  |      die ("error creating S-expression: %s\n", gcry_strerror (rc)); | ||||||
							
								
								
									
										77
									
								
								SOURCES/libgcrypt-1.8.0-use-poll.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								SOURCES/libgcrypt-1.8.0-use-poll.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,77 @@ | |||||||
|  | diff -up libgcrypt-1.8.0/random/rndlinux.c.use-poll libgcrypt-1.8.0/random/rndlinux.c
 | ||||||
|  | --- libgcrypt-1.8.0/random/rndlinux.c.use-poll	2017-06-24 13:34:29.000000000 +0200
 | ||||||
|  | +++ libgcrypt-1.8.0/random/rndlinux.c	2017-08-15 15:37:37.604629377 +0200
 | ||||||
|  | @@ -32,6 +32,7 @@
 | ||||||
|  |  #include <string.h> | ||||||
|  |  #include <unistd.h> | ||||||
|  |  #include <fcntl.h> | ||||||
|  | +#include <poll.h>
 | ||||||
|  |  #if defined(__linux__) && defined(HAVE_SYSCALL) | ||||||
|  |  # include <sys/syscall.h> | ||||||
|  |  #endif | ||||||
|  | @@ -216,9 +217,8 @@ _gcry_rndlinux_gather_random (void (*add
 | ||||||
|  |                   return with something we will actually use 100ms. */ | ||||||
|  |    while (length) | ||||||
|  |      { | ||||||
|  | -      fd_set rfds;
 | ||||||
|  | -      struct timeval tv;
 | ||||||
|  |        int rc; | ||||||
|  | +      struct pollfd pfd;
 | ||||||
|  |   | ||||||
|  |        /* 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 | ||||||
|  | @@ -276,36 +276,25 @@ _gcry_rndlinux_gather_random (void (*add
 | ||||||
|  |            any_need_entropy = 1; | ||||||
|  |          } | ||||||
|  |   | ||||||
|  | -      /* If the system has no limit on the number of file descriptors
 | ||||||
|  | -         and we encounter an fd which is larger than the fd_set size,
 | ||||||
|  | -         we don't use the select at all.  The select code is only used
 | ||||||
|  | -         to emit progress messages.  A better solution would be to
 | ||||||
|  | -         fall back to poll() if available.  */
 | ||||||
|  | -#ifdef FD_SETSIZE
 | ||||||
|  | -      if (fd < FD_SETSIZE)
 | ||||||
|  | -#endif
 | ||||||
|  | +      pfd.fd = fd;
 | ||||||
|  | +      pfd.events = POLLIN;
 | ||||||
|  | +
 | ||||||
|  | +      _gcry_pre_syscall ();
 | ||||||
|  | +      rc = poll(&pfd, 1, delay);
 | ||||||
|  | +      _gcry_post_syscall ();
 | ||||||
|  | +      if (!rc)
 | ||||||
|  |          { | ||||||
|  | -          FD_ZERO(&rfds);
 | ||||||
|  | -          FD_SET(fd, &rfds);
 | ||||||
|  | -          tv.tv_sec = delay;
 | ||||||
|  | -          tv.tv_usec = delay? 0 : 100000;
 | ||||||
|  | -          _gcry_pre_syscall ();
 | ||||||
|  | -          rc = select (fd+1, &rfds, NULL, NULL, &tv);
 | ||||||
|  | -          _gcry_post_syscall ();
 | ||||||
|  | -          if (!rc)
 | ||||||
|  | -            {
 | ||||||
|  | -              any_need_entropy = 1;
 | ||||||
|  | -              delay = 3; /* Use 3 seconds henceforth.  */
 | ||||||
|  | -              continue;
 | ||||||
|  | -            }
 | ||||||
|  | -          else if( rc == -1 )
 | ||||||
|  | -            {
 | ||||||
|  | -              log_error ("select() error: %s\n", strerror(errno));
 | ||||||
|  | -              if (!delay)
 | ||||||
|  | -                delay = 1; /* Use 1 second if we encounter an error before
 | ||||||
|  | -                              we have ever blocked.  */
 | ||||||
|  | -              continue;
 | ||||||
|  | -            }
 | ||||||
|  | +          any_need_entropy = 1;
 | ||||||
|  | +          delay = 3000; /* Use 3 seconds henceforth.  */
 | ||||||
|  | +          continue;
 | ||||||
|  | +        }
 | ||||||
|  | +        else if( rc == -1 )
 | ||||||
|  | +        {
 | ||||||
|  | +          log_error ("poll() error: %s\n", strerror(errno));
 | ||||||
|  | +          if (!delay)
 | ||||||
|  | +            delay = 1000; /* Use 1 second if we encounter an error before
 | ||||||
|  | +                          we have ever blocked.  */
 | ||||||
|  | +          continue;
 | ||||||
|  |          } | ||||||
|  |   | ||||||
|  |        do | ||||||
							
								
								
									
										256
									
								
								SOURCES/libgcrypt-1.8.3-fips-ctor.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										256
									
								
								SOURCES/libgcrypt-1.8.3-fips-ctor.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,256 @@ | |||||||
|  | diff -up libgcrypt-1.8.3/cipher/md.c.fips-ctor libgcrypt-1.8.3/cipher/md.c
 | ||||||
|  | --- libgcrypt-1.8.3/cipher/md.c.fips-ctor	2017-11-23 19:16:58.000000000 +0100
 | ||||||
|  | +++ libgcrypt-1.8.3/cipher/md.c	2018-07-12 13:24:54.088403006 +0200
 | ||||||
|  | @@ -411,11 +411,8 @@ md_enable (gcry_md_hd_t hd, int algorith
 | ||||||
|  |   | ||||||
|  |    if (!err && algorithm == GCRY_MD_MD5 && fips_mode ()) | ||||||
|  |      { | ||||||
|  | -      _gcry_inactivate_fips_mode ("MD5 used");
 | ||||||
|  |        if (_gcry_enforced_fips_mode () ) | ||||||
|  |          { | ||||||
|  | -          /* We should never get to here because we do not register
 | ||||||
|  | -             MD5 in enforced fips mode. But better throw an error.  */
 | ||||||
|  |            err = GPG_ERR_DIGEST_ALGO; | ||||||
|  |          } | ||||||
|  |      } | ||||||
|  | diff -up libgcrypt-1.8.3/src/fips.c.fips-ctor libgcrypt-1.8.3/src/fips.c
 | ||||||
|  | --- libgcrypt-1.8.3/src/fips.c.fips-ctor	2018-07-12 13:24:54.075402698 +0200
 | ||||||
|  | +++ libgcrypt-1.8.3/src/fips.c	2018-07-12 13:24:54.088403006 +0200
 | ||||||
|  | @@ -91,6 +91,31 @@ static void fips_new_state (enum module_
 | ||||||
|  |   | ||||||
|  |   | ||||||
|  |   | ||||||
|  | +/* Initialize the FSM lock - this function may only
 | ||||||
|  | +   be called once and is intended to be run from the library
 | ||||||
|  | +   constructor  */
 | ||||||
|  | +void
 | ||||||
|  | +_gcry_initialize_fsm_lock (void)
 | ||||||
|  | +{
 | ||||||
|  | +  gpg_error_t err;
 | ||||||
|  | +  /* Intitialize the lock to protect the FSM.  */
 | ||||||
|  | +  err = gpgrt_lock_init (&fsm_lock);
 | ||||||
|  | +  if (err)
 | ||||||
|  | +    {
 | ||||||
|  | +      /* If that fails we can't do anything but abort the
 | ||||||
|  | +         process. We need to use log_info so that the FSM won't
 | ||||||
|  | +         get involved.  */
 | ||||||
|  | +      log_info ("FATAL: failed to create the FSM lock in libgcrypt: %s\n",
 | ||||||
|  | +                gpg_strerror (err));
 | ||||||
|  | +#ifdef HAVE_SYSLOG
 | ||||||
|  | +      syslog (LOG_USER|LOG_ERR, "Libgcrypt error: "
 | ||||||
|  | +              "creating FSM lock failed: %s - abort",
 | ||||||
|  | +              gpg_strerror (err));
 | ||||||
|  | +#endif /*HAVE_SYSLOG*/
 | ||||||
|  | +      abort ();
 | ||||||
|  | +    }
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  |  /* Check whether the OS is in FIPS mode and record that in a module | ||||||
|  |     local variable.  If FORCE is passed as true, fips mode will be | ||||||
|  |     enabled anyway. Note: This function is not thread-safe and should | ||||||
|  | @@ -100,7 +125,6 @@ void
 | ||||||
|  |  _gcry_initialize_fips_mode (int force) | ||||||
|  |  { | ||||||
|  |    static int done; | ||||||
|  | -  gpg_error_t err;
 | ||||||
|  |   | ||||||
|  |    /* Make sure we are not accidentally called twice.  */ | ||||||
|  |    if (done) | ||||||
|  | @@ -179,24 +203,6 @@ _gcry_initialize_fips_mode (int force)
 | ||||||
|  |        /* Yes, we are in FIPS mode.  */ | ||||||
|  |        FILE *fp; | ||||||
|  |   | ||||||
|  | -      /* Intitialize the lock to protect the FSM.  */
 | ||||||
|  | -      err = gpgrt_lock_init (&fsm_lock);
 | ||||||
|  | -      if (err)
 | ||||||
|  | -        {
 | ||||||
|  | -          /* If that fails we can't do anything but abort the
 | ||||||
|  | -             process. We need to use log_info so that the FSM won't
 | ||||||
|  | -             get involved.  */
 | ||||||
|  | -          log_info ("FATAL: failed to create the FSM lock in libgcrypt: %s\n",
 | ||||||
|  | -                    gpg_strerror (err));
 | ||||||
|  | -#ifdef HAVE_SYSLOG
 | ||||||
|  | -          syslog (LOG_USER|LOG_ERR, "Libgcrypt error: "
 | ||||||
|  | -                  "creating FSM lock failed: %s - abort",
 | ||||||
|  | -                  gpg_strerror (err));
 | ||||||
|  | -#endif /*HAVE_SYSLOG*/
 | ||||||
|  | -          abort ();
 | ||||||
|  | -        }
 | ||||||
|  | -
 | ||||||
|  | -
 | ||||||
|  |        /* If the FIPS force files exists, is readable and has a number | ||||||
|  |           != 0 on its first line, we enable the enforced fips mode.  */ | ||||||
|  |        fp = fopen (FIPS_FORCE_FILE, "r"); | ||||||
|  | @@ -359,16 +365,20 @@ _gcry_fips_is_operational (void)
 | ||||||
|  |  { | ||||||
|  |    int result; | ||||||
|  |   | ||||||
|  | -  if (!fips_mode ())
 | ||||||
|  | +  lock_fsm ();
 | ||||||
|  | +  if (current_state == STATE_POWERON && !fips_mode ())
 | ||||||
|  | +    /* If we are at this point in POWERON state it means the FIPS
 | ||||||
|  | +       module installation was not completed. (/etc/system-fips
 | ||||||
|  | +      is not present.) */
 | ||||||
|  |      result = 1; | ||||||
|  |    else | ||||||
|  |      { | ||||||
|  | -      lock_fsm ();
 | ||||||
|  | -      if (current_state == STATE_INIT)
 | ||||||
|  | +      if (current_state == STATE_INIT || current_state == STATE_SELFTEST)
 | ||||||
|  |          { | ||||||
|  | -          /* If we are still in the INIT state, we need to run the
 | ||||||
|  | -             selftests so that the FSM can eventually get into
 | ||||||
|  | -             operational state.  Given that we would need a 2-phase
 | ||||||
|  | +          /* If we are still in the INIT (or SELFTEST) state,
 | ||||||
|  | +             we need to run (or finish) the selftests so
 | ||||||
|  | +             that the FSM can eventually get into operational
 | ||||||
|  | +             state. Given that we would need a 2-phase
 | ||||||
|  |               initialization of libgcrypt, but that has traditionally | ||||||
|  |               not been enforced, we use this on demand self-test | ||||||
|  |               checking.  Note that Proper applications would do the | ||||||
|  | @@ -384,9 +394,11 @@ _gcry_fips_is_operational (void)
 | ||||||
|  |            lock_fsm (); | ||||||
|  |          } | ||||||
|  |   | ||||||
|  | -      result = (current_state == STATE_OPERATIONAL);
 | ||||||
|  | -      unlock_fsm ();
 | ||||||
|  | +      result = (current_state == STATE_OPERATIONAL) || !fips_mode ();
 | ||||||
|  | +      /* We always run the selftests but ignore the result
 | ||||||
|  | +         in non-FIPS mode. */
 | ||||||
|  |      } | ||||||
|  | +  unlock_fsm ();
 | ||||||
|  |    return result; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | @@ -709,9 +721,25 @@ _gcry_fips_run_selftests (int extended)
 | ||||||
|  |  { | ||||||
|  |    enum module_states result = STATE_ERROR; | ||||||
|  |    gcry_err_code_t ec = GPG_ERR_SELFTEST_FAILED; | ||||||
|  | +  int in_poweron;
 | ||||||
|  |   | ||||||
|  | -  if (fips_mode ())
 | ||||||
|  | -    fips_new_state (STATE_SELFTEST);
 | ||||||
|  | +  lock_fsm ();
 | ||||||
|  | +  in_poweron = (current_state == STATE_POWERON);
 | ||||||
|  | +  unlock_fsm ();
 | ||||||
|  | +
 | ||||||
|  | +  fips_new_state (STATE_SELFTEST);
 | ||||||
|  | +
 | ||||||
|  | +  /* We first check the integrity of the binary.
 | ||||||
|  | +     If run from the constructor we are in POWERON state,
 | ||||||
|  | +     we return and finish the remaining selftests before
 | ||||||
|  | +     real use of the library. It will be in the POWERON
 | ||||||
|  | +     state meanwhile.  */
 | ||||||
|  | +  if (in_poweron)
 | ||||||
|  | +    if (check_binary_integrity ())
 | ||||||
|  | +      goto leave;
 | ||||||
|  | +
 | ||||||
|  | +  if (in_poweron)
 | ||||||
|  | +    return 0;
 | ||||||
|  |   | ||||||
|  |    if (run_cipher_selftests (extended)) | ||||||
|  |      goto leave; | ||||||
|  | @@ -730,18 +758,12 @@ _gcry_fips_run_selftests (int extended)
 | ||||||
|  |    if (run_pubkey_selftests (extended)) | ||||||
|  |      goto leave; | ||||||
|  |   | ||||||
|  | -  /* Now check the integrity of the binary.  We do this this after
 | ||||||
|  | -     having checked the HMAC code.  */
 | ||||||
|  | -  if (check_binary_integrity ())
 | ||||||
|  | -    goto leave;
 | ||||||
|  | -
 | ||||||
|  |    /* All selftests passed.  */ | ||||||
|  |    result = STATE_OPERATIONAL; | ||||||
|  |    ec = 0; | ||||||
|  |   | ||||||
|  |   leave: | ||||||
|  | -  if (fips_mode ())
 | ||||||
|  | -    fips_new_state (result);
 | ||||||
|  | +  fips_new_state (result);
 | ||||||
|  |   | ||||||
|  |    return ec; | ||||||
|  |  } | ||||||
|  | @@ -797,6 +819,7 @@ fips_new_state (enum module_states new_s
 | ||||||
|  |      { | ||||||
|  |      case STATE_POWERON: | ||||||
|  |        if (new_state == STATE_INIT | ||||||
|  | +          || new_state == STATE_SELFTEST
 | ||||||
|  |            || new_state == STATE_ERROR | ||||||
|  |            || new_state == STATE_FATALERROR) | ||||||
|  |          ok = 1; | ||||||
|  | @@ -811,6 +834,8 @@ fips_new_state (enum module_states new_s
 | ||||||
|  |   | ||||||
|  |      case STATE_SELFTEST: | ||||||
|  |        if (new_state == STATE_OPERATIONAL | ||||||
|  | +          || new_state == STATE_INIT
 | ||||||
|  | +          || new_state == STATE_SELFTEST
 | ||||||
|  |            || new_state == STATE_ERROR | ||||||
|  |            || new_state == STATE_FATALERROR) | ||||||
|  |          ok = 1; | ||||||
|  | diff -up libgcrypt-1.8.3/src/global.c.fips-ctor libgcrypt-1.8.3/src/global.c
 | ||||||
|  | --- libgcrypt-1.8.3/src/global.c.fips-ctor	2017-11-23 19:25:58.000000000 +0100
 | ||||||
|  | +++ libgcrypt-1.8.3/src/global.c	2018-07-17 19:15:43.933827112 +0200
 | ||||||
|  | @@ -141,6 +141,29 @@ global_init (void)
 | ||||||
|  |  } | ||||||
|  |   | ||||||
|  |   | ||||||
|  | +#ifndef FIPS_MODULE_PATH
 | ||||||
|  | +#define FIPS_MODULE_PATH "/etc/system-fips"
 | ||||||
|  | +#endif
 | ||||||
|  | +
 | ||||||
|  | +void __attribute__ ((constructor)) _gcry_global_constructor (void)
 | ||||||
|  | +{
 | ||||||
|  | +  int rv;
 | ||||||
|  | +
 | ||||||
|  | +  /* We always need the FSM lock to be functional. */
 | ||||||
|  | +  _gcry_initialize_fsm_lock ();
 | ||||||
|  | +
 | ||||||
|  | +  rv = access (FIPS_MODULE_PATH, F_OK);
 | ||||||
|  | +  if (rv < 0 && errno != ENOENT)
 | ||||||
|  | +    rv = 0;
 | ||||||
|  | +
 | ||||||
|  | +  if (!rv)
 | ||||||
|  | +    {
 | ||||||
|  | +      /* We run the integrity check at this point. The remaining
 | ||||||
|  | +         selftests are run before use of the library by application. */
 | ||||||
|  | +      _gcry_fips_run_selftests (0);
 | ||||||
|  | +    }
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  |  /* This function is called by the macro fips_is_operational and makes | ||||||
|  |     sure that the minimal initialization has been done.  This is far | ||||||
|  |     from a perfect solution and hides problems with an improper | ||||||
|  | @@ -671,8 +694,7 @@ _gcry_vcontrol (enum gcry_ctl_cmds cmd,
 | ||||||
|  |   | ||||||
|  |      case GCRYCTL_FIPS_MODE_P: | ||||||
|  |        if (fips_mode () | ||||||
|  | -          && !_gcry_is_fips_mode_inactive ()
 | ||||||
|  | -          && !no_secure_memory)
 | ||||||
|  | +          && !_gcry_is_fips_mode_inactive ())
 | ||||||
|  |  	rc = GPG_ERR_GENERAL; /* Used as TRUE value */ | ||||||
|  |        break; | ||||||
|  |   | ||||||
|  | @@ -749,9 +771,9 @@ _gcry_vcontrol (enum gcry_ctl_cmds cmd,
 | ||||||
|  |        break; | ||||||
|  |   | ||||||
|  |      case GCRYCTL_SET_ENFORCED_FIPS_FLAG: | ||||||
|  | -      if (!any_init_done)
 | ||||||
|  | +      if (fips_mode ())
 | ||||||
|  |          { | ||||||
|  | -          /* Not yet initialized at all.  Set the enforced fips mode flag */
 | ||||||
|  | +          /* We are in FIPS mode, we can set the enforced fips mode flag. */
 | ||||||
|  |            _gcry_set_preferred_rng_type (0); | ||||||
|  |            _gcry_set_enforced_fips_mode (); | ||||||
|  |          } | ||||||
|  | diff -up libgcrypt-1.8.3/src/g10lib.h.fips-ctor libgcrypt-1.8.3/src/g10lib.h
 | ||||||
|  | --- libgcrypt-1.8.3/src/g10lib.h.fips-ctor	2017-11-23 19:16:58.000000000 +0100
 | ||||||
|  | +++ libgcrypt-1.8.3/src/g10lib.h	2018-07-12 13:24:54.089403030 +0200
 | ||||||
|  | @@ -422,6 +422,8 @@ gpg_err_code_t _gcry_sexp_vextract_param
 | ||||||
|  |   | ||||||
|  |  /*-- fips.c --*/ | ||||||
|  |   | ||||||
|  | +void _gcry_initialize_fsm_lock (void);
 | ||||||
|  | +
 | ||||||
|  |  void _gcry_initialize_fips_mode (int force); | ||||||
|  |   | ||||||
|  |  int _gcry_fips_mode (void); | ||||||
							
								
								
									
										101
									
								
								SOURCES/libgcrypt-1.8.3-getrandom.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								SOURCES/libgcrypt-1.8.3-getrandom.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,101 @@ | |||||||
|  | diff -up libgcrypt-1.8.3/random/random.c.getrandom libgcrypt-1.8.3/random/random.c
 | ||||||
|  | --- libgcrypt-1.8.3/random/random.c.getrandom	2017-11-23 19:16:58.000000000 +0100
 | ||||||
|  | +++ libgcrypt-1.8.3/random/random.c	2018-07-10 15:38:34.303855808 +0200
 | ||||||
|  | @@ -110,8 +110,8 @@ _gcry_random_read_conf (void)
 | ||||||
|  |    unsigned int result = 0; | ||||||
|  |   | ||||||
|  |    fp = fopen (fname, "r"); | ||||||
|  | -  if (!fp)
 | ||||||
|  | -    return result;
 | ||||||
|  | +  if (!fp) /* We make only_urandom the default. */
 | ||||||
|  | +    return RANDOM_CONF_ONLY_URANDOM;
 | ||||||
|  |   | ||||||
|  |    for (;;) | ||||||
|  |      { | ||||||
|  | diff -up libgcrypt-1.8.3/random/random-csprng.c.getrandom libgcrypt-1.8.3/random/random-csprng.c
 | ||||||
|  | --- libgcrypt-1.8.3/random/random-csprng.c.getrandom	2017-11-23 19:16:58.000000000 +0100
 | ||||||
|  | +++ libgcrypt-1.8.3/random/random-csprng.c	2018-06-14 16:31:04.731179208 +0200
 | ||||||
|  | @@ -55,6 +55,10 @@
 | ||||||
|  |  #ifdef __MINGW32__ | ||||||
|  |  #include <process.h> | ||||||
|  |  #endif | ||||||
|  | +#if defined(__linux__) && defined(HAVE_SYSCALL)
 | ||||||
|  | +# include <sys/syscall.h>
 | ||||||
|  | +# include <linux/random.h>
 | ||||||
|  | +#endif
 | ||||||
|  |  #include "g10lib.h" | ||||||
|  |  #include "random.h" | ||||||
|  |  #include "rand-internal.h" | ||||||
|  | @@ -1116,6 +1120,22 @@ getfnc_gather_random (void))(void (*)(co
 | ||||||
|  |               enum random_origins, size_t, int); | ||||||
|  |   | ||||||
|  |  #if USE_RNDLINUX | ||||||
|  | +#if defined(__linux__) && defined(HAVE_SYSCALL) && defined(__NR_getrandom)
 | ||||||
|  | +  long ret;
 | ||||||
|  | +  char buffer[1];
 | ||||||
|  | +
 | ||||||
|  | +  _gcry_pre_syscall ();
 | ||||||
|  | +  ret = syscall (__NR_getrandom,
 | ||||||
|  | +                 (void*)buffer, (size_t)1, (unsigned int)GRND_NONBLOCK);
 | ||||||
|  | +  _gcry_post_syscall ();
 | ||||||
|  | +  if (ret != -1 || errno != ENOSYS)
 | ||||||
|  | +    {
 | ||||||
|  | +      fnc = _gcry_rndlinux_gather_random;
 | ||||||
|  | +      return fnc;
 | ||||||
|  | +    }
 | ||||||
|  | +  else
 | ||||||
|  | +          /* The syscall is not supported - fallback to /dev/urandom. */
 | ||||||
|  | +#endif
 | ||||||
|  |    if ( !access (NAME_OF_DEV_RANDOM, R_OK) | ||||||
|  |         && !access (NAME_OF_DEV_URANDOM, R_OK)) | ||||||
|  |      { | ||||||
|  | diff -up libgcrypt-1.8.3/random/rndlinux.c.getrandom libgcrypt-1.8.3/random/rndlinux.c
 | ||||||
|  | --- libgcrypt-1.8.3/random/rndlinux.c.getrandom	2018-06-14 16:31:04.722178971 +0200
 | ||||||
|  | +++ libgcrypt-1.8.3/random/rndlinux.c	2018-07-10 15:55:03.301075155 +0200
 | ||||||
|  | @@ -35,6 +35,7 @@
 | ||||||
|  |  #include <poll.h> | ||||||
|  |  #if defined(__linux__) && defined(HAVE_SYSCALL) | ||||||
|  |  # include <sys/syscall.h> | ||||||
|  | +# include <linux/random.h>
 | ||||||
|  |  #endif | ||||||
|  |   | ||||||
|  |  #include "types.h" | ||||||
|  | @@ -204,6 +205,18 @@ _gcry_rndlinux_gather_random (void (*add
 | ||||||
|  |      { | ||||||
|  |        if (fd_urandom == -1) | ||||||
|  |          { | ||||||
|  | +#if defined(__linux__) && defined(HAVE_SYSCALL) && defined(__NR_getrandom)
 | ||||||
|  | +          long ret;
 | ||||||
|  | +
 | ||||||
|  | +          _gcry_pre_syscall ();
 | ||||||
|  | +          ret = syscall (__NR_getrandom,
 | ||||||
|  | +                         (void*)buffer, (size_t)1, (unsigned int)GRND_NONBLOCK);
 | ||||||
|  | +          _gcry_post_syscall ();
 | ||||||
|  | +          if (ret > -1 || errno == EAGAIN || errno == EINTR)
 | ||||||
|  | +            fd_urandom = -2;
 | ||||||
|  | +	  else
 | ||||||
|  | +            /* The syscall is not supported - fallback to /dev/urandom. */
 | ||||||
|  | +#endif
 | ||||||
|  |            fd_urandom = open_device (NAME_OF_DEV_URANDOM, (ever_opened & 2)); | ||||||
|  |            ever_opened |= 2; | ||||||
|  |          } | ||||||
|  | @@ -230,7 +243,7 @@ _gcry_rndlinux_gather_random (void (*add
 | ||||||
|  |         * syscall and not a new device and thus we are not able to use | ||||||
|  |         * select(2) to have a timeout. */ | ||||||
|  |  #if defined(__linux__) && defined(HAVE_SYSCALL) && defined(__NR_getrandom) | ||||||
|  | -      if (fd == fd_urandom)
 | ||||||
|  | +      if (fd == -2)
 | ||||||
|  |          { | ||||||
|  |            long ret; | ||||||
|  |            size_t nbytes; | ||||||
|  | @@ -246,9 +259,7 @@ _gcry_rndlinux_gather_random (void (*add
 | ||||||
|  |                _gcry_post_syscall (); | ||||||
|  |              } | ||||||
|  |            while (ret == -1 && errno == EINTR); | ||||||
|  | -          if (ret == -1 && errno == ENOSYS)
 | ||||||
|  | -            ; /* The syscall is not supported - fallback to /dev/urandom.  */
 | ||||||
|  | -          else
 | ||||||
|  | +          if (1)
 | ||||||
|  |              { /* The syscall is supported.  Some sanity checks.  */ | ||||||
|  |                if (ret == -1) | ||||||
|  |                  log_fatal ("unexpected error from getrandom: %s\n", | ||||||
							
								
								
									
										4
									
								
								SOURCES/random.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								SOURCES/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 | ||||||
							
								
								
									
										1225
									
								
								SOURCES/t-mpi-point.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1225
									
								
								SOURCES/t-mpi-point.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										2007
									
								
								SOURCES/wk@g10code.com
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2007
									
								
								SOURCES/wk@g10code.com
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										561
									
								
								SPECS/libgcrypt.spec
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										561
									
								
								SPECS/libgcrypt.spec
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,561 @@ | |||||||
|  | Name: libgcrypt | ||||||
|  | Version: 1.8.3 | ||||||
|  | Release: 2%{?dist} | ||||||
|  | URL: http://www.gnupg.org/ | ||||||
|  | Source0: libgcrypt-%{version}-hobbled.tar.xz | ||||||
|  | # The original libgcrypt sources now contain potentially patented ECC | ||||||
|  | # cipher support. We have to remove it in the tarball we ship with | ||||||
|  | # the hobble-libgcrypt script.  | ||||||
|  | # (We replace it with RH approved ECC in Source4-5) | ||||||
|  | #Source0: ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-{version}.tar.bz2 | ||||||
|  | #Source1: ftp://ftp.gnupg.org/gcrypt/libgcrypt/libgcrypt-{version}.tar.bz2.sig | ||||||
|  | Source2: wk@g10code.com | ||||||
|  | Source3: hobble-libgcrypt | ||||||
|  | # Approved ECC support | ||||||
|  | Source4: ecc-curves.c | ||||||
|  | Source5: curves.c | ||||||
|  | Source6: t-mpi-point.c | ||||||
|  | Source7: random.conf | ||||||
|  | # make FIPS hmac compatible with fipscheck - non upstreamable | ||||||
|  | # update on soname bump | ||||||
|  | Patch2: libgcrypt-1.6.2-use-fipscheck.patch | ||||||
|  | # fix tests in the FIPS mode, allow CAVS testing of DSA keygen | ||||||
|  | Patch5: libgcrypt-1.8.0-tests.patch | ||||||
|  | # update the CAVS tests | ||||||
|  | Patch7: libgcrypt-1.7.3-fips-cavs.patch | ||||||
|  | # use poll instead of select when gathering randomness | ||||||
|  | Patch11: libgcrypt-1.8.0-use-poll.patch | ||||||
|  | # slight optimalization of mpicoder.c to silence Valgrind (#968288) | ||||||
|  | Patch13: libgcrypt-1.6.1-mpicoder-gccopt.patch | ||||||
|  | # fix tests to work with approved ECC | ||||||
|  | Patch14: libgcrypt-1.7.3-ecc-test-fix.patch | ||||||
|  | # Run the FIPS mode initialization in the shared library constructor | ||||||
|  | Patch18: libgcrypt-1.8.3-fips-ctor.patch | ||||||
|  | # Block some operations if in FIPS non-operational state | ||||||
|  | Patch22: libgcrypt-1.7.3-fips-reqs.patch | ||||||
|  | # Do not try to open /dev/urandom if getrandom() works | ||||||
|  | Patch24: libgcrypt-1.8.3-getrandom.patch | ||||||
|  | 
 | ||||||
|  | %define gcrylibdir %{_libdir} | ||||||
|  | 
 | ||||||
|  | # Technically LGPLv2.1+, but Fedora's table doesn't draw a distinction. | ||||||
|  | # Documentation and some utilities are GPLv2+ licensed. These files | ||||||
|  | # are in the devel subpackage. | ||||||
|  | License: LGPLv2+ | ||||||
|  | Summary: A general-purpose cryptography library | ||||||
|  | BuildRequires: gcc | ||||||
|  | BuildRequires: gawk, libgpg-error-devel >= 1.11, pkgconfig | ||||||
|  | BuildRequires: fipscheck | ||||||
|  | # This is needed only when patching the .texi doc. | ||||||
|  | BuildRequires: texinfo | ||||||
|  | Group: System Environment/Libraries | ||||||
|  | 
 | ||||||
|  | %package devel | ||||||
|  | Summary: Development files for the %{name} package | ||||||
|  | License: LGPLv2+ and GPLv2+ | ||||||
|  | Group: Development/Libraries | ||||||
|  | Requires(pre): /sbin/install-info | ||||||
|  | Requires(post): /sbin/install-info | ||||||
|  | Requires: libgpg-error-devel | ||||||
|  | Requires: %{name} = %{version}-%{release} | ||||||
|  | 
 | ||||||
|  | %description | ||||||
|  | Libgcrypt is a general purpose crypto library based on the code used | ||||||
|  | in GNU Privacy Guard.  This is a development version. | ||||||
|  | 
 | ||||||
|  | %description devel | ||||||
|  | Libgcrypt is a general purpose crypto library based on the code used | ||||||
|  | in GNU Privacy Guard.  This package contains files needed to develop | ||||||
|  | applications using libgcrypt. | ||||||
|  | 
 | ||||||
|  | %prep | ||||||
|  | %setup -q | ||||||
|  | %{SOURCE3} | ||||||
|  | %patch2 -p1 -b .use-fipscheck | ||||||
|  | %patch5 -p1 -b .tests | ||||||
|  | %patch7 -p1 -b .cavs | ||||||
|  | %patch11 -p1 -b .use-poll | ||||||
|  | %patch13 -p1 -b .gccopt | ||||||
|  | %patch14 -p1 -b .eccfix | ||||||
|  | %patch18 -p1 -b .fips-ctor | ||||||
|  | %patch22 -p1 -b .fips-reqs | ||||||
|  | %patch24 -p1 -b .getrandom | ||||||
|  | 
 | ||||||
|  | cp %{SOURCE4} cipher/ | ||||||
|  | cp %{SOURCE5} %{SOURCE6} tests/ | ||||||
|  | 
 | ||||||
|  | %build | ||||||
|  | %configure --disable-static \ | ||||||
|  | %ifarch sparc64 | ||||||
|  |      --disable-asm \ | ||||||
|  | %endif | ||||||
|  |      --enable-noexecstack \ | ||||||
|  |      --enable-hmac-binary-check \ | ||||||
|  |      --enable-pubkey-ciphers='dsa elgamal rsa ecc' \ | ||||||
|  |      --disable-O-flag-munging | ||||||
|  | sed -i -e '/^sys_lib_dlsearch_path_spec/s,/lib /usr/lib,/usr/lib /lib64 /usr/lib64 /lib,g' libtool | ||||||
|  | make %{?_smp_mflags} | ||||||
|  | 
 | ||||||
|  | %check | ||||||
|  | fipshmac src/.libs/libgcrypt.so.?? | ||||||
|  | make check | ||||||
|  | 
 | ||||||
|  | # Add generation of HMAC checksums of the final stripped binaries  | ||||||
|  | %define __spec_install_post \ | ||||||
|  |     %{?__debug_package:%{__debug_install_post}} \ | ||||||
|  |     %{__arch_install_post} \ | ||||||
|  |     %{__os_install_post} \ | ||||||
|  |     fipshmac $RPM_BUILD_ROOT%{gcrylibdir}/*.so.?? \ | ||||||
|  | %{nil} | ||||||
|  | 
 | ||||||
|  | %install | ||||||
|  | make install DESTDIR=$RPM_BUILD_ROOT | ||||||
|  | 
 | ||||||
|  | # Change /usr/lib64 back to /usr/lib.  This saves us from having to patch the | ||||||
|  | # script to "know" that -L/usr/lib64 should be suppressed, and also removes | ||||||
|  | # a file conflict between 32- and 64-bit versions of this package. | ||||||
|  | # Also replace my_host with none. | ||||||
|  | sed -i -e 's,^libdir="/usr/lib.*"$,libdir="/usr/lib",g' $RPM_BUILD_ROOT/%{_bindir}/libgcrypt-config | ||||||
|  | sed -i -e 's,^my_host=".*"$,my_host="none",g' $RPM_BUILD_ROOT/%{_bindir}/libgcrypt-config | ||||||
|  | 
 | ||||||
|  | rm -f ${RPM_BUILD_ROOT}/%{_infodir}/dir ${RPM_BUILD_ROOT}/%{_libdir}/*.la | ||||||
|  | /sbin/ldconfig -n $RPM_BUILD_ROOT/%{_libdir} | ||||||
|  | 
 | ||||||
|  | %if "%{gcrylibdir}" != "%{_libdir}" | ||||||
|  | # Relocate the shared libraries to %{gcrylibdir}. | ||||||
|  | mkdir -p $RPM_BUILD_ROOT%{gcrylibdir} | ||||||
|  | for shlib in $RPM_BUILD_ROOT%{_libdir}/*.so* ; do | ||||||
|  | 	if test -L "$shlib" ; then | ||||||
|  | 		rm "$shlib" | ||||||
|  | 	else | ||||||
|  | 		mv "$shlib" $RPM_BUILD_ROOT%{gcrylibdir}/ | ||||||
|  | 	fi | ||||||
|  | done | ||||||
|  | 
 | ||||||
|  | # Add soname symlink. | ||||||
|  | /sbin/ldconfig -n $RPM_BUILD_ROOT/%{_lib}/ | ||||||
|  | %endif | ||||||
|  | 
 | ||||||
|  | # Overwrite development symlinks. | ||||||
|  | pushd $RPM_BUILD_ROOT/%{gcrylibdir} | ||||||
|  | for shlib in lib*.so.?? ; do | ||||||
|  | 	target=$RPM_BUILD_ROOT/%{_libdir}/`echo "$shlib" | sed -e 's,\.so.*,,g'`.so | ||||||
|  | %if "%{gcrylibdir}" != "%{_libdir}" | ||||||
|  | 	shlib=%{gcrylibdir}/$shlib | ||||||
|  | %endif | ||||||
|  | 	ln -sf $shlib $target | ||||||
|  | done | ||||||
|  | popd | ||||||
|  | 
 | ||||||
|  | # Create /etc/gcrypt (hardwired, not dependent on the configure invocation) so | ||||||
|  | # that _someone_ owns it. | ||||||
|  | mkdir -p -m 755 $RPM_BUILD_ROOT/etc/gcrypt | ||||||
|  | install -m644 %{SOURCE7} $RPM_BUILD_ROOT/etc/gcrypt/random.conf | ||||||
|  | 
 | ||||||
|  | %post -p /sbin/ldconfig | ||||||
|  | 
 | ||||||
|  | %postun -p /sbin/ldconfig | ||||||
|  | 
 | ||||||
|  | %post devel | ||||||
|  | [ -f %{_infodir}/gcrypt.info.gz ] && \ | ||||||
|  |     /sbin/install-info %{_infodir}/gcrypt.info.gz %{_infodir}/dir | ||||||
|  | exit 0 | ||||||
|  | 
 | ||||||
|  | %preun devel | ||||||
|  | if [ $1 = 0 -a -f %{_infodir}/gcrypt.info.gz ]; then | ||||||
|  |     /sbin/install-info --delete %{_infodir}/gcrypt.info.gz %{_infodir}/dir | ||||||
|  | fi | ||||||
|  | exit 0 | ||||||
|  | 
 | ||||||
|  | %files | ||||||
|  | %dir /etc/gcrypt | ||||||
|  | %config(noreplace) /etc/gcrypt/random.conf | ||||||
|  | %{gcrylibdir}/libgcrypt.so.* | ||||||
|  | %{gcrylibdir}/.libgcrypt.so.*.hmac | ||||||
|  | %{!?_licensedir:%global license %%doc} | ||||||
|  | %license COPYING.LIB | ||||||
|  | %doc AUTHORS NEWS THANKS | ||||||
|  | 
 | ||||||
|  | %files devel | ||||||
|  | %{_bindir}/%{name}-config | ||||||
|  | %{_bindir}/dumpsexp | ||||||
|  | %{_bindir}/hmac256 | ||||||
|  | %{_bindir}/mpicalc | ||||||
|  | %{_includedir}/* | ||||||
|  | %{_libdir}/*.so | ||||||
|  | %{_datadir}/aclocal/* | ||||||
|  | %{_mandir}/man1/* | ||||||
|  | 
 | ||||||
|  | %{_infodir}/gcrypt.info* | ||||||
|  | %{!?_licensedir:%global license %%doc} | ||||||
|  | %license COPYING | ||||||
|  | 
 | ||||||
|  | %changelog | ||||||
|  | * Thu Jul 12 2018 Tomáš Mráz <tmraz@redhat.com> 1.8.3-2 | ||||||
|  | - make only_urandom a default in non-presence of configuration file | ||||||
|  | - run the full FIPS selftests only when the library is called from | ||||||
|  |   application | ||||||
|  | 
 | ||||||
|  | * Thu Jun 14 2018 Tomáš Mráz <tmraz@redhat.com> 1.8.3-1 | ||||||
|  | - new upstream version 1.8.3 | ||||||
|  | 
 | ||||||
|  | * Tue Feb  6 2018 Tomáš Mráz <tmraz@redhat.com> 1.8.2-2 | ||||||
|  | - fix behavior when getrandom syscall is not present (#1542453) | ||||||
|  | 
 | ||||||
|  | * Thu Dec 21 2017 Tomáš Mráz <tmraz@redhat.com> 1.8.2-1 | ||||||
|  | - new upstream version 1.8.2 | ||||||
|  | 
 | ||||||
|  | * Tue Dec  5 2017 Tomáš Mráz <tmraz@redhat.com> 1.8.1-3 | ||||||
|  | - do not try to access() /dev/urandom either if getrandom() works | ||||||
|  | 
 | ||||||
|  | * Mon Dec  4 2017 Tomáš Mráz <tmraz@redhat.com> 1.8.1-2 | ||||||
|  | - do not try to open /dev/urandom if getrandom() works (#1380866) | ||||||
|  | 
 | ||||||
|  | * Tue Sep  5 2017 Tomáš Mráz <tmraz@redhat.com> 1.8.1-1 | ||||||
|  | - new upstream version 1.8.1 | ||||||
|  | 
 | ||||||
|  | * 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 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.8-2 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Thu Jun 29 2017 Tomáš Mráz <tmraz@redhat.com> 1.7.8-1 | ||||||
|  | - new upstream version 1.7.8 | ||||||
|  | 
 | ||||||
|  | * Fri Jun  2 2017 Tomáš Mráz <tmraz@redhat.com> 1.7.7-1 | ||||||
|  | - new upstream version 1.7.7 | ||||||
|  | - GOST is now enabled | ||||||
|  | 
 | ||||||
|  | * Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.6-2 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Mon Jan 30 2017 Tomáš Mráz <tmraz@redhat.com> 1.7.6-1 | ||||||
|  | - new upstream version 1.7.6 | ||||||
|  | 
 | ||||||
|  | * Fri Dec 16 2016 Tomáš Mráz <tmraz@redhat.com> 1.7.5-1 | ||||||
|  | - new upstream version 1.7.5 | ||||||
|  | 
 | ||||||
|  | * Wed Nov 23 2016 Tomáš Mráz <tmraz@redhat.com> 1.7.3-1 | ||||||
|  | - new upstream version 1.7.3 | ||||||
|  | 
 | ||||||
|  | * Wed Aug 17 2016 Tomáš Mráz <tmraz@redhat.com> 1.6.6-1 | ||||||
|  | - new upstream version with important security fix (CVE-2016-6316) | ||||||
|  | 
 | ||||||
|  | * Thu Jul 21 2016 Tomáš Mráz <tmraz@redhat.com> 1.6.5-1 | ||||||
|  | - new upstream version fixing low impact issue CVE-2015-7511 | ||||||
|  | 
 | ||||||
|  | * Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.4-2 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Wed Sep  9 2015 Tomáš Mráz <tmraz@redhat.com> 1.6.4-1 | ||||||
|  | - new upstream version | ||||||
|  | 
 | ||||||
|  | * Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.6.3-5 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Fri Apr  3 2015 Tomáš Mráz <tmraz@redhat.com> 1.6.3-4 | ||||||
|  | - deinitialize the RNG after the selftest is run | ||||||
|  | 
 | ||||||
|  | * Tue Mar 24 2015 Tomáš Mráz <tmraz@redhat.com> 1.6.3-3 | ||||||
|  | - touch only urandom in the selftest and when /dev/random is | ||||||
|  |   unavailable for example by SELinux confinement | ||||||
|  | - fix the RSA selftest key (p q swap) (#1204517) | ||||||
|  | 
 | ||||||
|  | * Fri Mar 13 2015 Tomáš Mráz <tmraz@redhat.com> 1.6.3-2 | ||||||
|  | - do not use strict aliasing for bufhelp functions (#1201219) | ||||||
|  | 
 | ||||||
|  | * Fri Mar  6 2015 Tomáš Mráz <tmraz@redhat.com> 1.6.3-1 | ||||||
|  | - new upstream version | ||||||
|  | 
 | ||||||
|  | * Wed Feb 25 2015 Tomáš Mráz <tmraz@redhat.com> 1.6.2-4 | ||||||
|  | - do not initialize secure memory during the selftest (#1195850) | ||||||
|  | 
 | ||||||
|  | * Sat Feb 21 2015 Till Maas <opensource@till.name> - 1.6.2-3 | ||||||
|  | - Rebuilt for Fedora 23 Change | ||||||
|  |   https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code | ||||||
|  | 
 | ||||||
|  | * Wed Jan 14 2015 Tomáš Mráz <tmraz@redhat.com> 1.6.2-2 | ||||||
|  | - fix buildability of programs using gcrypt.h with -ansi (#1182200) | ||||||
|  | 
 | ||||||
|  | * Mon Dec  8 2014 Tomáš Mráz <tmraz@redhat.com> 1.6.2-1 | ||||||
|  | - new upstream version | ||||||
|  | 
 | ||||||
|  | * Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.6.1-7 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Thu Jul 17 2014 Tom Callaway <spot@fedoraproject.org> - 1.6.1-6 | ||||||
|  | - fix license handling | ||||||
|  | 
 | ||||||
|  | * Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.6.1-5 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Tue May 20 2014 Kyle McMartin <kyle@fedoraproject.org> 1.6.1-4 | ||||||
|  | - Re-enable below algos, apply patch from upstream list to make | ||||||
|  |   that code -fPIC friendly. (rhbz#1069792) | ||||||
|  | 
 | ||||||
|  | * Mon May 19 2014 Kyle McMartin <kyle@fedoraproject.org> 1.6.1-3 | ||||||
|  | - Disable rijndael, cast5, camellia ARM assembly, as it's non-PIC as | ||||||
|  |   presently written, which results in .text relocations in the shared | ||||||
|  |   library. (rhbz#1069792) | ||||||
|  | 
 | ||||||
|  | * Thu Apr 24 2014 Tomáš Mráz <tmraz@redhat.com> 1.6.1-2 | ||||||
|  | - drop the temporary compat shared library version | ||||||
|  | - fix the soname version in -use-fipscheck.patch | ||||||
|  | 
 | ||||||
|  | * Fri Feb 28 2014 Tomáš Mráz <tmraz@redhat.com> 1.6.1-1 | ||||||
|  | - new upstream version breaking ABI compatibility | ||||||
|  | - this release temporarily includes old compatibility .so | ||||||
|  | 
 | ||||||
|  | * Tue Jan 21 2014 Tomáš Mráz <tmraz@redhat.com> 1.5.3-3 | ||||||
|  | - add back the nistp521r1 EC curve | ||||||
|  | - fix a bug in the Whirlpool hash implementation | ||||||
|  | - speed up the PBKDF2 computation | ||||||
|  | 
 | ||||||
|  | * Sun Oct 20 2013 Tom Callaway <spot@fedoraproject.org> - 1.5.3-2 | ||||||
|  | - add cleared ECC support | ||||||
|  | 
 | ||||||
|  | * Fri Jul 26 2013 Tomáš Mráz <tmraz@redhat.com> 1.5.3-1 | ||||||
|  | - new upstream version fixing cache side-channel attack on RSA private keys | ||||||
|  | 
 | ||||||
|  | * Thu Jun 20 2013 Tomáš Mráz <tmraz@redhat.com> 1.5.2-3 | ||||||
|  | - silence false error detected by valgrind (#968288) | ||||||
|  | 
 | ||||||
|  | * Thu Apr 25 2013 Tomáš Mráz <tmraz@redhat.com> 1.5.2-2 | ||||||
|  | - silence strict aliasing warning in Rijndael | ||||||
|  | - apply UsrMove | ||||||
|  | - spec file cleanups | ||||||
|  | 
 | ||||||
|  | * Fri Apr 19 2013 Tomáš Mráz <tmraz@redhat.com> 1.5.2-1 | ||||||
|  | - new upstream version | ||||||
|  | 
 | ||||||
|  | * Wed Mar 20 2013 Tomas Mraz <tmraz@redhat.com> 1.5.1-1 | ||||||
|  | - new upstream version | ||||||
|  | 
 | ||||||
|  | * Tue Mar  5 2013 Tomas Mraz <tmraz@redhat.com> 1.5.0-11 | ||||||
|  | - use poll() instead of select() when gathering randomness (#913773) | ||||||
|  | 
 | ||||||
|  | * Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.5.0-10 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Thu Jan  3 2013 Tomas Mraz <tmraz@redhat.com> 1.5.0-9 | ||||||
|  | - allow empty passphrase in PBKDF2 needed for cryptsetup (=891266) | ||||||
|  | 
 | ||||||
|  | * Mon Dec  3 2012 Tomas Mraz <tmraz@redhat.com> 1.5.0-8 | ||||||
|  | - fix multilib conflict in libgcrypt-config | ||||||
|  | - fix minor memory leaks and other bugs found by Coverity scan | ||||||
|  | 
 | ||||||
|  | * Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.5.0-6 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Thu Apr  5 2012 Tomas Mraz <tmraz@redhat.com> 1.5.0-5 | ||||||
|  | - Correctly rebuild the info documentation | ||||||
|  | 
 | ||||||
|  | * Wed Apr  4 2012 Tomas Mraz <tmraz@redhat.com> 1.5.0-4 | ||||||
|  | - Add GCRYCTL_SET_ENFORCED_FIPS_FLAG command | ||||||
|  | 
 | ||||||
|  | * Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.5.0-3 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Mon Aug 15 2011 Kalev Lember <kalevlember@gmail.com> 1.5.0-2 | ||||||
|  | - Rebuilt for rpm bug #728707 | ||||||
|  | 
 | ||||||
|  | * Thu Jul 21 2011 Tomas Mraz <tmraz@redhat.com> 1.5.0-1 | ||||||
|  | - new upstream version | ||||||
|  | 
 | ||||||
|  | * Mon Jun 20 2011 Tomas Mraz <tmraz@redhat.com> 1.4.6-4 | ||||||
|  | - Always xor seed from /dev/urandom over /etc/gcrypt/rngseed | ||||||
|  | 
 | ||||||
|  | * Mon May 30 2011 Tomas Mraz <tmraz@redhat.com> 1.4.6-3 | ||||||
|  | - Make the FIPS-186-3 DSA implementation CAVS testable | ||||||
|  | - add configurable source of RNG seed /etc/gcrypt/rngseed | ||||||
|  |   in the FIPS mode (#700388) | ||||||
|  | 
 | ||||||
|  | * Fri Feb 11 2011 Tomas Mraz <tmraz@redhat.com> 1.4.6-1 | ||||||
|  | - new upstream version with minor changes | ||||||
|  | 
 | ||||||
|  | * Mon Feb 07 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.5-7 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Fri Feb  4 2011 Tomas Mraz <tmraz@redhat.com> 1.4.5-6 | ||||||
|  | - fix a bug in the fips-186-3 dsa parameter generation code | ||||||
|  | 
 | ||||||
|  | * Tue Feb  1 2011 Tomas Mraz <tmraz@redhat.com> 1.4.5-5 | ||||||
|  | - use /dev/urandom for seeding in the FIPS mode | ||||||
|  | - make the tests to pass in the FIPS mode also fixing | ||||||
|  |   the FIPS-186-3 DSA keygen | ||||||
|  | 
 | ||||||
|  | * Sun Feb 14 2010 Rex Dieter <rdieter@fedoraproject.org> 1.4.5-4 | ||||||
|  | - FTBFS libgcrypt-1.4.5-3.fc13: ImplicitDSOLinking (#564973) | ||||||
|  | 
 | ||||||
|  | * Wed Feb  3 2010 Tomas Mraz <tmraz@redhat.com> 1.4.5-3 | ||||||
|  | - drop the S390 build workaround as it is no longer needed | ||||||
|  | - additional spec file cleanups for merge review (#226008) | ||||||
|  | 
 | ||||||
|  | * Mon Dec 21 2009 Tomas Mraz <tmraz@redhat.com> 1.4.5-1 | ||||||
|  | - workaround for build on S390 (#548825) | ||||||
|  | - spec file cleanups | ||||||
|  | - upgrade to new minor upstream release | ||||||
|  | 
 | ||||||
|  | * Tue Aug 11 2009 Tomas Mraz <tmraz@redhat.com> 1.4.4-8 | ||||||
|  | - fix warning when installed with --excludedocs (#515961) | ||||||
|  | 
 | ||||||
|  | * Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.4-7 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Thu Jun 18 2009 Tomas Mraz <tmraz@redhat.com> 1.4.4-6 | ||||||
|  | - and now really apply the padlock patch | ||||||
|  | 
 | ||||||
|  | * Wed Jun 17 2009 Tomas Mraz <tmraz@redhat.com> 1.4.4-5 | ||||||
|  | - fix VIA padlock RNG inline assembly call (#505724) | ||||||
|  | 
 | ||||||
|  | * Thu Mar  5 2009 Tomas Mraz <tmraz@redhat.com> 1.4.4-4 | ||||||
|  | - with the integrity verification check the library needs to link to libdl | ||||||
|  |   (#488702) | ||||||
|  | 
 | ||||||
|  | * Tue Mar  3 2009 Tomas Mraz <tmraz@redhat.com> 1.4.4-3 | ||||||
|  | - add hmac FIPS integrity verification check | ||||||
|  | 
 | ||||||
|  | * Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4.4-2 | ||||||
|  | - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild | ||||||
|  | 
 | ||||||
|  | * Fri Jan 30 2009 Tomas Mraz <tmraz@redhat.com> 1.4.4-1 | ||||||
|  | - update to 1.4.4 | ||||||
|  | - do not abort when the fips mode kernel flag is inaccessible | ||||||
|  |   due to permissions (#470219) | ||||||
|  | - hobble the library to drop the ECC support | ||||||
|  | 
 | ||||||
|  | * Mon Oct 20 2008 Dennis Gilmore <dennis@ausil.us> 1.4.3-2 | ||||||
|  | - disable asm on sparc64 | ||||||
|  | 
 | ||||||
|  | * Thu Sep 18 2008 Nalin Dahyabhai <nalin@redhat.com> 1.4.3-1 | ||||||
|  | - update to 1.4.3 | ||||||
|  | - own /etc/gcrypt | ||||||
|  | 
 | ||||||
|  | * Mon Sep 15 2008 Nalin Dahyabhai <nalin@redhat.com> | ||||||
|  | - invoke make with %%{?_smp_mflags} to build faster on multi-processor | ||||||
|  |   systems (Steve Grubb) | ||||||
|  | 
 | ||||||
|  | * Mon Sep  8 2008 Nalin Dahyabhai <nalin@redhat.com> 1.4.2-1 | ||||||
|  | - update to 1.4.2 | ||||||
|  | 
 | ||||||
|  | * Tue Apr 29 2008 Nalin Dahyabhai <nalin@redhat.com> 1.4.1-1 | ||||||
|  | - update to 1.4.1 | ||||||
|  | - bump libgpgerror-devel requirement to 1.4, matching the requirement enforced | ||||||
|  |   by the configure script | ||||||
|  | 
 | ||||||
|  | * Thu Apr  3 2008 Joe Orton <jorton@redhat.com> 1.4.0-3 | ||||||
|  | - add patch from upstream to fix severe performance regression | ||||||
|  |   in entropy gathering | ||||||
|  | 
 | ||||||
|  | * Tue Feb 19 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 1.4.0-2 | ||||||
|  | - Autorebuild for GCC 4.3 | ||||||
|  | 
 | ||||||
|  | * Mon Dec 10 2007 Nalin Dahyabhai <nalin@redhat.com> - 1.4.0-1 | ||||||
|  | - update to 1.4.0 | ||||||
|  | 
 | ||||||
|  | * Tue Oct 16 2007 Nalin Dahyabhai <nalin@redhat.com> - 1.2.4-6 | ||||||
|  | - use ldconfig to build the soname symlink for packaging along with the | ||||||
|  |   shared library (#334731) | ||||||
|  | 
 | ||||||
|  | * Wed Aug 22 2007 Nalin Dahyabhai <nalin@redhat.com> - 1.2.4-5 | ||||||
|  | - add missing gawk buildrequirement | ||||||
|  | - switch from explicitly specifying the /dev/random RNG to just verifying | ||||||
|  |   that the non-LGPL ones were disabled by the configure script | ||||||
|  | 
 | ||||||
|  | * Thu Aug 16 2007 Nalin Dahyabhai <nalin@redhat.com> - 1.2.4-4 | ||||||
|  | - clarify license | ||||||
|  | - force use of the linux /dev/random RNG, to avoid accidentally falling back | ||||||
|  |   to others which would affect the license of the resulting library | ||||||
|  | 
 | ||||||
|  | * Mon Jul 30 2007 Nalin Dahyabhai <nalin@redhat.com> - 1.2.4-3 | ||||||
|  | - disable static libraries (part of #249815) | ||||||
|  | 
 | ||||||
|  | * Fri Jul 27 2007 Nalin Dahyabhai <nalin@redhat.com> - 1.2.4-2 | ||||||
|  | - move libgcrypt shared library to /%%{_lib} (#249815) | ||||||
|  | 
 | ||||||
|  | * Tue Feb  6 2007 Nalin Dahyabhai <nalin@redhat.com> - 1.2.4-1 | ||||||
|  | - update to 1.2.4 | ||||||
|  | 
 | ||||||
|  | * Mon Jan 22 2007 Nalin Dahyabhai <nalin@redhat.com> - 1.2.3-2 | ||||||
|  | - make use of install-info more failsafe (Ville Skyttä, #223705) | ||||||
|  | 
 | ||||||
|  | * Fri Sep  1 2006 Nalin Dahyabhai <nalin@redhat.com> - 1.2.3-1 | ||||||
|  | - update to 1.2.3 | ||||||
|  | 
 | ||||||
|  | * Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 1.2.2-3.1 | ||||||
|  | - rebuild | ||||||
|  | 
 | ||||||
|  | * Mon Jun 05 2006 Jesse Keating <jkeating@redhat.com> 1.2.2-3 | ||||||
|  | - Added missing buildreq pkgconfig | ||||||
|  | 
 | ||||||
|  | * Tue May 16 2006 Nalin Dahyabhai <nalin@redhat.com> 1.2.2-2 | ||||||
|  | - remove file conflicts in libgcrypt-config by making the 64-bit version | ||||||
|  |   think the libraries are in /usr/lib (which is wrong, but which it also | ||||||
|  |   prunes from the suggest --libs output, so no harm done, hopefully) | ||||||
|  | 
 | ||||||
|  | * Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 1.2.2-1.2.1 | ||||||
|  | - bump again for double-long bug on ppc(64) | ||||||
|  | 
 | ||||||
|  | * Tue Feb 07 2006 Jesse Keating <jkeating@redhat.com> - 1.2.2-1.2 | ||||||
|  | - rebuilt for new gcc4.1 snapshot and glibc changes | ||||||
|  | 
 | ||||||
|  | * Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com> | ||||||
|  | - rebuilt | ||||||
|  | 
 | ||||||
|  | * Wed Oct  5 2005 Nalin Dahyabhai <nalin@redhat.com> 1.2.2-1 | ||||||
|  | - update to 1.2.2 | ||||||
|  | 
 | ||||||
|  | * Wed Mar 16 2005 Nalin Dahyabhai <nalin@redhat.com> 1.2.1-1 | ||||||
|  | - update to 1.2.1 | ||||||
|  | 
 | ||||||
|  | * Fri Jul 30 2004 Florian La Roche <Florian.LaRoche@redhat.de> | ||||||
|  | - another try to package the symlink | ||||||
|  | 
 | ||||||
|  | * Tue Jun 15 2004 Elliot Lee <sopwith@redhat.com> | ||||||
|  | - rebuilt | ||||||
|  | 
 | ||||||
|  | * Sun May  2 2004 Bill Nottingham <notting@redhat.com> - 1.2.0-1 | ||||||
|  | - update to official 1.2.0 | ||||||
|  | 
 | ||||||
|  | * Fri Apr 16 2004 Bill Nottingham <notting@redhat.com> - 1.1.94-1 | ||||||
|  | - update to 1.1.94 | ||||||
|  | 
 | ||||||
|  | * Tue Mar 02 2004 Elliot Lee <sopwith@redhat.com> | ||||||
|  | - rebuilt | ||||||
|  | 
 | ||||||
|  | * Sat Feb 21 2004 Florian La Roche <Florian.LaRoche@redhat.de> | ||||||
|  | - add symlinks to shared libs at compile time | ||||||
|  | 
 | ||||||
|  | * Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com> | ||||||
|  | - rebuilt | ||||||
|  | 
 | ||||||
|  | * Wed Jun 04 2003 Elliot Lee <sopwith@redhat.com> | ||||||
|  | - rebuilt | ||||||
|  | 
 | ||||||
|  | * Thu Mar 20 2003 Jeff Johnson <jbj@redhat.com> 1.1.12-1 | ||||||
|  | - upgrade to 1.1.12 (beta). | ||||||
|  | 
 | ||||||
|  | * Fri Jun 21 2002 Tim Powers <timp@redhat.com> | ||||||
|  | - automated rebuild | ||||||
|  | 
 | ||||||
|  | * Sun May 26 2002 Tim Powers <timp@redhat.com> | ||||||
|  | - automated rebuild | ||||||
|  | 
 | ||||||
|  | * Tue May 21 2002 Jeff Johnson <jbj@redhat.com> | ||||||
|  | - update to 1.1.7 | ||||||
|  | - change license to LGPL. | ||||||
|  | - include splint annotations patch. | ||||||
|  | - install info pages. | ||||||
|  | 
 | ||||||
|  | * Tue Apr  2 2002 Nalin Dahyabhai <nalin@redhat.com> 1.1.6-1 | ||||||
|  | - update to 1.1.6 | ||||||
|  | 
 | ||||||
|  | * Thu Jan 10 2002 Nalin Dahyabhai <nalin@redhat.com> 1.1.5-1 | ||||||
|  | - fix the Source tag so that it's a real URL | ||||||
|  | 
 | ||||||
|  | * Thu Dec 20 2001 Nalin Dahyabhai <nalin@redhat.com> | ||||||
|  | - initial package | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user