diff --git a/3rdp/build/GNUmakefile b/3rdp/build/GNUmakefile
index 913a70f040c06c02d1aec5bf094b2849fc8af604..b39700ade41b50f4f74cf8067ce1592022b3322c 100644
--- a/3rdp/build/GNUmakefile
+++ b/3rdp/build/GNUmakefile
@@ -69,7 +69,7 @@ $(CRYPT_SRC): | $(3RDPSRCDIR)
 $(CRYPT_IDIR): | $(3RDPODIR)
 	$(QUIET)$(IFNOTEXIST) mkdir $(CRYPT_IDIR)
 
-$(CRYPTLIB_BUILD): $(3RDP_ROOT)$(DIRSEP)dist/cryptlib.zip $(3RDP_ROOT)$(DIRSEP)build/terminal-params.patch $(3RDP_ROOT)$(DIRSEP)build/cl-mingw32-static.patch $(3RDP_ROOT)$(DIRSEP)build/cl-ranlib.patch $(3RDP_ROOT)$(DIRSEP)build/cl-win32-noasm.patch $(3RDP_ROOT)$(DIRSEP)build/cl-zz-country.patch $(3RDP_ROOT)$(DIRSEP)build/cl-algorithms.patch $(3RDP_ROOT)$(DIRSEP)build/cl-allow-duplicate-ext.patch $(3RDP_ROOT)$(DIRSEP)build/cl-macosx-minver.patch $(3RDP_ROOT)$(DIRSEP)build/cl-endian.patch $(3RDP_ROOT)$(DIRSEP)build/cl-cryptodev.patch $(3RDP_ROOT)$(DIRSEP)build/cl-posix-me-gently.patch $(3RDP_ROOT)$(DIRSEP)build/cl-tpm-linux.patch $(3RDP_ROOT)$(DIRSEP)build/cl-PAM-noprompts.patch $(3RDP_ROOT)$(DIRSEP)build/cl-zlib.patch $(3RDP_ROOT)$(DIRSEP)build/Dynamic-linked-static-lib.patch $(3RDP_ROOT)$(DIRSEP)build/SSL-fix.patch $(3RDP_ROOT)$(DIRSEP)build/cl-bigger-maxattribute.patch $(3RDP_ROOT)$(DIRSEP)build/cl-vcxproj.patch $(3RDP_ROOT)$(DIRSEP)build/cl-mingw-vcver.patch $(3RDP_ROOT)$(DIRSEP)build/cl-win32-build-fix.patch $(3RDP_ROOT)$(DIRSEP)build/cl-gcc-non-const-time-val.patch $(3RDP_ROOT)$(DIRSEP)build/cl-no-odbc.patch $(3RDP_ROOT)$(DIRSEP)build/cl-noasm-defines.patch $(3RDP_ROOT)$(DIRSEP)build/cl-bn-noasm64-fix.patch $(3RDP_ROOT)$(DIRSEP)build/cl-no-RSA-suites.patch $(3RDP_ROOT)$(DIRSEP)build/cl-fix-ECC-RSA.patch $(3RDP_ROOT)$(DIRSEP)build/cl-prefer-ECC.patch $(3RDP_ROOT)$(DIRSEP)build/cl-prefer-ECC-harder.patch $(3RDP_ROOT)$(DIRSEP)build/cl-more-RSA-ECC-fixes.patch $(3RDP_ROOT)$(DIRSEP)build/cl-DH-key-init.patch $(3RDP_ROOT)$(DIRSEP)build/cl-clear-GCM-flag.patch $(3RDP_ROOT)$(DIRSEP)build/cl-use-ssh-ctr.patch $(3RDP_ROOT)$(DIRSEP)build/cl-ssh-list-ctr-modes.patch $(3RDP_ROOT)$(DIRSEP)build/cl-ssh-incCtr.patch $(3RDP_ROOT)$(DIRSEP)build/cl-ssl-suite-blocksizes.patch $(3RDP_ROOT)$(DIRSEP)build/cl-no-tpm.patch $(3RDP_ROOT)$(DIRSEP)build/cl-no-via-aes.patch $(3RDP_ROOT)$(DIRSEP)build/cl-fix-ssh-ecc-ephemeral.patch $(3RDP_ROOT)$(DIRSEP)/build/cl-just-use-cc.patch $(3RDP_ROOT)$(DIRSEP)/build/cl-learn-numbers.patch $(3RDP_ROOT)$(DIRSEP)/build/cl-no-safe-stack.patch $(3RDP_ROOT)$(DIRSEP)/build/cl-allow-pkcs12.patch | $(CRYPT_SRC) $(CRYPT_IDIR)
+$(CRYPTLIB_BUILD): $(3RDP_ROOT)$(DIRSEP)dist/cryptlib.zip $(3RDP_ROOT)$(DIRSEP)build/terminal-params.patch $(3RDP_ROOT)$(DIRSEP)build/cl-mingw32-static.patch $(3RDP_ROOT)$(DIRSEP)build/cl-ranlib.patch $(3RDP_ROOT)$(DIRSEP)build/cl-win32-noasm.patch $(3RDP_ROOT)$(DIRSEP)build/cl-zz-country.patch $(3RDP_ROOT)$(DIRSEP)build/cl-algorithms.patch $(3RDP_ROOT)$(DIRSEP)build/cl-allow-duplicate-ext.patch $(3RDP_ROOT)$(DIRSEP)build/cl-macosx-minver.patch $(3RDP_ROOT)$(DIRSEP)build/cl-endian.patch $(3RDP_ROOT)$(DIRSEP)build/cl-cryptodev.patch $(3RDP_ROOT)$(DIRSEP)build/cl-posix-me-gently.patch $(3RDP_ROOT)$(DIRSEP)build/cl-tpm-linux.patch $(3RDP_ROOT)$(DIRSEP)build/cl-PAM-noprompts.patch $(3RDP_ROOT)$(DIRSEP)build/cl-zlib.patch $(3RDP_ROOT)$(DIRSEP)build/Dynamic-linked-static-lib.patch $(3RDP_ROOT)$(DIRSEP)build/SSL-fix.patch $(3RDP_ROOT)$(DIRSEP)build/cl-bigger-maxattribute.patch $(3RDP_ROOT)$(DIRSEP)build/cl-vcxproj.patch $(3RDP_ROOT)$(DIRSEP)build/cl-mingw-vcver.patch $(3RDP_ROOT)$(DIRSEP)build/cl-win32-build-fix.patch $(3RDP_ROOT)$(DIRSEP)build/cl-gcc-non-const-time-val.patch $(3RDP_ROOT)$(DIRSEP)build/cl-no-odbc.patch $(3RDP_ROOT)$(DIRSEP)build/cl-noasm-defines.patch $(3RDP_ROOT)$(DIRSEP)build/cl-bn-noasm64-fix.patch $(3RDP_ROOT)$(DIRSEP)build/cl-no-RSA-suites.patch $(3RDP_ROOT)$(DIRSEP)build/cl-fix-ECC-RSA.patch $(3RDP_ROOT)$(DIRSEP)build/cl-prefer-ECC.patch $(3RDP_ROOT)$(DIRSEP)build/cl-prefer-ECC-harder.patch $(3RDP_ROOT)$(DIRSEP)build/cl-more-RSA-ECC-fixes.patch $(3RDP_ROOT)$(DIRSEP)build/cl-DH-key-init.patch $(3RDP_ROOT)$(DIRSEP)build/cl-clear-GCM-flag.patch $(3RDP_ROOT)$(DIRSEP)build/cl-use-ssh-ctr.patch $(3RDP_ROOT)$(DIRSEP)build/cl-ssh-list-ctr-modes.patch $(3RDP_ROOT)$(DIRSEP)build/cl-ssh-incCtr.patch $(3RDP_ROOT)$(DIRSEP)build/cl-ssl-suite-blocksizes.patch $(3RDP_ROOT)$(DIRSEP)build/cl-no-tpm.patch $(3RDP_ROOT)$(DIRSEP)build/cl-no-via-aes.patch $(3RDP_ROOT)$(DIRSEP)build/cl-fix-ssh-ecc-ephemeral.patch $(3RDP_ROOT)$(DIRSEP)/build/cl-just-use-cc.patch $(3RDP_ROOT)$(DIRSEP)/build/cl-learn-numbers.patch $(3RDP_ROOT)$(DIRSEP)/build/cl-no-safe-stack.patch $(3RDP_ROOT)$(DIRSEP)/build/cl-allow-pkcs12.patch $(3RDP_ROOT)$(DIRSEP)/build/cl-uint64_t-redefine.patch $(3RDP_ROOT)$(DIRSEP)/build/cl-random-openbsd.patch $(3RDP_ROOT)$(DIRSEP)/build/cl-openbsd-threads.patch | $(CRYPT_SRC) $(CRYPT_IDIR)
 	@echo Creating $@ ...
 	$(QUIET)-rm -rf $(CRYPT_SRC)/*
 	$(QUIET)unzip -oa $(3RDPDISTDIR)$(DIRSEP)cryptlib.zip -d $(CRYPT_SRC)
@@ -116,6 +116,9 @@ $(CRYPTLIB_BUILD): $(3RDP_ROOT)$(DIRSEP)dist/cryptlib.zip $(3RDP_ROOT)$(DIRSEP)b
 	$(QUIET)patch -b -p0 -d $(CRYPT_SRC) < cl-learn-numbers.patch
 	$(QUIET)patch -b -p0 -d $(CRYPT_SRC) < cl-no-safe-stack.patch
 	$(QUIET)patch -b -p0 -d $(CRYPT_SRC) < cl-allow-pkcs12.patch
+	$(QUIET)patch -b -p0 -d $(CRYPT_SRC) < cl-uint64_t-redefine.patch
+	$(QUIET)patch -b -p0 -d $(CRYPT_SRC) < cl-random-openbsd.patch
+	$(QUIET)patch -b -p0 -d $(CRYPT_SRC) < cl-openbsd-threads.patch
 ifeq ($(CC),mingw32-gcc)
 	$(QUIET)cd $(CRYPT_SRC) && env - PATH="$(PATH)" CC="$(CC)" AR="$(AR)" RANLIB="$(RANLIB)" make directories
 	$(QUIET)cd $(CRYPT_SRC) && env - PATH="$(PATH)" CC="$(CC)" AR="$(AR)" RANLIB="$(RANLIB)" make toolscripts
diff --git a/3rdp/build/cl-openbsd-threads.patch b/3rdp/build/cl-openbsd-threads.patch
new file mode 100644
index 0000000000000000000000000000000000000000..81f566ecf791e4ef3301404d93887b442d2e4678
--- /dev/null
+++ b/3rdp/build/cl-openbsd-threads.patch
@@ -0,0 +1,11 @@
+--- test/test.h.orig	2021-03-15 18:15:00.758832000 -0400
++++ test/test.h	2021-03-15 18:15:18.354887000 -0400
+@@ -278,7 +278,7 @@
+    operations like sleep calls */
+ 
+ #if( ( defined( _AIX ) || defined( __APPLE__ ) || defined( __FreeBSD__ ) || \
+-	   defined( __NetBSD__ ) || defined( __linux__ ) || \
++	   defined( __NetBSD__ ) || defined( __OpenBSD__ ) || defined( __linux__ ) || \
+ 	   ( defined( sun ) && ( OSVERSION > 4 ) ) ) && !defined( NO_THREADS ) )
+   #define UNIX_THREADS
+ 
diff --git a/3rdp/build/cl-random-openbsd.patch b/3rdp/build/cl-random-openbsd.patch
new file mode 100644
index 0000000000000000000000000000000000000000..05c0c97a2e80e2b4f8b150e633759bd71f97207c
--- /dev/null
+++ b/3rdp/build/cl-random-openbsd.patch
@@ -0,0 +1,35 @@
+--- random/unix.c.orig	2021-03-15 18:02:42.743073000 -0400
++++ random/unix.c	2021-03-15 18:04:17.393934000 -0400
+@@ -398,7 +398,7 @@
+   #include <net/route.h>			/* For CTL_NET:AF_ROUTE:0:AF_INET:\
+ 									   NET_RT_FLAGS idents */
+   #include <sys/gmon.h>				/* For CTL_KERN:KERN_PROF identifiers */
+-  #if defined( __NetBSD__ )
++  #if defined( __NetBSD__ ) || defined( __OpenBSD__ )
+ 	#include <uvm/uvm_param.h>		/* For CTL_VM identifiers */
+   #else
+ 	#include <vm/vm_param.h>		/* For CTL_VM identifiers */
+@@ -414,7 +414,9 @@
+ static const SYSCTL_INFO sysctlInfo[] = {
+ 	/* Hardware info */
+ 	{ 2, { CTL_HW, HW_MACHINE } },	/* Machine class */
++#ifdef HW_MACHINE_ARCH
+ 	{ 2, { CTL_HW, HW_MACHINE_ARCH } }, /* Machine architecture */
++#endif
+ 	{ 2, { CTL_HW, HW_MODEL } },	/* Machine model */
+ #ifdef HW_IOSTATS
+ 	{ 2, { CTL_HW, HW_IOSTATS } },	/* struct io_sysctl for each device 
+@@ -517,11 +519,13 @@
+ 									/* Terminal chars sent/received */
+ #endif /* KERN_TKSTAT */
+ 	{ 2, { CTL_KERN, KERN_VERSION } }, /* System version string  */
++#ifdef KERN_VNODE
+ 	{ 2, { CTL_KERN, KERN_VNODE }, 15 }, 
+ 									/* struct xvnode for each vnode, see 
+ 									   /sys/sys/vnode.h.  Produces a huge 
+ 									   amount of output so typically gets
+ 									   truncated at SYSCTL_BUFFER_SIZE */
++#endif
+ 
+ 	/* Networking info */
+ 	{ 6, { CTL_NET, AF_ROUTE, 0, AF_INET, NET_RT_DUMP, 0 }, 5 },
diff --git a/3rdp/build/cl-uint64_t-redefine.patch b/3rdp/build/cl-uint64_t-redefine.patch
new file mode 100644
index 0000000000000000000000000000000000000000..e9acb7380936225cb50dbe017ebedfb9a6cc3340
--- /dev/null
+++ b/3rdp/build/cl-uint64_t-redefine.patch
@@ -0,0 +1,11 @@
+--- crypt/brg_types.h.orig	2021-03-15 17:59:00.031496000 -0400
++++ crypt/brg_types.h	2021-03-15 17:59:49.685028000 -0400
+@@ -133,7 +133,7 @@
+ #    if ULONG_MAX == 18446744073709551615ul
+ #      define BRG_UI64
+ #      define li_64(h) 0x##h##ul
+-	#ifndef _UINT64_T	/* Apple define their own version - pcg */
++	#if !defined(_UINT64_T) && !defined(_UINT64_T_DEFINED_)	/* Apple define their own version - pcg */
+ 	   typedef unsigned long uint64_t;		/* AES-GCM - pcg */
+ 	#endif /* !_UINT64_T */
+ #    endif