diff --git a/Configure b/Configure\r
-index 4a715dc..eb61eda 100755\r
+index 4a715dc..b4a4781 100755\r
--- a/Configure\r
+++ b/Configure\r
-@@ -1082,7 +1082,7 @@ if (defined($disabled{"tls1"}))\r
+@@ -605,6 +605,9 @@ my %table=(\r
+ # with itself, Applink is never engaged and can as well be omitted.\r
+ "mingw64", "gcc:-mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE::-D_MT:MINGW64:-lws2_32 -lgdi32 -lcrypt32:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${x86_64_asm}:mingw64:win32:cygwin-shared:-D_WINDLL:-mno-cygwin:.dll.a",\r
+ \r
++# UEFI\r
++"UEFI", "cc:-DL_ENDIAN -O:::UEFI::::",\r
++\r
+ # UWIN \r
+ "UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32",\r
+ \r
+@@ -1082,7 +1085,7 @@ if (defined($disabled{"tls1"}))\r
}\r
\r
if (defined($disabled{"ec"}) || defined($disabled{"dsa"})\r
{\r
$disabled{"gost"} = "forced";\r
}\r
+diff --git a/apps/apps.c b/apps/apps.c\r
+index 2e77805..e21e759 100644\r
+--- a/apps/apps.c\r
++++ b/apps/apps.c\r
+@@ -2374,6 +2374,8 @@ int args_verify(char ***pargs, int *pargc,\r
+ flags |= X509_V_FLAG_PARTIAL_CHAIN;\r
+ else if (!strcmp(arg, "-no_alt_chains"))\r
+ flags |= X509_V_FLAG_NO_ALT_CHAINS;\r
++ else if (!strcmp(arg, "-no_check_time"))\r
++ flags |= X509_V_FLAG_NO_CHECK_TIME;\r
+ else\r
+ return 0;\r
+ \r
diff --git a/crypto/asn1/a_strex.c b/crypto/asn1/a_strex.c\r
index 35fd44c..9f39bff 100644\r
--- a/crypto/asn1/a_strex.c\r
/*\r
* Borland C seems too stupid to be able to shift and do longs in the\r
diff --git a/crypto/opensslconf.h.in b/crypto/opensslconf.h.in\r
-index 7a1c85d..a5f51a7 100644\r
+index 7a1c85d..7162c0f 100644\r
--- a/crypto/opensslconf.h.in\r
+++ b/crypto/opensslconf.h.in\r
@@ -1,5 +1,15 @@\r
/* Generate 80386 code? */\r
#undef I386_ONLY\r
\r
+@@ -56,7 +66,7 @@\r
+ #endif\r
+ #endif\r
+ \r
+-#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)\r
++#if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H) && !defined(OPENSSL_SYSNAME_UEFI)\r
+ #define CONFIG_HEADER_BN_H\r
+ #undef BN_LLONG\r
+ \r
diff --git a/crypto/pem/pem.h b/crypto/pem/pem.h\r
index d3b23fc..87b0b6a 100644\r
--- a/crypto/pem/pem.h\r
+ BIO_free_all(tmpmem);\r
+ return ret;\r
}\r
+diff --git a/crypto/rand/rand_egd.c b/crypto/rand/rand_egd.c\r
+index 737aebf..f23f348 100644\r
+--- a/crypto/rand/rand_egd.c\r
++++ b/crypto/rand/rand_egd.c\r
+@@ -95,7 +95,7 @@\r
+ * RAND_egd() is a wrapper for RAND_egd_bytes() with numbytes=255.\r
+ */\r
+ \r
+-#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_VOS) || defined(OPENSSL_SYS_BEOS)\r
++#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_VOS) || defined(OPENSSL_SYS_BEOS) || defined(OPENSSL_SYS_UEFI)\r
+ int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes)\r
+ {\r
+ return (-1);\r
diff --git a/crypto/rand/rand_unix.c b/crypto/rand/rand_unix.c\r
index 266111e..f60fac6 100644\r
--- a/crypto/rand/rand_unix.c\r
int X509_STORE_add_cert(X509_STORE *ctx, X509 *x);\r
int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x);\r
diff --git a/crypto/x509v3/ext_dat.h b/crypto/x509v3/ext_dat.h\r
-index c3a6fce..01edd2a 100644\r
+index c3a6fce..09ebbca 100644\r
--- a/crypto/x509v3/ext_dat.h\r
+++ b/crypto/x509v3/ext_dat.h\r
@@ -127,8 +127,10 @@ static const X509V3_EXT_METHOD *standard_exts[] = {\r
&v3_idp,\r
&v3_alt[2],\r
&v3_freshest_crl,\r
-+#ifndef OPENSSL_SYS_UEFI\r
++#ifndef OPENSSL_NO_SCT\r
&v3_ct_scts[0],\r
&v3_ct_scts[1],\r
+#endif\r
} else if (strncmp(val->value, "text:", 5) == 0) {\r
val_len = strlen(val->value + 5);\r
tmp_data = OPENSSL_realloc((*policy)->data,\r
+diff --git a/crypto/x509v3/v3_scts.c b/crypto/x509v3/v3_scts.c\r
+index 0b7c681..1895b8f 100644\r
+--- a/crypto/x509v3/v3_scts.c\r
++++ b/crypto/x509v3/v3_scts.c\r
+@@ -61,6 +61,7 @@\r
+ #include <openssl/asn1.h>\r
+ #include <openssl/x509v3.h>\r
+ \r
++#ifndef OPENSSL_NO_SCT\r
+ /* Signature and hash algorithms from RFC 5246 */\r
+ #define TLSEXT_hash_sha256 4\r
+ \r
+@@ -332,3 +333,4 @@ static int i2r_SCT_LIST(X509V3_EXT_METHOD *method, STACK_OF(SCT) *sct_list,\r
+ \r
+ return 1;\r
+ }\r
++#endif\r
diff --git a/crypto/x509v3/x509v3.h b/crypto/x509v3/x509v3.h\r
index f5c6156..a2e78aa 100644\r
--- a/crypto/x509v3/x509v3.h\r
\r
/* Error codes for the ZENCOD functions. */\r
\r
+diff --git a/doc/crypto/X509_VERIFY_PARAM_set_flags.pod b/doc/crypto/X509_VERIFY_PARAM_set_flags.pod\r
+index 44792f9..7f95d58 100644\r
+--- a/doc/crypto/X509_VERIFY_PARAM_set_flags.pod\r
++++ b/doc/crypto/X509_VERIFY_PARAM_set_flags.pod\r
+@@ -203,6 +203,10 @@ chain found is not trusted, then OpenSSL will continue to check to see if an\r
+ alternative chain can be found that is trusted. With this flag set the behaviour\r
+ will match that of OpenSSL versions prior to 1.0.2b.\r
+ \r
++The B<X509_V_FLAG_NO_CHECK_TIME> flag suppresses checking the validity period\r
++of certificates and CRLs against the current time. If X509_VERIFY_PARAM_set_time()\r
++is used to specify a verification time, the check is not suppressed.\r
++\r
+ =head1 NOTES\r
+ \r
+ The above functions should be used to manipulate verification parameters\r
diff --git a/doc/crypto/threads.pod b/doc/crypto/threads.pod\r
index dc0e939..fe123bb 100644\r
--- a/doc/crypto/threads.pod\r
\r
/* Error codes for the UBSEC functions. */\r
\r
+diff --git a/makevms.com b/makevms.com\r
+index f6b3ff2..1dcbe36 100755\r
+--- a/makevms.com\r
++++ b/makevms.com\r
+@@ -293,6 +293,7 @@ $ CONFIG_LOGICALS := AES,-\r
+ RFC3779,-\r
+ RIPEMD,-\r
+ RSA,-\r
++ SCT,-\r
+ SCTP,-\r
+ SEED,-\r
+ SHA,-\r
diff --git a/ssl/d1_both.c b/ssl/d1_both.c\r
index d1fc716..d5f661a 100644\r
--- a/ssl/d1_both.c\r
RSA_OAEP_PARAMS_free 4736 EXIST::FUNCTION:RSA\r
EVP_des_ede3_wrap 4737 EXIST::FUNCTION:DES\r
RSA_OAEP_PARAMS_it 4738 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:RSA\r
+diff --git a/util/mkdef.pl b/util/mkdef.pl\r
+index c57c7f7..d4c3386 100755\r
+--- a/util/mkdef.pl\r
++++ b/util/mkdef.pl\r
+@@ -97,6 +97,8 @@ my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF",\r
+ "FP_API", "STDIO", "SOCK", "KRB5", "DGRAM",\r
+ # Engines\r
+ "STATIC_ENGINE", "ENGINE", "HW", "GMP",\r
++ # X.509v3 Signed Certificate Timestamps\r
++ "SCT",\r
+ # RFC3779\r
+ "RFC3779",\r
+ # TLS\r
+@@ -142,7 +144,7 @@ my $no_md2; my $no_md4; my $no_md5; my $no_sha; my $no_ripemd; my $no_mdc2;\r
+ my $no_rsa; my $no_dsa; my $no_dh; my $no_hmac=0; my $no_aes; my $no_krb5;\r
+ my $no_ec; my $no_ecdsa; my $no_ecdh; my $no_engine; my $no_hw;\r
+ my $no_fp_api; my $no_static_engine=1; my $no_gmp; my $no_deprecated;\r
+-my $no_rfc3779; my $no_psk; my $no_tlsext; my $no_cms; my $no_capieng;\r
++my $no_sct; my $no_rfc3779; my $no_psk; my $no_tlsext; my $no_cms; my $no_capieng;\r
+ my $no_jpake; my $no_srp; my $no_ssl2; my $no_ec2m; my $no_nistp_gcc; \r
+ my $no_nextprotoneg; my $no_sctp; my $no_srtp; my $no_ssl_trace;\r
+ my $no_unit_test; my $no_ssl3_method;\r
+@@ -233,6 +235,7 @@ foreach (@ARGV, split(/ /, $options))\r
+ elsif (/^no-engine$/) { $no_engine=1; }\r
+ elsif (/^no-hw$/) { $no_hw=1; }\r
+ elsif (/^no-gmp$/) { $no_gmp=1; }\r
++ elsif (/^no-sct$/) { $no_sct=1; }\r
+ elsif (/^no-rfc3779$/) { $no_rfc3779=1; }\r
+ elsif (/^no-tlsext$/) { $no_tlsext=1; }\r
+ elsif (/^no-cms$/) { $no_cms=1; }\r
+@@ -1206,6 +1209,7 @@ sub is_valid\r
+ if ($keyword eq "FP_API" && $no_fp_api) { return 0; }\r
+ if ($keyword eq "STATIC_ENGINE" && $no_static_engine) { return 0; }\r
+ if ($keyword eq "GMP" && $no_gmp) { return 0; }\r
++ if ($keyword eq "SCT" && $no_sct) { return 0; }\r
+ if ($keyword eq "RFC3779" && $no_rfc3779) { return 0; }\r
+ if ($keyword eq "TLSEXT" && $no_tlsext) { return 0; }\r
+ if ($keyword eq "PSK" && $no_psk) { return 0; }\r
diff --git a/util/mkerr.pl b/util/mkerr.pl\r
index 09ebebe..cd57ade 100644\r
--- a/util/mkerr.pl\r