Initial drop

Change-Id: I987ee6af6960bf2552628ee094cd656bf9e5f2fa
Reviewed-on: https://pigweed-review.googlesource.com/c/open-dice/+/31966
Reviewed-by: Ali Zhang <alizhang@google.com>
diff --git a/include/dice/utils.h b/include/dice/utils.h
new file mode 100644
index 0000000..5778259
--- /dev/null
+++ b/include/dice/utils.h
@@ -0,0 +1,41 @@
+// Copyright 2020 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//     https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+
+#ifndef DICE_UTILS_H_
+#define DICE_UTILS_H_
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include "dice/dice.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// Converts arbitrary bytes to ascii hex, no NUL terminator is added. Up to
+// |num_bytes| from |in| will be converted, and up to |out_size| bytes will be
+// written to |out|. If |out_size| is less than |num_bytes| * 2, the output will
+// be truncated at |out_size|.
+void DiceHexEncode(const uint8_t* in, size_t num_bytes, void* out,
+                   size_t out_size);
+
+// A default implementation of DiceOps.clear_memory.
+void DiceClearMemory(const DiceOps* ops, size_t size, void* address);
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif
+
+#endif  // DICE_UTILS_H_