/** * @auth_tok: (out) This function will allocate; callee must free * @auth_tok_sig: (out) Allocated memory this function fills in: (ECRYPTFS_SIG_SIZE_HEX + 1) * @fekek: (out) Allocated memory this function fills in: ECRYPTFS_MAX_KEY_BYTES * @salt: (in) salt: ECRYPTFS_SALT_SIZE * @passphrase: (in) passphrase: ECRYPTFS_MAX_PASSPHRASE_BYTES */ int ecryptfs_generate_passphrase_auth_tok(struct ecryptfs_auth_tok **auth_tok, char *auth_tok_sig, char *fekek, char *salt, char *passphrase) { int rc; *auth_tok = NULL; rc = generate_passphrase_sig(auth_tok_sig, fekek, salt, passphrase); if (rc) { syslog(LOG_ERR, "Error generating passphrase signature; " "rc = [%d]\n", rc); rc = (rc < 0) ? rc : rc * -1; goto out; } *auth_tok = malloc(sizeof(struct ecryptfs_auth_tok)); if (!*auth_tok) { syslog(LOG_ERR, "Unable to allocate memory for auth_tok\n"); rc = -ENOMEM; goto out; } rc = generate_payload(*auth_tok, auth_tok_sig, salt, fekek); if (rc) { syslog(LOG_ERR, "Error generating payload for auth tok key; " "rc = [%d]\n", rc); rc = (rc < 0) ? rc : rc * -1; goto out; } out: return rc; }
static void send_data() { int data_size = 0; static unsigned temperature; temperature = 21; clear_buffer(outputBuffer); clear_buffer(payload_buf); generate_payload(payload_buf,temperature); if(init_buffer(COAP_DATA_BUFF_SIZE)){ coap_packet_t* request =\ (coap_packet_t*)allocate_buffer(sizeof(coap_packet_t)); init_packet(request); coap_set_method(request, COAP_POST); request->tid = xact_id++; request->type = MESSAGE_TYPE_CON; coap_set_header_uri(request,service_uri); coap_set_option(request, Option_Type_Uri_Host, sizeof(char)*strlen(server_ip), (uint8_t*)server_ip); coap_set_option(request, Option_Type_Proxy_Uri, sizeof(char)*strlen(proxy_uri), (uint8_t*)proxy_uri); coap_set_payload(request,(uint8_t*)payload_buf, sizeof(char)*strlen(payload_buf)); data_size = serialize_packet(request, (uint8_t*)outputBuffer); PRINTF("Now sending request to base station ["); PRINTF(&client_conn->ripaddr); PRINTF("]:%u/%s\n",REMOTE_PORT,service_uri); uip_udp_packet_send(client_conn, outputBuffer, data_size); delete_buffer(); } }
/* TEST generate_payload * size of payload must be > 0 & <= DIM_MAX_PAYLOAD */ void generate_payload_test() { char *payload_t; // payload test int test = 0,size_t = 0; size_t = (rand() % ( DIM_MAX_PAYLOAD + 1 )) + 1; // dim between 1 & DIM_MAX payload_t = (char *) malloc(size_t); // allocating memory for size bytes generate_payload(payload_t, size_t); CU_ASSERT_EQUAL(size_t, (strlen(payload_t)+1)); if( (strlen(payload_t)) > 0 && ((strlen(payload_t)+1) <= DIM_MAX_PAYLOAD)) test = 1; CU_ASSERT(test); free(payload_t); }