Initial sshsm project structure

Issue-ID: AAF-94
Change-Id: I5e82fff418e7567b161acf9b98013a9b85ffc5b4
Signed-off-by: NingSun <ning.sun@intel.com>
diff --git a/SoftHSMv2/m4/acx_botan_gost.m4 b/SoftHSMv2/m4/acx_botan_gost.m4
new file mode 100644
index 0000000..3720f4a
--- /dev/null
+++ b/SoftHSMv2/m4/acx_botan_gost.m4
@@ -0,0 +1,52 @@
+AC_DEFUN([ACX_BOTAN_GOST],[
+	AC_MSG_CHECKING(for Botan GOST support)
+
+	tmp_CPPFLAGS=$CPPFLAGS
+	tmp_LIBS=$LIBS
+
+	CPPFLAGS="$CPPFLAGS $CRYPTO_INCLUDES"
+	LIBS="$CRYPTO_LIBS $LIBS"
+
+	AC_LANG_PUSH([C++])
+	AC_RUN_IFELSE([
+		AC_LANG_SOURCE([[
+			#include <botan/init.h>
+			#include <botan/gost_3410.h>
+			#include <botan/oids.h>
+			#include <botan/version.h>
+			int main()
+			{
+				Botan::LibraryInitializer::initialize();
+				const std::string name("gost_256A");
+				const Botan::OID oid(Botan::OIDS::lookup(name));
+				const Botan::EC_Group ecg(oid);
+				try {
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,11,0)
+					const std::vector<Botan::byte> der =
+					    ecg.DER_encode(Botan::EC_DOMPAR_ENC_OID);
+#else
+					const Botan::SecureVector<Botan::byte> der =
+					    ecg.DER_encode(Botan::EC_DOMPAR_ENC_OID);
+#endif
+				} catch(...) {
+					return 1;
+				}
+
+				return 0;
+			}
+		]])
+	],[
+		AC_MSG_RESULT([Found GOST])
+	],[
+		AC_MSG_RESULT([Cannot find GOST])
+		AC_MSG_ERROR([
+Botan library has no valid GOST support. Please upgrade to a later version
+of Botan, above or including version 1.10.6 or 1.11.5.
+Alternatively disable GOST support in SoftHSM with --disable-gost
+])
+	],[])
+	AC_LANG_POP([C++])
+
+	CPPFLAGS=$tmp_CPPFLAGS
+	LIBS=$tmp_LIBS
+])