This is the sample program that can see the decode result of barcode data on Watson IoT.

Dependencies:   AsciiFont DisplayApp GR-PEACH_video LCD_shield_config LWIPBP3595Interface_STA_for_mbed-os USBDevice

Committer:
Osamu Nakamura
Date:
Thu Nov 10 20:23:55 2016 +0900
Revision:
1:67f8b5cfde75
Parent:
0:7d720671e6dc
Revised the initial value of /888/0/7700

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Osamu Nakamura 0:7d720671e6dc 1 /**
Osamu Nakamura 0:7d720671e6dc 2 * @file PassphraseAuthenticator.cpp
Osamu Nakamura 0:7d720671e6dc 3 * @brief mbed CoAP Endpoint Device Management Passphrase-based Authenticator class
Osamu Nakamura 0:7d720671e6dc 4 * @author Doug Anson
Osamu Nakamura 0:7d720671e6dc 5 * @version 1.0
Osamu Nakamura 0:7d720671e6dc 6 * @see
Osamu Nakamura 0:7d720671e6dc 7 *
Osamu Nakamura 0:7d720671e6dc 8 * Copyright (c) 2016
Osamu Nakamura 0:7d720671e6dc 9 *
Osamu Nakamura 0:7d720671e6dc 10 * Licensed under the Apache License, Version 2.0 (the "License");
Osamu Nakamura 0:7d720671e6dc 11 * you may not use this file except in compliance with the License.
Osamu Nakamura 0:7d720671e6dc 12 * You may obtain a copy of the License at
Osamu Nakamura 0:7d720671e6dc 13 *
Osamu Nakamura 0:7d720671e6dc 14 * http://www.apache.org/licenses/LICENSE-2.0
Osamu Nakamura 0:7d720671e6dc 15 *
Osamu Nakamura 0:7d720671e6dc 16 * Unless required by applicable law or agreed to in writing, software
Osamu Nakamura 0:7d720671e6dc 17 * distributed under the License is distributed on an "AS IS" BASIS,
Osamu Nakamura 0:7d720671e6dc 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Osamu Nakamura 0:7d720671e6dc 19 * See the License for the specific language governing permissions and
Osamu Nakamura 0:7d720671e6dc 20 * limitations under the License.
Osamu Nakamura 0:7d720671e6dc 21 */
Osamu Nakamura 0:7d720671e6dc 22
Osamu Nakamura 0:7d720671e6dc 23 // Class support
Osamu Nakamura 0:7d720671e6dc 24 #include "mbed-connector-interface/PassphraseAuthenticator.h"
Osamu Nakamura 0:7d720671e6dc 25
Osamu Nakamura 0:7d720671e6dc 26 // demarshalling support
Osamu Nakamura 0:7d720671e6dc 27 #include "mbed-client/m2mresource.h"
Osamu Nakamura 0:7d720671e6dc 28
Osamu Nakamura 0:7d720671e6dc 29 // constructor
Osamu Nakamura 0:7d720671e6dc 30 PassphraseAuthenticator::PassphraseAuthenticator(const Logger *logger,const void *passphrase) : Authenticator(logger,passphrase) {
Osamu Nakamura 0:7d720671e6dc 31 }
Osamu Nakamura 0:7d720671e6dc 32
Osamu Nakamura 0:7d720671e6dc 33 // copy constructor
Osamu Nakamura 0:7d720671e6dc 34 PassphraseAuthenticator::PassphraseAuthenticator(const PassphraseAuthenticator &authenticator) : Authenticator(authenticator) {
Osamu Nakamura 0:7d720671e6dc 35 }
Osamu Nakamura 0:7d720671e6dc 36
Osamu Nakamura 0:7d720671e6dc 37 // destructor
Osamu Nakamura 0:7d720671e6dc 38 PassphraseAuthenticator::~PassphraseAuthenticator() {
Osamu Nakamura 0:7d720671e6dc 39 }
Osamu Nakamura 0:7d720671e6dc 40
Osamu Nakamura 0:7d720671e6dc 41 // basic (trivial passphrase authentication)
Osamu Nakamura 0:7d720671e6dc 42 bool PassphraseAuthenticator::authenticate(void *challenge) {
Osamu Nakamura 0:7d720671e6dc 43 // use simple, trivial passphrase based comparison as the check...
Osamu Nakamura 0:7d720671e6dc 44 char *passphrase = (char *)this->m_secret;
Osamu Nakamura 0:7d720671e6dc 45 char *input_passphrase = NULL;
Osamu Nakamura 0:7d720671e6dc 46
Osamu Nakamura 0:7d720671e6dc 47 #if defined (HAS_EXECUTE_PARAMS)
Osamu Nakamura 0:7d720671e6dc 48 // ExecParam mbed-client: un-marshall the ExecuteParameter to get the simple string...
Osamu Nakamura 0:7d720671e6dc 49 M2MResource::M2MExecuteParameter* param = (M2MResource::M2MExecuteParameter*)challenge;
Osamu Nakamura 0:7d720671e6dc 50 if (param != NULL) {
Osamu Nakamura 0:7d720671e6dc 51 // use parameters to extract the passphrase
Osamu Nakamura 0:7d720671e6dc 52 String object_name = param->get_argument_object_name();
Osamu Nakamura 0:7d720671e6dc 53 // int instance_id = (int)param->get_argument_object_instance_id();
Osamu Nakamura 0:7d720671e6dc 54 String resource_name = param->get_argument_resource_name();
Osamu Nakamura 0:7d720671e6dc 55 string value = this->coapDataToString(param->get_argument_value(),param->get_argument_value_length());
Osamu Nakamura 0:7d720671e6dc 56 input_passphrase = (char *)value.c_str();
Osamu Nakamura 0:7d720671e6dc 57 }
Osamu Nakamura 0:7d720671e6dc 58 #else
Osamu Nakamura 0:7d720671e6dc 59 // Non-ExecParam mbed-client: use the parameter directly...
Osamu Nakamura 0:7d720671e6dc 60 input_passphrase = (char *)challenge;
Osamu Nakamura 0:7d720671e6dc 61 #endif
Osamu Nakamura 0:7d720671e6dc 62
Osamu Nakamura 0:7d720671e6dc 63 // DEBUG
Osamu Nakamura 0:7d720671e6dc 64 //this->m_logger->logging("Authenticator(passphrase): passphrase: [%s] challenge: [%s]",passphrase,input_passphrase);
Osamu Nakamura 0:7d720671e6dc 65
Osamu Nakamura 0:7d720671e6dc 66 // parameter checks...the compare passphrases and return the result
Osamu Nakamura 0:7d720671e6dc 67 if (passphrase != NULL && input_passphrase != NULL && strcmp(passphrase,input_passphrase) == 0) {
Osamu Nakamura 0:7d720671e6dc 68 // DEBUG
Osamu Nakamura 0:7d720671e6dc 69 this->m_logger->logging("Authenticator(passphrase): Passphrases MATCH. Authenticated.");
Osamu Nakamura 0:7d720671e6dc 70
Osamu Nakamura 0:7d720671e6dc 71 // passphrases match
Osamu Nakamura 0:7d720671e6dc 72 return true;
Osamu Nakamura 0:7d720671e6dc 73 }
Osamu Nakamura 0:7d720671e6dc 74
Osamu Nakamura 0:7d720671e6dc 75 // DEBUG
Osamu Nakamura 0:7d720671e6dc 76 this->m_logger->logging("Authenticator(passphrase): Passphrases do not match");
Osamu Nakamura 0:7d720671e6dc 77
Osamu Nakamura 0:7d720671e6dc 78 // authentication failure
Osamu Nakamura 0:7d720671e6dc 79 return false;
Osamu Nakamura 0:7d720671e6dc 80 }
Osamu Nakamura 0:7d720671e6dc 81
Osamu Nakamura 0:7d720671e6dc 82 // convenience method to get the URI from its buffer field...
Osamu Nakamura 0:7d720671e6dc 83 string PassphraseAuthenticator::coapDataToString(uint8_t *coap_data_ptr,int coap_data_ptr_length) {
Osamu Nakamura 0:7d720671e6dc 84 if (coap_data_ptr != NULL && coap_data_ptr_length > 0) {
Osamu Nakamura 0:7d720671e6dc 85 char buf[MAX_VALUE_BUFFER_LENGTH+1];
Osamu Nakamura 0:7d720671e6dc 86 memset(buf,0,MAX_VALUE_BUFFER_LENGTH+1);
Osamu Nakamura 0:7d720671e6dc 87 memcpy(buf,(char *)coap_data_ptr,coap_data_ptr_length);
Osamu Nakamura 0:7d720671e6dc 88 return string(buf);
Osamu Nakamura 0:7d720671e6dc 89 }
Osamu Nakamura 0:7d720671e6dc 90 return string("");
Osamu Nakamura 0:7d720671e6dc 91 }