diff --git a/debian/changelog b/debian/changelog index 953e874..652b6a7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,9 @@ shim (0.8-0ubuntu1) UNRELEASED; urgency=medium * New upstream release. + * debian/patches/CVE-2014-3675.patch, debian/patches/CVE-2014-3677.patch, + debian/patches/0001-Update-openssl-to-0.9.8za.patch: dropped, included + in the upstream release. -- Mathieu Trudel-Lapierre Wed, 06 May 2015 09:49:45 -0400 diff --git a/debian/patches/0001-Update-openssl-to-0.9.8za.patch b/debian/patches/0001-Update-openssl-to-0.9.8za.patch deleted file mode 100644 index a026b52..0000000 --- a/debian/patches/0001-Update-openssl-to-0.9.8za.patch +++ /dev/null @@ -1,4093 +0,0 @@ -From 76f8050ff6003e6048fdc4430d8b503aff934255 Mon Sep 17 00:00:00 2001 -From: Gary Ching-Pang Lin -Date: Wed, 9 Jul 2014 15:02:50 +0800 -Subject: [PATCH] Update openssl to 0.9.8za - -Also update to Tiano Cryptlib r15638 ---- - Cryptlib/Cryptlib.diff | 4 +- - Cryptlib/Include/openssl/bn.h | 11 + - Cryptlib/Include/openssl/crypto.h | 37 +- - Cryptlib/Include/openssl/ec.h | 10 +- - Cryptlib/Include/openssl/engine.h | 8 +- - Cryptlib/Include/openssl/opensslv.h | 6 +- - Cryptlib/Include/openssl/ssl.h | 13 +- - Cryptlib/Include/openssl/ssl3.h | 10 + - Cryptlib/Include/openssl/symhacks.h | 10 +- - Cryptlib/Include/openssl/tls1.h | 14 + - Cryptlib/Makefile | 6 +- - Cryptlib/OpenSSL/crypto/asn1/a_int.c | 2 +- - Cryptlib/OpenSSL/crypto/asn1/a_strex.c | 1 + - Cryptlib/OpenSSL/crypto/asn1/a_strnid.c | 2 +- - Cryptlib/OpenSSL/crypto/asn1/a_verify.c | 6 + - Cryptlib/OpenSSL/crypto/asn1/t_pkey.c | 5 - - Cryptlib/OpenSSL/crypto/asn1/x_pubkey.c | 5 +- - Cryptlib/OpenSSL/crypto/bn/bn_lib.c | 52 ++ - Cryptlib/OpenSSL/crypto/bn/bn_mont.c | 46 +- - Cryptlib/OpenSSL/crypto/bn/bn_word.c | 25 +- - Cryptlib/OpenSSL/crypto/cryptlib.c | 16 + - Cryptlib/OpenSSL/crypto/ec/ec2_mult.c | 26 +- - Cryptlib/OpenSSL/crypto/ec/ec_key.c | 13 +- - Cryptlib/OpenSSL/crypto/ec/ec_lib.c | 10 +- - Cryptlib/OpenSSL/crypto/ecdh/ech_lib.c | 11 +- - Cryptlib/OpenSSL/crypto/ecdsa/ecs_lib.c | 11 +- - Cryptlib/OpenSSL/crypto/engine/eng_all.c | 6 +- - Cryptlib/OpenSSL/crypto/err/err_all.c | 2 + - Cryptlib/OpenSSL/crypto/evp/bio_b64.c | 3 +- - Cryptlib/OpenSSL/crypto/evp/encode.c | 1 + - Cryptlib/OpenSSL/crypto/o_init.c | 14 + - Cryptlib/OpenSSL/crypto/ocsp/ocsp_vfy.c | 10 +- - Cryptlib/OpenSSL/crypto/pkcs12/p12_crt.c | 8 + - Cryptlib/OpenSSL/crypto/pkcs12/p12_kiss.c | 2 +- - Cryptlib/OpenSSL/crypto/pkcs7/pk7_smime.c | 4 +- - Cryptlib/OpenSSL/crypto/rsa/rsa_oaep.c | 2 +- - Cryptlib/OpenSSL/crypto/x509/x509_vfy.c | 6 +- - Cryptlib/OpenSSL/update.sh | 998 +++++++++++++++--------------- - Cryptlib/Pk/CryptPkcs7.c | 753 ---------------------- - Cryptlib/Pk/CryptPkcs7Sign.c | 207 +++++++ - Cryptlib/Pk/CryptPkcs7SignNull.c | 59 ++ - Cryptlib/Pk/CryptPkcs7Verify.c | 677 ++++++++++++++++++++ - Cryptlib/Pk/CryptPkcs7VerifyNull.c | 100 +++ - Cryptlib/Pk/CryptRsaExtNull.c | 125 ++++ - Cryptlib/Rand/CryptRand.c | 11 +- - Cryptlib/update.sh | 9 +- - 46 files changed, 1987 insertions(+), 1370 deletions(-) - delete mode 100644 Cryptlib/Pk/CryptPkcs7.c - create mode 100644 Cryptlib/Pk/CryptPkcs7Sign.c - create mode 100644 Cryptlib/Pk/CryptPkcs7SignNull.c - create mode 100644 Cryptlib/Pk/CryptPkcs7Verify.c - create mode 100644 Cryptlib/Pk/CryptPkcs7VerifyNull.c - create mode 100644 Cryptlib/Pk/CryptRsaExtNull.c - -diff --git a/Cryptlib/Cryptlib.diff b/Cryptlib/Cryptlib.diff -index 9663d90..a2f49d6 100644 ---- a/Cryptlib/Cryptlib.diff -+++ b/Cryptlib/Cryptlib.diff -@@ -6,8 +6,8 @@ index 68bc25a..1abe78e 100644 - // BUG: hardcode OldSize == size! We have no any knowledge about - // memory size of original pointer ptr. - // --- return ReallocatePool ((UINTN)size, (UINTN)size, ptr); --+ return ReallocatePool (ptr, (UINTN)size, (UINTN)size); -+- return ReallocatePool ((UINTN) size, (UINTN) size, ptr); -++ return ReallocatePool (ptr, (UINTN) size, (UINTN) size); - } - - /* De-allocates or frees a memory block */ -diff --git a/Cryptlib/Include/openssl/bn.h b/Cryptlib/Include/openssl/bn.h -index f1719a5..688a4e7 100644 ---- a/Cryptlib/Include/openssl/bn.h -+++ b/Cryptlib/Include/openssl/bn.h -@@ -511,6 +511,8 @@ BIGNUM *BN_mod_inverse(BIGNUM *ret, - BIGNUM *BN_mod_sqrt(BIGNUM *ret, - const BIGNUM *a, const BIGNUM *n,BN_CTX *ctx); - -+void BN_consttime_swap(BN_ULONG swap, BIGNUM *a, BIGNUM *b, int nwords); -+ - /* Deprecated versions */ - #ifndef OPENSSL_NO_DEPRECATED - BIGNUM *BN_generate_prime(BIGNUM *ret,int bits,int safe, -@@ -740,11 +742,20 @@ int RAND_pseudo_bytes(unsigned char *buf,int num); - - #define bn_fix_top(a) bn_check_top(a) - -+#define bn_check_size(bn, bits) bn_wcheck_size(bn, ((bits+BN_BITS2-1))/BN_BITS2) -+#define bn_wcheck_size(bn, words) \ -+ do { \ -+ const BIGNUM *_bnum2 = (bn); \ -+ assert(words <= (_bnum2)->dmax && words >= (_bnum2)->top); \ -+ } while(0) -+ - #else /* !BN_DEBUG */ - - #define bn_pollute(a) - #define bn_check_top(a) - #define bn_fix_top(a) bn_correct_top(a) -+#define bn_check_size(bn, bits) -+#define bn_wcheck_size(bn, words) - - #endif - -diff --git a/Cryptlib/Include/openssl/crypto.h b/Cryptlib/Include/openssl/crypto.h -index fc1374f..ac0c949 100644 ---- a/Cryptlib/Include/openssl/crypto.h -+++ b/Cryptlib/Include/openssl/crypto.h -@@ -235,15 +235,15 @@ typedef struct openssl_item_st - #ifndef OPENSSL_NO_LOCKING - #ifndef CRYPTO_w_lock - #define CRYPTO_w_lock(type) \ -- CRYPTO_lock(CRYPTO_LOCK|CRYPTO_WRITE,type,__FILE__,__LINE__) -+ CRYPTO_lock(CRYPTO_LOCK|CRYPTO_WRITE,type,NULL,0) - #define CRYPTO_w_unlock(type) \ -- CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_WRITE,type,__FILE__,__LINE__) -+ CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_WRITE,type,NULL,0) - #define CRYPTO_r_lock(type) \ -- CRYPTO_lock(CRYPTO_LOCK|CRYPTO_READ,type,__FILE__,__LINE__) -+ CRYPTO_lock(CRYPTO_LOCK|CRYPTO_READ,type,NULL,0) - #define CRYPTO_r_unlock(type) \ -- CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_READ,type,__FILE__,__LINE__) -+ CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_READ,type,NULL,0) - #define CRYPTO_add(addr,amount,type) \ -- CRYPTO_add_lock(addr,amount,type,__FILE__,__LINE__) -+ CRYPTO_add_lock(addr,amount,type,NULL,0) - #endif - #else - #define CRYPTO_w_lock(a) -@@ -361,19 +361,19 @@ int CRYPTO_is_mem_check_on(void); - #define MemCheck_off() CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_DISABLE) - #define is_MemCheck_on() CRYPTO_is_mem_check_on() - --#define OPENSSL_malloc(num) CRYPTO_malloc((int)num,__FILE__,__LINE__) --#define OPENSSL_strdup(str) CRYPTO_strdup((str),__FILE__,__LINE__) -+#define OPENSSL_malloc(num) CRYPTO_malloc((int)num,NULL,0) -+#define OPENSSL_strdup(str) CRYPTO_strdup((str),NULL,0) - #define OPENSSL_realloc(addr,num) \ -- CRYPTO_realloc((char *)addr,(int)num,__FILE__,__LINE__) -+ CRYPTO_realloc((char *)addr,(int)num,NULL,0) - #define OPENSSL_realloc_clean(addr,old_num,num) \ -- CRYPTO_realloc_clean(addr,old_num,num,__FILE__,__LINE__) -+ CRYPTO_realloc_clean(addr,old_num,num,NULL,0) - #define OPENSSL_remalloc(addr,num) \ -- CRYPTO_remalloc((char **)addr,(int)num,__FILE__,__LINE__) -+ CRYPTO_remalloc((char **)addr,(int)num,NULL,0) - #define OPENSSL_freeFunc CRYPTO_free - #define OPENSSL_free(addr) CRYPTO_free(addr) - - #define OPENSSL_malloc_locked(num) \ -- CRYPTO_malloc_locked((int)num,__FILE__,__LINE__) -+ CRYPTO_malloc_locked((int)num,NULL,0) - #define OPENSSL_free_locked(addr) CRYPTO_free_locked(addr) - - -@@ -487,7 +487,7 @@ void CRYPTO_set_mem_debug_options(long bits); - long CRYPTO_get_mem_debug_options(void); - - #define CRYPTO_push_info(info) \ -- CRYPTO_push_info_(info, __FILE__, __LINE__); -+ CRYPTO_push_info_(info, NULL, 0); - int CRYPTO_push_info_(const char *info, const char *file, int line); - int CRYPTO_pop_info(void); - int CRYPTO_remove_all_info(void); -@@ -528,17 +528,17 @@ void CRYPTO_mem_leaks_cb(CRYPTO_MEM_LEAK_CB *cb); - - /* die if we have to */ - void OpenSSLDie(const char *file,int line,const char *assertion); --#define OPENSSL_assert(e) (void)((e) ? 0 : (OpenSSLDie(__FILE__, __LINE__, #e),1)) -+#define OPENSSL_assert(e) (void)((e) ? 0 : (OpenSSLDie(NULL, 0, #e),1)) - - unsigned long *OPENSSL_ia32cap_loc(void); - #define OPENSSL_ia32cap (*(OPENSSL_ia32cap_loc())) - int OPENSSL_isservice(void); - - #ifdef OPENSSL_FIPS --#define FIPS_ERROR_IGNORED(alg) OpenSSLDie(__FILE__, __LINE__, \ -+#define FIPS_ERROR_IGNORED(alg) OpenSSLDie(NULL, 0, \ - alg " previous FIPS forbidden algorithm error ignored"); - --#define FIPS_BAD_ABORT(alg) OpenSSLDie(__FILE__, __LINE__, \ -+#define FIPS_BAD_ABORT(alg) OpenSSLDie(NULL, 0, \ - #alg " Algorithm forbidden in FIPS mode"); - - #ifdef OPENSSL_FIPS_STRICT -@@ -591,6 +591,13 @@ int OPENSSL_isservice(void); - #define OPENSSL_HAVE_INIT 1 - void OPENSSL_init(void); - -+/* CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal. It -+ * takes an amount of time dependent on |len|, but independent of the contents -+ * of |a| and |b|. Unlike memcmp, it cannot be used to put elements into a -+ * defined order as the return value when a != b is undefined, other than to be -+ * non-zero. */ -+int CRYPTO_memcmp(const void *a, const void *b, size_t len); -+ - /* BEGIN ERROR CODES */ - /* The following lines are auto generated by the script mkerr.pl. Any changes - * made after this point may be overwritten when the script is next run. -diff --git a/Cryptlib/Include/openssl/ec.h b/Cryptlib/Include/openssl/ec.h -index 8bc2a23..367307f 100644 ---- a/Cryptlib/Include/openssl/ec.h -+++ b/Cryptlib/Include/openssl/ec.h -@@ -321,7 +321,15 @@ void EC_KEY_set_conv_form(EC_KEY *, point_conversion_form_t); - /* functions to set/get method specific data */ - void *EC_KEY_get_key_method_data(EC_KEY *, - void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *)); --void EC_KEY_insert_key_method_data(EC_KEY *, void *data, -+/** Sets the key method data of an EC_KEY object, if none has yet been set. -+ * \param key EC_KEY object -+ * \param data opaque data to install. -+ * \param dup_func a function that duplicates |data|. -+ * \param free_func a function that frees |data|. -+ * \param clear_free_func a function that wipes and frees |data|. -+ * \return the previously set data pointer, or NULL if |data| was inserted. -+ */ -+void *EC_KEY_insert_key_method_data(EC_KEY *key, void *data, - void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *)); - /* wrapper functions for the underlying EC_GROUP object */ - void EC_KEY_set_asn1_flag(EC_KEY *, int); -diff --git a/Cryptlib/Include/openssl/engine.h b/Cryptlib/Include/openssl/engine.h -index d4bc1ef..b4e0444 100644 ---- a/Cryptlib/Include/openssl/engine.h -+++ b/Cryptlib/Include/openssl/engine.h -@@ -335,15 +335,15 @@ void ENGINE_load_gmp(void); - void ENGINE_load_nuron(void); - void ENGINE_load_sureware(void); - void ENGINE_load_ubsec(void); --#endif --void ENGINE_load_cryptodev(void); --void ENGINE_load_padlock(void); --void ENGINE_load_builtin_engines(void); - #ifdef OPENSSL_SYS_WIN32 - #ifndef OPENSSL_NO_CAPIENG - void ENGINE_load_capi(void); - #endif - #endif -+#endif -+void ENGINE_load_cryptodev(void); -+void ENGINE_load_padlock(void); -+void ENGINE_load_builtin_engines(void); - - /* Get and set global flags (ENGINE_TABLE_FLAG_***) for the implementation - * "registry" handling. */ -diff --git a/Cryptlib/Include/openssl/opensslv.h b/Cryptlib/Include/openssl/opensslv.h -index 4a5a5ae..e5ab5c4 100644 ---- a/Cryptlib/Include/openssl/opensslv.h -+++ b/Cryptlib/Include/openssl/opensslv.h -@@ -25,11 +25,11 @@ - * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for - * major minor fix final patch/beta) - */ --#define OPENSSL_VERSION_NUMBER 0x0090817fL -+#define OPENSSL_VERSION_NUMBER 0x009081afL - #ifdef OPENSSL_FIPS --#define OPENSSL_VERSION_TEXT "OpenSSL 0.9.8w-fips 23 Apr 2012" -+#define OPENSSL_VERSION_TEXT "OpenSSL 0.9.8za-fips 5 Jun 2014" - #else --#define OPENSSL_VERSION_TEXT "OpenSSL 0.9.8w 23 Apr 2012" -+#define OPENSSL_VERSION_TEXT "OpenSSL 0.9.8za 5 Jun 2014" - #endif - #define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT - -diff --git a/Cryptlib/Include/openssl/ssl.h b/Cryptlib/Include/openssl/ssl.h -index eb50e14..5f2a04e 100644 ---- a/Cryptlib/Include/openssl/ssl.h -+++ b/Cryptlib/Include/openssl/ssl.h -@@ -490,11 +490,14 @@ typedef struct ssl_session_st - #define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x00000008L - #define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x00000010L - #define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x00000020L --#define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x00000040L /* no effect since 0.9.7h and 0.9.8b */ -+#define SSL_OP_SAFARI_ECDHE_ECDSA_BUG 0x00000040L - #define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x00000080L - #define SSL_OP_TLS_D5_BUG 0x00000100L - #define SSL_OP_TLS_BLOCK_PADDING_BUG 0x00000200L - -+/* Hasn't done anything since OpenSSL 0.9.7h, retained for compatibility */ -+#define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 -+ - /* Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added - * in OpenSSL 0.9.6d. Usually (depending on the application protocol) - * the workaround is not needed. Unfortunately some broken SSL/TLS -@@ -1204,6 +1207,8 @@ size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); - #define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE - #define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME - #define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE -+#define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE -+#define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY /* fatal */ - - #define SSL_ERROR_NONE 0 - #define SSL_ERROR_SSL 1 -@@ -1820,6 +1825,7 @@ void ERR_load_SSL_strings(void); - #define SSL_F_SSL_GET_NEW_SESSION 181 - #define SSL_F_SSL_GET_PREV_SESSION 217 - #define SSL_F_SSL_GET_SERVER_SEND_CERT 182 -+#define SSL_F_SSL_GET_SERVER_SEND_PKEY 317 - #define SSL_F_SSL_GET_SIGN_PKEY 183 - #define SSL_F_SSL_INIT_WBIO_BUFFER 184 - #define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185 -@@ -2073,6 +2079,11 @@ void ERR_load_SSL_strings(void); - #define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022 - #define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048 - #define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090 -+#define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114 -+#define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113 -+#define SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111 -+#define SSL_R_TLSV1_UNRECOGNIZED_NAME 1112 -+#define SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110 - #define SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER 232 - #define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 227 - #define SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST 233 -diff --git a/Cryptlib/Include/openssl/ssl3.h b/Cryptlib/Include/openssl/ssl3.h -index b9a85ef..de5e559 100644 ---- a/Cryptlib/Include/openssl/ssl3.h -+++ b/Cryptlib/Include/openssl/ssl3.h -@@ -333,6 +333,7 @@ typedef struct ssl3_buffer_st - #define SSL3_FLAGS_DELAY_CLIENT_FINISHED 0x0002 - #define SSL3_FLAGS_POP_BUFFER 0x0004 - #define TLS1_FLAGS_TLS_PADDING_BUG 0x0008 -+#define SSL3_FLAGS_CCS_OK 0x0080 - - /* SSL3_FLAGS_SGC_RESTART_DONE is set when we - * restart a handshake because of MS SGC and so prevents us -@@ -460,6 +461,15 @@ typedef struct ssl3_state_st - unsigned char previous_server_finished[EVP_MAX_MD_SIZE]; - unsigned char previous_server_finished_len; - int send_connection_binding; /* TODOEKR */ -+ -+#ifndef OPENSSL_NO_TLSEXT -+#ifndef OPENSSL_NO_EC -+ /* This is set to true if we believe that this is a version of Safari -+ * running on OS X 10.6 or newer. We wish to know this because Safari -+ * on 10.8 .. 10.8.3 has broken ECDHE-ECDSA support. */ -+ char is_probably_safari; -+#endif /* !OPENSSL_NO_EC */ -+#endif /* !OPENSSL_NO_TLSEXT */ - } SSL3_STATE; - - -diff --git a/Cryptlib/Include/openssl/symhacks.h b/Cryptlib/Include/openssl/symhacks.h -index 0114093..c540771 100644 ---- a/Cryptlib/Include/openssl/symhacks.h -+++ b/Cryptlib/Include/openssl/symhacks.h -@@ -252,15 +252,15 @@ - #define EC_POINT_set_compressed_coordinates_GF2m \ - EC_POINT_set_compr_coords_GF2m - #undef ec_GF2m_simple_group_clear_finish --#define ec_GF2m_simple_group_clear_finish ec_GF2m_simple_grp_clr_finish -+#define ec_GF2m_simple_group_clear_finish ec_GF2m_simple_grp_clr_finish - #undef ec_GF2m_simple_group_check_discriminant - #define ec_GF2m_simple_group_check_discriminant ec_GF2m_simple_grp_chk_discrim - #undef ec_GF2m_simple_point_clear_finish --#define ec_GF2m_simple_point_clear_finish ec_GF2m_simple_pt_clr_finish -+#define ec_GF2m_simple_point_clear_finish ec_GF2m_simple_pt_clr_finish - #undef ec_GF2m_simple_point_set_to_infinity --#define ec_GF2m_simple_point_set_to_infinity ec_GF2m_simple_pt_set_to_inf -+#define ec_GF2m_simple_point_set_to_infinity ec_GF2m_simple_pt_set_to_inf - #undef ec_GF2m_simple_points_make_affine --#define ec_GF2m_simple_points_make_affine ec_GF2m_simple_pts_make_affine -+#define ec_GF2m_simple_points_make_affine ec_GF2m_simple_pts_make_affine - #undef ec_GF2m_simple_point_set_affine_coordinates - #define ec_GF2m_simple_point_set_affine_coordinates \ - ec_GF2m_smp_pt_set_af_coords -@@ -288,8 +288,6 @@ - #define ec_GFp_simple_point_set_to_infinity ec_GFp_simple_pt_set_to_inf - #undef ec_GFp_simple_points_make_affine - #define ec_GFp_simple_points_make_affine ec_GFp_simple_pts_make_affine --#undef ec_GFp_simple_group_get_curve_GFp --#define ec_GFp_simple_group_get_curve_GFp ec_GFp_simple_grp_get_curve_GFp - #undef ec_GFp_simple_set_Jprojective_coordinates_GFp - #define ec_GFp_simple_set_Jprojective_coordinates_GFp \ - ec_GFp_smp_set_Jproj_coords_GFp -diff --git a/Cryptlib/Include/openssl/tls1.h b/Cryptlib/Include/openssl/tls1.h -index afe4807..47f25af 100644 ---- a/Cryptlib/Include/openssl/tls1.h -+++ b/Cryptlib/Include/openssl/tls1.h -@@ -80,10 +80,24 @@ extern "C" { - - #define TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES 0 - -+#define TLS1_2_VERSION 0x0303 -+#define TLS1_2_VERSION_MAJOR 0x03 -+#define TLS1_2_VERSION_MINOR 0x03 -+ -+#define TLS1_1_VERSION 0x0302 -+#define TLS1_1_VERSION_MAJOR 0x03 -+#define TLS1_1_VERSION_MINOR 0x02 -+ - #define TLS1_VERSION 0x0301 - #define TLS1_VERSION_MAJOR 0x03 - #define TLS1_VERSION_MINOR 0x01 - -+#define TLS1_get_version(s) \ -+ ((s->version >> 8) == TLS1_VERSION_MAJOR ? s->version : 0) -+ -+#define TLS1_get_client_version(s) \ -+ ((s->client_version >> 8) == TLS1_VERSION_MAJOR ? s->client_version : 0) -+ - #define TLS1_AD_DECRYPTION_FAILED 21 - #define TLS1_AD_RECORD_OVERFLOW 22 - #define TLS1_AD_UNKNOWN_CA 48 /* fatal */ -diff --git a/Cryptlib/Makefile b/Cryptlib/Makefile -index d24e59e..678baac 100644 ---- a/Cryptlib/Makefile -+++ b/Cryptlib/Makefile -@@ -30,7 +30,11 @@ OBJS = Hash/CryptMd4.o \ - Rand/CryptRand.o \ - Pk/CryptRsaBasic.o \ - Pk/CryptRsaExt.o \ -- Pk/CryptPkcs7.o \ -+ Pk/CryptRsaExtNull.o \ -+ Pk/CryptPkcs7Sign.o \ -+ Pk/CryptPkcs7SignNull.o \ -+ Pk/CryptPkcs7Verify.o \ -+ Pk/CryptPkcs7VerifyNull.o \ - Pk/CryptDh.o \ - Pk/CryptX509.o \ - Pk/CryptAuthenticode.o \ -diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_int.c b/Cryptlib/OpenSSL/crypto/asn1/a_int.c -index f551bdb..ee26c31 100755 ---- a/Cryptlib/OpenSSL/crypto/asn1/a_int.c -+++ b/Cryptlib/OpenSSL/crypto/asn1/a_int.c -@@ -116,7 +116,7 @@ int i2c_ASN1_INTEGER(ASN1_INTEGER *a, unsigned char **pp) - int pad=0,ret,i,neg; - unsigned char *p,*n,pb=0; - -- if ((a == NULL) || (a->data == NULL)) return(0); -+ if (a == NULL) return(0); - neg=a->type & V_ASN1_NEG; - if (a->length == 0) - ret=1; -diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_strex.c b/Cryptlib/OpenSSL/crypto/asn1/a_strex.c -index 264ebf2..ead37ac 100755 ---- a/Cryptlib/OpenSSL/crypto/asn1/a_strex.c -+++ b/Cryptlib/OpenSSL/crypto/asn1/a_strex.c -@@ -567,6 +567,7 @@ int ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in) - if(mbflag == -1) return -1; - mbflag |= MBSTRING_FLAG; - stmp.data = NULL; -+ stmp.length = 0; - ret = ASN1_mbstring_copy(&str, in->data, in->length, mbflag, B_ASN1_UTF8STRING); - if(ret < 0) return ret; - *out = stmp.data; -diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_strnid.c b/Cryptlib/OpenSSL/crypto/asn1/a_strnid.c -index b68ae43..9b7d688 100755 ---- a/Cryptlib/OpenSSL/crypto/asn1/a_strnid.c -+++ b/Cryptlib/OpenSSL/crypto/asn1/a_strnid.c -@@ -75,7 +75,7 @@ static int table_cmp(const void *a, const void *b); - * certain software (e.g. Netscape) has problems with them. - */ - --static unsigned long global_mask = 0xFFFFFFFFL; -+static unsigned long global_mask = B_ASN1_UTF8STRING; - - void ASN1_STRING_set_default_mask(unsigned long mask) - { -diff --git a/Cryptlib/OpenSSL/crypto/asn1/a_verify.c b/Cryptlib/OpenSSL/crypto/asn1/a_verify.c -index da3efaa..7ded69b 100755 ---- a/Cryptlib/OpenSSL/crypto/asn1/a_verify.c -+++ b/Cryptlib/OpenSSL/crypto/asn1/a_verify.c -@@ -138,6 +138,12 @@ int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *a, ASN1_BIT_STRING *signat - unsigned char *buf_in=NULL; - int ret= -1,i,inl; - -+ if (!pkey) -+ { -+ ASN1err(ASN1_F_ASN1_ITEM_VERIFY, ERR_R_PASSED_NULL_PARAMETER); -+ return -1; -+ } -+ - EVP_MD_CTX_init(&ctx); - i=OBJ_obj2nid(a->algorithm); - type=EVP_get_digestbyname(OBJ_nid2sn(i)); -diff --git a/Cryptlib/OpenSSL/crypto/asn1/t_pkey.c b/Cryptlib/OpenSSL/crypto/asn1/t_pkey.c -index afb95d6..bc23f56 100755 ---- a/Cryptlib/OpenSSL/crypto/asn1/t_pkey.c -+++ b/Cryptlib/OpenSSL/crypto/asn1/t_pkey.c -@@ -208,11 +208,6 @@ int DSA_print(BIO *bp, const DSA *x, int off) - - if (x->p) - buf_len = (size_t)BN_num_bytes(x->p); -- else -- { -- DSAerr(DSA_F_DSA_PRINT,DSA_R_MISSING_PARAMETERS); -- goto err; -- } - if (x->q) - if (buf_len < (i = (size_t)BN_num_bytes(x->q))) - buf_len = i; -diff --git a/Cryptlib/OpenSSL/crypto/asn1/x_pubkey.c b/Cryptlib/OpenSSL/crypto/asn1/x_pubkey.c -index 94d9f7e..bc8a7bf 100755 ---- a/Cryptlib/OpenSSL/crypto/asn1/x_pubkey.c -+++ b/Cryptlib/OpenSSL/crypto/asn1/x_pubkey.c -@@ -371,12 +371,15 @@ EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key) - CRYPTO_w_lock(CRYPTO_LOCK_EVP_PKEY); - if (key->pkey) - { -+ CRYPTO_w_unlock(CRYPTO_LOCK_EVP_PKEY); - EVP_PKEY_free(ret); - ret = key->pkey; - } - else -+ { - key->pkey = ret; -- CRYPTO_w_unlock(CRYPTO_LOCK_EVP_PKEY); -+ CRYPTO_w_unlock(CRYPTO_LOCK_EVP_PKEY); -+ } - CRYPTO_add(&ret->references, 1, CRYPTO_LOCK_EVP_PKEY); - return(ret); - err: -diff --git a/Cryptlib/OpenSSL/crypto/bn/bn_lib.c b/Cryptlib/OpenSSL/crypto/bn/bn_lib.c -index 32a8fba..b66f507 100755 ---- a/Cryptlib/OpenSSL/crypto/bn/bn_lib.c -+++ b/Cryptlib/OpenSSL/crypto/bn/bn_lib.c -@@ -824,3 +824,55 @@ int bn_cmp_part_words(const BN_ULONG *a, const BN_ULONG *b, - } - return bn_cmp_words(a,b,cl); - } -+ -+/* -+ * Constant-time conditional swap of a and b. -+ * a and b are swapped if condition is not 0. The code assumes that at most one bit of condition is set. -+ * nwords is the number of words to swap. The code assumes that at least nwords are allocated in both a and b, -+ * and that no more than nwords are used by either a or b. -+ * a and b cannot be the same number -+ */ -+void BN_consttime_swap(BN_ULONG condition, BIGNUM *a, BIGNUM *b, int nwords) -+ { -+ BN_ULONG t; -+ int i; -+ -+ bn_wcheck_size(a, nwords); -+ bn_wcheck_size(b, nwords); -+ -+ assert(a != b); -+ assert((condition & (condition - 1)) == 0); -+ assert(sizeof(BN_ULONG) >= sizeof(int)); -+ -+ condition = ((condition - 1) >> (BN_BITS2 - 1)) - 1; -+ -+ t = (a->top^b->top) & condition; -+ a->top ^= t; -+ b->top ^= t; -+ -+#define BN_CONSTTIME_SWAP(ind) \ -+ do { \ -+ t = (a->d[ind] ^ b->d[ind]) & condition; \ -+ a->d[ind] ^= t; \ -+ b->d[ind] ^= t; \ -+ } while (0) -+ -+ -+ switch (nwords) { -+ default: -+ for (i = 10; i < nwords; i++) -+ BN_CONSTTIME_SWAP(i); -+ /* Fallthrough */ -+ case 10: BN_CONSTTIME_SWAP(9); /* Fallthrough */ -+ case 9: BN_CONSTTIME_SWAP(8); /* Fallthrough */ -+ case 8: BN_CONSTTIME_SWAP(7); /* Fallthrough */ -+ case 7: BN_CONSTTIME_SWAP(6); /* Fallthrough */ -+ case 6: BN_CONSTTIME_SWAP(5); /* Fallthrough */ -+ case 5: BN_CONSTTIME_SWAP(4); /* Fallthrough */ -+ case 4: BN_CONSTTIME_SWAP(3); /* Fallthrough */ -+ case 3: BN_CONSTTIME_SWAP(2); /* Fallthrough */ -+ case 2: BN_CONSTTIME_SWAP(1); /* Fallthrough */ -+ case 1: BN_CONSTTIME_SWAP(0); -+ } -+#undef BN_CONSTTIME_SWAP -+} -diff --git a/Cryptlib/OpenSSL/crypto/bn/bn_mont.c b/Cryptlib/OpenSSL/crypto/bn/bn_mont.c -index 4799b15..27cafb1 100755 ---- a/Cryptlib/OpenSSL/crypto/bn/bn_mont.c -+++ b/Cryptlib/OpenSSL/crypto/bn/bn_mont.c -@@ -701,32 +701,38 @@ BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from) - BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock, - const BIGNUM *mod, BN_CTX *ctx) - { -- int got_write_lock = 0; - BN_MONT_CTX *ret; - - CRYPTO_r_lock(lock); -- if (!*pmont) -+ ret = *pmont; -+ CRYPTO_r_unlock(lock); -+ if (ret) -+ return ret; -+ -+ /* We don't want to serialise globally while doing our lazy-init math in -+ * BN_MONT_CTX_set. That punishes threads that are doing independent -+ * things. Instead, punish the case where more than one thread tries to -+ * lazy-init the same 'pmont', by having each do the lazy-init math work -+ * independently and only use the one from the thread that wins the race -+ * (the losers throw away the work they've done). */ -+ ret = BN_MONT_CTX_new(); -+ if (!ret) -+ return NULL; -+ if (!BN_MONT_CTX_set(ret, mod, ctx)) - { -- CRYPTO_r_unlock(lock); -- CRYPTO_w_lock(lock); -- got_write_lock = 1; -+ BN_MONT_CTX_free(ret); -+ return NULL; -+ } - -- if (!*pmont) -- { -- ret = BN_MONT_CTX_new(); -- if (ret && !BN_MONT_CTX_set(ret, mod, ctx)) -- BN_MONT_CTX_free(ret); -- else -- *pmont = ret; -- } -+ /* The locked compare-and-set, after the local work is done. */ -+ CRYPTO_w_lock(lock); -+ if (*pmont) -+ { -+ BN_MONT_CTX_free(ret); -+ ret = *pmont; - } -- -- ret = *pmont; -- -- if (got_write_lock) -- CRYPTO_w_unlock(lock); - else -- CRYPTO_r_unlock(lock); -- -+ *pmont = ret; -+ CRYPTO_w_unlock(lock); - return ret; - } -diff --git a/Cryptlib/OpenSSL/crypto/bn/bn_word.c b/Cryptlib/OpenSSL/crypto/bn/bn_word.c -index ee7b87c..de83a15 100755 ---- a/Cryptlib/OpenSSL/crypto/bn/bn_word.c -+++ b/Cryptlib/OpenSSL/crypto/bn/bn_word.c -@@ -144,26 +144,17 @@ int BN_add_word(BIGNUM *a, BN_ULONG w) - a->neg=!(a->neg); - return(i); - } -- /* Only expand (and risk failing) if it's possibly necessary */ -- if (((BN_ULONG)(a->d[a->top - 1] + 1) == 0) && -- (bn_wexpand(a,a->top+1) == NULL)) -- return(0); -- i=0; -- for (;;) -+ for (i=0;w!=0 && itop;i++) - { -- if (i >= a->top) -- l=w; -- else -- l=(a->d[i]+w)&BN_MASK2; -- a->d[i]=l; -- if (w > l) -- w=1; -- else -- break; -- i++; -+ a->d[i] = l = (a->d[i]+w)&BN_MASK2; -+ w = (w>l)?1:0; - } -- if (i >= a->top) -+ if (w && i==a->top) -+ { -+ if (bn_wexpand(a,a->top+1) == NULL) return 0; - a->top++; -+ a->d[i]=w; -+ } - bn_check_top(a); - return(1); - } -diff --git a/Cryptlib/OpenSSL/crypto/cryptlib.c b/Cryptlib/OpenSSL/crypto/cryptlib.c -index dd74ea8..dec3286 100755 ---- a/Cryptlib/OpenSSL/crypto/cryptlib.c -+++ b/Cryptlib/OpenSSL/crypto/cryptlib.c -@@ -542,3 +542,19 @@ void OpenSSLDie(const char *file,int line,const char *assertion) - } - - void *OPENSSL_stderr(void) { return stderr; } -+ -+#ifndef OPENSSL_FIPS -+ -+int CRYPTO_memcmp(const void *in_a, const void *in_b, size_t len) -+ { -+ size_t i; -+ const unsigned char *a = in_a; -+ const unsigned char *b = in_b; -+ unsigned char x = 0; -+ -+ for (i = 0; i < len; i++) -+ x |= a[i] ^ b[i]; -+ -+ return x; -+ } -+#endif -diff --git a/Cryptlib/OpenSSL/crypto/ec/ec2_mult.c b/Cryptlib/OpenSSL/crypto/ec/ec2_mult.c -index 7dca5e4..6b570a3 100755 ---- a/Cryptlib/OpenSSL/crypto/ec/ec2_mult.c -+++ b/Cryptlib/OpenSSL/crypto/ec/ec2_mult.c -@@ -208,9 +208,12 @@ static int gf2m_Mxy(const EC_GROUP *group, const BIGNUM *x, const BIGNUM *y, BIG - - /* Computes scalar*point and stores the result in r. - * point can not equal r. -- * Uses algorithm 2P of -+ * Uses a modified algorithm 2P of - * Lopex, J. and Dahab, R. "Fast multiplication on elliptic curves over - * GF(2^m) without precomputation". -+ * -+ * To protect against side-channel attack the function uses constant time -+ * swap avoiding conditional branches. - */ - static int ec_GF2m_montgomery_point_multiply(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar, - const EC_POINT *point, BN_CTX *ctx) -@@ -244,6 +247,11 @@ static int ec_GF2m_montgomery_point_multiply(const EC_GROUP *group, EC_POINT *r, - x2 = &r->X; - z2 = &r->Y; - -+ bn_wexpand(x1, group->field.top); -+ bn_wexpand(z1, group->field.top); -+ bn_wexpand(x2, group->field.top); -+ bn_wexpand(z2, group->field.top); -+ - if (!BN_GF2m_mod_arr(x1, &point->X, group->poly)) goto err; /* x1 = x */ - if (!BN_one(z1)) goto err; /* z1 = 1 */ - if (!group->meth->field_sqr(group, z2, x1, ctx)) goto err; /* z2 = x1^2 = x^2 */ -@@ -266,16 +274,12 @@ static int ec_GF2m_montgomery_point_multiply(const EC_GROUP *group, EC_POINT *r, - { - for (; j >= 0; j--) - { -- if (scalar->d[i] & mask) -- { -- if (!gf2m_Madd(group, &point->X, x1, z1, x2, z2, ctx)) goto err; -- if (!gf2m_Mdouble(group, x2, z2, ctx)) goto err; -- } -- else -- { -- if (!gf2m_Madd(group, &point->X, x2, z2, x1, z1, ctx)) goto err; -- if (!gf2m_Mdouble(group, x1, z1, ctx)) goto err; -- } -+ BN_consttime_swap(scalar->d[i] & mask, x1, x2, group->field.top); -+ BN_consttime_swap(scalar->d[i] & mask, z1, z2, group->field.top); -+ if (!gf2m_Madd(group, &point->X, x2, z2, x1, z1, ctx)) goto err; -+ if (!gf2m_Mdouble(group, x1, z1, ctx)) goto err; -+ BN_consttime_swap(scalar->d[i] & mask, x1, x2, group->field.top); -+ BN_consttime_swap(scalar->d[i] & mask, z1, z2, group->field.top); - mask >>= 1; - } - j = BN_BITS2 - 1; -diff --git a/Cryptlib/OpenSSL/crypto/ec/ec_key.c b/Cryptlib/OpenSSL/crypto/ec/ec_key.c -index 522802c..6c933d2 100755 ---- a/Cryptlib/OpenSSL/crypto/ec/ec_key.c -+++ b/Cryptlib/OpenSSL/crypto/ec/ec_key.c -@@ -435,18 +435,27 @@ void EC_KEY_set_conv_form(EC_KEY *key, point_conversion_form_t cform) - void *EC_KEY_get_key_method_data(EC_KEY *key, - void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *)) - { -- return EC_EX_DATA_get_data(key->method_data, dup_func, free_func, clear_free_func); -+ void *ret; -+ -+ CRYPTO_r_lock(CRYPTO_LOCK_EC); -+ ret = EC_EX_DATA_get_data(key->method_data, dup_func, free_func, clear_free_func); -+ CRYPTO_r_unlock(CRYPTO_LOCK_EC); -+ -+ return ret; - } - --void EC_KEY_insert_key_method_data(EC_KEY *key, void *data, -+void *EC_KEY_insert_key_method_data(EC_KEY *key, void *data, - void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *)) - { - EC_EXTRA_DATA *ex_data; -+ - CRYPTO_w_lock(CRYPTO_LOCK_EC); - ex_data = EC_EX_DATA_get_data(key->method_data, dup_func, free_func, clear_free_func); - if (ex_data == NULL) - EC_EX_DATA_set_data(&key->method_data, data, dup_func, free_func, clear_free_func); - CRYPTO_w_unlock(CRYPTO_LOCK_EC); -+ -+ return ex_data; - } - - void EC_KEY_set_asn1_flag(EC_KEY *key, int flag) -diff --git a/Cryptlib/OpenSSL/crypto/ec/ec_lib.c b/Cryptlib/OpenSSL/crypto/ec/ec_lib.c -index 5af8437..bbf2799 100755 ---- a/Cryptlib/OpenSSL/crypto/ec/ec_lib.c -+++ b/Cryptlib/OpenSSL/crypto/ec/ec_lib.c -@@ -480,10 +480,10 @@ int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx) - if (EC_METHOD_get_field_type(EC_GROUP_method_of(a)) != - EC_METHOD_get_field_type(EC_GROUP_method_of(b))) - return 1; -- /* compare the curve name (if present) */ -+ /* compare the curve name (if present in both) */ - if (EC_GROUP_get_curve_name(a) && EC_GROUP_get_curve_name(b) && -- EC_GROUP_get_curve_name(a) == EC_GROUP_get_curve_name(b)) -- return 0; -+ EC_GROUP_get_curve_name(a) != EC_GROUP_get_curve_name(b)) -+ return 1; - - if (!ctx) - ctx_new = ctx = BN_CTX_new(); -@@ -1061,12 +1061,12 @@ int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, BN - if (group->meth->point_cmp == 0) - { - ECerr(EC_F_EC_POINT_CMP, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED); -- return 0; -+ return -1; - } - if ((group->meth != a->meth) || (a->meth != b->meth)) - { - ECerr(EC_F_EC_POINT_CMP, EC_R_INCOMPATIBLE_OBJECTS); -- return 0; -+ return -1; - } - return group->meth->point_cmp(group, a, b, ctx); - } -diff --git a/Cryptlib/OpenSSL/crypto/ecdh/ech_lib.c b/Cryptlib/OpenSSL/crypto/ecdh/ech_lib.c -index bf22234..f9ba5fb 100755 ---- a/Cryptlib/OpenSSL/crypto/ecdh/ech_lib.c -+++ b/Cryptlib/OpenSSL/crypto/ecdh/ech_lib.c -@@ -205,8 +205,15 @@ ECDH_DATA *ecdh_check(EC_KEY *key) - ecdh_data = (ECDH_DATA *)ecdh_data_new(); - if (ecdh_data == NULL) - return NULL; -- EC_KEY_insert_key_method_data(key, (void *)ecdh_data, -- ecdh_data_dup, ecdh_data_free, ecdh_data_free); -+ data = EC_KEY_insert_key_method_data(key, (void *)ecdh_data, -+ ecdh_data_dup, ecdh_data_free, ecdh_data_free); -+ if (data != NULL) -+ { -+ /* Another thread raced us to install the key_method -+ * data and won. */ -+ ecdh_data_free(ecdh_data); -+ ecdh_data = (ECDH_DATA *)data; -+ } - } - else - ecdh_data = (ECDH_DATA *)data; -diff --git a/Cryptlib/OpenSSL/crypto/ecdsa/ecs_lib.c b/Cryptlib/OpenSSL/crypto/ecdsa/ecs_lib.c -index 2ebae3a..81082c9 100755 ---- a/Cryptlib/OpenSSL/crypto/ecdsa/ecs_lib.c -+++ b/Cryptlib/OpenSSL/crypto/ecdsa/ecs_lib.c -@@ -188,8 +188,15 @@ ECDSA_DATA *ecdsa_check(EC_KEY *key) - ecdsa_data = (ECDSA_DATA *)ecdsa_data_new(); - if (ecdsa_data == NULL) - return NULL; -- EC_KEY_insert_key_method_data(key, (void *)ecdsa_data, -- ecdsa_data_dup, ecdsa_data_free, ecdsa_data_free); -+ data = EC_KEY_insert_key_method_data(key, (void *)ecdsa_data, -+ ecdsa_data_dup, ecdsa_data_free, ecdsa_data_free); -+ if (data != NULL) -+ { -+ /* Another thread raced us to install the key_method -+ * data and won. */ -+ ecdsa_data_free(ecdsa_data); -+ ecdsa_data = (ECDSA_DATA *)data; -+ } - } - else - ecdsa_data = (ECDSA_DATA *)data; -diff --git a/Cryptlib/OpenSSL/crypto/engine/eng_all.c b/Cryptlib/OpenSSL/crypto/engine/eng_all.c -index f29c167..8a1b9c7 100755 ---- a/Cryptlib/OpenSSL/crypto/engine/eng_all.c -+++ b/Cryptlib/OpenSSL/crypto/engine/eng_all.c -@@ -102,14 +102,14 @@ void ENGINE_load_builtin_engines(void) - #if !defined(OPENSSL_NO_GMP) && !defined(OPENSSL_NO_HW_GMP) - ENGINE_load_gmp(); - #endif -+#if defined(OPENSSL_SYS_WIN32) && !defined(OPENSSL_NO_CAPIENG) -+ ENGINE_load_capi(); -+#endif - #endif - #ifndef OPENSSL_NO_HW - #if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(HAVE_CRYPTODEV) - ENGINE_load_cryptodev(); - #endif --#if defined(OPENSSL_SYS_WIN32) && !defined(OPENSSL_NO_CAPIENG) -- ENGINE_load_capi(); --#endif - #endif - } - -diff --git a/Cryptlib/OpenSSL/crypto/err/err_all.c b/Cryptlib/OpenSSL/crypto/err/err_all.c -index 39796f7..0429389 100755 ---- a/Cryptlib/OpenSSL/crypto/err/err_all.c -+++ b/Cryptlib/OpenSSL/crypto/err/err_all.c -@@ -104,7 +104,9 @@ - #ifndef OPENSSL_NO_JPAKE - #include - #endif -+#ifndef OPENSSL_NO_COMP - #include -+#endif - - void ERR_load_crypto_strings(void) - { -diff --git a/Cryptlib/OpenSSL/crypto/evp/bio_b64.c b/Cryptlib/OpenSSL/crypto/evp/bio_b64.c -index 72a2a67..16863fe 100755 ---- a/Cryptlib/OpenSSL/crypto/evp/bio_b64.c -+++ b/Cryptlib/OpenSSL/crypto/evp/bio_b64.c -@@ -226,6 +226,7 @@ static int b64_read(BIO *b, char *out, int outl) - else if (ctx->start) - { - q=p=(unsigned char *)ctx->tmp; -+ num = 0; - for (j=0; j v) { rv=-1; goto end; } - ret+=(v-eof); - } - else -diff --git a/Cryptlib/OpenSSL/crypto/o_init.c b/Cryptlib/OpenSSL/crypto/o_init.c -index d767a90..c89fda5 100755 ---- a/Cryptlib/OpenSSL/crypto/o_init.c -+++ b/Cryptlib/OpenSSL/crypto/o_init.c -@@ -93,4 +93,18 @@ void OPENSSL_init(void) - #endif - } - -+#ifdef OPENSSL_FIPS -+ -+int CRYPTO_memcmp(const void *in_a, const void *in_b, size_t len) -+ { -+ size_t i; -+ const unsigned char *a = in_a; -+ const unsigned char *b = in_b; -+ unsigned char x = 0; - -+ for (i = 0; i < len; i++) -+ x |= a[i] ^ b[i]; -+ -+ return x; -+ } -+#endif -diff --git a/Cryptlib/OpenSSL/crypto/ocsp/ocsp_vfy.c b/Cryptlib/OpenSSL/crypto/ocsp/ocsp_vfy.c -index 4a0c387..f24080f 100755 ---- a/Cryptlib/OpenSSL/crypto/ocsp/ocsp_vfy.c -+++ b/Cryptlib/OpenSSL/crypto/ocsp/ocsp_vfy.c -@@ -91,9 +91,12 @@ int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs, - { - EVP_PKEY *skey; - skey = X509_get_pubkey(signer); -- ret = OCSP_BASICRESP_verify(bs, skey, 0); -- EVP_PKEY_free(skey); -- if(ret <= 0) -+ if (skey) -+ { -+ ret = OCSP_BASICRESP_verify(bs, skey, 0); -+ EVP_PKEY_free(skey); -+ } -+ if(!skey || ret <= 0) - { - OCSPerr(OCSP_F_OCSP_BASIC_VERIFY, OCSP_R_SIGNATURE_FAILURE); - goto end; -@@ -108,6 +111,7 @@ int OCSP_basic_verify(OCSP_BASICRESP *bs, STACK_OF(X509) *certs, - init_res = X509_STORE_CTX_init(&ctx, st, signer, bs->certs); - if(!init_res) - { -+ ret = -1; - OCSPerr(OCSP_F_OCSP_BASIC_VERIFY,ERR_R_X509_LIB); - goto end; - } -diff --git a/Cryptlib/OpenSSL/crypto/pkcs12/p12_crt.c b/Cryptlib/OpenSSL/crypto/pkcs12/p12_crt.c -index 9522342..3ef3be1 100755 ---- a/Cryptlib/OpenSSL/crypto/pkcs12/p12_crt.c -+++ b/Cryptlib/OpenSSL/crypto/pkcs12/p12_crt.c -@@ -100,7 +100,11 @@ PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert, - nid_cert = NID_pbe_WithSHA1And3_Key_TripleDES_CBC; - else - #endif -+#ifdef OPENSSL_NO_RC2 -+ nid_cert = NID_pbe_WithSHA1And3_Key_TripleDES_CBC; -+#else - nid_cert = NID_pbe_WithSHA1And40BitRC2_CBC; -+#endif - } - if (!nid_key) - nid_key = NID_pbe_WithSHA1And3_Key_TripleDES_CBC; -@@ -290,7 +294,11 @@ int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, - free_safes = 0; - - if (nid_safe == 0) -+#ifdef OPENSSL_NO_RC2 -+ nid_safe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC; -+#else - nid_safe = NID_pbe_WithSHA1And40BitRC2_CBC; -+#endif - - if (nid_safe == -1) - p7 = PKCS12_pack_p7data(bags); -diff --git a/Cryptlib/OpenSSL/crypto/pkcs12/p12_kiss.c b/Cryptlib/OpenSSL/crypto/pkcs12/p12_kiss.c -index 5c4c6ec..bdbbbec 100755 ---- a/Cryptlib/OpenSSL/crypto/pkcs12/p12_kiss.c -+++ b/Cryptlib/OpenSSL/crypto/pkcs12/p12_kiss.c -@@ -261,7 +261,7 @@ static int parse_bag(PKCS12_SAFEBAG *bag, const char *pass, int passlen, - int len, r; - unsigned char *data; - len = ASN1_STRING_to_UTF8(&data, fname); -- if(len > 0) { -+ if(len >= 0) { - r = X509_alias_set1(x509, data, len); - OPENSSL_free(data); - if (!r) -diff --git a/Cryptlib/OpenSSL/crypto/pkcs7/pk7_smime.c b/Cryptlib/OpenSSL/crypto/pkcs7/pk7_smime.c -index b0ff89a..49b450d 100755 ---- a/Cryptlib/OpenSSL/crypto/pkcs7/pk7_smime.c -+++ b/Cryptlib/OpenSSL/crypto/pkcs7/pk7_smime.c -@@ -290,8 +290,8 @@ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, - - bufsiz = 4096; - buf = OPENSSL_malloc (bufsiz); -- if (buf == NULL) { -- goto err; -+ if (buf == NULL) { -+ goto err; - } - - /* We now have to 'read' from p7bio to calculate digests etc. */ -diff --git a/Cryptlib/OpenSSL/crypto/rsa/rsa_oaep.c b/Cryptlib/OpenSSL/crypto/rsa/rsa_oaep.c -index 546ae5f..b8e3edc 100755 ---- a/Cryptlib/OpenSSL/crypto/rsa/rsa_oaep.c -+++ b/Cryptlib/OpenSSL/crypto/rsa/rsa_oaep.c -@@ -143,7 +143,7 @@ int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, - - EVP_Digest((void *)param, plen, phash, NULL, EVP_sha1(), NULL); - -- if (memcmp(db, phash, SHA_DIGEST_LENGTH) != 0 || bad) -+ if (CRYPTO_memcmp(db, phash, SHA_DIGEST_LENGTH) != 0 || bad) - goto decoding_err; - else - { -diff --git a/Cryptlib/OpenSSL/crypto/x509/x509_vfy.c b/Cryptlib/OpenSSL/crypto/x509/x509_vfy.c -index af12520..b87617a 100755 ---- a/Cryptlib/OpenSSL/crypto/x509/x509_vfy.c -+++ b/Cryptlib/OpenSSL/crypto/x509/x509_vfy.c -@@ -386,11 +386,7 @@ static int get_issuer_sk(X509 **issuer, X509_STORE_CTX *ctx, X509 *x) - - static int check_chain_extensions(X509_STORE_CTX *ctx) - { --#if defined(OPENSSL_NO_CHAIN_VERIFY) || defined(OPENSSL_SYS_UEFI) -- /* -- NOTE: Bypass KU Flags Checking for UEFI version. There are incorrect KU flag setting -- in Authenticode Signing Certificates. -- */ -+#ifdef OPENSSL_NO_CHAIN_VERIFY - return 1; - #else - int i, ok=0, must_be_ca, plen = 0; -diff --git a/Cryptlib/OpenSSL/update.sh b/Cryptlib/OpenSSL/update.sh -index cb25ccd..95875e7 100755 ---- a/Cryptlib/OpenSSL/update.sh -+++ b/Cryptlib/OpenSSL/update.sh -@@ -1,499 +1,501 @@ - #/bin/sh --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/e_os.h e_os.h --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/cryptlib.c crypto/cryptlib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dyn_lck.c crypto/dyn_lck.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/mem.c crypto/mem.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/mem_clr.c crypto/mem_clr.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/mem_dbg.c crypto/mem_dbg.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/cversion.c crypto/cversion.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ex_data.c crypto/ex_data.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/cpt_err.c crypto/cpt_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ebcdic.c crypto/ebcdic.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/uid.c crypto/uid.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/o_time.c crypto/o_time.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/o_str.c crypto/o_str.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/o_dir.c crypto/o_dir.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/o_init.c crypto/o_init.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/fips_err.c crypto/fips_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/md2/md2_dgst.c crypto/md2/md2_dgst.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/md2/md2_one.c crypto/md2/md2_one.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/md4/md4_dgst.c crypto/md4/md4_dgst.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/md4/md4_one.c crypto/md4/md4_one.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/md5/md5_dgst.c crypto/md5/md5_dgst.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/md5/md5_one.c crypto/md5/md5_one.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/sha/sha_dgst.c crypto/sha/sha_dgst.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/sha/sha1dgst.c crypto/sha/sha1dgst.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/sha/sha_one.c crypto/sha/sha_one.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/sha/sha1_one.c crypto/sha/sha1_one.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/sha/sha256.c crypto/sha/sha256.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/sha/sha512.c crypto/sha/sha512.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/hmac/hmac.c crypto/hmac/hmac.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ripemd/rmd_dgst.c crypto/ripemd/rmd_dgst.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ripemd/rmd_one.c crypto/ripemd/rmd_one.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/des_lib.c crypto/des/des_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/set_key.c crypto/des/set_key.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/ecb_enc.c crypto/des/ecb_enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/cbc_enc.c crypto/des/cbc_enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/ecb3_enc.c crypto/des/ecb3_enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/cfb64enc.c crypto/des/cfb64enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/cfb64ede.c crypto/des/cfb64ede.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/cfb_enc.c crypto/des/cfb_enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/ofb64ede.c crypto/des/ofb64ede.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/enc_read.c crypto/des/enc_read.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/enc_writ.c crypto/des/enc_writ.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/ofb64enc.c crypto/des/ofb64enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/ofb_enc.c crypto/des/ofb_enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/str2key.c crypto/des/str2key.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/pcbc_enc.c crypto/des/pcbc_enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/qud_cksm.c crypto/des/qud_cksm.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/rand_key.c crypto/des/rand_key.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/des_enc.c crypto/des/des_enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/fcrypt_b.c crypto/des/fcrypt_b.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/fcrypt.c crypto/des/fcrypt.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/xcbc_enc.c crypto/des/xcbc_enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/rpc_enc.c crypto/des/rpc_enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/cbc_cksm.c crypto/des/cbc_cksm.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/ede_cbcm_enc.c crypto/des/ede_cbcm_enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/des_old.c crypto/des/des_old.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/des_old2.c crypto/des/des_old2.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/des/read2pwd.c crypto/des/read2pwd.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rc2/rc2_ecb.c crypto/rc2/rc2_ecb.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rc2/rc2_skey.c crypto/rc2/rc2_skey.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rc2/rc2_cbc.c crypto/rc2/rc2_cbc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rc2/rc2cfb64.c crypto/rc2/rc2cfb64.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rc2/rc2ofb64.c crypto/rc2/rc2ofb64.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rc4/rc4_enc.c crypto/rc4/rc4_enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rc4/rc4_skey.c crypto/rc4/rc4_skey.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rc4/rc4_fblk.c crypto/rc4/rc4_fblk.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/idea/i_cbc.c crypto/idea/i_cbc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/idea/i_cfb64.c crypto/idea/i_cfb64.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/idea/i_ofb64.c crypto/idea/i_ofb64.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/idea/i_ecb.c crypto/idea/i_ecb.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/idea/i_skey.c crypto/idea/i_skey.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bf/bf_skey.c crypto/bf/bf_skey.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bf/bf_ecb.c crypto/bf/bf_ecb.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bf/bf_enc.c crypto/bf/bf_enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bf/bf_cfb64.c crypto/bf/bf_cfb64.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bf/bf_ofb64.c crypto/bf/bf_ofb64.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/cast/c_skey.c crypto/cast/c_skey.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/cast/c_ecb.c crypto/cast/c_ecb.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/cast/c_enc.c crypto/cast/c_enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/cast/c_cfb64.c crypto/cast/c_cfb64.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/cast/c_ofb64.c crypto/cast/c_ofb64.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/aes/aes_misc.c crypto/aes/aes_misc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/aes/aes_ecb.c crypto/aes/aes_ecb.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/aes/aes_cfb.c crypto/aes/aes_cfb.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/aes/aes_ofb.c crypto/aes/aes_ofb.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/aes/aes_ctr.c crypto/aes/aes_ctr.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/aes/aes_ige.c crypto/aes/aes_ige.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/aes/aes_wrap.c crypto/aes/aes_wrap.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/aes/aes_core.c crypto/aes/aes_core.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/aes/aes_cbc.c crypto/aes/aes_cbc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_add.c crypto/bn/bn_add.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_div.c crypto/bn/bn_div.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_exp.c crypto/bn/bn_exp.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_lib.c crypto/bn/bn_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_ctx.c crypto/bn/bn_ctx.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_mul.c crypto/bn/bn_mul.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_mod.c crypto/bn/bn_mod.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_print.c crypto/bn/bn_print.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_rand.c crypto/bn/bn_rand.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_shift.c crypto/bn/bn_shift.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_word.c crypto/bn/bn_word.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_blind.c crypto/bn/bn_blind.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_kron.c crypto/bn/bn_kron.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_sqrt.c crypto/bn/bn_sqrt.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_gcd.c crypto/bn/bn_gcd.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_prime.c crypto/bn/bn_prime.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_err.c crypto/bn/bn_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_sqr.c crypto/bn/bn_sqr.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_asm.c crypto/bn/bn_asm.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_recp.c crypto/bn/bn_recp.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_mont.c crypto/bn/bn_mont.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_mpi.c crypto/bn/bn_mpi.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_exp2.c crypto/bn/bn_exp2.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_gf2m.c crypto/bn/bn_gf2m.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_nist.c crypto/bn/bn_nist.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_depr.c crypto/bn/bn_depr.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_x931p.c crypto/bn/bn_x931p.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_const.c crypto/bn/bn_const.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bn/bn_opt.c crypto/bn/bn_opt.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_eay.c crypto/rsa/rsa_eay.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_gen.c crypto/rsa/rsa_gen.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_lib.c crypto/rsa/rsa_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_sign.c crypto/rsa/rsa_sign.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_saos.c crypto/rsa/rsa_saos.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_err.c crypto/rsa/rsa_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_pk1.c crypto/rsa/rsa_pk1.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_ssl.c crypto/rsa/rsa_ssl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_none.c crypto/rsa/rsa_none.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_oaep.c crypto/rsa/rsa_oaep.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_chk.c crypto/rsa/rsa_chk.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_null.c crypto/rsa/rsa_null.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_pss.c crypto/rsa/rsa_pss.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_x931.c crypto/rsa/rsa_x931.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_x931g.c crypto/rsa/rsa_x931g.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_asn1.c crypto/rsa/rsa_asn1.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_depr.c crypto/rsa/rsa_depr.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rsa/rsa_eng.c crypto/rsa/rsa_eng.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dsa/dsa_gen.c crypto/dsa/dsa_gen.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dsa/dsa_key.c crypto/dsa/dsa_key.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dsa/dsa_lib.c crypto/dsa/dsa_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dsa/dsa_asn1.c crypto/dsa/dsa_asn1.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dsa/dsa_vrf.c crypto/dsa/dsa_vrf.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dsa/dsa_sign.c crypto/dsa/dsa_sign.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dsa/dsa_err.c crypto/dsa/dsa_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dsa/dsa_ossl.c crypto/dsa/dsa_ossl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dsa/dsa_depr.c crypto/dsa/dsa_depr.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dsa/dsa_utl.c crypto/dsa/dsa_utl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dso/dso_dl.c crypto/dso/dso_dl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dso/dso_dlfcn.c crypto/dso/dso_dlfcn.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dso/dso_err.c crypto/dso/dso_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dso/dso_lib.c crypto/dso/dso_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dso/dso_null.c crypto/dso/dso_null.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dso/dso_openssl.c crypto/dso/dso_openssl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dso/dso_win32.c crypto/dso/dso_win32.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dso/dso_vms.c crypto/dso/dso_vms.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dh/dh_asn1.c crypto/dh/dh_asn1.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dh/dh_gen.c crypto/dh/dh_gen.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dh/dh_key.c crypto/dh/dh_key.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dh/dh_lib.c crypto/dh/dh_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dh/dh_check.c crypto/dh/dh_check.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dh/dh_err.c crypto/dh/dh_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/dh/dh_depr.c crypto/dh/dh_depr.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ec/ec_lib.c crypto/ec/ec_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ec/ecp_smpl.c crypto/ec/ecp_smpl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ec/ecp_mont.c crypto/ec/ecp_mont.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ec/ecp_nist.c crypto/ec/ecp_nist.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ec/ec_cvt.c crypto/ec/ec_cvt.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ec/ec_mult.c crypto/ec/ec_mult.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ec/ec_err.c crypto/ec/ec_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ec/ec_curve.c crypto/ec/ec_curve.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ec/ec_check.c crypto/ec/ec_check.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ec/ec_print.c crypto/ec/ec_print.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ec/ec_asn1.c crypto/ec/ec_asn1.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ec/ec_key.c crypto/ec/ec_key.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ec/ec2_smpl.c crypto/ec/ec2_smpl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ec/ec2_mult.c crypto/ec/ec2_mult.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ecdh/ech_lib.c crypto/ecdh/ech_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ecdh/ech_ossl.c crypto/ecdh/ech_ossl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ecdh/ech_key.c crypto/ecdh/ech_key.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ecdh/ech_err.c crypto/ecdh/ech_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ecdsa/ecs_lib.c crypto/ecdsa/ecs_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ecdsa/ecs_asn1.c crypto/ecdsa/ecs_asn1.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ecdsa/ecs_ossl.c crypto/ecdsa/ecs_ossl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ecdsa/ecs_sign.c crypto/ecdsa/ecs_sign.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ecdsa/ecs_vrf.c crypto/ecdsa/ecs_vrf.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ecdsa/ecs_err.c crypto/ecdsa/ecs_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/buffer/buffer.c crypto/buffer/buffer.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/buffer/buf_str.c crypto/buffer/buf_str.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/buffer/buf_err.c crypto/buffer/buf_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bio/bio_lib.c crypto/bio/bio_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bio/bio_cb.c crypto/bio/bio_cb.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bio/bio_err.c crypto/bio/bio_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bio/bss_mem.c crypto/bio/bss_mem.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bio/bss_null.c crypto/bio/bss_null.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bio/bss_fd.c crypto/bio/bss_fd.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bio/bss_file.c crypto/bio/bss_file.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bio/bf_null.c crypto/bio/bf_null.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bio/bf_buff.c crypto/bio/bf_buff.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bio/b_dump.c crypto/bio/b_dump.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bio/bf_nbio.c crypto/bio/bf_nbio.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bio/bss_log.c crypto/bio/bss_log.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bio/bss_bio.c crypto/bio/bss_bio.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/bio/bss_dgram.c crypto/bio/bss_dgram.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/stack/stack.c crypto/stack/stack.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/lhash/lhash.c crypto/lhash/lhash.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/lhash/lh_stats.c crypto/lhash/lh_stats.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rand/md_rand.c crypto/rand/md_rand.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rand/randfile.c crypto/rand/randfile.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rand/rand_lib.c crypto/rand/rand_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rand/rand_eng.c crypto/rand/rand_eng.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rand/rand_err.c crypto/rand/rand_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rand/rand_egd.c crypto/rand/rand_egd.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rand/rand_win.c crypto/rand/rand_win.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rand/rand_unix.c crypto/rand/rand_unix.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rand/rand_os2.c crypto/rand/rand_os2.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/rand/rand_nw.c crypto/rand/rand_nw.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/err/err.c crypto/err/err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/err/err_def.c crypto/err/err_def.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/err/err_all.c crypto/err/err_all.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/err/err_prn.c crypto/err/err_prn.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/err/err_str.c crypto/err/err_str.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/err/err_bio.c crypto/err/err_bio.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/objects/o_names.c crypto/objects/o_names.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/objects/obj_dat.c crypto/objects/obj_dat.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/objects/obj_lib.c crypto/objects/obj_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/objects/obj_err.c crypto/objects/obj_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/encode.c crypto/evp/encode.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/digest.c crypto/evp/digest.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/dig_eng.c crypto/evp/dig_eng.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/evp_enc.c crypto/evp/evp_enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/evp_key.c crypto/evp/evp_key.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/evp_acnf.c crypto/evp/evp_acnf.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/evp_cnf.c crypto/evp/evp_cnf.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/e_des.c crypto/evp/e_des.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/e_bf.c crypto/evp/e_bf.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/e_idea.c crypto/evp/e_idea.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/e_des3.c crypto/evp/e_des3.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/e_rc4.c crypto/evp/e_rc4.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/e_aes.c crypto/evp/e_aes.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/names.c crypto/evp/names.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/e_xcbc_d.c crypto/evp/e_xcbc_d.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/e_rc2.c crypto/evp/e_rc2.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/e_cast.c crypto/evp/e_cast.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/e_rc5.c crypto/evp/e_rc5.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/enc_min.c crypto/evp/enc_min.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/m_null.c crypto/evp/m_null.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/m_md2.c crypto/evp/m_md2.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/m_md4.c crypto/evp/m_md4.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/m_md5.c crypto/evp/m_md5.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/m_sha.c crypto/evp/m_sha.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/m_sha1.c crypto/evp/m_sha1.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/m_dss.c crypto/evp/m_dss.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/m_dss1.c crypto/evp/m_dss1.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/m_ripemd.c crypto/evp/m_ripemd.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/m_ecdsa.c crypto/evp/m_ecdsa.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/p_open.c crypto/evp/p_open.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/p_seal.c crypto/evp/p_seal.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/p_sign.c crypto/evp/p_sign.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/p_verify.c crypto/evp/p_verify.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/p_lib.c crypto/evp/p_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/p_enc.c crypto/evp/p_enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/p_dec.c crypto/evp/p_dec.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/bio_md.c crypto/evp/bio_md.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/bio_b64.c crypto/evp/bio_b64.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/bio_enc.c crypto/evp/bio_enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/evp_err.c crypto/evp/evp_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/e_null.c crypto/evp/e_null.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/c_all.c crypto/evp/c_all.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/c_allc.c crypto/evp/c_allc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/c_alld.c crypto/evp/c_alld.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/evp_lib.c crypto/evp/evp_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/bio_ok.c crypto/evp/bio_ok.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/evp_pkey.c crypto/evp/evp_pkey.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/evp_pbe.c crypto/evp/evp_pbe.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/p5_crpt.c crypto/evp/p5_crpt.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/p5_crpt2.c crypto/evp/p5_crpt2.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/evp/e_old.c crypto/evp/e_old.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_object.c crypto/asn1/a_object.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_bitstr.c crypto/asn1/a_bitstr.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_utctm.c crypto/asn1/a_utctm.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_gentm.c crypto/asn1/a_gentm.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_time.c crypto/asn1/a_time.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_int.c crypto/asn1/a_int.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_octet.c crypto/asn1/a_octet.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_print.c crypto/asn1/a_print.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_type.c crypto/asn1/a_type.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_set.c crypto/asn1/a_set.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_dup.c crypto/asn1/a_dup.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_d2i_fp.c crypto/asn1/a_d2i_fp.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_i2d_fp.c crypto/asn1/a_i2d_fp.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_enum.c crypto/asn1/a_enum.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_utf8.c crypto/asn1/a_utf8.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_sign.c crypto/asn1/a_sign.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_digest.c crypto/asn1/a_digest.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_verify.c crypto/asn1/a_verify.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_mbstr.c crypto/asn1/a_mbstr.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_strex.c crypto/asn1/a_strex.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/x_algor.c crypto/asn1/x_algor.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/x_val.c crypto/asn1/x_val.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/x_pubkey.c crypto/asn1/x_pubkey.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/x_sig.c crypto/asn1/x_sig.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/x_req.c crypto/asn1/x_req.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/x_attrib.c crypto/asn1/x_attrib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/x_bignum.c crypto/asn1/x_bignum.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/x_long.c crypto/asn1/x_long.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/x_name.c crypto/asn1/x_name.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/x_x509.c crypto/asn1/x_x509.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/x_x509a.c crypto/asn1/x_x509a.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/x_crl.c crypto/asn1/x_crl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/x_info.c crypto/asn1/x_info.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/x_spki.c crypto/asn1/x_spki.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/nsseq.c crypto/asn1/nsseq.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/d2i_pu.c crypto/asn1/d2i_pu.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/d2i_pr.c crypto/asn1/d2i_pr.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/i2d_pu.c crypto/asn1/i2d_pu.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/i2d_pr.c crypto/asn1/i2d_pr.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/t_req.c crypto/asn1/t_req.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/t_x509.c crypto/asn1/t_x509.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/t_x509a.c crypto/asn1/t_x509a.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/t_crl.c crypto/asn1/t_crl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/t_pkey.c crypto/asn1/t_pkey.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/t_spki.c crypto/asn1/t_spki.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/t_bitst.c crypto/asn1/t_bitst.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/tasn_new.c crypto/asn1/tasn_new.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/tasn_fre.c crypto/asn1/tasn_fre.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/tasn_enc.c crypto/asn1/tasn_enc.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/tasn_dec.c crypto/asn1/tasn_dec.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/tasn_utl.c crypto/asn1/tasn_utl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/tasn_typ.c crypto/asn1/tasn_typ.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/f_int.c crypto/asn1/f_int.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/f_string.c crypto/asn1/f_string.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/n_pkey.c crypto/asn1/n_pkey.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/f_enum.c crypto/asn1/f_enum.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_hdr.c crypto/asn1/a_hdr.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/x_pkey.c crypto/asn1/x_pkey.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_bool.c crypto/asn1/a_bool.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/x_exten.c crypto/asn1/x_exten.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/asn_mime.c crypto/asn1/asn_mime.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/asn1_gen.c crypto/asn1/asn1_gen.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/asn1_par.c crypto/asn1/asn1_par.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/asn1_lib.c crypto/asn1/asn1_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/asn1_err.c crypto/asn1/asn1_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_meth.c crypto/asn1/a_meth.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_bytes.c crypto/asn1/a_bytes.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/a_strnid.c crypto/asn1/a_strnid.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/evp_asn1.c crypto/asn1/evp_asn1.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/asn_pack.c crypto/asn1/asn_pack.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/p5_pbe.c crypto/asn1/p5_pbe.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/p5_pbev2.c crypto/asn1/p5_pbev2.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/p8_pkey.c crypto/asn1/p8_pkey.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/asn1/asn_moid.c crypto/asn1/asn_moid.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pem/pem_sign.c crypto/pem/pem_sign.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pem/pem_seal.c crypto/pem/pem_seal.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pem/pem_info.c crypto/pem/pem_info.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pem/pem_lib.c crypto/pem/pem_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pem/pem_all.c crypto/pem/pem_all.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pem/pem_err.c crypto/pem/pem_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pem/pem_x509.c crypto/pem/pem_x509.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pem/pem_xaux.c crypto/pem/pem_xaux.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pem/pem_oth.c crypto/pem/pem_oth.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pem/pem_pk8.c crypto/pem/pem_pk8.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pem/pem_pkey.c crypto/pem/pem_pkey.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509_def.c crypto/x509/x509_def.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509_d2.c crypto/x509/x509_d2.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509_r2x.c crypto/x509/x509_r2x.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509_cmp.c crypto/x509/x509_cmp.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509_obj.c crypto/x509/x509_obj.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509_req.c crypto/x509/x509_req.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509spki.c crypto/x509/x509spki.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509_vfy.c crypto/x509/x509_vfy.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509_set.c crypto/x509/x509_set.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509cset.c crypto/x509/x509cset.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509rset.c crypto/x509/x509rset.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509_err.c crypto/x509/x509_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509name.c crypto/x509/x509name.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509_v3.c crypto/x509/x509_v3.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509_ext.c crypto/x509/x509_ext.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509_att.c crypto/x509/x509_att.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509type.c crypto/x509/x509type.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509_lu.c crypto/x509/x509_lu.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x_all.c crypto/x509/x_all.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509_txt.c crypto/x509/x509_txt.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509_trs.c crypto/x509/x509_trs.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/by_file.c crypto/x509/by_file.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/by_dir.c crypto/x509/by_dir.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509/x509_vpm.c crypto/x509/x509_vpm.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_bcons.c crypto/x509v3/v3_bcons.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_bitst.c crypto/x509v3/v3_bitst.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_conf.c crypto/x509v3/v3_conf.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_extku.c crypto/x509v3/v3_extku.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_ia5.c crypto/x509v3/v3_ia5.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_lib.c crypto/x509v3/v3_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_prn.c crypto/x509v3/v3_prn.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_utl.c crypto/x509v3/v3_utl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3err.c crypto/x509v3/v3err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_genn.c crypto/x509v3/v3_genn.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_alt.c crypto/x509v3/v3_alt.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_skey.c crypto/x509v3/v3_skey.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_akey.c crypto/x509v3/v3_akey.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_pku.c crypto/x509v3/v3_pku.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_int.c crypto/x509v3/v3_int.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_enum.c crypto/x509v3/v3_enum.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_sxnet.c crypto/x509v3/v3_sxnet.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_cpols.c crypto/x509v3/v3_cpols.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_crld.c crypto/x509v3/v3_crld.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_purp.c crypto/x509v3/v3_purp.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_info.c crypto/x509v3/v3_info.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_ocsp.c crypto/x509v3/v3_ocsp.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_akeya.c crypto/x509v3/v3_akeya.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_pmaps.c crypto/x509v3/v3_pmaps.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_pcons.c crypto/x509v3/v3_pcons.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_ncons.c crypto/x509v3/v3_ncons.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_pcia.c crypto/x509v3/v3_pcia.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_pci.c crypto/x509v3/v3_pci.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/pcy_cache.c crypto/x509v3/pcy_cache.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/pcy_node.c crypto/x509v3/pcy_node.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/pcy_data.c crypto/x509v3/pcy_data.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/pcy_map.c crypto/x509v3/pcy_map.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/pcy_tree.c crypto/x509v3/pcy_tree.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/pcy_lib.c crypto/x509v3/pcy_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_asid.c crypto/x509v3/v3_asid.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/x509v3/v3_addr.c crypto/x509v3/v3_addr.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/conf/conf_err.c crypto/conf/conf_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/conf/conf_lib.c crypto/conf/conf_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/conf/conf_api.c crypto/conf/conf_api.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/conf/conf_def.c crypto/conf/conf_def.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/conf/conf_mod.c crypto/conf/conf_mod.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/conf/conf_mall.c crypto/conf/conf_mall.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/conf/conf_sap.c crypto/conf/conf_sap.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/txt_db/txt_db.c crypto/txt_db/txt_db.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs7/pk7_asn1.c crypto/pkcs7/pk7_asn1.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs7/pk7_lib.c crypto/pkcs7/pk7_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs7/pkcs7err.c crypto/pkcs7/pkcs7err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs7/pk7_doit.c crypto/pkcs7/pk7_doit.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs7/pk7_smime.c crypto/pkcs7/pk7_smime.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs7/pk7_attr.c crypto/pkcs7/pk7_attr.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs7/pk7_mime.c crypto/pkcs7/pk7_mime.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs12/p12_add.c crypto/pkcs12/p12_add.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs12/p12_asn.c crypto/pkcs12/p12_asn.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs12/p12_attr.c crypto/pkcs12/p12_attr.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs12/p12_crpt.c crypto/pkcs12/p12_crpt.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs12/p12_crt.c crypto/pkcs12/p12_crt.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs12/p12_decr.c crypto/pkcs12/p12_decr.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs12/p12_init.c crypto/pkcs12/p12_init.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs12/p12_key.c crypto/pkcs12/p12_key.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs12/p12_kiss.c crypto/pkcs12/p12_kiss.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs12/p12_mutl.c crypto/pkcs12/p12_mutl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs12/p12_utl.c crypto/pkcs12/p12_utl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs12/p12_npas.c crypto/pkcs12/p12_npas.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs12/pk12err.c crypto/pkcs12/pk12err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs12/p12_p8d.c crypto/pkcs12/p12_p8d.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pkcs12/p12_p8e.c crypto/pkcs12/p12_p8e.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/comp/comp_lib.c crypto/comp/comp_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/comp/comp_err.c crypto/comp/comp_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/comp/c_rle.c crypto/comp/c_rle.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/comp/c_zlib.c crypto/comp/c_zlib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/eng_err.c crypto/engine/eng_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/eng_lib.c crypto/engine/eng_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/eng_list.c crypto/engine/eng_list.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/eng_init.c crypto/engine/eng_init.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/eng_ctrl.c crypto/engine/eng_ctrl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/eng_table.c crypto/engine/eng_table.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/eng_pkey.c crypto/engine/eng_pkey.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/eng_fat.c crypto/engine/eng_fat.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/eng_all.c crypto/engine/eng_all.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/tb_rsa.c crypto/engine/tb_rsa.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/tb_dsa.c crypto/engine/tb_dsa.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/tb_ecdsa.c crypto/engine/tb_ecdsa.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/tb_dh.c crypto/engine/tb_dh.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/tb_ecdh.c crypto/engine/tb_ecdh.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/tb_rand.c crypto/engine/tb_rand.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/tb_store.c crypto/engine/tb_store.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/tb_cipher.c crypto/engine/tb_cipher.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/tb_digest.c crypto/engine/tb_digest.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/eng_openssl.c crypto/engine/eng_openssl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/eng_cnf.c crypto/engine/eng_cnf.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/eng_dyn.c crypto/engine/eng_dyn.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/eng_cryptodev.c crypto/engine/eng_cryptodev.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/engine/eng_padlock.c crypto/engine/eng_padlock.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ocsp/ocsp_asn.c crypto/ocsp/ocsp_asn.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ocsp/ocsp_ext.c crypto/ocsp/ocsp_ext.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ocsp/ocsp_ht.c crypto/ocsp/ocsp_ht.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ocsp/ocsp_lib.c crypto/ocsp/ocsp_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ocsp/ocsp_cl.c crypto/ocsp/ocsp_cl.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ocsp/ocsp_srv.c crypto/ocsp/ocsp_srv.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ocsp/ocsp_prn.c crypto/ocsp/ocsp_prn.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ocsp/ocsp_vfy.c crypto/ocsp/ocsp_vfy.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ocsp/ocsp_err.c crypto/ocsp/ocsp_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ui/ui_err.c crypto/ui/ui_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ui/ui_lib.c crypto/ui/ui_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ui/ui_util.c crypto/ui/ui_util.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/ui/ui_compat.c crypto/ui/ui_compat.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/krb5/krb5_asn.c crypto/krb5/krb5_asn.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/store/str_err.c crypto/store/str_err.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/store/str_lib.c crypto/store/str_lib.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/store/str_meth.c crypto/store/str_meth.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/store/str_mem.c crypto/store/str_mem.c --install -D /home/mjg59/Source/efi/edk2/CryptoPkg/Library/OpensslLib/openssl-0.9.8w/crypto/pqueue/pqueue.c crypto/pqueue/pqueue.c -+DIR=$1 -+ -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/e_os.h e_os.h -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/cryptlib.c crypto/cryptlib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dyn_lck.c crypto/dyn_lck.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/mem.c crypto/mem.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/mem_clr.c crypto/mem_clr.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/mem_dbg.c crypto/mem_dbg.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/cversion.c crypto/cversion.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ex_data.c crypto/ex_data.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/cpt_err.c crypto/cpt_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ebcdic.c crypto/ebcdic.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/uid.c crypto/uid.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/o_time.c crypto/o_time.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/o_str.c crypto/o_str.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/o_dir.c crypto/o_dir.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/o_init.c crypto/o_init.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/fips_err.c crypto/fips_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/md2/md2_dgst.c crypto/md2/md2_dgst.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/md2/md2_one.c crypto/md2/md2_one.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/md4/md4_dgst.c crypto/md4/md4_dgst.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/md4/md4_one.c crypto/md4/md4_one.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/md5/md5_dgst.c crypto/md5/md5_dgst.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/md5/md5_one.c crypto/md5/md5_one.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/sha/sha_dgst.c crypto/sha/sha_dgst.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/sha/sha1dgst.c crypto/sha/sha1dgst.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/sha/sha_one.c crypto/sha/sha_one.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/sha/sha1_one.c crypto/sha/sha1_one.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/sha/sha256.c crypto/sha/sha256.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/sha/sha512.c crypto/sha/sha512.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/hmac/hmac.c crypto/hmac/hmac.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ripemd/rmd_dgst.c crypto/ripemd/rmd_dgst.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ripemd/rmd_one.c crypto/ripemd/rmd_one.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/des_lib.c crypto/des/des_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/set_key.c crypto/des/set_key.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/ecb_enc.c crypto/des/ecb_enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/cbc_enc.c crypto/des/cbc_enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/ecb3_enc.c crypto/des/ecb3_enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/cfb64enc.c crypto/des/cfb64enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/cfb64ede.c crypto/des/cfb64ede.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/cfb_enc.c crypto/des/cfb_enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/ofb64ede.c crypto/des/ofb64ede.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/enc_read.c crypto/des/enc_read.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/enc_writ.c crypto/des/enc_writ.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/ofb64enc.c crypto/des/ofb64enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/ofb_enc.c crypto/des/ofb_enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/str2key.c crypto/des/str2key.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/pcbc_enc.c crypto/des/pcbc_enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/qud_cksm.c crypto/des/qud_cksm.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/rand_key.c crypto/des/rand_key.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/des_enc.c crypto/des/des_enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/fcrypt_b.c crypto/des/fcrypt_b.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/fcrypt.c crypto/des/fcrypt.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/xcbc_enc.c crypto/des/xcbc_enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/rpc_enc.c crypto/des/rpc_enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/cbc_cksm.c crypto/des/cbc_cksm.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/ede_cbcm_enc.c crypto/des/ede_cbcm_enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/des_old.c crypto/des/des_old.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/des_old2.c crypto/des/des_old2.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/des/read2pwd.c crypto/des/read2pwd.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rc2/rc2_ecb.c crypto/rc2/rc2_ecb.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rc2/rc2_skey.c crypto/rc2/rc2_skey.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rc2/rc2_cbc.c crypto/rc2/rc2_cbc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rc2/rc2cfb64.c crypto/rc2/rc2cfb64.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rc2/rc2ofb64.c crypto/rc2/rc2ofb64.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rc4/rc4_enc.c crypto/rc4/rc4_enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rc4/rc4_skey.c crypto/rc4/rc4_skey.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rc4/rc4_fblk.c crypto/rc4/rc4_fblk.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/idea/i_cbc.c crypto/idea/i_cbc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/idea/i_cfb64.c crypto/idea/i_cfb64.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/idea/i_ofb64.c crypto/idea/i_ofb64.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/idea/i_ecb.c crypto/idea/i_ecb.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/idea/i_skey.c crypto/idea/i_skey.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bf/bf_skey.c crypto/bf/bf_skey.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bf/bf_ecb.c crypto/bf/bf_ecb.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bf/bf_enc.c crypto/bf/bf_enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bf/bf_cfb64.c crypto/bf/bf_cfb64.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bf/bf_ofb64.c crypto/bf/bf_ofb64.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/cast/c_skey.c crypto/cast/c_skey.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/cast/c_ecb.c crypto/cast/c_ecb.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/cast/c_enc.c crypto/cast/c_enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/cast/c_cfb64.c crypto/cast/c_cfb64.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/cast/c_ofb64.c crypto/cast/c_ofb64.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/aes/aes_misc.c crypto/aes/aes_misc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/aes/aes_ecb.c crypto/aes/aes_ecb.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/aes/aes_cfb.c crypto/aes/aes_cfb.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/aes/aes_ofb.c crypto/aes/aes_ofb.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/aes/aes_ctr.c crypto/aes/aes_ctr.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/aes/aes_ige.c crypto/aes/aes_ige.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/aes/aes_wrap.c crypto/aes/aes_wrap.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/aes/aes_core.c crypto/aes/aes_core.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/aes/aes_cbc.c crypto/aes/aes_cbc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_add.c crypto/bn/bn_add.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_div.c crypto/bn/bn_div.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_exp.c crypto/bn/bn_exp.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_lib.c crypto/bn/bn_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_ctx.c crypto/bn/bn_ctx.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_mul.c crypto/bn/bn_mul.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_mod.c crypto/bn/bn_mod.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_print.c crypto/bn/bn_print.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_rand.c crypto/bn/bn_rand.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_shift.c crypto/bn/bn_shift.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_word.c crypto/bn/bn_word.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_blind.c crypto/bn/bn_blind.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_kron.c crypto/bn/bn_kron.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_sqrt.c crypto/bn/bn_sqrt.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_gcd.c crypto/bn/bn_gcd.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_prime.c crypto/bn/bn_prime.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_err.c crypto/bn/bn_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_sqr.c crypto/bn/bn_sqr.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_asm.c crypto/bn/bn_asm.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_recp.c crypto/bn/bn_recp.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_mont.c crypto/bn/bn_mont.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_mpi.c crypto/bn/bn_mpi.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_exp2.c crypto/bn/bn_exp2.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_gf2m.c crypto/bn/bn_gf2m.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_nist.c crypto/bn/bn_nist.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_depr.c crypto/bn/bn_depr.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_x931p.c crypto/bn/bn_x931p.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_const.c crypto/bn/bn_const.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bn/bn_opt.c crypto/bn/bn_opt.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_eay.c crypto/rsa/rsa_eay.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_gen.c crypto/rsa/rsa_gen.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_lib.c crypto/rsa/rsa_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_sign.c crypto/rsa/rsa_sign.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_saos.c crypto/rsa/rsa_saos.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_err.c crypto/rsa/rsa_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_pk1.c crypto/rsa/rsa_pk1.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_ssl.c crypto/rsa/rsa_ssl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_none.c crypto/rsa/rsa_none.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_oaep.c crypto/rsa/rsa_oaep.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_chk.c crypto/rsa/rsa_chk.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_null.c crypto/rsa/rsa_null.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_pss.c crypto/rsa/rsa_pss.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_x931.c crypto/rsa/rsa_x931.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_x931g.c crypto/rsa/rsa_x931g.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_asn1.c crypto/rsa/rsa_asn1.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_depr.c crypto/rsa/rsa_depr.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rsa/rsa_eng.c crypto/rsa/rsa_eng.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dsa/dsa_gen.c crypto/dsa/dsa_gen.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dsa/dsa_key.c crypto/dsa/dsa_key.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dsa/dsa_lib.c crypto/dsa/dsa_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dsa/dsa_asn1.c crypto/dsa/dsa_asn1.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dsa/dsa_vrf.c crypto/dsa/dsa_vrf.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dsa/dsa_sign.c crypto/dsa/dsa_sign.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dsa/dsa_err.c crypto/dsa/dsa_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dsa/dsa_ossl.c crypto/dsa/dsa_ossl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dsa/dsa_depr.c crypto/dsa/dsa_depr.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dsa/dsa_utl.c crypto/dsa/dsa_utl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dso/dso_dl.c crypto/dso/dso_dl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dso/dso_dlfcn.c crypto/dso/dso_dlfcn.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dso/dso_err.c crypto/dso/dso_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dso/dso_lib.c crypto/dso/dso_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dso/dso_null.c crypto/dso/dso_null.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dso/dso_openssl.c crypto/dso/dso_openssl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dso/dso_win32.c crypto/dso/dso_win32.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dso/dso_vms.c crypto/dso/dso_vms.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dh/dh_asn1.c crypto/dh/dh_asn1.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dh/dh_gen.c crypto/dh/dh_gen.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dh/dh_key.c crypto/dh/dh_key.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dh/dh_lib.c crypto/dh/dh_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dh/dh_check.c crypto/dh/dh_check.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dh/dh_err.c crypto/dh/dh_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/dh/dh_depr.c crypto/dh/dh_depr.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ec/ec_lib.c crypto/ec/ec_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ec/ecp_smpl.c crypto/ec/ecp_smpl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ec/ecp_mont.c crypto/ec/ecp_mont.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ec/ecp_nist.c crypto/ec/ecp_nist.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ec/ec_cvt.c crypto/ec/ec_cvt.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ec/ec_mult.c crypto/ec/ec_mult.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ec/ec_err.c crypto/ec/ec_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ec/ec_curve.c crypto/ec/ec_curve.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ec/ec_check.c crypto/ec/ec_check.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ec/ec_print.c crypto/ec/ec_print.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ec/ec_asn1.c crypto/ec/ec_asn1.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ec/ec_key.c crypto/ec/ec_key.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ec/ec2_smpl.c crypto/ec/ec2_smpl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ec/ec2_mult.c crypto/ec/ec2_mult.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ecdh/ech_lib.c crypto/ecdh/ech_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ecdh/ech_ossl.c crypto/ecdh/ech_ossl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ecdh/ech_key.c crypto/ecdh/ech_key.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ecdh/ech_err.c crypto/ecdh/ech_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ecdsa/ecs_lib.c crypto/ecdsa/ecs_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ecdsa/ecs_asn1.c crypto/ecdsa/ecs_asn1.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ecdsa/ecs_ossl.c crypto/ecdsa/ecs_ossl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ecdsa/ecs_sign.c crypto/ecdsa/ecs_sign.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ecdsa/ecs_vrf.c crypto/ecdsa/ecs_vrf.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ecdsa/ecs_err.c crypto/ecdsa/ecs_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/buffer/buffer.c crypto/buffer/buffer.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/buffer/buf_str.c crypto/buffer/buf_str.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/buffer/buf_err.c crypto/buffer/buf_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bio/bio_lib.c crypto/bio/bio_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bio/bio_cb.c crypto/bio/bio_cb.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bio/bio_err.c crypto/bio/bio_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bio/bss_mem.c crypto/bio/bss_mem.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bio/bss_null.c crypto/bio/bss_null.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bio/bss_fd.c crypto/bio/bss_fd.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bio/bss_file.c crypto/bio/bss_file.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bio/bf_null.c crypto/bio/bf_null.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bio/bf_buff.c crypto/bio/bf_buff.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bio/b_dump.c crypto/bio/b_dump.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bio/bf_nbio.c crypto/bio/bf_nbio.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bio/bss_log.c crypto/bio/bss_log.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bio/bss_bio.c crypto/bio/bss_bio.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/bio/bss_dgram.c crypto/bio/bss_dgram.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/stack/stack.c crypto/stack/stack.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/lhash/lhash.c crypto/lhash/lhash.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/lhash/lh_stats.c crypto/lhash/lh_stats.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rand/md_rand.c crypto/rand/md_rand.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rand/randfile.c crypto/rand/randfile.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rand/rand_lib.c crypto/rand/rand_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rand/rand_eng.c crypto/rand/rand_eng.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rand/rand_err.c crypto/rand/rand_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rand/rand_egd.c crypto/rand/rand_egd.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rand/rand_win.c crypto/rand/rand_win.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rand/rand_unix.c crypto/rand/rand_unix.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rand/rand_os2.c crypto/rand/rand_os2.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/rand/rand_nw.c crypto/rand/rand_nw.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/err/err.c crypto/err/err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/err/err_def.c crypto/err/err_def.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/err/err_all.c crypto/err/err_all.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/err/err_prn.c crypto/err/err_prn.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/err/err_str.c crypto/err/err_str.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/err/err_bio.c crypto/err/err_bio.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/objects/o_names.c crypto/objects/o_names.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/objects/obj_dat.c crypto/objects/obj_dat.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/objects/obj_lib.c crypto/objects/obj_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/objects/obj_err.c crypto/objects/obj_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/encode.c crypto/evp/encode.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/digest.c crypto/evp/digest.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/dig_eng.c crypto/evp/dig_eng.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/evp_enc.c crypto/evp/evp_enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/evp_key.c crypto/evp/evp_key.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/evp_acnf.c crypto/evp/evp_acnf.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/evp_cnf.c crypto/evp/evp_cnf.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/e_des.c crypto/evp/e_des.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/e_bf.c crypto/evp/e_bf.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/e_idea.c crypto/evp/e_idea.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/e_des3.c crypto/evp/e_des3.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/e_rc4.c crypto/evp/e_rc4.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/e_aes.c crypto/evp/e_aes.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/names.c crypto/evp/names.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/e_xcbc_d.c crypto/evp/e_xcbc_d.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/e_rc2.c crypto/evp/e_rc2.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/e_cast.c crypto/evp/e_cast.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/e_rc5.c crypto/evp/e_rc5.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/enc_min.c crypto/evp/enc_min.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/m_null.c crypto/evp/m_null.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/m_md2.c crypto/evp/m_md2.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/m_md4.c crypto/evp/m_md4.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/m_md5.c crypto/evp/m_md5.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/m_sha.c crypto/evp/m_sha.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/m_sha1.c crypto/evp/m_sha1.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/m_dss.c crypto/evp/m_dss.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/m_dss1.c crypto/evp/m_dss1.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/m_ripemd.c crypto/evp/m_ripemd.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/m_ecdsa.c crypto/evp/m_ecdsa.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/p_open.c crypto/evp/p_open.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/p_seal.c crypto/evp/p_seal.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/p_sign.c crypto/evp/p_sign.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/p_verify.c crypto/evp/p_verify.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/p_lib.c crypto/evp/p_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/p_enc.c crypto/evp/p_enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/p_dec.c crypto/evp/p_dec.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/bio_md.c crypto/evp/bio_md.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/bio_b64.c crypto/evp/bio_b64.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/bio_enc.c crypto/evp/bio_enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/evp_err.c crypto/evp/evp_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/e_null.c crypto/evp/e_null.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/c_all.c crypto/evp/c_all.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/c_allc.c crypto/evp/c_allc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/c_alld.c crypto/evp/c_alld.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/evp_lib.c crypto/evp/evp_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/bio_ok.c crypto/evp/bio_ok.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/evp_pkey.c crypto/evp/evp_pkey.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/evp_pbe.c crypto/evp/evp_pbe.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/p5_crpt.c crypto/evp/p5_crpt.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/p5_crpt2.c crypto/evp/p5_crpt2.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/evp/e_old.c crypto/evp/e_old.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_object.c crypto/asn1/a_object.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_bitstr.c crypto/asn1/a_bitstr.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_utctm.c crypto/asn1/a_utctm.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_gentm.c crypto/asn1/a_gentm.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_time.c crypto/asn1/a_time.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_int.c crypto/asn1/a_int.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_octet.c crypto/asn1/a_octet.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_print.c crypto/asn1/a_print.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_type.c crypto/asn1/a_type.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_set.c crypto/asn1/a_set.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_dup.c crypto/asn1/a_dup.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_d2i_fp.c crypto/asn1/a_d2i_fp.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_i2d_fp.c crypto/asn1/a_i2d_fp.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_enum.c crypto/asn1/a_enum.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_utf8.c crypto/asn1/a_utf8.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_sign.c crypto/asn1/a_sign.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_digest.c crypto/asn1/a_digest.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_verify.c crypto/asn1/a_verify.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_mbstr.c crypto/asn1/a_mbstr.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_strex.c crypto/asn1/a_strex.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/x_algor.c crypto/asn1/x_algor.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/x_val.c crypto/asn1/x_val.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/x_pubkey.c crypto/asn1/x_pubkey.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/x_sig.c crypto/asn1/x_sig.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/x_req.c crypto/asn1/x_req.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/x_attrib.c crypto/asn1/x_attrib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/x_bignum.c crypto/asn1/x_bignum.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/x_long.c crypto/asn1/x_long.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/x_name.c crypto/asn1/x_name.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/x_x509.c crypto/asn1/x_x509.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/x_x509a.c crypto/asn1/x_x509a.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/x_crl.c crypto/asn1/x_crl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/x_info.c crypto/asn1/x_info.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/x_spki.c crypto/asn1/x_spki.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/nsseq.c crypto/asn1/nsseq.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/d2i_pu.c crypto/asn1/d2i_pu.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/d2i_pr.c crypto/asn1/d2i_pr.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/i2d_pu.c crypto/asn1/i2d_pu.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/i2d_pr.c crypto/asn1/i2d_pr.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/t_req.c crypto/asn1/t_req.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/t_x509.c crypto/asn1/t_x509.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/t_x509a.c crypto/asn1/t_x509a.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/t_crl.c crypto/asn1/t_crl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/t_pkey.c crypto/asn1/t_pkey.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/t_spki.c crypto/asn1/t_spki.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/t_bitst.c crypto/asn1/t_bitst.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/tasn_new.c crypto/asn1/tasn_new.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/tasn_fre.c crypto/asn1/tasn_fre.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/tasn_enc.c crypto/asn1/tasn_enc.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/tasn_dec.c crypto/asn1/tasn_dec.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/tasn_utl.c crypto/asn1/tasn_utl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/tasn_typ.c crypto/asn1/tasn_typ.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/f_int.c crypto/asn1/f_int.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/f_string.c crypto/asn1/f_string.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/n_pkey.c crypto/asn1/n_pkey.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/f_enum.c crypto/asn1/f_enum.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_hdr.c crypto/asn1/a_hdr.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/x_pkey.c crypto/asn1/x_pkey.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_bool.c crypto/asn1/a_bool.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/x_exten.c crypto/asn1/x_exten.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/asn_mime.c crypto/asn1/asn_mime.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/asn1_gen.c crypto/asn1/asn1_gen.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/asn1_par.c crypto/asn1/asn1_par.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/asn1_lib.c crypto/asn1/asn1_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/asn1_err.c crypto/asn1/asn1_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_meth.c crypto/asn1/a_meth.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_bytes.c crypto/asn1/a_bytes.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/a_strnid.c crypto/asn1/a_strnid.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/evp_asn1.c crypto/asn1/evp_asn1.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/asn_pack.c crypto/asn1/asn_pack.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/p5_pbe.c crypto/asn1/p5_pbe.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/p5_pbev2.c crypto/asn1/p5_pbev2.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/p8_pkey.c crypto/asn1/p8_pkey.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/asn1/asn_moid.c crypto/asn1/asn_moid.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pem/pem_sign.c crypto/pem/pem_sign.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pem/pem_seal.c crypto/pem/pem_seal.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pem/pem_info.c crypto/pem/pem_info.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pem/pem_lib.c crypto/pem/pem_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pem/pem_all.c crypto/pem/pem_all.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pem/pem_err.c crypto/pem/pem_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pem/pem_x509.c crypto/pem/pem_x509.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pem/pem_xaux.c crypto/pem/pem_xaux.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pem/pem_oth.c crypto/pem/pem_oth.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pem/pem_pk8.c crypto/pem/pem_pk8.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pem/pem_pkey.c crypto/pem/pem_pkey.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509_def.c crypto/x509/x509_def.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509_d2.c crypto/x509/x509_d2.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509_r2x.c crypto/x509/x509_r2x.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509_cmp.c crypto/x509/x509_cmp.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509_obj.c crypto/x509/x509_obj.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509_req.c crypto/x509/x509_req.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509spki.c crypto/x509/x509spki.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509_vfy.c crypto/x509/x509_vfy.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509_set.c crypto/x509/x509_set.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509cset.c crypto/x509/x509cset.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509rset.c crypto/x509/x509rset.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509_err.c crypto/x509/x509_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509name.c crypto/x509/x509name.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509_v3.c crypto/x509/x509_v3.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509_ext.c crypto/x509/x509_ext.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509_att.c crypto/x509/x509_att.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509type.c crypto/x509/x509type.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509_lu.c crypto/x509/x509_lu.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x_all.c crypto/x509/x_all.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509_txt.c crypto/x509/x509_txt.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509_trs.c crypto/x509/x509_trs.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/by_file.c crypto/x509/by_file.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/by_dir.c crypto/x509/by_dir.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509/x509_vpm.c crypto/x509/x509_vpm.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_bcons.c crypto/x509v3/v3_bcons.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_bitst.c crypto/x509v3/v3_bitst.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_conf.c crypto/x509v3/v3_conf.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_extku.c crypto/x509v3/v3_extku.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_ia5.c crypto/x509v3/v3_ia5.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_lib.c crypto/x509v3/v3_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_prn.c crypto/x509v3/v3_prn.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_utl.c crypto/x509v3/v3_utl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3err.c crypto/x509v3/v3err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_genn.c crypto/x509v3/v3_genn.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_alt.c crypto/x509v3/v3_alt.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_skey.c crypto/x509v3/v3_skey.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_akey.c crypto/x509v3/v3_akey.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_pku.c crypto/x509v3/v3_pku.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_int.c crypto/x509v3/v3_int.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_enum.c crypto/x509v3/v3_enum.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_sxnet.c crypto/x509v3/v3_sxnet.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_cpols.c crypto/x509v3/v3_cpols.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_crld.c crypto/x509v3/v3_crld.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_purp.c crypto/x509v3/v3_purp.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_info.c crypto/x509v3/v3_info.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_ocsp.c crypto/x509v3/v3_ocsp.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_akeya.c crypto/x509v3/v3_akeya.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_pmaps.c crypto/x509v3/v3_pmaps.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_pcons.c crypto/x509v3/v3_pcons.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_ncons.c crypto/x509v3/v3_ncons.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_pcia.c crypto/x509v3/v3_pcia.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_pci.c crypto/x509v3/v3_pci.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/pcy_cache.c crypto/x509v3/pcy_cache.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/pcy_node.c crypto/x509v3/pcy_node.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/pcy_data.c crypto/x509v3/pcy_data.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/pcy_map.c crypto/x509v3/pcy_map.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/pcy_tree.c crypto/x509v3/pcy_tree.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/pcy_lib.c crypto/x509v3/pcy_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_asid.c crypto/x509v3/v3_asid.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/x509v3/v3_addr.c crypto/x509v3/v3_addr.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/conf/conf_err.c crypto/conf/conf_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/conf/conf_lib.c crypto/conf/conf_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/conf/conf_api.c crypto/conf/conf_api.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/conf/conf_def.c crypto/conf/conf_def.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/conf/conf_mod.c crypto/conf/conf_mod.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/conf/conf_mall.c crypto/conf/conf_mall.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/conf/conf_sap.c crypto/conf/conf_sap.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/txt_db/txt_db.c crypto/txt_db/txt_db.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs7/pk7_asn1.c crypto/pkcs7/pk7_asn1.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs7/pk7_lib.c crypto/pkcs7/pk7_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs7/pkcs7err.c crypto/pkcs7/pkcs7err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs7/pk7_doit.c crypto/pkcs7/pk7_doit.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs7/pk7_smime.c crypto/pkcs7/pk7_smime.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs7/pk7_attr.c crypto/pkcs7/pk7_attr.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs7/pk7_mime.c crypto/pkcs7/pk7_mime.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs12/p12_add.c crypto/pkcs12/p12_add.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs12/p12_asn.c crypto/pkcs12/p12_asn.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs12/p12_attr.c crypto/pkcs12/p12_attr.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs12/p12_crpt.c crypto/pkcs12/p12_crpt.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs12/p12_crt.c crypto/pkcs12/p12_crt.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs12/p12_decr.c crypto/pkcs12/p12_decr.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs12/p12_init.c crypto/pkcs12/p12_init.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs12/p12_key.c crypto/pkcs12/p12_key.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs12/p12_kiss.c crypto/pkcs12/p12_kiss.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs12/p12_mutl.c crypto/pkcs12/p12_mutl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs12/p12_utl.c crypto/pkcs12/p12_utl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs12/p12_npas.c crypto/pkcs12/p12_npas.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs12/pk12err.c crypto/pkcs12/pk12err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs12/p12_p8d.c crypto/pkcs12/p12_p8d.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pkcs12/p12_p8e.c crypto/pkcs12/p12_p8e.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/comp/comp_lib.c crypto/comp/comp_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/comp/comp_err.c crypto/comp/comp_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/comp/c_rle.c crypto/comp/c_rle.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/comp/c_zlib.c crypto/comp/c_zlib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/eng_err.c crypto/engine/eng_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/eng_lib.c crypto/engine/eng_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/eng_list.c crypto/engine/eng_list.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/eng_init.c crypto/engine/eng_init.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/eng_ctrl.c crypto/engine/eng_ctrl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/eng_table.c crypto/engine/eng_table.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/eng_pkey.c crypto/engine/eng_pkey.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/eng_fat.c crypto/engine/eng_fat.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/eng_all.c crypto/engine/eng_all.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/tb_rsa.c crypto/engine/tb_rsa.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/tb_dsa.c crypto/engine/tb_dsa.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/tb_ecdsa.c crypto/engine/tb_ecdsa.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/tb_dh.c crypto/engine/tb_dh.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/tb_ecdh.c crypto/engine/tb_ecdh.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/tb_rand.c crypto/engine/tb_rand.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/tb_store.c crypto/engine/tb_store.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/tb_cipher.c crypto/engine/tb_cipher.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/tb_digest.c crypto/engine/tb_digest.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/eng_openssl.c crypto/engine/eng_openssl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/eng_cnf.c crypto/engine/eng_cnf.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/eng_dyn.c crypto/engine/eng_dyn.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/eng_cryptodev.c crypto/engine/eng_cryptodev.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/engine/eng_padlock.c crypto/engine/eng_padlock.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ocsp/ocsp_asn.c crypto/ocsp/ocsp_asn.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ocsp/ocsp_ext.c crypto/ocsp/ocsp_ext.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ocsp/ocsp_ht.c crypto/ocsp/ocsp_ht.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ocsp/ocsp_lib.c crypto/ocsp/ocsp_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ocsp/ocsp_cl.c crypto/ocsp/ocsp_cl.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ocsp/ocsp_srv.c crypto/ocsp/ocsp_srv.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ocsp/ocsp_prn.c crypto/ocsp/ocsp_prn.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ocsp/ocsp_vfy.c crypto/ocsp/ocsp_vfy.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ocsp/ocsp_err.c crypto/ocsp/ocsp_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ui/ui_err.c crypto/ui/ui_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ui/ui_lib.c crypto/ui/ui_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ui/ui_util.c crypto/ui/ui_util.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/ui/ui_compat.c crypto/ui/ui_compat.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/krb5/krb5_asn.c crypto/krb5/krb5_asn.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/store/str_err.c crypto/store/str_err.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/store/str_lib.c crypto/store/str_lib.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/store/str_meth.c crypto/store/str_meth.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/store/str_mem.c crypto/store/str_mem.c -+install -D $DIR/CryptoPkg/Library/OpensslLib/openssl-0.9.8za/crypto/pqueue/pqueue.c crypto/pqueue/pqueue.c -diff --git a/Cryptlib/Pk/CryptPkcs7.c b/Cryptlib/Pk/CryptPkcs7.c -deleted file mode 100644 -index 218e7ac..0000000 ---- a/Cryptlib/Pk/CryptPkcs7.c -+++ /dev/null -@@ -1,753 +0,0 @@ --/** @file -- PKCS#7 SignedData Verification Wrapper Implementation over OpenSSL. -- -- Caution: This module requires additional review when modified. -- This library will have external input - signature (e.g. UEFI Authenticated -- Variable). It may by input in SMM mode. -- This external input must be validated carefully to avoid security issue like -- buffer overflow, integer overflow. -- -- WrapPkcs7Data(), Pkcs7GetSigners(), Pkcs7Verify() will get UEFI Authenticated -- Variable and will do basic check for data structure. -- --Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.
--This program and the accompanying materials --are licensed and made available under the terms and conditions of the BSD License --which accompanies this distribution. The full text of the license may be found at --http://opensource.org/licenses/bsd-license.php -- --THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, --WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -- --**/ -- --#include "InternalCryptLib.h" -- --#include --#include --#include -- --UINT8 mOidValue[9] = { 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07, 0x02 }; -- --/** -- Verification callback function to override any existing callbacks in OpenSSL -- for intermediate certificate supports. -- -- @param[in] Status Original status before calling this callback. -- @param[in] Context X509 store context. -- -- @retval 1 Current X509 certificate is verified successfully. -- @retval 0 Verification failed. -- --**/ --int --X509VerifyCb ( -- IN int Status, -- IN X509_STORE_CTX *Context -- ) --{ -- X509_OBJECT *Obj; -- INTN Error; -- INTN Index; -- INTN Count; -- -- Obj = NULL; -- Error = (INTN) X509_STORE_CTX_get_error (Context); -- -- // -- // X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT and X509_V_ERR_UNABLE_TO_GET_ISSUER_ -- // CERT_LOCALLY mean a X509 certificate is not self signed and its issuer -- // can not be found in X509_verify_cert of X509_vfy.c. -- // In order to support intermediate certificate node, we override the -- // errors if the certification is obtained from X509 store, i.e. it is -- // a trusted ceritifcate node that is enrolled by user. -- // Besides,X509_V_ERR_CERT_UNTRUSTED and X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE -- // are also ignored to enable such feature. -- // -- if ((Error == X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT) || -- (Error == X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY)) { -- Obj = (X509_OBJECT *) malloc (sizeof (X509_OBJECT)); -- if (Obj == NULL) { -- return 0; -- } -- -- Obj->type = X509_LU_X509; -- Obj->data.x509 = Context->current_cert; -- -- CRYPTO_w_lock (CRYPTO_LOCK_X509_STORE); -- -- if (X509_OBJECT_retrieve_match (Context->ctx->objs, Obj)) { -- Status = 1; -- } else { -- // -- // If any certificate in the chain is enrolled as trusted certificate, -- // pass the certificate verification. -- // -- if (Error == X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY) { -- Count = (INTN) sk_X509_num (Context->chain); -- for (Index = 0; Index < Count; Index++) { -- Obj->data.x509 = sk_X509_value (Context->chain, (int) Index); -- if (X509_OBJECT_retrieve_match (Context->ctx->objs, Obj)) { -- Status = 1; -- break; -- } -- } -- } -- } -- -- CRYPTO_w_unlock (CRYPTO_LOCK_X509_STORE); -- } -- -- if ((Error == X509_V_ERR_CERT_UNTRUSTED) || -- (Error == X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE)) { -- Status = 1; -- } -- -- if (Obj != NULL) { -- OPENSSL_free (Obj); -- } -- -- return Status; --} -- --/** -- Creates a PKCS#7 signedData as described in "PKCS #7: Cryptographic Message -- Syntax Standard, version 1.5". This interface is only intended to be used for -- application to perform PKCS#7 functionality validation. -- -- @param[in] PrivateKey Pointer to the PEM-formatted private key data for -- data signing. -- @param[in] PrivateKeySize Size of the PEM private key data in bytes. -- @param[in] KeyPassword NULL-terminated passphrase used for encrypted PEM -- key data. -- @param[in] InData Pointer to the content to be signed. -- @param[in] InDataSize Size of InData in bytes. -- @param[in] SignCert Pointer to signer's DER-encoded certificate to sign with. -- @param[in] OtherCerts Pointer to an optional additional set of certificates to -- include in the PKCS#7 signedData (e.g. any intermediate -- CAs in the chain). -- @param[out] SignedData Pointer to output PKCS#7 signedData. -- @param[out] SignedDataSize Size of SignedData in bytes. -- -- @retval TRUE PKCS#7 data signing succeeded. -- @retval FALSE PKCS#7 data signing failed. -- --**/ --BOOLEAN --EFIAPI --Pkcs7Sign ( -- IN CONST UINT8 *PrivateKey, -- IN UINTN PrivateKeySize, -- IN CONST UINT8 *KeyPassword, -- IN UINT8 *InData, -- IN UINTN InDataSize, -- IN UINT8 *SignCert, -- IN UINT8 *OtherCerts OPTIONAL, -- OUT UINT8 **SignedData, -- OUT UINTN *SignedDataSize -- ) --{ -- BOOLEAN Status; -- EVP_PKEY *Key; -- BIO *DataBio; -- PKCS7 *Pkcs7; -- UINT8 *RsaContext; -- UINT8 *P7Data; -- UINTN P7DataSize; -- UINT8 *Tmp; -- -- // -- // Check input parameters. -- // -- if (PrivateKey == NULL || KeyPassword == NULL || InData == NULL || -- SignCert == NULL || SignedData == NULL || SignedDataSize == NULL || InDataSize > INT_MAX) { -- return FALSE; -- } -- -- RsaContext = NULL; -- Key = NULL; -- Pkcs7 = NULL; -- DataBio = NULL; -- Status = FALSE; -- -- // -- // Retrieve RSA private key from PEM data. -- // -- Status = RsaGetPrivateKeyFromPem ( -- PrivateKey, -- PrivateKeySize, -- (CONST CHAR8 *) KeyPassword, -- (VOID **) &RsaContext -- ); -- if (!Status) { -- return Status; -- } -- -- // -- // Register & Initialize necessary digest algorithms and PRNG for PKCS#7 Handling -- // -- EVP_add_digest (EVP_md5()); -- EVP_add_digest (EVP_sha1()); -- EVP_add_digest (EVP_sha256()); -- RandomSeed (NULL, 0); -- -- // -- // Construct OpenSSL EVP_PKEY for private key. -- // -- Key = EVP_PKEY_new (); -- if (Key == NULL) { -- Status = FALSE; -- goto _Exit; -- } -- Key->save_type = EVP_PKEY_RSA; -- Key->type = EVP_PKEY_type (EVP_PKEY_RSA); -- Key->pkey.rsa = (RSA *) RsaContext; -- -- // -- // Convert the data to be signed to BIO format. -- // -- DataBio = BIO_new (BIO_s_mem ()); -- BIO_write (DataBio, InData, (int) InDataSize); -- -- // -- // Create the PKCS#7 signedData structure. -- // -- Pkcs7 = PKCS7_sign ( -- (X509 *) SignCert, -- Key, -- (STACK_OF(X509) *) OtherCerts, -- DataBio, -- PKCS7_BINARY | PKCS7_NOATTR | PKCS7_DETACHED -- ); -- if (Pkcs7 == NULL) { -- Status = FALSE; -- goto _Exit; -- } -- -- // -- // Convert PKCS#7 signedData structure into DER-encoded buffer. -- // -- P7DataSize = i2d_PKCS7 (Pkcs7, NULL); -- if (P7DataSize <= 19) { -- Status = FALSE; -- goto _Exit; -- } -- -- P7Data = malloc (P7DataSize); -- if (P7Data == NULL) { -- Status = FALSE; -- goto _Exit; -- } -- -- Tmp = P7Data; -- P7DataSize = i2d_PKCS7 (Pkcs7, (unsigned char **) &Tmp); -- -- // -- // Strip ContentInfo to content only for signeddata. The data be trimmed off -- // is totally 19 bytes. -- // -- *SignedDataSize = P7DataSize - 19; -- *SignedData = malloc (*SignedDataSize); -- if (*SignedData == NULL) { -- Status = FALSE; -- OPENSSL_free (P7Data); -- goto _Exit; -- } -- -- CopyMem (*SignedData, P7Data + 19, *SignedDataSize); -- -- OPENSSL_free (P7Data); -- -- Status = TRUE; -- --_Exit: -- // -- // Release Resources -- // -- if (RsaContext != NULL) { -- RsaFree (RsaContext); -- if (Key != NULL) { -- Key->pkey.rsa = NULL; -- } -- } -- -- if (Key != NULL) { -- EVP_PKEY_free (Key); -- } -- -- if (DataBio != NULL) { -- BIO_free (DataBio); -- } -- -- if (Pkcs7 != NULL) { -- PKCS7_free (Pkcs7); -- } -- -- return Status; --} -- --/** -- Check input P7Data is a wrapped ContentInfo structure or not. If not construct -- a new structure to wrap P7Data. -- -- Caution: This function may receive untrusted input. -- UEFI Authenticated Variable is external input, so this function will do basic -- check for PKCS#7 data structure. -- -- @param[in] P7Data Pointer to the PKCS#7 message to verify. -- @param[in] P7Length Length of the PKCS#7 message in bytes. -- @param[out] WrapFlag If TRUE P7Data is a ContentInfo structure, otherwise -- return FALSE. -- @param[out] WrapData If return status of this function is TRUE: -- 1) when WrapFlag is TRUE, pointer to P7Data. -- 2) when WrapFlag is FALSE, pointer to a new ContentInfo -- structure. It's caller's responsibility to free this -- buffer. -- @param[out] WrapDataSize Length of ContentInfo structure in bytes. -- -- @retval TRUE The operation is finished successfully. -- @retval FALSE The operation is failed due to lack of resources. -- --**/ --BOOLEAN --WrapPkcs7Data ( -- IN CONST UINT8 *P7Data, -- IN UINTN P7Length, -- OUT BOOLEAN *WrapFlag, -- OUT UINT8 **WrapData, -- OUT UINTN *WrapDataSize -- ) --{ -- BOOLEAN Wrapped; -- UINT8 *SignedData; -- -- // -- // Check whether input P7Data is a wrapped ContentInfo structure or not. -- // -- Wrapped = FALSE; -- if ((P7Data[4] == 0x06) && (P7Data[5] == 0x09)) { -- if (CompareMem (P7Data + 6, mOidValue, sizeof (mOidValue)) == 0) { -- if ((P7Data[15] == 0xA0) && (P7Data[16] == 0x82)) { -- Wrapped = TRUE; -- } -- } -- } -- -- if (Wrapped) { -- *WrapData = (UINT8 *) P7Data; -- *WrapDataSize = P7Length; -- } else { -- // -- // Wrap PKCS#7 signeddata to a ContentInfo structure - add a header in 19 bytes. -- // -- *WrapDataSize = P7Length + 19; -- *WrapData = malloc (*WrapDataSize); -- if (*WrapData == NULL) { -- *WrapFlag = Wrapped; -- return FALSE; -- } -- -- SignedData = *WrapData; -- -- // -- // Part1: 0x30, 0x82. -- // -- SignedData[0] = 0x30; -- SignedData[1] = 0x82; -- -- // -- // Part2: Length1 = P7Length + 19 - 4, in big endian. -- // -- SignedData[2] = (UINT8) (((UINT16) (*WrapDataSize - 4)) >> 8); -- SignedData[3] = (UINT8) (((UINT16) (*WrapDataSize - 4)) & 0xff); -- -- // -- // Part3: 0x06, 0x09. -- // -- SignedData[4] = 0x06; -- SignedData[5] = 0x09; -- -- // -- // Part4: OID value -- 0x2A 0x86 0x48 0x86 0xF7 0x0D 0x01 0x07 0x02. -- // -- CopyMem (SignedData + 6, mOidValue, sizeof (mOidValue)); -- -- // -- // Part5: 0xA0, 0x82. -- // -- SignedData[15] = 0xA0; -- SignedData[16] = 0x82; -- -- // -- // Part6: Length2 = P7Length, in big endian. -- // -- SignedData[17] = (UINT8) (((UINT16) P7Length) >> 8); -- SignedData[18] = (UINT8) (((UINT16) P7Length) & 0xff); -- -- // -- // Part7: P7Data. -- // -- CopyMem (SignedData + 19, P7Data, P7Length); -- } -- -- *WrapFlag = Wrapped; -- return TRUE; --} -- --/** -- Get the signer's certificates from PKCS#7 signed data as described in "PKCS #7: -- Cryptographic Message Syntax Standard". The input signed data could be wrapped -- in a ContentInfo structure. -- -- If P7Data, CertStack, StackLength, TrustedCert or CertLength is NULL, then -- return FALSE. If P7Length overflow, then return FAlSE. -- -- Caution: This function may receive untrusted input. -- UEFI Authenticated Variable is external input, so this function will do basic -- check for PKCS#7 data structure. -- -- @param[in] P7Data Pointer to the PKCS#7 message to verify. -- @param[in] P7Length Length of the PKCS#7 message in bytes. -- @param[out] CertStack Pointer to Signer's certificates retrieved from P7Data. -- It's caller's responsiblity to free the buffer. -- @param[out] StackLength Length of signer's certificates in bytes. -- @param[out] TrustedCert Pointer to a trusted certificate from Signer's certificates. -- It's caller's responsiblity to free the buffer. -- @param[out] CertLength Length of the trusted certificate in bytes. -- -- @retval TRUE The operation is finished successfully. -- @retval FALSE Error occurs during the operation. -- --**/ --BOOLEAN --EFIAPI --Pkcs7GetSigners ( -- IN CONST UINT8 *P7Data, -- IN UINTN P7Length, -- OUT UINT8 **CertStack, -- OUT UINTN *StackLength, -- OUT UINT8 **TrustedCert, -- OUT UINTN *CertLength -- ) --{ -- PKCS7 *Pkcs7; -- BOOLEAN Status; -- UINT8 *SignedData; -- UINT8 *Temp; -- UINTN SignedDataSize; -- BOOLEAN Wrapped; -- STACK_OF(X509) *Stack; -- UINT8 Index; -- UINT8 *CertBuf; -- UINT8 *OldBuf; -- UINTN BufferSize; -- UINTN OldSize; -- UINT8 *SingleCert; -- UINTN SingleCertSize; -- -- if ((P7Data == NULL) || (CertStack == NULL) || (StackLength == NULL) || -- (TrustedCert == NULL) || (CertLength == NULL) || (P7Length > INT_MAX)) { -- return FALSE; -- } -- -- Status = WrapPkcs7Data (P7Data, P7Length, &Wrapped, &SignedData, &SignedDataSize); -- if (!Status) { -- return Status; -- } -- -- Status = FALSE; -- Pkcs7 = NULL; -- Stack = NULL; -- CertBuf = NULL; -- OldBuf = NULL; -- SingleCert = NULL; -- -- // -- // Retrieve PKCS#7 Data (DER encoding) -- // -- if (SignedDataSize > INT_MAX) { -- goto _Exit; -- } -- -- Temp = SignedData; -- Pkcs7 = d2i_PKCS7 (NULL, (const unsigned char **) &Temp, (int) SignedDataSize); -- if (Pkcs7 == NULL) { -- goto _Exit; -- } -- -- // -- // Check if it's PKCS#7 Signed Data (for Authenticode Scenario) -- // -- if (!PKCS7_type_is_signed (Pkcs7)) { -- goto _Exit; -- } -- -- Stack = PKCS7_get0_signers(Pkcs7, NULL, PKCS7_BINARY); -- if (Stack == NULL) { -- goto _Exit; -- } -- -- // -- // Convert CertStack to buffer in following format: -- // UINT8 CertNumber; -- // UINT32 Cert1Length; -- // UINT8 Cert1[]; -- // UINT32 Cert2Length; -- // UINT8 Cert2[]; -- // ... -- // UINT32 CertnLength; -- // UINT8 Certn[]; -- // -- BufferSize = sizeof (UINT8); -- OldSize = BufferSize; -- -- for (Index = 0; ; Index++) { -- Status = X509PopCertificate (Stack, &SingleCert, &SingleCertSize); -- if (!Status) { -- break; -- } -- -- OldSize = BufferSize; -- OldBuf = CertBuf; -- BufferSize = OldSize + SingleCertSize + sizeof (UINT32); -- CertBuf = malloc (BufferSize); -- -- if (CertBuf == NULL) { -- goto _Exit; -- } -- -- if (OldBuf != NULL) { -- CopyMem (CertBuf, OldBuf, OldSize); -- free (OldBuf); -- OldBuf = NULL; -- } -- -- WriteUnaligned32 ((UINT32 *) (CertBuf + OldSize), (UINT32) SingleCertSize); -- CopyMem (CertBuf + OldSize + sizeof (UINT32), SingleCert, SingleCertSize); -- -- free (SingleCert); -- SingleCert = NULL; -- } -- -- if (CertBuf != NULL) { -- // -- // Update CertNumber. -- // -- CertBuf[0] = Index; -- -- *CertLength = BufferSize - OldSize - sizeof (UINT32); -- *TrustedCert = malloc (*CertLength); -- if (*TrustedCert == NULL) { -- goto _Exit; -- } -- -- CopyMem (*TrustedCert, CertBuf + OldSize + sizeof (UINT32), *CertLength); -- *CertStack = CertBuf; -- *StackLength = BufferSize; -- Status = TRUE; -- } -- --_Exit: -- // -- // Release Resources -- // -- if (!Wrapped) { -- free (SignedData); -- } -- -- if (Pkcs7 != NULL) { -- PKCS7_free (Pkcs7); -- } -- -- if (Stack != NULL) { -- sk_X509_pop_free(Stack, X509_free); -- } -- -- if (SingleCert != NULL) { -- free (SingleCert); -- } -- -- if (!Status && (CertBuf != NULL)) { -- free (CertBuf); -- *CertStack = NULL; -- } -- -- if (OldBuf != NULL) { -- free (OldBuf); -- } -- -- return Status; --} -- --/** -- Wrap function to use free() to free allocated memory for certificates. -- -- @param[in] Certs Pointer to the certificates to be freed. -- --**/ --VOID --EFIAPI --Pkcs7FreeSigners ( -- IN UINT8 *Certs -- ) --{ -- if (Certs == NULL) { -- return; -- } -- -- free (Certs); --} -- --/** -- Verifies the validility of a PKCS#7 signed data as described in "PKCS #7: -- Cryptographic Message Syntax Standard". The input signed data could be wrapped -- in a ContentInfo structure. -- -- If P7Data, TrustedCert or InData is NULL, then return FALSE. -- If P7Length, CertLength or DataLength overflow, then return FAlSE. -- -- Caution: This function may receive untrusted input. -- UEFI Authenticated Variable is external input, so this function will do basic -- check for PKCS#7 data structure. -- -- @param[in] P7Data Pointer to the PKCS#7 message to verify. -- @param[in] P7Length Length of the PKCS#7 message in bytes. -- @param[in] TrustedCert Pointer to a trusted/root certificate encoded in DER, which -- is used for certificate chain verification. -- @param[in] CertLength Length of the trusted certificate in bytes. -- @param[in] InData Pointer to the content to be verified. -- @param[in] DataLength Length of InData in bytes. -- -- @retval TRUE The specified PKCS#7 signed data is valid. -- @retval FALSE Invalid PKCS#7 signed data. -- --**/ --BOOLEAN --EFIAPI --Pkcs7Verify ( -- IN CONST UINT8 *P7Data, -- IN UINTN P7Length, -- IN CONST UINT8 *TrustedCert, -- IN UINTN CertLength, -- IN CONST UINT8 *InData, -- IN UINTN DataLength -- ) --{ -- PKCS7 *Pkcs7; -- BIO *CertBio; -- BIO *DataBio; -- BOOLEAN Status; -- X509 *Cert; -- X509_STORE *CertStore; -- UINT8 *SignedData; -- UINT8 *Temp; -- UINTN SignedDataSize; -- BOOLEAN Wrapped; -- -- // -- // Check input parameters. -- // -- if (P7Data == NULL || TrustedCert == NULL || InData == NULL || -- P7Length > INT_MAX || CertLength > INT_MAX || DataLength > INT_MAX) { -- return FALSE; -- } -- -- Pkcs7 = NULL; -- CertBio = NULL; -- DataBio = NULL; -- Cert = NULL; -- CertStore = NULL; -- -- // -- // Register & Initialize necessary digest algorithms for PKCS#7 Handling -- // -- EVP_add_digest (EVP_md5()); -- EVP_add_digest (EVP_sha1()); -- EVP_add_digest_alias (SN_sha1WithRSAEncryption, SN_sha1WithRSA); -- EVP_add_digest (EVP_sha256()); -- -- Status = WrapPkcs7Data (P7Data, P7Length, &Wrapped, &SignedData, &SignedDataSize); -- if (!Status) { -- return Status; -- } -- -- Status = FALSE; -- -- // -- // Retrieve PKCS#7 Data (DER encoding) -- // -- if (SignedDataSize > INT_MAX) { -- goto _Exit; -- } -- -- Temp = SignedData; -- Pkcs7 = d2i_PKCS7 (NULL, (const unsigned char **) &Temp, (int) SignedDataSize); -- if (Pkcs7 == NULL) { -- goto _Exit; -- } -- -- // -- // Check if it's PKCS#7 Signed Data (for Authenticode Scenario) -- // -- if (!PKCS7_type_is_signed (Pkcs7)) { -- goto _Exit; -- } -- -- // -- // Read DER-encoded root certificate and Construct X509 Certificate -- // -- CertBio = BIO_new (BIO_s_mem ()); -- BIO_write (CertBio, TrustedCert, (int)CertLength); -- if (CertBio == NULL) { -- goto _Exit; -- } -- Cert = d2i_X509_bio (CertBio, NULL); -- if (Cert == NULL) { -- goto _Exit; -- } -- -- // -- // Setup X509 Store for trusted certificate -- // -- CertStore = X509_STORE_new (); -- if (CertStore == NULL) { -- goto _Exit; -- } -- if (!(X509_STORE_add_cert (CertStore, Cert))) { -- goto _Exit; -- } -- -- // -- // Register customized X509 verification callback function to support -- // trusted intermediate certificate anchor. -- // -- CertStore->verify_cb = X509VerifyCb; -- -- // -- // For generic PKCS#7 handling, InData may be NULL if the content is present -- // in PKCS#7 structure. So ignore NULL checking here. -- // -- DataBio = BIO_new (BIO_s_mem ()); -- BIO_write (DataBio, InData, (int)DataLength); -- -- // -- // Verifies the PKCS#7 signedData structure -- // -- Status = (BOOLEAN) PKCS7_verify (Pkcs7, NULL, CertStore, DataBio, NULL, PKCS7_BINARY); -- --_Exit: -- // -- // Release Resources -- // -- BIO_free (DataBio); -- BIO_free (CertBio); -- X509_free (Cert); -- X509_STORE_free (CertStore); -- PKCS7_free (Pkcs7); -- -- if (!Wrapped) { -- OPENSSL_free (SignedData); -- } -- -- return Status; --} -diff --git a/Cryptlib/Pk/CryptPkcs7Sign.c b/Cryptlib/Pk/CryptPkcs7Sign.c -new file mode 100644 -index 0000000..63fe78f ---- /dev/null -+++ b/Cryptlib/Pk/CryptPkcs7Sign.c -@@ -0,0 +1,207 @@ -+/** @file -+ PKCS#7 SignedData Sign Wrapper Implementation over OpenSSL. -+ -+Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.
-+This program and the accompanying materials -+are licensed and made available under the terms and conditions of the BSD License -+which accompanies this distribution. The full text of the license may be found at -+http://opensource.org/licenses/bsd-license.php -+ -+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -+ -+**/ -+ -+#include "InternalCryptLib.h" -+ -+#include -+#include -+#include -+ -+ -+/** -+ Creates a PKCS#7 signedData as described in "PKCS #7: Cryptographic Message -+ Syntax Standard, version 1.5". This interface is only intended to be used for -+ application to perform PKCS#7 functionality validation. -+ -+ @param[in] PrivateKey Pointer to the PEM-formatted private key data for -+ data signing. -+ @param[in] PrivateKeySize Size of the PEM private key data in bytes. -+ @param[in] KeyPassword NULL-terminated passphrase used for encrypted PEM -+ key data. -+ @param[in] InData Pointer to the content to be signed. -+ @param[in] InDataSize Size of InData in bytes. -+ @param[in] SignCert Pointer to signer's DER-encoded certificate to sign with. -+ @param[in] OtherCerts Pointer to an optional additional set of certificates to -+ include in the PKCS#7 signedData (e.g. any intermediate -+ CAs in the chain). -+ @param[out] SignedData Pointer to output PKCS#7 signedData. -+ @param[out] SignedDataSize Size of SignedData in bytes. -+ -+ @retval TRUE PKCS#7 data signing succeeded. -+ @retval FALSE PKCS#7 data signing failed. -+ -+**/ -+BOOLEAN -+EFIAPI -+Pkcs7Sign ( -+ IN CONST UINT8 *PrivateKey, -+ IN UINTN PrivateKeySize, -+ IN CONST UINT8 *KeyPassword, -+ IN UINT8 *InData, -+ IN UINTN InDataSize, -+ IN UINT8 *SignCert, -+ IN UINT8 *OtherCerts OPTIONAL, -+ OUT UINT8 **SignedData, -+ OUT UINTN *SignedDataSize -+ ) -+{ -+ BOOLEAN Status; -+ EVP_PKEY *Key; -+ BIO *DataBio; -+ PKCS7 *Pkcs7; -+ UINT8 *RsaContext; -+ UINT8 *P7Data; -+ UINTN P7DataSize; -+ UINT8 *Tmp; -+ -+ // -+ // Check input parameters. -+ // -+ if (PrivateKey == NULL || KeyPassword == NULL || InData == NULL || -+ SignCert == NULL || SignedData == NULL || SignedDataSize == NULL || InDataSize > INT_MAX) { -+ return FALSE; -+ } -+ -+ RsaContext = NULL; -+ Key = NULL; -+ Pkcs7 = NULL; -+ DataBio = NULL; -+ Status = FALSE; -+ -+ // -+ // Retrieve RSA private key from PEM data. -+ // -+ Status = RsaGetPrivateKeyFromPem ( -+ PrivateKey, -+ PrivateKeySize, -+ (CONST CHAR8 *) KeyPassword, -+ (VOID **) &RsaContext -+ ); -+ if (!Status) { -+ return Status; -+ } -+ -+ Status = FALSE; -+ -+ // -+ // Register & Initialize necessary digest algorithms and PRNG for PKCS#7 Handling -+ // -+ if (EVP_add_digest (EVP_md5 ()) == 0) { -+ goto _Exit; -+ } -+ if (EVP_add_digest (EVP_sha1 ()) == 0) { -+ goto _Exit; -+ } -+ if (EVP_add_digest (EVP_sha256 ()) == 0) { -+ goto _Exit; -+ } -+ -+ RandomSeed (NULL, 0); -+ -+ // -+ // Construct OpenSSL EVP_PKEY for private key. -+ // -+ Key = EVP_PKEY_new (); -+ if (Key == NULL) { -+ goto _Exit; -+ } -+ Key->save_type = EVP_PKEY_RSA; -+ Key->type = EVP_PKEY_type (EVP_PKEY_RSA); -+ Key->pkey.rsa = (RSA *) RsaContext; -+ -+ // -+ // Convert the data to be signed to BIO format. -+ // -+ DataBio = BIO_new (BIO_s_mem ()); -+ if (DataBio == NULL) { -+ goto _Exit; -+ } -+ -+ if (BIO_write (DataBio, InData, (int) InDataSize) <= 0) { -+ goto _Exit; -+ } -+ -+ // -+ // Create the PKCS#7 signedData structure. -+ // -+ Pkcs7 = PKCS7_sign ( -+ (X509 *) SignCert, -+ Key, -+ (STACK_OF(X509) *) OtherCerts, -+ DataBio, -+ PKCS7_BINARY | PKCS7_NOATTR | PKCS7_DETACHED -+ ); -+ if (Pkcs7 == NULL) { -+ goto _Exit; -+ } -+ -+ // -+ // Convert PKCS#7 signedData structure into DER-encoded buffer. -+ // -+ P7DataSize = i2d_PKCS7 (Pkcs7, NULL); -+ if (P7DataSize <= 19) { -+ goto _Exit; -+ } -+ -+ P7Data = malloc (P7DataSize); -+ if (P7Data == NULL) { -+ goto _Exit; -+ } -+ -+ Tmp = P7Data; -+ P7DataSize = i2d_PKCS7 (Pkcs7, (unsigned char **) &Tmp); -+ ASSERT (P7DataSize > 19); -+ -+ // -+ // Strip ContentInfo to content only for signeddata. The data be trimmed off -+ // is totally 19 bytes. -+ // -+ *SignedDataSize = P7DataSize - 19; -+ *SignedData = malloc (*SignedDataSize); -+ if (*SignedData == NULL) { -+ OPENSSL_free (P7Data); -+ goto _Exit; -+ } -+ -+ CopyMem (*SignedData, P7Data + 19, *SignedDataSize); -+ -+ OPENSSL_free (P7Data); -+ -+ Status = TRUE; -+ -+_Exit: -+ // -+ // Release Resources -+ // -+ if (RsaContext != NULL) { -+ RsaFree (RsaContext); -+ if (Key != NULL) { -+ Key->pkey.rsa = NULL; -+ } -+ } -+ -+ if (Key != NULL) { -+ EVP_PKEY_free (Key); -+ } -+ -+ if (DataBio != NULL) { -+ BIO_free (DataBio); -+ } -+ -+ if (Pkcs7 != NULL) { -+ PKCS7_free (Pkcs7); -+ } -+ -+ return Status; -+} -diff --git a/Cryptlib/Pk/CryptPkcs7SignNull.c b/Cryptlib/Pk/CryptPkcs7SignNull.c -new file mode 100644 -index 0000000..539bb6b ---- /dev/null -+++ b/Cryptlib/Pk/CryptPkcs7SignNull.c -@@ -0,0 +1,59 @@ -+/** @file -+ PKCS#7 SignedData Sign Wrapper Implementation which does not provide real -+ capabilities. -+ -+Copyright (c) 2012, Intel Corporation. All rights reserved.
-+This program and the accompanying materials -+are licensed and made available under the terms and conditions of the BSD License -+which accompanies this distribution. The full text of the license may be found at -+http://opensource.org/licenses/bsd-license.php -+ -+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -+ -+**/ -+ -+#include "InternalCryptLib.h" -+ -+/** -+ Creates a PKCS#7 signedData as described in "PKCS #7: Cryptographic Message -+ Syntax Standard, version 1.5". This interface is only intended to be used for -+ application to perform PKCS#7 functionality validation. -+ -+ Return FALSE to indicate this interface is not supported. -+ -+ @param[in] PrivateKey Pointer to the PEM-formatted private key data for -+ data signing. -+ @param[in] PrivateKeySize Size of the PEM private key data in bytes. -+ @param[in] KeyPassword NULL-terminated passphrase used for encrypted PEM -+ key data. -+ @param[in] InData Pointer to the content to be signed. -+ @param[in] InDataSize Size of InData in bytes. -+ @param[in] SignCert Pointer to signer's DER-encoded certificate to sign with. -+ @param[in] OtherCerts Pointer to an optional additional set of certificates to -+ include in the PKCS#7 signedData (e.g. any intermediate -+ CAs in the chain). -+ @param[out] SignedData Pointer to output PKCS#7 signedData. -+ @param[out] SignedDataSize Size of SignedData in bytes. -+ -+ @retval FALSE This interface is not supported. -+ -+**/ -+BOOLEAN -+EFIAPI -+Pkcs7Sign ( -+ IN CONST UINT8 *PrivateKey, -+ IN UINTN PrivateKeySize, -+ IN CONST UINT8 *KeyPassword, -+ IN UINT8 *InData, -+ IN UINTN InDataSize, -+ IN UINT8 *SignCert, -+ IN UINT8 *OtherCerts OPTIONAL, -+ OUT UINT8 **SignedData, -+ OUT UINTN *SignedDataSize -+ ) -+{ -+ ASSERT (FALSE); -+ return FALSE; -+} -+ -diff --git a/Cryptlib/Pk/CryptPkcs7Verify.c b/Cryptlib/Pk/CryptPkcs7Verify.c -new file mode 100644 -index 0000000..05c3f87 ---- /dev/null -+++ b/Cryptlib/Pk/CryptPkcs7Verify.c -@@ -0,0 +1,677 @@ -+/** @file -+ PKCS#7 SignedData Verification Wrapper Implementation over OpenSSL. -+ -+ Caution: This module requires additional review when modified. -+ This library will have external input - signature (e.g. UEFI Authenticated -+ Variable). It may by input in SMM mode. -+ This external input must be validated carefully to avoid security issue like -+ buffer overflow, integer overflow. -+ -+ WrapPkcs7Data(), Pkcs7GetSigners(), Pkcs7Verify() will get UEFI Authenticated -+ Variable and will do basic check for data structure. -+ -+Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.
-+This program and the accompanying materials -+are licensed and made available under the terms and conditions of the BSD License -+which accompanies this distribution. The full text of the license may be found at -+http://opensource.org/licenses/bsd-license.php -+ -+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -+ -+**/ -+ -+#include "InternalCryptLib.h" -+ -+#include -+#include -+#include -+#include -+ -+UINT8 mOidValue[9] = { 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07, 0x02 }; -+ -+/** -+ Verification callback function to override any existing callbacks in OpenSSL -+ for intermediate certificate supports. -+ -+ @param[in] Status Original status before calling this callback. -+ @param[in] Context X509 store context. -+ -+ @retval 1 Current X509 certificate is verified successfully. -+ @retval 0 Verification failed. -+ -+**/ -+int -+X509VerifyCb ( -+ IN int Status, -+ IN X509_STORE_CTX *Context -+ ) -+{ -+ X509_OBJECT *Obj; -+ INTN Error; -+ INTN Index; -+ INTN Count; -+ -+ Obj = NULL; -+ Error = (INTN) X509_STORE_CTX_get_error (Context); -+ -+ // -+ // X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT and X509_V_ERR_UNABLE_TO_GET_ISSUER_ -+ // CERT_LOCALLY mean a X509 certificate is not self signed and its issuer -+ // can not be found in X509_verify_cert of X509_vfy.c. -+ // In order to support intermediate certificate node, we override the -+ // errors if the certification is obtained from X509 store, i.e. it is -+ // a trusted ceritifcate node that is enrolled by user. -+ // Besides,X509_V_ERR_CERT_UNTRUSTED and X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE -+ // are also ignored to enable such feature. -+ // -+ if ((Error == X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT) || -+ (Error == X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY)) { -+ Obj = (X509_OBJECT *) malloc (sizeof (X509_OBJECT)); -+ if (Obj == NULL) { -+ return 0; -+ } -+ -+ Obj->type = X509_LU_X509; -+ Obj->data.x509 = Context->current_cert; -+ -+ CRYPTO_w_lock (CRYPTO_LOCK_X509_STORE); -+ -+ if (X509_OBJECT_retrieve_match (Context->ctx->objs, Obj)) { -+ Status = 1; -+ } else { -+ // -+ // If any certificate in the chain is enrolled as trusted certificate, -+ // pass the certificate verification. -+ // -+ if (Error == X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY) { -+ Count = (INTN) sk_X509_num (Context->chain); -+ for (Index = 0; Index < Count; Index++) { -+ Obj->data.x509 = sk_X509_value (Context->chain, (int) Index); -+ if (X509_OBJECT_retrieve_match (Context->ctx->objs, Obj)) { -+ Status = 1; -+ break; -+ } -+ } -+ } -+ } -+ -+ CRYPTO_w_unlock (CRYPTO_LOCK_X509_STORE); -+ } -+ -+ if ((Error == X509_V_ERR_CERT_UNTRUSTED) || -+ (Error == X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE)) { -+ Status = 1; -+ } -+ -+ if (Obj != NULL) { -+ OPENSSL_free (Obj); -+ } -+ -+ return Status; -+} -+ -+/** -+ Check input P7Data is a wrapped ContentInfo structure or not. If not construct -+ a new structure to wrap P7Data. -+ -+ Caution: This function may receive untrusted input. -+ UEFI Authenticated Variable is external input, so this function will do basic -+ check for PKCS#7 data structure. -+ -+ @param[in] P7Data Pointer to the PKCS#7 message to verify. -+ @param[in] P7Length Length of the PKCS#7 message in bytes. -+ @param[out] WrapFlag If TRUE P7Data is a ContentInfo structure, otherwise -+ return FALSE. -+ @param[out] WrapData If return status of this function is TRUE: -+ 1) when WrapFlag is TRUE, pointer to P7Data. -+ 2) when WrapFlag is FALSE, pointer to a new ContentInfo -+ structure. It's caller's responsibility to free this -+ buffer. -+ @param[out] WrapDataSize Length of ContentInfo structure in bytes. -+ -+ @retval TRUE The operation is finished successfully. -+ @retval FALSE The operation is failed due to lack of resources. -+ -+**/ -+BOOLEAN -+WrapPkcs7Data ( -+ IN CONST UINT8 *P7Data, -+ IN UINTN P7Length, -+ OUT BOOLEAN *WrapFlag, -+ OUT UINT8 **WrapData, -+ OUT UINTN *WrapDataSize -+ ) -+{ -+ BOOLEAN Wrapped; -+ UINT8 *SignedData; -+ -+ // -+ // Check whether input P7Data is a wrapped ContentInfo structure or not. -+ // -+ Wrapped = FALSE; -+ if ((P7Data[4] == 0x06) && (P7Data[5] == 0x09)) { -+ if (CompareMem (P7Data + 6, mOidValue, sizeof (mOidValue)) == 0) { -+ if ((P7Data[15] == 0xA0) && (P7Data[16] == 0x82)) { -+ Wrapped = TRUE; -+ } -+ } -+ } -+ -+ if (Wrapped) { -+ *WrapData = (UINT8 *) P7Data; -+ *WrapDataSize = P7Length; -+ } else { -+ // -+ // Wrap PKCS#7 signeddata to a ContentInfo structure - add a header in 19 bytes. -+ // -+ *WrapDataSize = P7Length + 19; -+ *WrapData = malloc (*WrapDataSize); -+ if (*WrapData == NULL) { -+ *WrapFlag = Wrapped; -+ return FALSE; -+ } -+ -+ SignedData = *WrapData; -+ -+ // -+ // Part1: 0x30, 0x82. -+ // -+ SignedData[0] = 0x30; -+ SignedData[1] = 0x82; -+ -+ // -+ // Part2: Length1 = P7Length + 19 - 4, in big endian. -+ // -+ SignedData[2] = (UINT8) (((UINT16) (*WrapDataSize - 4)) >> 8); -+ SignedData[3] = (UINT8) (((UINT16) (*WrapDataSize - 4)) & 0xff); -+ -+ // -+ // Part3: 0x06, 0x09. -+ // -+ SignedData[4] = 0x06; -+ SignedData[5] = 0x09; -+ -+ // -+ // Part4: OID value -- 0x2A 0x86 0x48 0x86 0xF7 0x0D 0x01 0x07 0x02. -+ // -+ CopyMem (SignedData + 6, mOidValue, sizeof (mOidValue)); -+ -+ // -+ // Part5: 0xA0, 0x82. -+ // -+ SignedData[15] = 0xA0; -+ SignedData[16] = 0x82; -+ -+ // -+ // Part6: Length2 = P7Length, in big endian. -+ // -+ SignedData[17] = (UINT8) (((UINT16) P7Length) >> 8); -+ SignedData[18] = (UINT8) (((UINT16) P7Length) & 0xff); -+ -+ // -+ // Part7: P7Data. -+ // -+ CopyMem (SignedData + 19, P7Data, P7Length); -+ } -+ -+ *WrapFlag = Wrapped; -+ return TRUE; -+} -+ -+/** -+ Pop single certificate from STACK_OF(X509). -+ -+ If X509Stack, Cert, or CertSize is NULL, then return FALSE. -+ -+ @param[in] X509Stack Pointer to a X509 stack object. -+ @param[out] Cert Pointer to a X509 certificate. -+ @param[out] CertSize Length of output X509 certificate in bytes. -+ -+ @retval TRUE The X509 stack pop succeeded. -+ @retval FALSE The pop operation failed. -+ -+**/ -+BOOLEAN -+X509PopCertificate ( -+ IN VOID *X509Stack, -+ OUT UINT8 **Cert, -+ OUT UINTN *CertSize -+ ) -+{ -+ BIO *CertBio; -+ X509 *X509Cert; -+ STACK_OF(X509) *CertStack; -+ BOOLEAN Status; -+ INT32 Result; -+ INT32 Length; -+ VOID *Buffer; -+ -+ Status = FALSE; -+ -+ if ((X509Stack == NULL) || (Cert == NULL) || (CertSize == NULL)) { -+ return Status; -+ } -+ -+ CertStack = (STACK_OF(X509) *) X509Stack; -+ -+ X509Cert = sk_X509_pop (CertStack); -+ -+ if (X509Cert == NULL) { -+ return Status; -+ } -+ -+ Buffer = NULL; -+ -+ CertBio = BIO_new (BIO_s_mem ()); -+ if (CertBio == NULL) { -+ return Status; -+ } -+ -+ Result = i2d_X509_bio (CertBio, X509Cert); -+ if (Result == 0) { -+ goto _Exit; -+ } -+ -+ Length = ((BUF_MEM *) CertBio->ptr)->length; -+ if (Length <= 0) { -+ goto _Exit; -+ } -+ -+ Buffer = malloc (Length); -+ if (Buffer == NULL) { -+ goto _Exit; -+ } -+ -+ Result = BIO_read (CertBio, Buffer, Length); -+ if (Result != Length) { -+ goto _Exit; -+ } -+ -+ *Cert = Buffer; -+ *CertSize = Length; -+ -+ Status = TRUE; -+ -+_Exit: -+ -+ BIO_free (CertBio); -+ -+ if (!Status && (Buffer != NULL)) { -+ free (Buffer); -+ } -+ -+ return Status; -+} -+ -+/** -+ Get the signer's certificates from PKCS#7 signed data as described in "PKCS #7: -+ Cryptographic Message Syntax Standard". The input signed data could be wrapped -+ in a ContentInfo structure. -+ -+ If P7Data, CertStack, StackLength, TrustedCert or CertLength is NULL, then -+ return FALSE. If P7Length overflow, then return FAlSE. -+ -+ Caution: This function may receive untrusted input. -+ UEFI Authenticated Variable is external input, so this function will do basic -+ check for PKCS#7 data structure. -+ -+ @param[in] P7Data Pointer to the PKCS#7 message to verify. -+ @param[in] P7Length Length of the PKCS#7 message in bytes. -+ @param[out] CertStack Pointer to Signer's certificates retrieved from P7Data. -+ It's caller's responsiblity to free the buffer. -+ @param[out] StackLength Length of signer's certificates in bytes. -+ @param[out] TrustedCert Pointer to a trusted certificate from Signer's certificates. -+ It's caller's responsiblity to free the buffer. -+ @param[out] CertLength Length of the trusted certificate in bytes. -+ -+ @retval TRUE The operation is finished successfully. -+ @retval FALSE Error occurs during the operation. -+ -+**/ -+BOOLEAN -+EFIAPI -+Pkcs7GetSigners ( -+ IN CONST UINT8 *P7Data, -+ IN UINTN P7Length, -+ OUT UINT8 **CertStack, -+ OUT UINTN *StackLength, -+ OUT UINT8 **TrustedCert, -+ OUT UINTN *CertLength -+ ) -+{ -+ PKCS7 *Pkcs7; -+ BOOLEAN Status; -+ UINT8 *SignedData; -+ UINT8 *Temp; -+ UINTN SignedDataSize; -+ BOOLEAN Wrapped; -+ STACK_OF(X509) *Stack; -+ UINT8 Index; -+ UINT8 *CertBuf; -+ UINT8 *OldBuf; -+ UINTN BufferSize; -+ UINTN OldSize; -+ UINT8 *SingleCert; -+ UINTN SingleCertSize; -+ -+ if ((P7Data == NULL) || (CertStack == NULL) || (StackLength == NULL) || -+ (TrustedCert == NULL) || (CertLength == NULL) || (P7Length > INT_MAX)) { -+ return FALSE; -+ } -+ -+ Status = WrapPkcs7Data (P7Data, P7Length, &Wrapped, &SignedData, &SignedDataSize); -+ if (!Status) { -+ return Status; -+ } -+ -+ Status = FALSE; -+ Pkcs7 = NULL; -+ Stack = NULL; -+ CertBuf = NULL; -+ OldBuf = NULL; -+ SingleCert = NULL; -+ -+ // -+ // Retrieve PKCS#7 Data (DER encoding) -+ // -+ if (SignedDataSize > INT_MAX) { -+ goto _Exit; -+ } -+ -+ Temp = SignedData; -+ Pkcs7 = d2i_PKCS7 (NULL, (const unsigned char **) &Temp, (int) SignedDataSize); -+ if (Pkcs7 == NULL) { -+ goto _Exit; -+ } -+ -+ // -+ // Check if it's PKCS#7 Signed Data (for Authenticode Scenario) -+ // -+ if (!PKCS7_type_is_signed (Pkcs7)) { -+ goto _Exit; -+ } -+ -+ Stack = PKCS7_get0_signers(Pkcs7, NULL, PKCS7_BINARY); -+ if (Stack == NULL) { -+ goto _Exit; -+ } -+ -+ // -+ // Convert CertStack to buffer in following format: -+ // UINT8 CertNumber; -+ // UINT32 Cert1Length; -+ // UINT8 Cert1[]; -+ // UINT32 Cert2Length; -+ // UINT8 Cert2[]; -+ // ... -+ // UINT32 CertnLength; -+ // UINT8 Certn[]; -+ // -+ BufferSize = sizeof (UINT8); -+ OldSize = BufferSize; -+ -+ for (Index = 0; ; Index++) { -+ Status = X509PopCertificate (Stack, &SingleCert, &SingleCertSize); -+ if (!Status) { -+ break; -+ } -+ -+ OldSize = BufferSize; -+ OldBuf = CertBuf; -+ BufferSize = OldSize + SingleCertSize + sizeof (UINT32); -+ CertBuf = malloc (BufferSize); -+ -+ if (CertBuf == NULL) { -+ goto _Exit; -+ } -+ -+ if (OldBuf != NULL) { -+ CopyMem (CertBuf, OldBuf, OldSize); -+ free (OldBuf); -+ OldBuf = NULL; -+ } -+ -+ WriteUnaligned32 ((UINT32 *) (CertBuf + OldSize), (UINT32) SingleCertSize); -+ CopyMem (CertBuf + OldSize + sizeof (UINT32), SingleCert, SingleCertSize); -+ -+ free (SingleCert); -+ SingleCert = NULL; -+ } -+ -+ if (CertBuf != NULL) { -+ // -+ // Update CertNumber. -+ // -+ CertBuf[0] = Index; -+ -+ *CertLength = BufferSize - OldSize - sizeof (UINT32); -+ *TrustedCert = malloc (*CertLength); -+ if (*TrustedCert == NULL) { -+ goto _Exit; -+ } -+ -+ CopyMem (*TrustedCert, CertBuf + OldSize + sizeof (UINT32), *CertLength); -+ *CertStack = CertBuf; -+ *StackLength = BufferSize; -+ Status = TRUE; -+ } -+ -+_Exit: -+ // -+ // Release Resources -+ // -+ if (!Wrapped) { -+ free (SignedData); -+ } -+ -+ if (Pkcs7 != NULL) { -+ PKCS7_free (Pkcs7); -+ } -+ -+ if (Stack != NULL) { -+ sk_X509_pop_free(Stack, X509_free); -+ } -+ -+ if (SingleCert != NULL) { -+ free (SingleCert); -+ } -+ -+ if (!Status && (CertBuf != NULL)) { -+ free (CertBuf); -+ *CertStack = NULL; -+ } -+ -+ if (OldBuf != NULL) { -+ free (OldBuf); -+ } -+ -+ return Status; -+} -+ -+/** -+ Wrap function to use free() to free allocated memory for certificates. -+ -+ @param[in] Certs Pointer to the certificates to be freed. -+ -+**/ -+VOID -+EFIAPI -+Pkcs7FreeSigners ( -+ IN UINT8 *Certs -+ ) -+{ -+ if (Certs == NULL) { -+ return; -+ } -+ -+ free (Certs); -+} -+ -+/** -+ Verifies the validility of a PKCS#7 signed data as described in "PKCS #7: -+ Cryptographic Message Syntax Standard". The input signed data could be wrapped -+ in a ContentInfo structure. -+ -+ If P7Data, TrustedCert or InData is NULL, then return FALSE. -+ If P7Length, CertLength or DataLength overflow, then return FAlSE. -+ -+ Caution: This function may receive untrusted input. -+ UEFI Authenticated Variable is external input, so this function will do basic -+ check for PKCS#7 data structure. -+ -+ @param[in] P7Data Pointer to the PKCS#7 message to verify. -+ @param[in] P7Length Length of the PKCS#7 message in bytes. -+ @param[in] TrustedCert Pointer to a trusted/root certificate encoded in DER, which -+ is used for certificate chain verification. -+ @param[in] CertLength Length of the trusted certificate in bytes. -+ @param[in] InData Pointer to the content to be verified. -+ @param[in] DataLength Length of InData in bytes. -+ -+ @retval TRUE The specified PKCS#7 signed data is valid. -+ @retval FALSE Invalid PKCS#7 signed data. -+ -+**/ -+BOOLEAN -+EFIAPI -+Pkcs7Verify ( -+ IN CONST UINT8 *P7Data, -+ IN UINTN P7Length, -+ IN CONST UINT8 *TrustedCert, -+ IN UINTN CertLength, -+ IN CONST UINT8 *InData, -+ IN UINTN DataLength -+ ) -+{ -+ PKCS7 *Pkcs7; -+ BIO *DataBio; -+ BOOLEAN Status; -+ X509 *Cert; -+ X509_STORE *CertStore; -+ UINT8 *SignedData; -+ UINT8 *Temp; -+ UINTN SignedDataSize; -+ BOOLEAN Wrapped; -+ -+ // -+ // Check input parameters. -+ // -+ if (P7Data == NULL || TrustedCert == NULL || InData == NULL || -+ P7Length > INT_MAX || CertLength > INT_MAX || DataLength > INT_MAX) { -+ return FALSE; -+ } -+ -+ Pkcs7 = NULL; -+ DataBio = NULL; -+ Cert = NULL; -+ CertStore = NULL; -+ -+ // -+ // Register & Initialize necessary digest algorithms for PKCS#7 Handling -+ // -+ if (EVP_add_digest (EVP_md5 ()) == 0) { -+ return FALSE; -+ } -+ if (EVP_add_digest (EVP_sha1 ()) == 0) { -+ return FALSE; -+ } -+ if (EVP_add_digest (EVP_sha256 ()) == 0) { -+ return FALSE; -+ } -+ if (EVP_add_digest_alias (SN_sha1WithRSAEncryption, SN_sha1WithRSA) == 0) { -+ return FALSE; -+ } -+ -+ -+ Status = WrapPkcs7Data (P7Data, P7Length, &Wrapped, &SignedData, &SignedDataSize); -+ if (!Status) { -+ return Status; -+ } -+ -+ Status = FALSE; -+ -+ // -+ // Retrieve PKCS#7 Data (DER encoding) -+ // -+ if (SignedDataSize > INT_MAX) { -+ goto _Exit; -+ } -+ -+ Temp = SignedData; -+ Pkcs7 = d2i_PKCS7 (NULL, (const unsigned char **) &Temp, (int) SignedDataSize); -+ if (Pkcs7 == NULL) { -+ goto _Exit; -+ } -+ -+ // -+ // Check if it's PKCS#7 Signed Data (for Authenticode Scenario) -+ // -+ if (!PKCS7_type_is_signed (Pkcs7)) { -+ goto _Exit; -+ } -+ -+ // -+ // Read DER-encoded root certificate and Construct X509 Certificate -+ // -+ Cert = d2i_X509 (NULL, &TrustedCert, (long) CertLength); -+ if (Cert == NULL) { -+ goto _Exit; -+ } -+ -+ // -+ // Setup X509 Store for trusted certificate -+ // -+ CertStore = X509_STORE_new (); -+ if (CertStore == NULL) { -+ goto _Exit; -+ } -+ if (!(X509_STORE_add_cert (CertStore, Cert))) { -+ goto _Exit; -+ } -+ -+ // -+ // Register customized X509 verification callback function to support -+ // trusted intermediate certificate anchor. -+ // -+ CertStore->verify_cb = X509VerifyCb; -+ -+ // -+ // For generic PKCS#7 handling, InData may be NULL if the content is present -+ // in PKCS#7 structure. So ignore NULL checking here. -+ // -+ DataBio = BIO_new (BIO_s_mem ()); -+ if (DataBio == NULL) { -+ goto _Exit; -+ } -+ -+ if (BIO_write (DataBio, InData, (int) DataLength) <= 0) { -+ goto _Exit; -+ } -+ -+ // -+ // OpenSSL PKCS7 Verification by default checks for SMIME (email signing) and -+ // doesn't support the extended key usage for Authenticode Code Signing. -+ // Bypass the certificate purpose checking by enabling any purposes setting. -+ // -+ X509_STORE_set_purpose (CertStore, X509_PURPOSE_ANY); -+ -+ // -+ // Verifies the PKCS#7 signedData structure -+ // -+ Status = (BOOLEAN) PKCS7_verify (Pkcs7, NULL, CertStore, DataBio, NULL, PKCS7_BINARY); -+ -+_Exit: -+ // -+ // Release Resources -+ // -+ BIO_free (DataBio); -+ X509_free (Cert); -+ X509_STORE_free (CertStore); -+ PKCS7_free (Pkcs7); -+ -+ if (!Wrapped) { -+ OPENSSL_free (SignedData); -+ } -+ -+ return Status; -+} -diff --git a/Cryptlib/Pk/CryptPkcs7VerifyNull.c b/Cryptlib/Pk/CryptPkcs7VerifyNull.c -new file mode 100644 -index 0000000..9a4c77a ---- /dev/null -+++ b/Cryptlib/Pk/CryptPkcs7VerifyNull.c -@@ -0,0 +1,100 @@ -+/** @file -+ PKCS#7 SignedData Verification Wrapper Implementation which does not provide -+ real capabilities. -+ -+Copyright (c) 2012, Intel Corporation. All rights reserved.
-+This program and the accompanying materials -+are licensed and made available under the terms and conditions of the BSD License -+which accompanies this distribution. The full text of the license may be found at -+http://opensource.org/licenses/bsd-license.php -+ -+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -+ -+**/ -+ -+#include "InternalCryptLib.h" -+ -+/** -+ Get the signer's certificates from PKCS#7 signed data as described in "PKCS #7: -+ Cryptographic Message Syntax Standard". The input signed data could be wrapped -+ in a ContentInfo structure. -+ -+ Return FALSE to indicate this interface is not supported. -+ -+ @param[in] P7Data Pointer to the PKCS#7 message to verify. -+ @param[in] P7Length Length of the PKCS#7 message in bytes. -+ @param[out] CertStack Pointer to Signer's certificates retrieved from P7Data. -+ It's caller's responsiblity to free the buffer. -+ @param[out] StackLength Length of signer's certificates in bytes. -+ @param[out] TrustedCert Pointer to a trusted certificate from Signer's certificates. -+ It's caller's responsiblity to free the buffer. -+ @param[out] CertLength Length of the trusted certificate in bytes. -+ -+ @retval FALSE This interface is not supported. -+ -+**/ -+BOOLEAN -+EFIAPI -+Pkcs7GetSigners ( -+ IN CONST UINT8 *P7Data, -+ IN UINTN P7Length, -+ OUT UINT8 **CertStack, -+ OUT UINTN *StackLength, -+ OUT UINT8 **TrustedCert, -+ OUT UINTN *CertLength -+ ) -+{ -+ ASSERT (FALSE); -+ return FALSE; -+} -+ -+/** -+ Wrap function to use free() to free allocated memory for certificates. -+ -+ If the interface is not supported, then ASSERT(). -+ -+ @param[in] Certs Pointer to the certificates to be freed. -+ -+**/ -+VOID -+EFIAPI -+Pkcs7FreeSigners ( -+ IN UINT8 *Certs -+ ) -+{ -+ ASSERT (FALSE); -+} -+ -+/** -+ Verifies the validility of a PKCS#7 signed data as described in "PKCS #7: -+ Cryptographic Message Syntax Standard". The input signed data could be wrapped -+ in a ContentInfo structure. -+ -+ Return FALSE to indicate this interface is not supported. -+ -+ @param[in] P7Data Pointer to the PKCS#7 message to verify. -+ @param[in] P7Length Length of the PKCS#7 message in bytes. -+ @param[in] TrustedCert Pointer to a trusted/root certificate encoded in DER, which -+ is used for certificate chain verification. -+ @param[in] CertLength Length of the trusted certificate in bytes. -+ @param[in] InData Pointer to the content to be verified. -+ @param[in] DataLength Length of InData in bytes. -+ -+ @retval FALSE This interface is not supported. -+ -+**/ -+BOOLEAN -+EFIAPI -+Pkcs7Verify ( -+ IN CONST UINT8 *P7Data, -+ IN UINTN P7Length, -+ IN CONST UINT8 *TrustedCert, -+ IN UINTN CertLength, -+ IN CONST UINT8 *InData, -+ IN UINTN DataLength -+ ) -+{ -+ ASSERT (FALSE); -+ return FALSE; -+} -diff --git a/Cryptlib/Pk/CryptRsaExtNull.c b/Cryptlib/Pk/CryptRsaExtNull.c -new file mode 100644 -index 0000000..e44cdde ---- /dev/null -+++ b/Cryptlib/Pk/CryptRsaExtNull.c -@@ -0,0 +1,125 @@ -+/** @file -+ RSA Asymmetric Cipher Wrapper Implementation over OpenSSL. -+ -+ This file does not provide real capabilities for following APIs in RSA handling: -+ 1) RsaGetKey -+ 2) RsaGenerateKey -+ 3) RsaCheckKey -+ 4) RsaPkcs1Sign -+ -+Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.
-+This program and the accompanying materials -+are licensed and made available under the terms and conditions of the BSD License -+which accompanies this distribution. The full text of the license may be found at -+http://opensource.org/licenses/bsd-license.php -+ -+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -+ -+**/ -+ -+#include "InternalCryptLib.h" -+ -+/** -+ Gets the tag-designated RSA key component from the established RSA context. -+ -+ Return FALSE to indicate this interface is not supported. -+ -+ @param[in, out] RsaContext Pointer to RSA context being set. -+ @param[in] KeyTag Tag of RSA key component being set. -+ @param[out] BigNumber Pointer to octet integer buffer. -+ @param[in, out] BnSize On input, the size of big number buffer in bytes. -+ On output, the size of data returned in big number buffer in bytes. -+ -+ @retval FALSE This interface is not supported. -+ -+**/ -+BOOLEAN -+EFIAPI -+RsaGetKey ( -+ IN OUT VOID *RsaContext, -+ IN RSA_KEY_TAG KeyTag, -+ OUT UINT8 *BigNumber, -+ IN OUT UINTN *BnSize -+ ) -+{ -+ ASSERT (FALSE); -+ return FALSE; -+} -+ -+/** -+ Generates RSA key components. -+ -+ Return FALSE to indicate this interface is not supported. -+ -+ @param[in, out] RsaContext Pointer to RSA context being set. -+ @param[in] ModulusLength Length of RSA modulus N in bits. -+ @param[in] PublicExponent Pointer to RSA public exponent. -+ @param[in] PublicExponentSize Size of RSA public exponent buffer in bytes. -+ -+ @retval FALSE This interface is not supported. -+ -+**/ -+BOOLEAN -+EFIAPI -+RsaGenerateKey ( -+ IN OUT VOID *RsaContext, -+ IN UINTN ModulusLength, -+ IN CONST UINT8 *PublicExponent, -+ IN UINTN PublicExponentSize -+ ) -+{ -+ ASSERT (FALSE); -+ return FALSE; -+} -+ -+/** -+ Validates key components of RSA context. -+ -+ Return FALSE to indicate this interface is not supported. -+ -+ @param[in] RsaContext Pointer to RSA context to check. -+ -+ @retval FALSE This interface is not supported. -+ -+**/ -+BOOLEAN -+EFIAPI -+RsaCheckKey ( -+ IN VOID *RsaContext -+ ) -+{ -+ ASSERT (FALSE); -+ return FALSE; -+} -+ -+/** -+ Carries out the RSA-SSA signature generation with EMSA-PKCS1-v1_5 encoding scheme. -+ -+ Return FALSE to indicate this interface is not supported. -+ -+ @param[in] RsaContext Pointer to RSA context for signature generation. -+ @param[in] MessageHash Pointer to octet message hash to be signed. -+ @param[in] HashSize Size of the message hash in bytes. -+ @param[out] Signature Pointer to buffer to receive RSA PKCS1-v1_5 signature. -+ @param[in, out] SigSize On input, the size of Signature buffer in bytes. -+ On output, the size of data returned in Signature buffer in bytes. -+ -+ @retval FALSE This interface is not supported. -+ -+**/ -+BOOLEAN -+EFIAPI -+RsaPkcs1Sign ( -+ IN VOID *RsaContext, -+ IN CONST UINT8 *MessageHash, -+ IN UINTN HashSize, -+ OUT UINT8 *Signature, -+ IN OUT UINTN *SigSize -+ ) -+{ -+ ASSERT (FALSE); -+ return FALSE; -+} -+ -+ -diff --git a/Cryptlib/Rand/CryptRand.c b/Cryptlib/Rand/CryptRand.c -index dc3ab99..895ce83 100644 ---- a/Cryptlib/Rand/CryptRand.c -+++ b/Cryptlib/Rand/CryptRand.c -@@ -1,7 +1,7 @@ - /** @file - Pseudorandom Number Generator Wrapper Implementation over OpenSSL. - --Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.
-+Copyright (c) 2010 - 2013, Intel Corporation. All rights reserved.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at -@@ -14,6 +14,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - - #include "InternalCryptLib.h" - #include -+#include - - // - // Default seed for UEFI Crypto Library -@@ -48,6 +49,14 @@ RandomSeed ( - } - - // -+ // The software PRNG implementation built in OpenSSL depends on message digest algorithm. -+ // Make sure SHA-1 digest algorithm is available here. -+ // -+ if (EVP_add_digest (EVP_sha1 ()) == 0) { -+ return FALSE; -+ } -+ -+ // - // Seed the pseudorandom number generator with user-supplied value. - // NOTE: A cryptographic PRNG must be seeded with unpredictable data. - // -diff --git a/Cryptlib/update.sh b/Cryptlib/update.sh -index 96bbece..57b6631 100755 ---- a/Cryptlib/update.sh -+++ b/Cryptlib/update.sh -@@ -13,8 +13,13 @@ cp $DIR/Cipher/CryptAes.c Cipher/CryptAes.c - cp $DIR/Cipher/CryptTdes.c Cipher/CryptTdes.c - cp $DIR/Cipher/CryptArc4.c Cipher/CryptArc4.c - cp $DIR/Rand/CryptRand.c Rand/CryptRand.c --cp $DIR/Pk/CryptRsa.c Pk/CryptRsa.c --cp $DIR/Pk/CryptPkcs7.c Pk/CryptPkcs7.c -+cp $DIR/Pk/CryptRsaBasic.c Pk/CryptRsaBasic.c -+cp $DIR/Pk/CryptRsaExt.c Pk/CryptRsaExt.c -+cp $DIR/Pk/CryptRsaExtNull.c Pk/CryptRsaExtNull.c -+cp $DIR/Pk/CryptPkcs7Sign.c Pk/CryptPkcs7Sign.c -+cp $DIR/Pk/CryptPkcs7SignNull.c Pk/CryptPkcs7SignNull.c -+cp $DIR/Pk/CryptPkcs7Verify.c Pk/CryptPkcs7Verify.c -+cp $DIR/Pk/CryptPkcs7VerifyNull.c Pk/CryptPkcs7VerifyNull.c - cp $DIR/Pk/CryptDh.c Pk/CryptDh.c - cp $DIR/Pk/CryptX509.c Pk/CryptX509.c - cp $DIR/Pk/CryptAuthenticode.c Pk/CryptAuthenticode.c --- -2.1.0 - diff --git a/debian/patches/CVE-2014-3675.patch b/debian/patches/CVE-2014-3675.patch deleted file mode 100644 index 67b50fd..0000000 --- a/debian/patches/CVE-2014-3675.patch +++ /dev/null @@ -1,161 +0,0 @@ -diff --git a/netboot.c b/netboot.c -index 5ef53f7..f01a9bc 100644 ---- a/netboot.c -+++ b/netboot.c -@@ -116,29 +116,34 @@ BOOLEAN findNetboot(EFI_HANDLE device) - - static CHAR8 *get_v6_bootfile_url(EFI_PXE_BASE_CODE_DHCPV6_PACKET *pkt) - { -- void *optr; -- EFI_DHCP6_PACKET_OPTION *option; -- CHAR8 *url; -- UINT32 urllen; -+ void *optr = NULL, *end = NULL; -+ EFI_DHCP6_PACKET_OPTION *option = NULL; -+ CHAR8 *url = NULL; -+ UINT32 urllen = 0; - - optr = pkt->DhcpOptions; -+ end = optr + sizeof(pkt->DhcpOptions); - -- for(;;) { -+ for (;;) { - option = (EFI_DHCP6_PACKET_OPTION *)optr; - - if (ntohs(option->OpCode) == 0) -- return NULL; -+ break; - - if (ntohs(option->OpCode) == 59) { - /* This is the bootfile url option */ - urllen = ntohs(option->Length); -- url = AllocateZeroPool(urllen+1); -+ if ((void *)(option->Data + urllen) > end) -+ break; -+ url = AllocateZeroPool(urllen + 1); - if (!url) -- return NULL; -+ break; - memcpy(url, option->Data, urllen); - return url; - } - optr += 4 + ntohs(option->Length); -+ if (optr + sizeof(EFI_DHCP6_PACKET_OPTION) > end) -+ break; - } - - return NULL; -@@ -164,45 +169,60 @@ static CHAR16 str2ns(CHAR8 *str) - - static CHAR8 *str2ip6(CHAR8 *str) - { -- UINT8 i, j, p; -- size_t len; -- CHAR8 *a, *b, t; -- static UINT16 ip[8]; -+ UINT8 i = 0, j = 0, p = 0; -+ size_t len = 0, dotcount = 0; -+ enum { MAX_IP6_DOTS = 7 }; -+ CHAR8 *a = NULL, *b = NULL, t = 0; -+ static UINT16 ip[8]; - -- for(i=0; i < 8; i++) { -- ip[i] = 0; -- } -- len = strlen(str); -- a = b = str; -- for(i=p=0; i < len; i++, b++) { -- if (*b != ':') -- continue; -- *b = '\0'; -- ip[p++] = str2ns(a); -- *b = ':'; -- a = b + 1; -- if ( *(b+1) == ':' ) -- break; -- } -- a = b = (str + len); -- for(j=len, p=7; j > i; j--, a--) { -- if (*a != ':') -- continue; -- t = *b; -- *b = '\0'; -- ip[p--] = str2ns(a+1); -- *b = t; -- b = a; -- } -- return (CHAR8 *)ip; -+ memset(ip, 0, sizeof(ip)); -+ -+ /* Count amount of ':' to prevent overflows. -+ * max. count = 7. Returns an invalid ip6 that -+ * can be checked against -+ */ -+ for (a = str; *a != 0; ++a) { -+ if (*a == ':') -+ ++dotcount; -+ } -+ if (dotcount > MAX_IP6_DOTS) -+ return (CHAR8 *)ip; -+ -+ len = strlen(str); -+ a = b = str; -+ for (i = p = 0; i < len; i++, b++) { -+ if (*b != ':') -+ continue; -+ *b = '\0'; -+ ip[p++] = str2ns(a); -+ *b = ':'; -+ a = b + 1; -+ if (b[1] == ':' ) -+ break; -+ } -+ a = b = (str + len); -+ for (j = len, p = 7; j > i; j--, a--) { -+ if (*a != ':') -+ continue; -+ t = *b; -+ *b = '\0'; -+ ip[p--] = str2ns(a+1); -+ *b = t; -+ b = a; -+ } -+ return (CHAR8 *)ip; - } - - static BOOLEAN extract_tftp_info(CHAR8 *url) - { - CHAR8 *start, *end; - CHAR8 ip6str[40]; -+ CHAR8 ip6inv[16]; - CHAR8 *template = (CHAR8 *)translate_slashes(DEFAULT_LOADER_CHAR); - -+ // to check against str2ip6() errors -+ memset(ip6inv, 0, sizeof(ip6inv)); -+ - if (strncmp((UINT8 *)url, (UINT8 *)"tftp://", 7)) { - Print(L"URLS MUST START WITH tftp://\n"); - return FALSE; -@@ -217,7 +237,7 @@ static BOOLEAN extract_tftp_info(CHAR8 *url) - end = start; - while ((*end != '\0') && (*end != ']')) { - end++; -- if (end - start > 39) { -+ if (end - start >= (int)sizeof(ip6str)) { - Print(L"TFTP URL includes malformed IPv6 address\n"); - return FALSE; - } -@@ -226,10 +246,12 @@ static BOOLEAN extract_tftp_info(CHAR8 *url) - Print(L"TFTP SERVER MUST BE ENCLOSED IN [..]\n"); - return FALSE; - } -- memset(ip6str, 0, 40); -+ memset(ip6str, 0, sizeof(ip6str)); - memcpy(ip6str, start, end - start); - end++; - memcpy(&tftp_addr.v6, str2ip6(ip6str), 16); -+ if (memcmp(&tftp_addr.v6, ip6inv, sizeof(ip6inv)) == 0) -+ return FALSE; - full_path = AllocateZeroPool(strlen(end)+strlen(template)+1); - if (!full_path) - return FALSE; diff --git a/debian/patches/CVE-2014-3677.patch b/debian/patches/CVE-2014-3677.patch deleted file mode 100644 index 4d05f05..0000000 --- a/debian/patches/CVE-2014-3677.patch +++ /dev/null @@ -1,75 +0,0 @@ -diff --git a/MokManager.c b/MokManager.c -index 50cb9d7..73d8ff4 100644 ---- a/MokManager.c -+++ b/MokManager.c -@@ -100,8 +100,18 @@ static UINT32 count_keys(void *Data, UINTN DataSize) - EFI_GUID HashType = EFI_CERT_SHA256_GUID; - UINTN dbsize = DataSize; - UINT32 MokNum = 0; -+ void *end = Data + DataSize; - - while ((dbsize > 0) && (dbsize >= CertList->SignatureListSize)) { -+ -+ /* Use ptr arithmetics to ensure bounded access. Do not allow 0 -+ * SignatureListSize that will cause endless loop. -+ */ -+ if ((void *)(CertList + 1) > end || CertList->SignatureListSize == 0) { -+ console_notify(L"Invalid MOK detected! Ignoring MOK List."); -+ return 0; -+ } -+ - if ((CompareGuid (&CertList->SignatureType, &CertType) != 0) && - (CompareGuid (&CertList->SignatureType, &HashType) != 0)) { - console_notify(L"Doesn't look like a key or hash"); -@@ -137,6 +147,7 @@ static MokListNode *build_mok_list(UINT32 num, void *Data, UINTN DataSize) { - EFI_GUID HashType = EFI_CERT_SHA256_GUID; - UINTN dbsize = DataSize; - UINTN count = 0; -+ void *end = Data + DataSize; - - list = AllocatePool(sizeof(MokListNode) * num); - -@@ -146,6 +157,11 @@ static MokListNode *build_mok_list(UINT32 num, void *Data, UINTN DataSize) { - } - - while ((dbsize > 0) && (dbsize >= CertList->SignatureListSize)) { -+ /* CertList out of bounds? */ -+ if ((void *)(CertList + 1) > end || CertList->SignatureListSize == 0) { -+ FreePool(list); -+ return NULL; -+ } - if ((CompareGuid (&CertList->SignatureType, &CertType) != 0) && - (CompareGuid (&CertList->SignatureType, &HashType) != 0)) { - dbsize -= CertList->SignatureListSize; -@@ -165,10 +181,22 @@ static MokListNode *build_mok_list(UINT32 num, void *Data, UINTN DataSize) { - Cert = (EFI_SIGNATURE_DATA *) (((UINT8 *) CertList) + - sizeof (EFI_SIGNATURE_LIST) + CertList->SignatureHeaderSize); - -+ /* Cert out of bounds? */ -+ if ((void *)(Cert + 1) > end || CertList->SignatureSize <= sizeof(EFI_GUID)) { -+ FreePool(list); -+ return NULL; -+ } -+ - list[count].MokSize = CertList->SignatureSize - sizeof(EFI_GUID); - list[count].Mok = (void *)Cert->SignatureData; - list[count].Type = CertList->SignatureType; - -+ /* MOK out of bounds? */ -+ if (list[count].MokSize > end - (void *)list[count].Mok) { -+ FreePool(list); -+ return NULL; -+ } -+ - count++; - dbsize -= CertList->SignatureListSize; - CertList = (EFI_SIGNATURE_LIST *) ((UINT8 *) CertList + -@@ -449,6 +477,8 @@ static EFI_STATUS list_keys (void *KeyList, UINTN KeyListSize, CHAR16 *title) - } - - MokNum = count_keys(KeyList, KeyListSize); -+ if (MokNum == 0) -+ return 0; - keys = build_mok_list(MokNum, KeyList, KeyListSize); - - if (!keys) { diff --git a/debian/patches/series b/debian/patches/series index fa2ce82..7875632 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,5 +1,3 @@ prototypes second-stage-path sbsigntool-not-pesign -0001-Update-openssl-to-0.9.8za.patch -CVE-2014-3675.patch