+ISecretKey*
+_PrivilegeInfo::GetDeviceUniqueKeyN(void)
+{
+ result r = E_SUCCESS;
+ ByteBuffer* pTempValue = null;
+ ISecretKey* pKey = null;
+
+ char uniqueInfo[_INFO_LEN] =
+ {
+ 0x09, 0x25, 0x19, 0x87, 0xBF, 0x02, 0x14, 0x19,
+ 0x88, 0xDD, 0x12, 0x30, 0x19, 0x86, 0xAD, 0xED
+ };
+
+ char* pUniqueKey = null;
+ pUniqueKey = GetDeviceUniqueKey(uniqueInfo, _INFO_LEN, _KEY_LEN);
+ SysTryCatch(NID_SEC, pUniqueKey != null, , E_SYSTEM, "[E_SYSTEM] Failed to generate the unique key.");
+
+ pTempValue = new (std::nothrow) ByteBuffer();
+ SysTryCatch(NID_SEC, pTempValue != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Failed to allocate memory.");
+
+ r = pTempValue->Construct(_KEY_LEN);
+ SysTryCatch(NID_SEC, r == E_SUCCESS, , r, "[%s] Failed to generate device unique key.", GetErrorMessage(r));
+
+ r = pTempValue->SetArray(reinterpret_cast <byte*>(pUniqueKey), 0, _KEY_LEN);
+ SysTryCatch(NID_SEC, r == E_SUCCESS, , r, "[%s] Failed to generate device unique key.", GetErrorMessage(r));
+
+ pTempValue->Flip();
+
+ pKey = new (std::nothrow) SecretKey();
+ SysTryCatch(NID_SEC, pKey != null, , E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Failed to allocate memory.");
+
+ r = pKey->SetKey(*pTempValue);
+ SysTryCatch(NID_SEC, r == E_SUCCESS, , r, "[%s] Failed to generate device unique key.", GetErrorMessage(r));
+
+ if (pUniqueKey != null)
+ {
+ free(pUniqueKey);
+ }
+ delete pTempValue;
+
+ return pKey;
+
+CATCH:
+ if (pUniqueKey != null)
+ {
+ free(pUniqueKey);
+ }
+ delete pTempValue;
+ delete pKey;
+
+ return null;
+}
+
+int
+_PrivilegeInfo::GetPrivilegeLevel(const String& privilegeLevel)
+{
+ if(privilegeLevel.Equals(String(L"platform"), true))
+ {
+ return _API_VISIBILITY_PLATFORM;
+ }
+ else if(privilegeLevel.Equals(String(L"partner"), true))
+ {
+ return _API_VISIBILITY_PARTNER;
+ }
+
+ return _API_VISIBILITY_PUBLIC;
+}
+