Add tf_fuzz tool

This is fully derived from tf-m repo.

Signed-off-by: Karl Zhang <karl.zhang@arm.com>
Change-Id: I8d35e70eda9081af66d8fa3f3cb4beb1d953060e
diff --git a/tf_fuzz/calls/security_call.hpp b/tf_fuzz/calls/security_call.hpp
new file mode 100644
index 0000000..e55a278
--- /dev/null
+++ b/tf_fuzz/calls/security_call.hpp
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2019-2020, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#ifndef SECURITY_CALL_HPP
+#define SECURITY_CALL_HPP
+
+#include <string>
+#include <vector>
+
+/* This project's header files #including other project headers quickly becomes
+   unrealistically complicated.  The only solution is for each .cpp to include
+   the headers it needs. */
+
+
+using namespace std;
+
+class hash_call : public security_call
+{
+public:
+    // Data members:  // (low value in hiding these behind setters and getters)
+    // Methods:
+        bool copy_call_to_asset (void);
+        bool copy_asset_to_call (void);
+        void fill_in_prep_code (void);
+        void fill_in_command (void);
+        /* Hash checks are different from the rest in that there's a single "call" --
+           not a PSA call though -- for all of the assets cited in the template line.
+           In other cases, create a single call for each asset cited by the template
+           line, but in this case it's a single call for all of them. */
+        hash_call (tf_fuzz_info *test_state, long &asset_ser_no,
+                    asset_search how_asset_found);  // (constructor)
+        ~hash_call (void);
+
+protected:
+    // Data members:
+    // Methods:
+//        void calc_result_code (void);  for *now* keep this in security_call::
+
+private:
+    // Data members:
+    // Methods:
+};
+
+#endif // #ifndef SECURITY_CALL_HPP