Merge tizen_5.0 codes into tizen_4.0
[platform/upstream/iotivity.git] / resource / csdk / security / provisioning / include / ocprovisioningmanager.h
index e0f1422..483afa2 100644 (file)
 \r
 #include "octypes.h"\r
 #include "pmtypes.h"\r
+#include "casecurityinterface.h"\r
 #include "ownershiptransfermanager.h"\r
+#ifdef MULTIPLE_OWNER\r
+#include "securevirtualresourcetypes.h"\r
+#endif //MULTIPLE_OWNER\r
 \r
 #ifdef __cplusplus\r
 extern "C" {\r
@@ -39,21 +43,50 @@ extern "C" {
  *\r
  * @return OC_STACK_OK in case of success and other value otherwise.\r
  */\r
-OCStackResult OCInitPM(const chardbPath);\r
+OCStackResult OCInitPM(const char *dbPath);\r
 \r
 /**\r
- * The function is responsible for discovery of owned/unowned device is specified endpoint.\r
- * It will return when found one or more device even though timeout is not exceeded\r
+ * API to termiante the provisioning manager\r
+ */\r
+void OCTerminatePM();\r
+\r
+/**\r
+ * API to cleanup PDM in case of timeout.\r
+ * It will remove the PDM_DEVICE_INIT state devices from PDM.\r
+ *\r
+ * @return OC_STACK_OK in case of success and other value otherwise.\r
+ */\r
+OCStackResult OCPDMCleanupForTimeout();\r
+\r
+/**\r
+ * The function is responsible for discovery of owned/unowned device is specified endpoint/deviceID.\r
+ * It will return the found device even though timeout is not exceeded.\r
  *\r
  * @param[in] timeout Timeout in seconds, value till which function will listen to responses from\r
- *                    server before returning the list of devices.\r
- * @param[in] host               address of target endpoint\r
- * @param[in] connType           connectivity type of endpoint\r
- * @param[out] ppList            List of device.\r
+ *                    server before returning the device.\r
+ * @param[in] deviceID         deviceID of target device.\r
+ * @param[out] ppFoundDevice     OCProvisionDev_t of found device\r
  * @return OTM_SUCCESS in case of success and other value otherwise.\r
  */\r
-OCStackResult OCDiscoverSecureResource(unsigned short timeout, const char* host,\r
-                             OCConnectivityType connType, OCProvisionDev_t **ppList);\r
+OCStackResult OCDiscoverSingleDevice(unsigned short timeout, const OicUuid_t *deviceID,\r
+                                     OCProvisionDev_t **ppFoundDevice);\r
+\r
+/**\r
+ * The function is responsible for discovery of owned/unowned device is specified endpoint/MAC\r
+ * address.\r
+ * It will return the found device even though timeout is not exceeded.\r
+ *\r
+ * @param[in] timeout Timeout in seconds, value till which function will listen to responses from\r
+ *                    server before returning the device.\r
+ * @param[in] deviceID         deviceID of target device.\r
+ * @param[in] hostAddress       MAC address of target device.\r
+ * @param[in] connType       ConnectivityType for discovery.\r
+ * @param[out] ppFoundDevice     OCProvisionDev_t of found device.\r
+ * @return OTM_SUCCESS in case of success and other value otherwise.\r
+ */\r
+OCStackResult OCDiscoverSingleDeviceInUnicast(unsigned short timeout, const OicUuid_t *deviceID,\r
+        const char *hostAddress, OCConnectivityType connType,\r
+        OCProvisionDev_t **ppFoundDevice);\r
 \r
 /**\r
  * The function is responsible for discovery of device is current subnet. It will list\r
@@ -75,18 +108,86 @@ OCStackResult OCDiscoverUnownedDevices(unsigned short waittime, OCProvisionDev_t
  * @param[in] resultCallback Result callback function to be invoked when ownership transfer finished.\r
  * @return OC_STACK_OK in case of success and other value otherwise.\r
  */\r
-OCStackResult OCDoOwnershipTransfer(voidctx,\r
+OCStackResult OCDoOwnershipTransfer(void *ctx,\r
                                     OCProvisionDev_t *targetDevices,\r
                                     OCProvisionResultCB resultCallback);\r
 \r
 /**\r
+ * Do ownership transfer for un-owned device.\r
+ *\r
+ * @param[in] ctx Application context would be returned in result callback\r
+ * @param[in] targetDevices List of devices to perform ownership transfer.\r
+ * @param[in] resultCallback Result callback function to be invoked when ownership transfer finished.\r
+ * @param[in] method OTM\r
+ * @return OC_STACK_OK in case of success and other value otherwise.\r
+ */\r
+OCStackResult OCDoCustomOwnershipTransfer(void *ctx, \r
+                                    OCProvisionDev_t *selectedDevice,\r
+                                    OCProvisionResultCB resultCallback,\r
+                                    const OicSecOxm_t method);\r
+  \r
+/**\r
+ * API to set a allow status of OxM\r
+ *\r
+ * @param[in] oxm Owership transfer method (ref. OicSecOxm_t)\r
+ * @param[in] allowStatus allow status (true = allow, false = not allow)\r
+ *\r
+ * @return OC_STACK_OK in case of success and other value otherwise.\r
+ */\r
+OCStackResult OCSetOxmAllowStatus(const OicSecOxm_t oxm, const bool allowStatus);\r
+\r
+\r
+#ifdef MULTIPLE_OWNER\r
+/**\r
+ * API to perfrom multiple ownership transfer for MOT enabled device.\r
+ *\r
+ * @param[in] ctx Application context would be returned in result callback\r
+ * @param[in] targetDevices List of devices to perform ownership transfer.\r
+ * @param[in] resultCallback Result callback function to be invoked when ownership transfer finished.\r
+ * @return OC_STACK_OK in case of success and other value otherwise.\r
+ */\r
+OCStackResult OCDoMultipleOwnershipTransfer(void *ctx,\r
+        OCProvisionDev_t *targetDevices,\r
+        OCProvisionResultCB resultCallback);\r
+\r
+/**\r
+ * API to remove sub-owner from resource server\r
+ *\r
+ * @param[in] ctx Application context would be returned in result callback\r
+ * @param[in] targetDeviceInfo Selected target device.\r
+ * @param[in] subOwner sub-owner UUID to be removed\r
+ * @param[in] resultCallback callback provided by API user, callback will be invoked when\r
+ *            DELETE 'subowneruuid' request recieves a response from resource server.\r
+ * @return OC_STACK_OK in case of success and other value otherwise.\r
+ */\r
+OCStackResult OCRemoveSubOwner(void *ctx,\r
+                               const OCProvisionDev_t *targetDeviceInfo,\r
+                               const OicUuid_t *subOwner,\r
+                               OCProvisionResultCB resultCallback);\r
+\r
+/**\r
+ * API to remove all sub-owner from resource server\r
+ *\r
+ * @param[in] ctx Application context would be returned in result callback\r
+ * @param[in] targetDeviceInfo Selected target device.\r
+ * @param[in] resultCallback callback provided by API user, callback will be invoked when\r
+ *            DELETE 'subowneruuid' request recieves a response from resource server.\r
+ * @return OC_STACK_OK in case of success and other value otherwise.\r
+ */\r
+OCStackResult OCRemoveAllSubOwner(void *ctx,\r
+                                  const OCProvisionDev_t *targetDeviceInfo,\r
+                                  OCProvisionResultCB resultCallback);\r
+\r
+#endif //MULTIPLE_OWNER\r
+\r
+/**\r
  * API to register for particular OxM.\r
  *\r
  * @param[in] Ownership transfer method.\r
  * @param[in] Implementation of callback functions for owership transfer.\r
  * @return OC_STACK_OK in case of success and other value otherwise.\r
  */\r
-OCStackResult OCSetOwnerTransferCallbackData(OicSecOxm_t oxm, OTMCallbackData_tcallbackData);\r
+OCStackResult OCSetOwnerTransferCallbackData(OicSecOxm_t oxm, OTMCallbackData_t *callbackData);\r
 \r
 /**\r
  * The function is responsible for discovery of owned device is current subnet. It will list\r
@@ -99,6 +200,29 @@ OCStackResult OCSetOwnerTransferCallbackData(OicSecOxm_t oxm, OTMCallbackData_t*
  */\r
 OCStackResult OCDiscoverOwnedDevices(unsigned short timeout, OCProvisionDev_t **ppList);\r
 \r
+#ifdef MULTIPLE_OWNER\r
+/**\r
+ * The function is responsible for discovery of MOT enabled device is current subnet.\r
+ *\r
+ * @param[in] timeout Timeout in seconds, value till which function will listen to responses from\r
+ *                    server before returning the list of devices.\r
+ * @param[out] ppList List of MOT enabled devices.\r
+ * @return OC_STACK_OK in case of success and other value otherwise.\r
+ */\r
+OCStackResult OCDiscoverMultipleOwnerEnabledDevices(unsigned short timeout,\r
+        OCProvisionDev_t **ppList);\r
+\r
+/**\r
+ * The function is responsible for discovery of Multiple Owned device is current subnet.\r
+ *\r
+ * @param[in] timeout Timeout in seconds, value till which function will listen to responses from\r
+ *                    server before returning the list of devices.\r
+ * @param[out] ppList List of Multiple Owned devices.\r
+ * @return OC_STACK_OK in case of success and other value otherwise.\r
+ */\r
+OCStackResult OCDiscoverMultipleOwnedDevices(unsigned short timeout, OCProvisionDev_t **ppList);\r
+#endif //MULTIPLE_OWNER\r
+\r
 /**\r
  * API to provision credentials between two devices and ACLs for the devices who act as a server.\r
  *\r
@@ -112,10 +236,10 @@ OCStackResult OCDiscoverOwnedDevices(unsigned short timeout, OCProvisionDev_t **
  *            provisioning request recieves a response from first resource server.\r
  * @return OC_STACK_OK in case of success and other value otherwise.\r
  */\r
-OCStackResult OCProvisionPairwiseDevices(voidctx, OicSecCredType_t type, size_t keySize,\r
-                                         const OCProvisionDev_t *pDev1, OicSecAcl_t *pDev1Acl,\r
-                                         const OCProvisionDev_t *pDev2, OicSecAcl_t *pDev2Acl,\r
-                                         OCProvisionResultCB resultCallback);\r
+OCStackResult OCProvisionPairwiseDevices(void *ctx, OicSecCredType_t type, size_t keySize,\r
+        const OCProvisionDev_t *pDev1, OicSecAcl_t *pDev1Acl,\r
+        const OCProvisionDev_t *pDev2, OicSecAcl_t *pDev2Acl,\r
+        OCProvisionResultCB resultCallback);\r
 \r
 /**\r
  * API to send ACL information to device.\r
@@ -127,10 +251,19 @@ OCStackResult OCProvisionPairwiseDevices(void* ctx, OicSecCredType_t type, size_
               request recieves a response from resource server.\r
  * @return OC_STACK_OK in case of success and other value otherwise.\r
  */\r
-OCStackResult OCProvisionACL(void *ctx, const OCProvisionDev_t *selectedDeviceInfo, OicSecAcl_t *acl,\r
+OCStackResult OCProvisionACL(void *ctx, const OCProvisionDev_t *selectedDeviceInfo,\r
+                             OicSecAcl_t *acl,\r
                              OCProvisionResultCB resultCallback);\r
 \r
 /**\r
+ * function to save ACL which has several ACE into Acl of SVR.\r
+ *\r
+ * @param acl ACL to be saved in Acl of SVR.\r
+ * @return  OC_STACK_OK in case of success and other value otherwise.\r
+ */\r
+OCStackResult OCSaveACL(const OicSecAcl_t *acl);\r
+\r
+/**\r
  * this function requests CRED information to resource.\r
  *\r
  * @param[in] ctx Application context would be returned in result callback.\r
@@ -139,8 +272,8 @@ OCStackResult OCProvisionACL(void *ctx, const OCProvisionDev_t *selectedDeviceIn
               request recieves a response from resource server.\r
  * @return  OC_STACK_OK in case of success and other value otherwise.\r
  */\r
-OCStackResult OCGetCredResource(voidctx, const OCProvisionDev_t *selectedDeviceInfo,\r
-                             OCProvisionResultCB resultCallback);\r
+OCStackResult OCGetCredResource(void *ctx, const OCProvisionDev_t *selectedDeviceInfo,\r
+                                OCProvisionResultCB resultCallback);\r
 \r
 /**\r
  * this function requests ACL information to resource.\r
@@ -151,8 +284,8 @@ OCStackResult OCGetCredResource(void* ctx, const OCProvisionDev_t *selectedDevic
               request recieves a response from resource server.\r
  * @return  OC_STACK_OK in case of success and other value otherwise.\r
  */\r
-OCStackResult OCGetACLResource(voidctx, const OCProvisionDev_t *selectedDeviceInfo,\r
-                             OCProvisionResultCB resultCallback);\r
+OCStackResult OCGetACLResource(void *ctx, const OCProvisionDev_t *selectedDeviceInfo,\r
+                               OCProvisionResultCB resultCallback);\r
 \r
 /**\r
  * this function sends Direct-Pairing Configuration to a device.\r
@@ -164,8 +297,9 @@ OCStackResult OCGetACLResource(void* ctx, const OCProvisionDev_t *selectedDevice
               request recieves a response from resource server.\r
  * @return  OC_STACK_OK in case of success and other value otherwise.\r
  */\r
-OCStackResult OCProvisionDirectPairing(void* ctx, const OCProvisionDev_t *selectedDeviceInfo, OicSecPconf_t *pconf,\r
-                             OCProvisionResultCB resultCallback);\r
+OCStackResult OCProvisionDirectPairing(void *ctx, const OCProvisionDev_t *selectedDeviceInfo,\r
+                                       OicSecPconf_t *pconf,\r
+                                       OCProvisionResultCB resultCallback);\r
 \r
 /**\r
  * API to provision credential to devices.\r
@@ -179,11 +313,69 @@ OCStackResult OCProvisionDirectPairing(void* ctx, const OCProvisionDev_t *select
  * @return OC_STACK_OK in case of success and other value otherwise.\r
  */\r
 OCStackResult OCProvisionCredentials(void *ctx, OicSecCredType_t type, size_t keySize,\r
-                                      const OCProvisionDev_t *pDev1,\r
-                                      const OCProvisionDev_t *pDev2,\r
+                                     const OCProvisionDev_t *pDev1,\r
+                                     const OCProvisionDev_t *pDev2,\r
+                                     OCProvisionResultCB resultCallback);\r
+\r
+#ifdef MULTIPLE_OWNER\r
+/**\r
+ * API to provision preconfigured PIN to device(NOT LIST).\r
+ * If device does not support the Preconfigured PIN OxM,\r
+ * OCProvisionPreconfigPin API will update the device's Doxm\r
+ * and then try preconfigured PIN provisioning once again.\r
+ *\r
+ * @param[in] ctx Application context would be returned in result callback.\r
+ * @param[in] targetDeviceInfo Selected target device.\r
+ * @param[in] preconfigPin string of preconfigured PIN.\r
+ * @param[in] preconfigPinLen string length of 'preconfigPin'.\r
+ * @param[in] resultCallback callback provided by API user, callback will be called when\r
+ *            provisioning request recieves a response from first resource server.\r
+ * @return OC_STACK_OK in case of success and other value otherwise.\r
+ */\r
+OCStackResult OCProvisionPreconfigPin(void *ctx,\r
+                                      OCProvisionDev_t *targetDeviceInfo,\r
+                                      const char *preconfigPin,\r
+                                      size_t preconfigPinLen,\r
                                       OCProvisionResultCB resultCallback);\r
 \r
 /**\r
+ * API to add preconfigured PIN to local SVR DB.\r
+ *\r
+ * @param[in] targetDeviceInfo Selected target device.\r
+ * @param[in] preconfigPin Preconfig PIN which is used while multiple owner authentication\r
+ * @param[in] preconfigPinLen Byte length of preconfigPin\r
+ * @return OC_STACK_OK in case of success and other value otherwise.\r
+ */\r
+OCStackResult OCAddPreconfigPin(const OCProvisionDev_t *targetDeviceInfo,\r
+                                const char *preconfigPin,\r
+                                size_t preconfigPinLen);\r
+\r
+/**\r
+ * API to update 'doxm.mom' to resource server.\r
+ *\r
+ * @param[in] targetDeviceInfo Selected target device.\r
+ * @param[in] momType Mode of multiple ownership transfer (ref. oic.sec.mom)\r
+ * @param[in] resultCallback callback provided by API user, callback will be called when\r
+ *            POST 'mom' request recieves a response from resource server.\r
+ * @return OC_STACK_OK in case of success and other value otherwise.\r
+ */\r
+OCStackResult OCChangeMOTMode(void *ctx, const OCProvisionDev_t *targetDeviceInfo,\r
+                              const OicSecMomType_t momType, OCProvisionResultCB resultCallback);\r
+\r
+/**\r
+ * API to update 'doxm.oxmsel' to resource server.\r
+ *\r
+ * @param[in] targetDeviceInfo Selected target device.\r
+ * @param[in] oxmSelValue Method of multiple ownership transfer (ref. oic.sec.oxm)\r
+ * @param[in] resultCallback callback provided by API user, callback will be called when\r
+ *            POST 'oxmsel' request recieves a response from resource server.\r
+ * @return OC_STACK_OK in case of success and other value otherwise.\r
+ */\r
+OCStackResult OCSelectMOTMethod(void *ctx, const OCProvisionDev_t *targetDeviceInfo,\r
+                                const OicSecOxm_t oxmSelValue, OCProvisionResultCB resultCallback);\r
+#endif //MULTIPLE_OWNER\r
+\r
+/**\r
  * Function to unlink devices.\r
  * This function will remove the credential & relasionship between the two devices.\r
  *\r
@@ -194,9 +386,9 @@ OCStackResult OCProvisionCredentials(void *ctx, OicSecCredType_t type, size_t ke
  *            device unlink is finished.\r
  * @return OC_STACK_OK in case of success and other value otherwise.\r
  */\r
-OCStackResult OCUnlinkDevices(voidctx,\r
-                              const OCProvisionDev_tpTargetDev1,\r
-                              const OCProvisionDev_tpTargetDev2,\r
+OCStackResult OCUnlinkDevices(void *ctx,\r
+                              const OCProvisionDev_t *pTargetDev1,\r
+                              const OCProvisionDev_t *pTargetDev2,\r
                               OCProvisionResultCB resultCallback);\r
 \r
 /**\r
@@ -212,9 +404,9 @@ OCStackResult OCUnlinkDevices(void* ctx,
  *         if OC_STACK_OK is returned, the caller of this API should wait for callback.\r
  *         OC_STACK_CONTINUE means operation is success but no need to wait for callback.\r
  */\r
-OCStackResult OCRemoveDevice(voidctx,\r
+OCStackResult OCRemoveDevice(void *ctx,\r
                              unsigned short waitTimeForOwnedDeviceDiscovery,\r
-                             const OCProvisionDev_tpTargetDev,\r
+                             const OCProvisionDev_t *pTargetDev,\r
                              OCProvisionResultCB resultCallback);\r
 \r
 /*\r
@@ -228,9 +420,9 @@ OCStackResult OCRemoveDevice(void* ctx,
 *            credential revocation is finished.\r
  * @return  OC_STACK_OK in case of success and other value otherwise.\r
 */\r
-OCStackResult OCRemoveDeviceWithUuid(voidctx,\r
+OCStackResult OCRemoveDeviceWithUuid(void *ctx,\r
                                      unsigned short waitTimeForOwnedDeviceDiscovery,\r
-                                     const OicUuid_tpTargetUuid,\r
+                                     const OicUuid_t *pTargetUuid,\r
                                      OCProvisionResultCB resultCallback);\r
 \r
 /*\r
@@ -244,9 +436,24 @@ OCStackResult OCRemoveDeviceWithUuid(void* ctx,
  *            credential revocation is finished.\r
  * @return  OC_STACK_OK in case of success and other value otherwise.\r
  */\r
-OCStackResult OCResetDevice(void* ctx, unsigned short waitTimeForOwnedDeviceDiscovery,\r
-                            const OCProvisionDev_t* pTargetDev,\r
-                            OCProvisionResultCB resultCallback);\r
+OCStackResult OCResetDevice(void *ctx, unsigned short waitTimeForOwnedDeviceDiscovery,\r
+                            const OCProvisionDev_t *pTargetDev,\r
+                            OCProvisionResultCB resultCallback,\r
+                            OCClientContextDeleter deleteCallback);\r
+\r
+/**\r
+ * This function resets SVR DB to its factory setting.\r
+ *\r
+ *@return OC_STACK_OK in case of successful reset and other value otherwise.\r
+ */\r
+OCStackResult OCResetSVRDB(void);\r
+\r
+/**\r
+ * This function configures SVR DB as self-ownership.\r
+ *\r
+ *@return OC_STACK_OK in case of successful configue and other value otherwise.\r
+ */\r
+OCStackResult OCConfigSelfOwnership(void);\r
 \r
 /**\r
  * API to get status of all the devices in current subnet. The status include endpoint information\r
@@ -266,8 +473,8 @@ OCStackResult OCResetDevice(void* ctx, unsigned short waitTimeForOwnedDeviceDisc
  * @return OC_STACK_OK in case of success and other value otherwise.\r
  */\r
 OCStackResult OCGetDevInfoFromNetwork(unsigned short waittime,\r
-                                       OCProvisionDev_t** pOwnedDevList,\r
-                                       OCProvisionDev_t** pUnownedDevList);\r
+                                      OCProvisionDev_t **pOwnedDevList,\r
+                                      OCProvisionDev_t **pUnownedDevList);\r
 /**\r
  * This method is used to get linked devices' IDs.\r
  *\r
@@ -276,9 +483,9 @@ OCStackResult OCGetDevInfoFromNetwork(unsigned short waittime,
  * @param[out] numOfDevices total number of linked devices.\r
  * @return OC_STACK_OK in case of success and other value otherwise.\r
  */\r
-OCStackResult OCGetLinkedStatus(const OicUuid_tuuidOfDevice,\r
-                                  OCUuidList_t** uuidList,\r
-                                  size_t* numOfDevices);\r
+OCStackResult OCGetLinkedStatus(const OicUuid_t *uuidOfDevice,\r
+                                OCUuidList_t **uuidList,\r
+                                size_t *numOfDevices);\r
 \r
 /**\r
  * API to delete memory allocated to linked list created by OCDiscover_XXX_Devices API.\r
@@ -292,36 +499,23 @@ void OCDeleteDiscoveredDevices(OCProvisionDev_t *pList);
  *\r
  * @param[in] pList Pointer to OicUuid_t list which should be deleted.\r
  */\r
-void OCDeleteUuidList(OCUuidList_tpList);\r
+void OCDeleteUuidList(OCUuidList_t *pList);\r
 \r
 /**\r
  * This function deletes ACL data.\r
  *\r
  * @param pAcl Pointer to OicSecAcl_t structure.\r
  */\r
-void OCDeleteACLList(OicSecAcl_tpAcl);\r
+void OCDeleteACLList(OicSecAcl_t *pAcl);\r
 \r
 /**\r
  * This function deletes PDACL data.\r
  *\r
  * @param pPdAcl Pointer to OicSecPdAcl_t structure.\r
  */\r
-void OCDeletePdAclList(OicSecPdAcl_t* pPdAcl);\r
-\r
-#if defined(__WITH_X509__) || defined(__WITH_TLS__)\r
-/**\r
- * this function sends CRL information to resource.\r
- *\r
- * @param[in] ctx Application context would be returned in result callback.\r
- * @param[in] selectedDeviceInfo Selected target device.\r
- * @param[in] crl CRL to provision.\r
- * @param[in] resultCallback callback provided by API user, callback will be called when provisioning\r
-              request recieves a response from resource server.\r
- * @return  OC_STACK_OK in case of success and other value otherwise.\r
- */\r
-OCStackResult OCProvisionCRL(void* ctx, const OCProvisionDev_t *selectedDeviceInfo, OicSecCrl_t *crl,\r
-                             OCProvisionResultCB resultCallback);\r
+void OCDeletePdAclList(OicSecPdAcl_t *pPdAcl);\r
 \r
+#if defined(__WITH_DTLS__) || defined(__WITH_TLS__)\r
 /**\r
  * function to provision Trust certificate chain to devices.\r
  *\r
@@ -334,8 +528,8 @@ OCStackResult OCProvisionCRL(void* ctx, const OCProvisionDev_t *selectedDeviceIn
  * @return  OC_STACK_OK in case of success and other value otherwise.\r
  */\r
 OCStackResult OCProvisionTrustCertChain(void *ctx, OicSecCredType_t type, uint16_t credId,\r
-                                      const OCProvisionDev_t *selectedDeviceInfo,\r
-                                      OCProvisionResultCB resultCallback);\r
+                                        const OCProvisionDev_t *selectedDeviceInfo,\r
+                                        OCProvisionResultCB resultCallback);\r
 /**\r
  * function to save Trust certificate chain into Cred of SVR.\r
  *\r
@@ -346,9 +540,59 @@ OCStackResult OCProvisionTrustCertChain(void *ctx, OicSecCredType_t type, uint16
  * @return  OC_STACK_OK in case of success and other value otherwise.\r
  */\r
 OCStackResult OCSaveTrustCertChain(uint8_t *trustCertChain, size_t chainSize,\r
-                                        OicEncodingType_t encodingType, uint16_t *credId);\r
+                                   OicEncodingType_t encodingType, uint16_t *credId);\r
+/**\r
+ * function to register callback, for getting notification for TrustCertChain change.\r
+ *\r
+ * @param[in] TrustCertChainChangeCB notifier callback function\r
+ * @return OC_STACK_OK in case of success and other value otherwise.\r
+ */\r
+OCStackResult OCRegisterTrustCertChainNotifier(void *cb, TrustCertChainChangeCB CB);\r
+\r
+/**\r
+ * function to de-register TrustCertChain notification callback.\r
+ */\r
+void OCRemoveTrustCertChainNotifier(void);\r
+\r
+/*\r
+ * Function to read Trust certificate chain from SVR.\r
+ * Caller must free when done using the returned trust certificate\r
+ * @param[in] credId CredId of trust certificate chain in SVR.\r
+ * @param[out] trustCertChain Trust certificate chain.\r
+ * @param[out] chainSize Size of trust certificate chain\r
+ * @return  OC_STACK_OK in case of success and other value otherwise.\r
+ */\r
+OCStackResult OCReadTrustCertChain(uint16_t credId, uint8_t **trustCertChain,\r
+                                   size_t *chainSize);\r
+\r
+/**\r
+ * Function to select appropriate security provisioning method.\r
+ *\r
+ * @param[in] supportedMethods   Array of supported methods\r
+ * @param[in] numberOfMethods   number of supported methods\r
+ * @param[out]  selectedMethod         Selected methods\r
+ * @param[in] ownerType type of owner device (SUPER_OWNER or SUB_OWNER)\r
+ * @return  OC_STACK_OK on success\r
+ */\r
+OCStackResult OCSelectOwnershipTransferMethod(const OicSecOxm_t *supportedMethods,\r
+        size_t numberOfMethods, OicSecOxm_t *selectedMethod, OwnerType_t ownerType);\r
+\r
+/**\r
+ * This function sets the callback to utilize peer certificate information\r
+ */\r
+OCStackResult OCSetPeerCertCallback(void *ctx, PeerCertCallback peerCertCallback);\r
+\r
+/*\r
+ * Set selecting OTM callback.\r
+ */\r
+void SetSelectOTMCB(OTMSelectMethodCallback selectOTMcb);\r
+\r
+/*\r
+ * Unset selecting OTM callback.\r
+ */\r
+void UnsetSelectOTMCB();\r
 \r
-#endif // __WITH_X509__ || __WITH_TLS__\r
+#endif // __WITH_DTLS__ || __WITH_TLS__\r
 \r
 \r
 #ifdef __cplusplus\r