#define IOTVT_SRM_DOXM_H
#include "octypes.h"
+#ifdef MULTIPLE_OWNER
+#include "cacommon.h"
+#endif //MULTIPLE_OWNER
#ifdef __cplusplus
extern "C" {
OCStackResult DoxmToCBORPayload(const OicSecDoxm_t * doxm, uint8_t **cborPayload,
size_t *cborSize, bool rwOnly);
+#if defined(__WITH_DTLS__) || defined (__WITH_TLS__)
+/**
+ * API to save the seed value to generate device UUID.
+ *
+ * @param seed buffer of seed value.
+ * @param seedSize byte length of seed
+ *
+ * @return ::OC_STACK_OK for Success, otherwise some error value.
+ */
+OCStackResult SetDoxmDeviceIDSeed(const uint8_t* seed, size_t seedSize);
+#endif
+
/**
* This method returns the SRM device ID for this device.
*
OCStackResult GetDoxmDevOwnerId(OicUuid_t *devownerid);
/**
+ * Gets the bool state of "isOwned" property on the doxm resource.
+ *
+ * @param isOwned a pointer to be assigned to isOwned property
+ * @return ::OC_STACK_OK if isOwned is assigned correctly, else ::OC_STACK_ERROR.
+ */
+OCStackResult GetDoxmIsOwned(bool *isOwned);
+
+/**
* Gets the OicUuid_t value for the rowneruuid of the doxm resource.
*
* @param rowneruuid a pointer to be assigned to the rowneruuid property
*/
OCStackResult GetDoxmRownerId(OicUuid_t *rowneruuid);
+#ifdef MULTIPLE_OWNER
+/**
+ * Compare the UUID to SubOwner.
+ *
+ * @param[in] uuid device UUID
+ *
+ * @return true if uuid exists in the SubOwner list of doxm, else false.
+ */
+bool IsSubOwner(const OicUuid_t* uuid);
+#endif //MULTIPLE_OWNER
+
/** This function deallocates the memory for OicSecDoxm_t .
*
* @param doxm is the pointer to @ref OicSecDoxm_t.
*/
void RestoreDoxmToInitState();
+#if defined(__WITH_DTLS__) && defined(MULTIPLE_OWNER)
+/**
+ * Callback function to handle MOT DTLS handshake result.
+ * @param[out] object remote device information.
+ * @param[out] errorInfo CA Error information.
+ */
+void MultipleOwnerDTLSHandshakeCB(const CAEndpoint_t *object,
+ const CAErrorInfo_t *errorInfo);
+#endif //__WITH_DTLS__ && MULTIPLE_OWNER
+
+/**
+ * Internal function to change doxm resource to Ready for Normal Operation.
+ *
+ * @param newROwner new owner
+ *
+ * @retval ::OC_STACK_OK for Success, otherwise some error value
+ */
+OCStackResult SetDoxmSelfOwnership(const OicUuid_t* newROwner);
+
+/**
+ * Function to set a MOT status
+ *
+ * @param enable whether the MOT is enabled. (true=enable, false=disable)
+ *
+ * @retval ::OC_STACK_OK for Success, otherwise some error value
+ */
+OCStackResult SetMOTStatus(bool enable);
+
+/**
+ * Function to remove the Sub Owner (include ACL/Cred)
+ *
+ * @param subOwner UUID of Sub Owner to be removed.
+ *
+ * @retVal ::OC_STACK_OK for success, otherwise some error value.
+ */
+OCStackResult RemoveSubOwner(const OicUuid_t* subOwner);
+
+/**
+ * Function to set a max number of sub owner.
+ *
+ * @param maxSubOwner Max number of sub owner.
+ *
+ * @retVal ::OC_STACK_OK for success, otherwise some error value.
+ */
+OCStackResult SetNumberOfSubOwner(size_t maxSubOwner);
+
+
#ifdef __cplusplus
}
#endif