From e04e162b63dca89648eef4639312366fd4f5c395 Mon Sep 17 00:00:00 2001 From: "hyuna0213.jo" Date: Fri, 26 Jun 2015 13:35:43 +0900 Subject: [PATCH] CA linux/android sample modification for the secure message 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 Reviewed-on: https://gerrit.iotivity.org/gerrit/1425 Tested-by: jenkins-iotivity Reviewed-by: Erich Keane --- .../android/sample_service/jni/ResourceModel.c | 28 ++++++++++++---------- .../csdk/connectivity/samples/linux/sample_main.c | 16 ++++++++----- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/resource/csdk/connectivity/samples/android/sample_service/jni/ResourceModel.c b/resource/csdk/connectivity/samples/android/sample_service/jni/ResourceModel.c index 31b4d4c..6dfb520 100644 --- a/resource/csdk/connectivity/samples/android/sample_service/jni/ResourceModel.c +++ b/resource/csdk/connectivity/samples/android/sample_service/jni/ResourceModel.c @@ -30,7 +30,11 @@ #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 diff --git a/resource/csdk/connectivity/samples/linux/sample_main.c b/resource/csdk/connectivity/samples/linux/sample_main.c index a070e04..3f0c299 100644 --- a/resource/csdk/connectivity/samples/linux/sample_main.c +++ b/resource/csdk/connectivity/samples/linux/sample_main.c @@ -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 -- 2.7.4