CA linux/android sample modification for the secure message
authorhyuna0213.jo <hyuna0213.jo@samsung.com>
Fri, 26 Jun 2015 04:35:43 +0000 (13:35 +0900)
committerErich Keane <erich.keane@intel.com>
Mon, 29 Jun 2015 20:07:03 +0000 (20:07 +0000)
In spite of selecting a secure, CA sample send the normal message.
I modified the CA sample to send secure message

Change-Id: I7725a0033b91dbc5159f9f27ee8147f4a3bfb174
Signed-off-by: hyuna0213.jo <hyuna0213.jo@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/1425
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Erich Keane <erich.keane@intel.com>
resource/csdk/connectivity/samples/android/sample_service/jni/ResourceModel.c
resource/csdk/connectivity/samples/linux/sample_main.c

index 31b4d4c..6dfb520 100644 (file)
 #define OPTION_INFO_LENGTH 1024
 #define NETWORK_INFO_LENGTH 1024
 
-uint16_t g_localSecurePort = SECURE_DEFAULT_PORT;
+typedef struct
+{
+    char ipAddress[CA_IPADDR_SIZE];
+    uint16_t port;
+} addressSet_t;
 
 void request_handler(const CAEndpoint_t* object, const CARequestInfo_t* requestInfo);
 void response_handler(const CAEndpoint_t* object, const CAResponseInfo_t* responseInfo);
@@ -40,7 +44,9 @@ uint32_t get_secure_information(CAPayload_t payLoad);
 CAResult_t get_network_type(uint32_t selectedNetwork);
 void callback(char *subject, char *receivedData);
 CAResult_t get_remote_address(CATransportAdapter_t transportType, const char *address);
+void parsing_coap_uri(const char* uri, addressSet_t* address, CATransportFlags_t *flags);
 
+uint16_t g_localSecurePort = SECURE_DEFAULT_PORT;
 CATransportAdapter_t g_selectedNwType = CA_ADAPTER_IP;
 static CAToken_t g_lastRequestToken = NULL;
 static uint8_t g_lastRequestTokenLength = 0;
@@ -69,12 +75,6 @@ static uint8_t g_clientTokenLength = 0;
 static uint16_t g_clientMsgId = 0;
 static char *g_remoteAddress = NULL;
 
-typedef struct
-{
-    char ipAddress[CA_IPADDR_SIZE];
-    uint16_t port;
-} addressSet_t;
-
 // init
 JNIEXPORT void JNICALL
 Java_org_iotivity_ca_service_RMInterface_setNativeResponseListener(JNIEnv *env, jobject obj,
@@ -274,12 +274,13 @@ Java_org_iotivity_ca_service_RMInterface_RMSendRequest(JNIEnv *env, jobject obj,
     const char* strUri = (*env)->GetStringUTFChars(env, uri, NULL);
     LOGI("RMSendRequest - %s", strUri);
 
+    CATransportFlags_t flags;
     addressSet_t address = {};
-    parsing_coap_uri(strUri, &address);
+    parsing_coap_uri(strUri, &address, &flags);
 
     //create remote endpoint
     CAEndpoint_t* endpoint = NULL;
-    res = CACreateEndpoint(CA_DEFAULT_FLAGS, g_selectedNwType, (const char*)address.ipAddress,
+    res = CACreateEndpoint(flags, g_selectedNwType, (const char*)address.ipAddress,
                            address.port, &endpoint);
     if (CA_STATUS_OK != res)
     {
@@ -571,12 +572,13 @@ Java_org_iotivity_ca_service_RMInterface_RMSendNotification(JNIEnv *env, jobject
     const char* strUri = (*env)->GetStringUTFChars(env, uri, NULL);
     LOGI("RMSendNotification - %s", strUri);
 
+    CATransportFlags_t flags;
     addressSet_t address = {};
-    parsing_coap_uri(strUri, &address);
+    parsing_coap_uri(strUri, &address, &flags);
 
     //create remote endpoint
     CAEndpoint_t* endpoint = NULL;
-    if (CA_STATUS_OK != CACreateEndpoint(CA_DEFAULT_FLAGS, g_selectedNwType,
+    if (CA_STATUS_OK != CACreateEndpoint(flags, g_selectedNwType,
                                          (const char*)address.ipAddress,
                                          address.port, &endpoint))
     {
@@ -1290,7 +1292,7 @@ CAResult_t get_remote_address(CATransportAdapter_t transportType, const char *ad
 }
 
 
-void parsing_coap_uri(const char* uri, addressSet_t* address)
+void parsing_coap_uri(const char* uri, addressSet_t* address, CATransportFlags_t *flags)
 {
     if (NULL == uri || NULL == address)
     {
@@ -1305,11 +1307,13 @@ void parsing_coap_uri(const char* uri, addressSet_t* address)
     {
         LOGI("uri has '%s' prefix", COAPS_PREFIX);
         startIndex = COAPS_PREFIX_LEN;
+        *flags = CA_SECURE;
     }
     else if (strncmp(COAP_PREFIX, uri, COAP_PREFIX_LEN) == 0)
     {
         LOGI("uri has '%s' prefix", COAP_PREFIX);
         startIndex = COAP_PREFIX_LEN;
+        *flags = CA_DEFAULT_FLAGS;
     }
 
     // #2. copy uri for parse
index a070e04..3f0c299 100644 (file)
@@ -87,7 +87,7 @@ void send_response(const CAEndpoint_t *endpoint, const CAInfo_t *info);
 void get_resource_uri(char *URI, char *resourceURI, int length);
 int get_secure_information(CAPayload_t payLoad);
 int get_address_set(const char *pAddress, addressSet_t* outAddress);
-void parsing_coap_uri(const char* uri, addressSet_t* address);
+void parsing_coap_uri(const char* uri, addressSet_t* address, CATransportFlags_t *flags);
 CAHeaderOption_t* get_option_data(CAInfo_t* requestData);
 
 static CAToken_t g_last_request_token = NULL;
@@ -411,12 +411,13 @@ void send_request()
 
     // create remote endpoint
     CAEndpoint_t *endpoint = NULL;
+    CATransportFlags_t flags;
 
     printf("URI : %s\n", uri);
     addressSet_t address = {};
-    parsing_coap_uri(uri, &address);
+    parsing_coap_uri(uri, &address, &flags);
 
-    res = CACreateEndpoint(CA_DEFAULT_FLAGS, g_selected_nw_type,
+    res = CACreateEndpoint(flags, g_selected_nw_type,
                            (const char*)address.ipAddress, address.port, &endpoint);
     if (CA_STATUS_OK != res || !endpoint)
     {
@@ -702,12 +703,13 @@ void send_notification()
 
     int messageType = messageTypeBuf[0] - '0';
 
+    CATransportFlags_t flags;
     addressSet_t address = {};
-    parsing_coap_uri(uri, &address);
+    parsing_coap_uri(uri, &address, &flags);
 
     // create remote endpoint
     CAEndpoint_t *endpoint = NULL;
-    res = CACreateEndpoint(0, g_selected_nw_type, address.ipAddress, address.port, &endpoint);
+    res = CACreateEndpoint(flags, g_selected_nw_type, address.ipAddress, address.port, &endpoint);
     if (CA_STATUS_OK != res)
     {
         printf("Create remote endpoint error, error code: %d\n", res);
@@ -1394,7 +1396,7 @@ CAHeaderOption_t* get_option_data(CAInfo_t* requestData)
     return headerOpt;
 }
 
-void parsing_coap_uri(const char* uri, addressSet_t* address)
+void parsing_coap_uri(const char* uri, addressSet_t* address, CATransportFlags_t *flags)
 {
     if (NULL == uri)
     {
@@ -1409,11 +1411,13 @@ void parsing_coap_uri(const char* uri, addressSet_t* address)
     {
         printf("uri has '%s' prefix\n", COAPS_PREFIX);
         startIndex = COAPS_PREFIX_LEN;
+        *flags = CA_SECURE;
     }
     else if (strncmp(COAP_PREFIX, uri, COAP_PREFIX_LEN) == 0)
     {
         printf("uri has '%s' prefix\n", COAP_PREFIX);
         startIndex = COAP_PREFIX_LEN;
+        *flags = CA_DEFAULT_FLAGS;
     }
 
     // #2. copy uri for parse