X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fcsdk%2Fsecurity%2Finclude%2Finternal%2Fdoxmresource.h;h=d42dd73e9c0b5f416a336698e2c95ff8b317e13d;hb=7f00f942c39b7bc27c7eeecf213a239c3fe4173c;hp=237da64372f3bbd15deb77e0d23ddc762f42f2b5;hpb=9a1ed0334f1f063606d38503aab1512dce54eb7e;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/csdk/security/include/internal/doxmresource.h b/resource/csdk/security/include/internal/doxmresource.h index 237da64..d42dd73 100644 --- a/resource/csdk/security/include/internal/doxmresource.h +++ b/resource/csdk/security/include/internal/doxmresource.h @@ -22,6 +22,9 @@ #define IOTVT_SRM_DOXM_H #include "octypes.h" +#ifdef MULTIPLE_OWNER +#include "cacommon.h" +#endif //MULTIPLE_OWNER #ifdef __cplusplus extern "C" { @@ -30,67 +33,120 @@ extern "C" { /** * Initialize DOXM resource by loading data from persistent storage. * - * @retval OC_STACK_OK for Success, otherwise some error value + * @return ::OC_STACK_OK for Success, otherwise some error value. */ OCStackResult InitDoxmResource(); /** * Perform cleanup for DOXM resources. * - * @retval OC_STACK_OK for Success, otherwise some error value + * @return ::OC_STACK_OK for Success, otherwise some error value. */ OCStackResult DeInitDoxmResource(); /** * This method is used by SRM to retrieve DOXM resource data.. * - * @retval reference to @ref OicSecDoxm_t, binary format of Doxm resource data + * @return reference to @ref OicSecDoxm_t, binary format of Doxm resource data. */ const OicSecDoxm_t* GetDoxmResourceData(); /** - * This method converts JSON DOXM into binary DOXM. - * The JSON DOXM can be from persistent database or + * This method converts CBOR DOXM into binary DOXM. + * The CBOR DOXM can be from persistent database or * or received as PUT/POST request. * - * @param[in] jsonStr doxm data in json string. - * @return pointer to OicSecDoxm_t. + * @param cborPayload is a doxm data in cbor. + * @note Caller needs to invoke OCFree after done using the return pointer. + * @param doxm is the pointer to @ref OicSecDoxm_t. + * @param size of the cborPayload. In case value is 0, CBOR_SIZE value is assigned. * - * @note Caller needs to invoke OCFree after done - * using the return pointer + * @return ::OC_STACK_OK for Success, otherwise some error value. */ -OicSecDoxm_t * JSONToDoxmBin(const char * jsonStr); +OCStackResult CBORPayloadToDoxm(const uint8_t *cborPayload, size_t size, + OicSecDoxm_t **doxm); /** - * This method converts DOXM data into JSON format. + * This method converts DOXM data into CBOR format. * Caller needs to invoke 'free' when finished done using - * return string + * return string. * - * @param[in] doxm Pointer to OicSecDoxm_t. - * @return pointer to json string. + * @param doxm Pointer to @ref OicSecDoxm_t. + * @note Caller needs to invoke OCFree after done using the return pointer. + * @param cborPayload is the payload of the cbor. + * @param cborSize is the size of the cbor payload. Passed parameter should not be NULL. + * @param rwOnly indicates whether convertingpayload has all properties or read-write properties only. * - * @note Caller needs to invoke OCFree after done - * using the return pointer + * @return ::OC_STACK_OK for Success, otherwise some error value. */ -char * BinToDoxmJSON(const OicSecDoxm_t * doxm); +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. * - * @retval OC_STACK_OK for Success, otherwise some error value + * @return ::OC_STACK_OK for Success, otherwise some error value. */ OCStackResult GetDoxmDeviceID(OicUuid_t *deviceID); /** - * @brief Gets the OicUuid_t value for the owner of this device. + * This method changes the SRM device ID for this device. + * This api will update device Id iff device is in unowned state. + * @return ::OC_STACK_OK for Success, otherwise some error value. + */ +OCStackResult SetDoxmDeviceID(const OicUuid_t *deviceID); + + +/** + * Gets the OicUuid_t value for the owner of this device. * - * @return OC_STACK_OK if devOwner is a valid UUID, otherwise OC_STACK_ERROR. + * @param devownerid a pointer to be assigned to the devownerid property + * @return ::OC_STACK_OK if devownerid is assigned correctly, else ::OC_STACK_ERROR. */ -OCStackResult GetDoxmDevOwnerId(OicUuid_t *devOwner); +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 + * @return ::OC_STACK_OK if rowneruuid is assigned correctly, else ::OC_STACK_ERROR. + */ +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[in] doxm Pointer to OicSecDoxm_t. + * @param doxm is the pointer to @ref OicSecDoxm_t. */ void DeleteDoxmBinData(OicSecDoxm_t* doxm); @@ -100,10 +156,55 @@ void DeleteDoxmBinData(OicSecDoxm_t* doxm); */ 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 #endif //IOTVT_SRM_DOXMR_H - -