security: Add interface to request different key id generation

The option for key id include timestamp, random, and user-specified
value.

This commit only adds the interface, the support to honor the interface
will be implemented later.

Change-Id: I476381ff0fc56cd7906392cb7482b7458e386781
Refs: #2948
diff --git a/src/security/security-common.hpp b/src/security/security-common.hpp
index bd709f5..ef9a42b 100644
--- a/src/security/security-common.hpp
+++ b/src/security/security-common.hpp
@@ -47,6 +47,33 @@
 
 } // namespace signed_interest
 
+/**
+ * @brief The type of KeyId component in a key name
+ */
+enum class KeyIdType {
+  /**
+   * @brief User-specified key ID
+   *
+   * It is user's responsibility to assure the uniqueness of the key names.
+   */
+  USER_SPECIFIED = 0,
+  /**
+   * @brief Use the SHA256 hash of the public key as the key id
+   *
+   * This KeyId type guarantees the uniqueness of the key names.
+   */
+  SHA256 = 1,
+  /**
+   * @brief Use a 64-bit random number as the key id
+   *
+   * This KeyId provides roughly uniqueness of the key names.
+   */
+  RANDOM = 2
+};
+
+std::ostream&
+operator<<(std::ostream& os, KeyIdType keyIdType);
+
 enum class KeyType {
   NONE = 0,
   RSA  = 1,