diff --git a/debian/aws_sdk.patch b/debian/aws_sdk.patch
new file mode 100644
index 0000000..df613f5
--- /dev/null
+++ b/debian/aws_sdk.patch
@@ -0,0 +1,92 @@
+Submodule crt/aws-crt-cpp contains modified content
+Submodule crt/aws-c-cal contains modified content
+diff --git a/crt/aws-crt-cpp/crt/aws-c-cal/source/unix/openssl_platform_init.c b/crt/aws-crt-cpp/crt/aws-c-cal/source/unix/openssl_platform_init.c
+index 761455b..fc434ba 100644
+--- a/crt/aws-crt-cpp/crt/aws-c-cal/source/unix/openssl_platform_init.c
++++ b/crt/aws-crt-cpp/crt/aws-c-cal/source/unix/openssl_platform_init.c
+@@ -34,7 +34,7 @@ struct openssl_evp_md_ctx_table *g_aws_openssl_evp_md_ctx_table = NULL;
+ /* 1.1 */
+ extern HMAC_CTX *HMAC_CTX_new(void) __attribute__((weak)) __attribute__((used));
+ extern void HMAC_CTX_free(HMAC_CTX *) __attribute__((weak)) __attribute__((used));
+-extern int HMAC_CTX_reset(HMAC_CTX *) __attribute__((weak)) __attribute__((used));
++//extern int HMAC_CTX_reset(HMAC_CTX *) __attribute__((weak)) __attribute__((used));
+ 
+ /* 1.0.2 */
+ extern void HMAC_CTX_init(HMAC_CTX *) __attribute__((weak)) __attribute__((used));
+@@ -43,8 +43,8 @@ extern void HMAC_CTX_cleanup(HMAC_CTX *) __attribute__((weak)) __attribute__((us
+ /* common */
+ extern int HMAC_Update(HMAC_CTX *, const unsigned char *, size_t) __attribute__((weak)) __attribute__((used));
+ extern int HMAC_Final(HMAC_CTX *, unsigned char *, unsigned int *) __attribute__((weak)) __attribute__((used));
+-extern int HMAC_Init_ex(HMAC_CTX *, const void *, int, const EVP_MD *, ENGINE *) __attribute__((weak))
+-__attribute__((used));
++//extern int HMAC_Init_ex(HMAC_CTX *, const void *, int, const EVP_MD *, ENGINE *) __attribute__((weak))
++//__attribute__((used));
+ 
+ /* libcrypto 1.1 stub for init */
+ static void s_hmac_ctx_init_noop(HMAC_CTX *ctx) {
+@@ -393,9 +393,9 @@ void aws_cal_platform_init(struct aws_allocator *allocator) {
+         }
+     }
+ 
+-    if (!CRYPTO_get_id_callback()) {
+-        CRYPTO_set_id_callback(s_id_fn);
+-    }
++    //if (!CRYPTO_get_id_callback()) {
++        //CRYPTO_set_id_callback(s_id_fn);
++    //}
+ }
+ 
+ void aws_cal_platform_clean_up(void) {
+@@ -408,9 +408,9 @@ void aws_cal_platform_clean_up(void) {
+         aws_mem_release(s_libcrypto_allocator, s_libcrypto_locks);
+     }
+ 
+-    if (CRYPTO_get_id_callback() == s_id_fn) {
+-        CRYPTO_set_id_callback(NULL);
+-    }
++    //if (CRYPTO_get_id_callback() == s_id_fn) {
++        //CRYPTO_set_id_callback(NULL);
++    //}
+ }
+ #if !defined(__GNUC__) || (__GNUC__ >= 4 && __GNUC_MINOR__ > 1)
+ #    pragma GCC diagnostic pop
+Submodule crt/s2n contains modified content
+diff --git a/crt/aws-crt-cpp/crt/s2n/utils/s2n_asn1_time.c b/crt/aws-crt-cpp/crt/s2n/utils/s2n_asn1_time.c
+index 84dbc6df..d3566b81 100755
+--- a/crt/aws-crt-cpp/crt/s2n/utils/s2n_asn1_time.c
++++ b/crt/aws-crt-cpp/crt/s2n/utils/s2n_asn1_time.c
+@@ -46,7 +46,7 @@ typedef enum parser_state {
+ } parser_state;
+ 
+ static inline long get_gmt_offset(struct tm *t) {
+-#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__ANDROID__) || defined(ANDROID) || defined(__APPLE__) && defined(__MACH__)
++#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__ANDROID__) || defined(ANDROID) || defined(__APPLE__) && defined(__MACH__) || defined(__USE_MISC)
+     return t->tm_gmtoff;
+ #else
+     return t->__tm_gmtoff;
+diff --git a/crt/aws-crt-cpp/crt/s2n/utils/s2n_init.c b/crt/aws-crt-cpp/crt/s2n/utils/s2n_init.c
+index 0f79f959..ae8122fb 100644
+--- a/crt/aws-crt-cpp/crt/s2n/utils/s2n_init.c
++++ b/crt/aws-crt-cpp/crt/s2n/utils/s2n_init.c
+@@ -45,7 +45,7 @@ int s2n_init(void)
+     GUARD_POSIX(s2n_security_policies_init());
+     GUARD_POSIX(s2n_config_defaults_init());
+     GUARD_POSIX(s2n_extension_type_init());
+-    GUARD_AS_POSIX(s2n_pq_init());
++    //GUARD_AS_POSIX(s2n_pq_init());
+ 
+     S2N_ERROR_IF(atexit(s2n_cleanup_atexit) != 0, S2N_ERR_ATEXIT);
+ 
+diff --git a/crt/aws-crt-cpp/crt/aws-c-common/include/aws/common/private/lookup3.inl b/crt/aws-crt-cpp/crt/aws-c-common/include/aws/common/private/lookup3.inl
+index 0f79f959..ae8122fb 100644
+--- a/crt/aws-crt-cpp/crt/aws-c-common/include/aws/common/private/lookup3.inl
++++ b/crt/aws-crt-cpp/crt/aws-c-common/include/aws/common/private/lookup3.inl
+@@ -533,7 +533,7 @@
+      * "CPROVER check pop". The masking trick does make the hash noticably
+      * faster for short strings (like English words).
+      */
+-#ifndef VALGRIND
++#if !defined(VALGRIND) && !__has_feature(address_sanitizer) && !__has_feature(memory_sanitizer)
+ #ifdef CBMC
+ #    pragma CPROVER check push
+ #    pragma CPROVER check disable "pointer"
