Merge tizen_5.0 codes into tizen_4.0
[platform/upstream/iotivity.git] / resource / csdk / security / provisioning / sample / provisioningclient.c
index bb65ad5..301a625 100644 (file)
 #include "srmutility.h"
 #include "pmtypes.h"
 #include "oxmverifycommon.h"
+#include "oxmrawpublickey.h"
 #include "pkix_interface.h"
 #include "hw_emul/hw_interface.h"
 #include "mbedtls/x509_crt.h"
+#include "secureresourceprovider.h"
 
 #ifdef __cplusplus
 extern "C"
@@ -257,7 +259,7 @@ static void removeDeviceCB(void* ctx, int nOfRes, OCProvisionResult_t* arr, bool
     g_doneCB = true;
 }
 
-static void resetDeviceCB(void* ctx, int nOfRes, OCProvisionResult_t* arr, bool hasError)
+static void resetDeviceCB(void* ctx)
 {
     OC_UNUSED(ctx);
     OIC_LOG_V(INFO, TAG, "Reset Device SUCCEEDED");
@@ -312,6 +314,25 @@ static void inputPinCB(char* pin, size_t len)
     }
 }
 
+static char rpk[32] = {
+    0xB2, 0xA2, 0x0D, 0xC0, 0xCB, 0x3C, 0xA0, 0x27,
+    0x45, 0x00, 0x73, 0xBD, 0x02, 0xF5, 0x84, 0x4B,
+    0x0C, 0x1C, 0xD6, 0x6A, 0xD3, 0x9E, 0x3F, 0x64,
+    0x95, 0x6B, 0xB8, 0xCA, 0x58, 0xBC, 0xBE, 0xBE
+};
+
+static void InputRPKMasterKeyCB(char **rpkMasterKey, size_t *rpkMasterKeyLen)
+{
+    if(!rpkMasterKey || !rpkMasterKeyLen)
+    {
+        OIC_LOG(ERROR, TAG, "InputRPKMasterKeyCB invalid parameters");
+        return;
+    }
+
+    *rpkMasterKey = rpk;
+    *rpkMasterKeyLen = 32;
+}
+
 // function(s) for provisioning client using C-level provisioning API
 static int initProvisionClient(void)
 {
@@ -357,6 +378,7 @@ static int initProvisionClient(void)
     }
 
     SetInputPinCB(inputPinCB);
+    SetRPKMasterKeyCB(InputRPKMasterKeyCB);
 
     return 0;
 }
@@ -1281,6 +1303,11 @@ OCStackResult notifyInputStateCB(void * ctx)
     return OC_STACK_OK;
 }
 
+OicSecOxm_t selectOTMcb(const OicSecOxm_t* otmList, const uint32_t len)
+{
+    return otmList[len-1];
+}
+
 #ifdef MULTIPLE_OWNER
 static int changeMultipleOwnershipTrnasferMode(void)
 {
@@ -1676,7 +1703,6 @@ static int resetDevice(void)
     printf("   Resetting Selected Owned Device..\n");
 
     OCStackResult rst = SRPResetDevice(dev, resetDeviceCB);
-
     if (OC_STACK_OK != rst)
     {
         OIC_LOG_V(ERROR, TAG, "OCResetDevice API error: %d", rst);
@@ -2501,6 +2527,7 @@ int main()
     SetDisplayNumCB(NULL, displayNumCB);
     SetUserConfirmCB(NULL, confirmNumCB);
     SetInputStateCB(NULL, notifyInputStateCB);
+    SetSelectOTMCB(selectOTMcb);
 
     // set callback for checking peer certificate information
     OCSetPeerCertCallback(NULL, peerCertCallback);