*/
static void certCallbackWrapper(void* ctx, uint16_t credId, uint8_t *trustCertChain,
size_t chainSize);
+
+ /**
+ * Wrapper to save the seed value to generate device UUID
+ *
+ * @param[in] seed buffer of seed value
+ * @param[in] seedSize byte length of seed
+ */
+ static OCStackResult setDeviceIdSeed(const uint8_t* seed, size_t seedSize);
#endif // __WITH_DTLS__ || __WITH_TLS__
}
return result;
}
+
+ OCStackResult OCSecure::setDeviceIdSeed(const uint8_t* seed, size_t seedSize)
+ {
+ if (!seed)
+ {
+ oclog() <<"seed can not be null";
+ return OC_STACK_INVALID_PARAM;
+ }
+
+ OCStackResult result;
+ auto cLock = OCPlatform_impl::Instance().csdkLock().lock();
+
+ if (cLock)
+ {
+ std::lock_guard<std::recursive_mutex> lock(*cLock);
+ result = SetDeviceIdSeed(seed, seedSize);
+ }
+ else
+ {
+ oclog() <<"Mutex not found";
+ result = OC_STACK_ERROR;
+ }
+ return result;
+ }
#endif // __WITH_DTLS__ || __WITH_TLS__
void OCSecureResource::callbackWrapper(void* ctx, size_t nOfRes, OCProvisionResult_t *arr, bool hasError)
OCSecureResource device;
EXPECT_EQ(OC_STACK_INVALID_PARAM, device.provisionDirectPairing(nullptr, nullptr));
}
+#if defined(__WITH_DTLS__) || defined(__WITH_TLS__)
+ TEST(setDeviceIdSeed, NullParam)
+ {
+ EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSecure::setDeviceIdSeed(NULL, 0));
+ }
+
+ TEST(setDeviceIdSeed, InvalidParam)
+ {
+ uint8_t seed[1024] = {0};
+
+ EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSecure::setDeviceIdSeed(seed, 0));
+ EXPECT_EQ(OC_STACK_INVALID_PARAM, OCSecure::setDeviceIdSeed(seed, sizeof(seed)));
+ }
+
+ TEST(setDeviceIdSeed, ValidValue)
+ {
+ uint8_t seed[16] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
+ 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10};
+ EXPECT_EQ(OC_STACK_OK, OCSecure::setDeviceIdSeed(seed, sizeof(seed)));
+ }
+#endif // __WITH_DTLS__ || __WITH_TLS__
}