Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbedConnectorInterfaceWithDM by
PassphraseAuthenticator.cpp
00001 /** 00002 * @file PassphraseAuthenticator.cpp 00003 * @brief mbed CoAP Endpoint Device Management Passphrase-based Authenticator class 00004 * @author Doug Anson 00005 * @version 1.0 00006 * @see 00007 * 00008 * Copyright (c) 2016 00009 * 00010 * Licensed under the Apache License, Version 2.0 (the "License"); 00011 * you may not use this file except in compliance with the License. 00012 * You may obtain a copy of the License at 00013 * 00014 * http://www.apache.org/licenses/LICENSE-2.0 00015 * 00016 * Unless required by applicable law or agreed to in writing, software 00017 * distributed under the License is distributed on an "AS IS" BASIS, 00018 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00019 * See the License for the specific language governing permissions and 00020 * limitations under the License. 00021 */ 00022 00023 // Class support 00024 #include "mbed-connector-interface/PassphraseAuthenticator.h" 00025 00026 // demarshalling support 00027 #include "mbed-client/m2mresource.h" 00028 00029 // constructor 00030 PassphraseAuthenticator::PassphraseAuthenticator(const Logger *logger,const void *passphrase) : Authenticator(logger,passphrase) { 00031 } 00032 00033 // copy constructor 00034 PassphraseAuthenticator::PassphraseAuthenticator(const PassphraseAuthenticator &authenticator) : Authenticator(authenticator) { 00035 } 00036 00037 // destructor 00038 PassphraseAuthenticator::~PassphraseAuthenticator() { 00039 } 00040 00041 // basic (trivial passphrase authentication) 00042 bool PassphraseAuthenticator::authenticate(void *challenge) { 00043 // use simple, trivial passphrase based comparison as the check... 00044 char *passphrase = (char *)this->m_secret; 00045 char *input_passphrase = NULL; 00046 00047 #if defined (HAS_EXECUTE_PARAMS) 00048 // ExecParam mbed-client: un-marshall the ExecuteParameter to get the simple string... 00049 M2MResource::M2MExecuteParameter* param = (M2MResource::M2MExecuteParameter*)challenge; 00050 if (param != NULL) { 00051 // use parameters to extract the passphrase 00052 String object_name = param->get_argument_object_name(); 00053 // int instance_id = (int)param->get_argument_object_instance_id(); 00054 String resource_name = param->get_argument_resource_name(); 00055 string value = this->coapDataToString(param->get_argument_value(),param->get_argument_value_length()); 00056 input_passphrase = (char *)value.c_str(); 00057 } 00058 #else 00059 // Non-ExecParam mbed-client: use the parameter directly... 00060 input_passphrase = (char *)challenge; 00061 #endif 00062 00063 // DEBUG 00064 //this->m_logger->log("Authenticator(passphrase): passphrase: [%s] challenge: [%s]",passphrase,input_passphrase); 00065 00066 // parameter checks...the compare passphrases and return the result 00067 if (passphrase != NULL && input_passphrase != NULL && strcmp(passphrase,input_passphrase) == 0) { 00068 // DEBUG 00069 this->m_logger->log("Authenticator(passphrase): Passphrases MATCH. Authenticated."); 00070 00071 // passphrases match 00072 return true; 00073 } 00074 00075 // DEBUG 00076 this->m_logger->log("Authenticator(passphrase): Passphrases do not match"); 00077 00078 // authentication failure 00079 return false; 00080 } 00081 00082 // convenience method to get the URI from its buffer field... 00083 string PassphraseAuthenticator::coapDataToString(uint8_t *coap_data_ptr,int coap_data_ptr_length) { 00084 if (coap_data_ptr != NULL && coap_data_ptr_length > 0) { 00085 char buf[MAX_VALUE_BUFFER_LENGTH+1]; 00086 memset(buf,0,MAX_VALUE_BUFFER_LENGTH+1); 00087 memcpy(buf,(char *)coap_data_ptr,coap_data_ptr_length); 00088 return string(buf); 00089 } 00090 return string(""); 00091 }
Generated on Wed Jul 13 2022 01:24:02 by
