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
mbedConnectorInterface/source/PassphraseAuthenticator.cpp@1:67f8b5cfde75, 2016-11-10 (annotated)
- 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?
User | Revision | Line number | New 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 | } |