Patch for TPM 1.2 test suite to support recent OpenSSL versions.
--- lib/hmac.c.old	2017-07-28 15:44:50.000000000 -0400
+++ lib/hmac.c	2019-03-28 15:48:46.564254873 -0400
@@ -3,7 +3,7 @@
 /*			     	TPM HMAC routines				*/
 /*			     Written by J. Kravitz				*/
 /*		       IBM Thomas J. Watson Research Center			*/
-/*	      $Id: hmac.c 4726 2014-09-03 22:02:10Z kgoldman $			*/
+/*	      $Id: hmac.c 4771 2017-08-31 21:12:33Z kgoldman $			*/
 /*										*/
 /* (c) Copyright IBM Corporation 2006, 2010.					*/
 /*										*/
@@ -381,16 +381,29 @@
 /****************************************************************************/
 uint32_t TSS_rawhmac(unsigned char *digest, const unsigned char *key, unsigned int keylen, ...)
    {
-   HMAC_CTX hmac;
+#if OPENSSL_VERSION_NUMBER < 0x10100000
+   HMAC_CTX 	hmac;
+#else
+   HMAC_CTX 	*hmac;
+#endif
    unsigned int dlen;
    unsigned char *data;
    va_list argp;
    
-#ifdef HAVE_HMAC_CTX_CLEANUP
+#if OPENSSL_VERSION_NUMBER < 0x10100000
    HMAC_CTX_init(&hmac);
+#else
+   hmac = HMAC_CTX_new();
 #endif
-   HMAC_Init(&hmac,key,keylen,EVP_sha1());
 
+#if OPENSSL_VERSION_NUMBER < 0x10100000
+   HMAC_Init(&hmac,key,keylen,EVP_sha1());
+#else
+   HMAC_Init_ex(hmac,
+		key, keylen,		/* HMAC key */
+		EVP_sha1(),		/* message digest method */
+		NULL);
+#endif
    va_start(argp,keylen);
    for (;;)
       {
@@ -398,14 +411,23 @@
       if (dlen == 0) break;
       data = (unsigned char *)va_arg(argp,unsigned char *);
       if (data == NULL) return ERR_NULL_ARG;
-      HMAC_Update(&hmac,data,dlen);
+
+#if OPENSSL_VERSION_NUMBER < 0x10100000
+      HMAC_Update(&hmac, data, dlen);
+#else
+      HMAC_Update(hmac, data, dlen);
+#endif
       }
-   HMAC_Final(&hmac,digest,&dlen);
+#if OPENSSL_VERSION_NUMBER < 0x10100000
+   HMAC_Final(&hmac, digest, &dlen);
+#else
+   HMAC_Final(hmac, digest, &dlen);
+#endif
 
-#ifdef HAVE_HMAC_CTX_CLEANUP
+#if OPENSSL_VERSION_NUMBER < 0x10100000
    HMAC_CTX_cleanup(&hmac);
 #else
-   HMAC_cleanup(&hmac);
+   HMAC_CTX_free(hmac);
 #endif
    va_end(argp);
    return 0;
--- lib/keys.c.old	2019-03-28 15:47:22.627805826 -0400
+++ lib/keys.c	2019-03-28 15:48:42.665280466 -0400
@@ -1316,8 +1316,12 @@
                 exp);
    }
    /* set up the RSA public key structure */
+#if OPENSSL_VERSION_NUMBER < 0x10100000
    rsa->n = mod;
    rsa->e = exp;
+#else
+   RSA_set0_key(rsa, mod, exp, NULL);
+#endif
    return rsa;
    }

--- utils/test_console.sh.old	2019-03-29 16:34:47.014890971 -0400
+++ utils/test_console.sh	2019-03-29 16:35:16.181691631 -0400
@@ -61,7 +61,7 @@
 USE_HWTPM="0"
 export TPM_SERVER_NAME
 export TPM_SERVER_PORT
-export TPM_TRANSPORT="0"
+export TPM_TRANSPORT=${TPM_TRANSPORT:-0}
 export TPM_TRANSPORT_EK
 export TPM_TRANSPORT_EKP
 export TPM_TRANSPORT_SK
@@ -71,7 +71,7 @@
 export TPM_TRANSPORT_ENONCE
 export TPM_TRANSPORT_ENC
 export LOADKEY_VERSION=""
-export TPM_AUDITING="0"
+export TPM_AUDITING=${TPM_AUDITING:-0}
 export TPM_IS_FIPS="0"
 export TPM_ET_ENCRYPT_AES="0"
 export NO_SRK_PASSWORD=0
