sandbox / mbed-client

Fork of mbed-client by Christopher Haster

Committer:
Christopher Haster
Date:
Fri Jan 22 14:57:00 2016 -0600
Revision:
1:79b6cc67d8b4
Child:
4:ae5178938864
Initial move of mbed-client to mercurial

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Christopher Haster 1:79b6cc67d8b4 1 /*
Christopher Haster 1:79b6cc67d8b4 2 * Copyright (c) 2015 ARM Limited. All rights reserved.
Christopher Haster 1:79b6cc67d8b4 3 * SPDX-License-Identifier: Apache-2.0
Christopher Haster 1:79b6cc67d8b4 4 * Licensed under the Apache License, Version 2.0 (the License); you may
Christopher Haster 1:79b6cc67d8b4 5 * not use this file except in compliance with the License.
Christopher Haster 1:79b6cc67d8b4 6 * You may obtain a copy of the License at
Christopher Haster 1:79b6cc67d8b4 7 *
Christopher Haster 1:79b6cc67d8b4 8 * http://www.apache.org/licenses/LICENSE-2.0
Christopher Haster 1:79b6cc67d8b4 9 *
Christopher Haster 1:79b6cc67d8b4 10 * Unless required by applicable law or agreed to in writing, software
Christopher Haster 1:79b6cc67d8b4 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
Christopher Haster 1:79b6cc67d8b4 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Christopher Haster 1:79b6cc67d8b4 13 * See the License for the specific language governing permissions and
Christopher Haster 1:79b6cc67d8b4 14 * limitations under the License.
Christopher Haster 1:79b6cc67d8b4 15 */
Christopher Haster 1:79b6cc67d8b4 16 #include <cstdio>
Christopher Haster 1:79b6cc67d8b4 17 #include "mbed-client/m2msecurity.h"
Christopher Haster 1:79b6cc67d8b4 18 #include "mbed-client/m2mconstants.h"
Christopher Haster 1:79b6cc67d8b4 19 #include "mbed-client/m2mobject.h"
Christopher Haster 1:79b6cc67d8b4 20 #include "mbed-client/m2mobjectinstance.h"
Christopher Haster 1:79b6cc67d8b4 21 #include "mbed-client/m2mresource.h"
Christopher Haster 1:79b6cc67d8b4 22
Christopher Haster 1:79b6cc67d8b4 23
Christopher Haster 1:79b6cc67d8b4 24 M2MSecurity::M2MSecurity(ServerType ser_type)
Christopher Haster 1:79b6cc67d8b4 25 : M2MObject(M2M_SECURITY_ID),
Christopher Haster 1:79b6cc67d8b4 26 _server_type(ser_type),
Christopher Haster 1:79b6cc67d8b4 27 _server_instance(NULL)
Christopher Haster 1:79b6cc67d8b4 28 {
Christopher Haster 1:79b6cc67d8b4 29 _server_instance = M2MObject::create_object_instance();
Christopher Haster 1:79b6cc67d8b4 30
Christopher Haster 1:79b6cc67d8b4 31 if(_server_instance) {
Christopher Haster 1:79b6cc67d8b4 32
Christopher Haster 1:79b6cc67d8b4 33 M2MResource* res = _server_instance->create_dynamic_resource(SECURITY_M2M_SERVER_URI,
Christopher Haster 1:79b6cc67d8b4 34 OMA_RESOURCE_TYPE,
Christopher Haster 1:79b6cc67d8b4 35 M2MResourceInstance::STRING,
Christopher Haster 1:79b6cc67d8b4 36 false);
Christopher Haster 1:79b6cc67d8b4 37 if(res) {
Christopher Haster 1:79b6cc67d8b4 38 res->set_operation(M2MBase::NOT_ALLOWED);
Christopher Haster 1:79b6cc67d8b4 39 }
Christopher Haster 1:79b6cc67d8b4 40 res = _server_instance->create_dynamic_resource(SECURITY_BOOTSTRAP_SERVER,
Christopher Haster 1:79b6cc67d8b4 41 OMA_RESOURCE_TYPE,
Christopher Haster 1:79b6cc67d8b4 42 M2MResourceInstance::BOOLEAN,
Christopher Haster 1:79b6cc67d8b4 43 false);
Christopher Haster 1:79b6cc67d8b4 44 if(res) {
Christopher Haster 1:79b6cc67d8b4 45 res->set_operation(M2MBase::NOT_ALLOWED);
Christopher Haster 1:79b6cc67d8b4 46 }
Christopher Haster 1:79b6cc67d8b4 47 res = _server_instance->create_dynamic_resource(SECURITY_SECURITY_MODE,
Christopher Haster 1:79b6cc67d8b4 48 OMA_RESOURCE_TYPE,
Christopher Haster 1:79b6cc67d8b4 49 M2MResourceInstance::INTEGER,
Christopher Haster 1:79b6cc67d8b4 50 false);
Christopher Haster 1:79b6cc67d8b4 51 if(res) {
Christopher Haster 1:79b6cc67d8b4 52 res->set_operation(M2MBase::NOT_ALLOWED);
Christopher Haster 1:79b6cc67d8b4 53 }
Christopher Haster 1:79b6cc67d8b4 54 res = _server_instance->create_dynamic_resource(SECURITY_PUBLIC_KEY,
Christopher Haster 1:79b6cc67d8b4 55 OMA_RESOURCE_TYPE,
Christopher Haster 1:79b6cc67d8b4 56 M2MResourceInstance::OPAQUE,
Christopher Haster 1:79b6cc67d8b4 57 false);
Christopher Haster 1:79b6cc67d8b4 58 if(res) {
Christopher Haster 1:79b6cc67d8b4 59 res->set_operation(M2MBase::NOT_ALLOWED);
Christopher Haster 1:79b6cc67d8b4 60 }
Christopher Haster 1:79b6cc67d8b4 61 res = _server_instance->create_dynamic_resource(SECURITY_SERVER_PUBLIC_KEY,
Christopher Haster 1:79b6cc67d8b4 62 OMA_RESOURCE_TYPE,
Christopher Haster 1:79b6cc67d8b4 63 M2MResourceInstance::OPAQUE,
Christopher Haster 1:79b6cc67d8b4 64 false);
Christopher Haster 1:79b6cc67d8b4 65 if(res) {
Christopher Haster 1:79b6cc67d8b4 66 res->set_operation(M2MBase::NOT_ALLOWED);
Christopher Haster 1:79b6cc67d8b4 67 }
Christopher Haster 1:79b6cc67d8b4 68 res = _server_instance->create_dynamic_resource(SECURITY_SECRET_KEY,
Christopher Haster 1:79b6cc67d8b4 69 OMA_RESOURCE_TYPE,
Christopher Haster 1:79b6cc67d8b4 70 M2MResourceInstance::OPAQUE,
Christopher Haster 1:79b6cc67d8b4 71 false);
Christopher Haster 1:79b6cc67d8b4 72 if(res) {
Christopher Haster 1:79b6cc67d8b4 73 res->set_operation(M2MBase::NOT_ALLOWED);
Christopher Haster 1:79b6cc67d8b4 74 }
Christopher Haster 1:79b6cc67d8b4 75 if(M2MSecurity::M2MServer == ser_type) {
Christopher Haster 1:79b6cc67d8b4 76 res = _server_instance->create_dynamic_resource(SECURITY_SHORT_SERVER_ID,
Christopher Haster 1:79b6cc67d8b4 77 OMA_RESOURCE_TYPE,
Christopher Haster 1:79b6cc67d8b4 78 M2MResourceInstance::INTEGER,
Christopher Haster 1:79b6cc67d8b4 79 false);
Christopher Haster 1:79b6cc67d8b4 80 if(res) {
Christopher Haster 1:79b6cc67d8b4 81 res->set_operation(M2MBase::NOT_ALLOWED);
Christopher Haster 1:79b6cc67d8b4 82 }
Christopher Haster 1:79b6cc67d8b4 83 }
Christopher Haster 1:79b6cc67d8b4 84 }
Christopher Haster 1:79b6cc67d8b4 85 }
Christopher Haster 1:79b6cc67d8b4 86
Christopher Haster 1:79b6cc67d8b4 87 M2MSecurity::~M2MSecurity()
Christopher Haster 1:79b6cc67d8b4 88 {
Christopher Haster 1:79b6cc67d8b4 89 _server_instance = NULL;
Christopher Haster 1:79b6cc67d8b4 90 }
Christopher Haster 1:79b6cc67d8b4 91
Christopher Haster 1:79b6cc67d8b4 92 M2MResource* M2MSecurity::create_resource(SecurityResource resource, uint32_t value)
Christopher Haster 1:79b6cc67d8b4 93 {
Christopher Haster 1:79b6cc67d8b4 94 M2MResource* res = NULL;
Christopher Haster 1:79b6cc67d8b4 95 String security_id = "";
Christopher Haster 1:79b6cc67d8b4 96 if(!is_resource_present(resource)) {
Christopher Haster 1:79b6cc67d8b4 97 switch(resource) {
Christopher Haster 1:79b6cc67d8b4 98 case SMSSecurityMode:
Christopher Haster 1:79b6cc67d8b4 99 security_id = SECURITY_SMS_SECURITY_MODE;
Christopher Haster 1:79b6cc67d8b4 100 break;
Christopher Haster 1:79b6cc67d8b4 101 case M2MServerSMSNumber:
Christopher Haster 1:79b6cc67d8b4 102 security_id = SECURITY_M2M_SERVER_SMS_NUMBER;
Christopher Haster 1:79b6cc67d8b4 103 break;
Christopher Haster 1:79b6cc67d8b4 104 case ShortServerID:
Christopher Haster 1:79b6cc67d8b4 105 security_id = SECURITY_SHORT_SERVER_ID;
Christopher Haster 1:79b6cc67d8b4 106 break;
Christopher Haster 1:79b6cc67d8b4 107 case ClientHoldOffTime:
Christopher Haster 1:79b6cc67d8b4 108 security_id = SECURITY_CLIENT_HOLD_OFF_TIME;
Christopher Haster 1:79b6cc67d8b4 109 break;
Christopher Haster 1:79b6cc67d8b4 110 default:
Christopher Haster 1:79b6cc67d8b4 111 break;
Christopher Haster 1:79b6cc67d8b4 112 }
Christopher Haster 1:79b6cc67d8b4 113 }
Christopher Haster 1:79b6cc67d8b4 114 if(!security_id.empty()) {
Christopher Haster 1:79b6cc67d8b4 115 if(_server_instance) {
Christopher Haster 1:79b6cc67d8b4 116
Christopher Haster 1:79b6cc67d8b4 117 res = _server_instance->create_dynamic_resource(security_id,OMA_RESOURCE_TYPE,
Christopher Haster 1:79b6cc67d8b4 118 M2MResourceInstance::INTEGER,
Christopher Haster 1:79b6cc67d8b4 119 false);
Christopher Haster 1:79b6cc67d8b4 120
Christopher Haster 1:79b6cc67d8b4 121 if(res) {
Christopher Haster 1:79b6cc67d8b4 122 char *buffer = (char*)malloc(20);
Christopher Haster 1:79b6cc67d8b4 123 if(buffer) {
Christopher Haster 1:79b6cc67d8b4 124 int size = snprintf(buffer, 20,"%ld",(long int)value);
Christopher Haster 1:79b6cc67d8b4 125 res->set_operation(M2MBase::NOT_ALLOWED);
Christopher Haster 1:79b6cc67d8b4 126 res->set_value((const uint8_t*)buffer,
Christopher Haster 1:79b6cc67d8b4 127 (uint32_t)size);
Christopher Haster 1:79b6cc67d8b4 128 free(buffer);
Christopher Haster 1:79b6cc67d8b4 129 }
Christopher Haster 1:79b6cc67d8b4 130 }
Christopher Haster 1:79b6cc67d8b4 131 }
Christopher Haster 1:79b6cc67d8b4 132 }
Christopher Haster 1:79b6cc67d8b4 133 return res;
Christopher Haster 1:79b6cc67d8b4 134 }
Christopher Haster 1:79b6cc67d8b4 135
Christopher Haster 1:79b6cc67d8b4 136 bool M2MSecurity::delete_resource(SecurityResource resource)
Christopher Haster 1:79b6cc67d8b4 137 {
Christopher Haster 1:79b6cc67d8b4 138 bool success = false;
Christopher Haster 1:79b6cc67d8b4 139 String security_id = "";
Christopher Haster 1:79b6cc67d8b4 140 switch(resource) {
Christopher Haster 1:79b6cc67d8b4 141 case SMSSecurityMode:
Christopher Haster 1:79b6cc67d8b4 142 security_id = SECURITY_SMS_SECURITY_MODE;
Christopher Haster 1:79b6cc67d8b4 143 break;
Christopher Haster 1:79b6cc67d8b4 144 case M2MServerSMSNumber:
Christopher Haster 1:79b6cc67d8b4 145 security_id = SECURITY_M2M_SERVER_SMS_NUMBER;
Christopher Haster 1:79b6cc67d8b4 146 break;
Christopher Haster 1:79b6cc67d8b4 147 case ShortServerID:
Christopher Haster 1:79b6cc67d8b4 148 if(M2MSecurity::Bootstrap == _server_type) {
Christopher Haster 1:79b6cc67d8b4 149 security_id = SECURITY_SHORT_SERVER_ID;
Christopher Haster 1:79b6cc67d8b4 150 }
Christopher Haster 1:79b6cc67d8b4 151 break;
Christopher Haster 1:79b6cc67d8b4 152 case ClientHoldOffTime:
Christopher Haster 1:79b6cc67d8b4 153 security_id = SECURITY_CLIENT_HOLD_OFF_TIME;
Christopher Haster 1:79b6cc67d8b4 154 break;
Christopher Haster 1:79b6cc67d8b4 155 default:
Christopher Haster 1:79b6cc67d8b4 156 // Others are mandatory resources hence cannot be deleted.
Christopher Haster 1:79b6cc67d8b4 157 break;
Christopher Haster 1:79b6cc67d8b4 158 }
Christopher Haster 1:79b6cc67d8b4 159 if(!security_id.empty()) {
Christopher Haster 1:79b6cc67d8b4 160 if(_server_instance) {
Christopher Haster 1:79b6cc67d8b4 161 success = _server_instance->remove_resource(security_id);
Christopher Haster 1:79b6cc67d8b4 162 }
Christopher Haster 1:79b6cc67d8b4 163 }
Christopher Haster 1:79b6cc67d8b4 164 return success;
Christopher Haster 1:79b6cc67d8b4 165 }
Christopher Haster 1:79b6cc67d8b4 166
Christopher Haster 1:79b6cc67d8b4 167 bool M2MSecurity::set_resource_value(SecurityResource resource,
Christopher Haster 1:79b6cc67d8b4 168 const String &value)
Christopher Haster 1:79b6cc67d8b4 169 {
Christopher Haster 1:79b6cc67d8b4 170 bool success = false;
Christopher Haster 1:79b6cc67d8b4 171 if(M2MSecurity::M2MServerUri == resource) {
Christopher Haster 1:79b6cc67d8b4 172 M2MResource* res = get_resource(resource);
Christopher Haster 1:79b6cc67d8b4 173 if(res) {
Christopher Haster 1:79b6cc67d8b4 174 success = res->set_value((const uint8_t*)value.c_str(),(uint32_t)value.length());
Christopher Haster 1:79b6cc67d8b4 175 }
Christopher Haster 1:79b6cc67d8b4 176 }
Christopher Haster 1:79b6cc67d8b4 177 return success;
Christopher Haster 1:79b6cc67d8b4 178 }
Christopher Haster 1:79b6cc67d8b4 179
Christopher Haster 1:79b6cc67d8b4 180 bool M2MSecurity::set_resource_value(SecurityResource resource,
Christopher Haster 1:79b6cc67d8b4 181 uint32_t value)
Christopher Haster 1:79b6cc67d8b4 182 {
Christopher Haster 1:79b6cc67d8b4 183 bool success = false;
Christopher Haster 1:79b6cc67d8b4 184 M2MResource* res = get_resource(resource);
Christopher Haster 1:79b6cc67d8b4 185 if(res) {
Christopher Haster 1:79b6cc67d8b4 186 if(M2MSecurity::SecurityMode == resource ||
Christopher Haster 1:79b6cc67d8b4 187 M2MSecurity::SMSSecurityMode == resource ||
Christopher Haster 1:79b6cc67d8b4 188 M2MSecurity::M2MServerSMSNumber == resource ||
Christopher Haster 1:79b6cc67d8b4 189 M2MSecurity::ShortServerID == resource ||
Christopher Haster 1:79b6cc67d8b4 190 M2MSecurity::ClientHoldOffTime == resource) {
Christopher Haster 1:79b6cc67d8b4 191 // If it is any of the above resource
Christopher Haster 1:79b6cc67d8b4 192 // set the value of the resource.
Christopher Haster 1:79b6cc67d8b4 193 char *buffer = (char*)malloc(20);
Christopher Haster 1:79b6cc67d8b4 194 if(buffer) {
Christopher Haster 1:79b6cc67d8b4 195 int size = snprintf(buffer, 20,"%ld",(long int)value);
Christopher Haster 1:79b6cc67d8b4 196 success = res->set_value((const uint8_t*)buffer,
Christopher Haster 1:79b6cc67d8b4 197 (uint32_t)size);
Christopher Haster 1:79b6cc67d8b4 198 free(buffer);
Christopher Haster 1:79b6cc67d8b4 199 }
Christopher Haster 1:79b6cc67d8b4 200 }
Christopher Haster 1:79b6cc67d8b4 201 }
Christopher Haster 1:79b6cc67d8b4 202 return success;
Christopher Haster 1:79b6cc67d8b4 203 }
Christopher Haster 1:79b6cc67d8b4 204
Christopher Haster 1:79b6cc67d8b4 205 bool M2MSecurity::set_resource_value(SecurityResource resource,
Christopher Haster 1:79b6cc67d8b4 206 const uint8_t *value,
Christopher Haster 1:79b6cc67d8b4 207 const uint16_t length)
Christopher Haster 1:79b6cc67d8b4 208 {
Christopher Haster 1:79b6cc67d8b4 209 bool success = false;
Christopher Haster 1:79b6cc67d8b4 210 M2MResource* res = get_resource(resource);
Christopher Haster 1:79b6cc67d8b4 211 if(res) {
Christopher Haster 1:79b6cc67d8b4 212 if(M2MSecurity::PublicKey == resource ||
Christopher Haster 1:79b6cc67d8b4 213 M2MSecurity::ServerPublicKey == resource ||
Christopher Haster 1:79b6cc67d8b4 214 M2MSecurity::Secretkey == resource) {
Christopher Haster 1:79b6cc67d8b4 215 success = res->set_value(value,length);
Christopher Haster 1:79b6cc67d8b4 216 }
Christopher Haster 1:79b6cc67d8b4 217 }
Christopher Haster 1:79b6cc67d8b4 218 return success;
Christopher Haster 1:79b6cc67d8b4 219 }
Christopher Haster 1:79b6cc67d8b4 220
Christopher Haster 1:79b6cc67d8b4 221 String M2MSecurity::resource_value_string(SecurityResource resource) const
Christopher Haster 1:79b6cc67d8b4 222 {
Christopher Haster 1:79b6cc67d8b4 223 String value = "";
Christopher Haster 1:79b6cc67d8b4 224 M2MResource* res = get_resource(resource);
Christopher Haster 1:79b6cc67d8b4 225 if(res) {
Christopher Haster 1:79b6cc67d8b4 226 if(M2MSecurity::M2MServerUri == resource) {
Christopher Haster 1:79b6cc67d8b4 227 uint8_t* buffer = NULL;
Christopher Haster 1:79b6cc67d8b4 228 uint32_t length = 0;
Christopher Haster 1:79b6cc67d8b4 229 res->get_value(buffer,length);
Christopher Haster 1:79b6cc67d8b4 230
Christopher Haster 1:79b6cc67d8b4 231 char *char_buffer = (char*)malloc(length+1);
Christopher Haster 1:79b6cc67d8b4 232 if(char_buffer) {
Christopher Haster 1:79b6cc67d8b4 233 memset(char_buffer,0,length+1);
Christopher Haster 1:79b6cc67d8b4 234 if(buffer) {
Christopher Haster 1:79b6cc67d8b4 235 memcpy(char_buffer,(char*)buffer,length);
Christopher Haster 1:79b6cc67d8b4 236 }
Christopher Haster 1:79b6cc67d8b4 237 String s_name(char_buffer);
Christopher Haster 1:79b6cc67d8b4 238 value = s_name;
Christopher Haster 1:79b6cc67d8b4 239 free(char_buffer);
Christopher Haster 1:79b6cc67d8b4 240 }
Christopher Haster 1:79b6cc67d8b4 241 if(buffer) {
Christopher Haster 1:79b6cc67d8b4 242 free(buffer);
Christopher Haster 1:79b6cc67d8b4 243 }
Christopher Haster 1:79b6cc67d8b4 244 }
Christopher Haster 1:79b6cc67d8b4 245 }
Christopher Haster 1:79b6cc67d8b4 246 return value;
Christopher Haster 1:79b6cc67d8b4 247 }
Christopher Haster 1:79b6cc67d8b4 248
Christopher Haster 1:79b6cc67d8b4 249 uint32_t M2MSecurity::resource_value_buffer(SecurityResource resource,
Christopher Haster 1:79b6cc67d8b4 250 uint8_t *&data) const
Christopher Haster 1:79b6cc67d8b4 251 {
Christopher Haster 1:79b6cc67d8b4 252 uint32_t size = 0;
Christopher Haster 1:79b6cc67d8b4 253 M2MResource* res = get_resource(resource);
Christopher Haster 1:79b6cc67d8b4 254 if(res) {
Christopher Haster 1:79b6cc67d8b4 255 if(M2MSecurity::PublicKey == resource ||
Christopher Haster 1:79b6cc67d8b4 256 M2MSecurity::ServerPublicKey == resource ||
Christopher Haster 1:79b6cc67d8b4 257 M2MSecurity::Secretkey == resource) {
Christopher Haster 1:79b6cc67d8b4 258 res->get_value(data,size);
Christopher Haster 1:79b6cc67d8b4 259 }
Christopher Haster 1:79b6cc67d8b4 260 }
Christopher Haster 1:79b6cc67d8b4 261 return size;
Christopher Haster 1:79b6cc67d8b4 262 }
Christopher Haster 1:79b6cc67d8b4 263
Christopher Haster 1:79b6cc67d8b4 264
Christopher Haster 1:79b6cc67d8b4 265 uint32_t M2MSecurity::resource_value_int(SecurityResource resource) const
Christopher Haster 1:79b6cc67d8b4 266 {
Christopher Haster 1:79b6cc67d8b4 267 uint32_t value = 0;
Christopher Haster 1:79b6cc67d8b4 268 M2MResource* res = get_resource(resource);
Christopher Haster 1:79b6cc67d8b4 269 if(res) {
Christopher Haster 1:79b6cc67d8b4 270 if(M2MSecurity::SecurityMode == resource ||
Christopher Haster 1:79b6cc67d8b4 271 M2MSecurity::SMSSecurityMode == resource ||
Christopher Haster 1:79b6cc67d8b4 272 M2MSecurity::M2MServerSMSNumber == resource ||
Christopher Haster 1:79b6cc67d8b4 273 M2MSecurity::ShortServerID == resource ||
Christopher Haster 1:79b6cc67d8b4 274 M2MSecurity::ClientHoldOffTime == resource) {
Christopher Haster 1:79b6cc67d8b4 275 // Get the value and convert it into integer
Christopher Haster 1:79b6cc67d8b4 276 uint8_t* buffer = NULL;
Christopher Haster 1:79b6cc67d8b4 277 uint32_t length = 0;
Christopher Haster 1:79b6cc67d8b4 278 res->get_value(buffer,length);
Christopher Haster 1:79b6cc67d8b4 279 if(buffer) {
Christopher Haster 1:79b6cc67d8b4 280 value = atoi((const char*)buffer);
Christopher Haster 1:79b6cc67d8b4 281 free(buffer);
Christopher Haster 1:79b6cc67d8b4 282 }
Christopher Haster 1:79b6cc67d8b4 283 }
Christopher Haster 1:79b6cc67d8b4 284 }
Christopher Haster 1:79b6cc67d8b4 285 return value;
Christopher Haster 1:79b6cc67d8b4 286 }
Christopher Haster 1:79b6cc67d8b4 287
Christopher Haster 1:79b6cc67d8b4 288 bool M2MSecurity::is_resource_present(SecurityResource resource) const
Christopher Haster 1:79b6cc67d8b4 289 {
Christopher Haster 1:79b6cc67d8b4 290 bool success = false;
Christopher Haster 1:79b6cc67d8b4 291 M2MResource *res = get_resource(resource);
Christopher Haster 1:79b6cc67d8b4 292 if(res) {
Christopher Haster 1:79b6cc67d8b4 293 success = true;
Christopher Haster 1:79b6cc67d8b4 294 }
Christopher Haster 1:79b6cc67d8b4 295 return success;
Christopher Haster 1:79b6cc67d8b4 296 }
Christopher Haster 1:79b6cc67d8b4 297
Christopher Haster 1:79b6cc67d8b4 298 uint16_t M2MSecurity::total_resource_count() const
Christopher Haster 1:79b6cc67d8b4 299 {
Christopher Haster 1:79b6cc67d8b4 300 uint16_t count = 0;
Christopher Haster 1:79b6cc67d8b4 301 if(_server_instance) {
Christopher Haster 1:79b6cc67d8b4 302 count = _server_instance->resources().size();
Christopher Haster 1:79b6cc67d8b4 303 }
Christopher Haster 1:79b6cc67d8b4 304 return count;
Christopher Haster 1:79b6cc67d8b4 305 }
Christopher Haster 1:79b6cc67d8b4 306
Christopher Haster 1:79b6cc67d8b4 307 M2MSecurity::ServerType M2MSecurity::server_type() const
Christopher Haster 1:79b6cc67d8b4 308 {
Christopher Haster 1:79b6cc67d8b4 309 return _server_type;
Christopher Haster 1:79b6cc67d8b4 310 }
Christopher Haster 1:79b6cc67d8b4 311
Christopher Haster 1:79b6cc67d8b4 312 M2MResource* M2MSecurity::get_resource(SecurityResource res) const
Christopher Haster 1:79b6cc67d8b4 313 {
Christopher Haster 1:79b6cc67d8b4 314 M2MResource* res_object = NULL;
Christopher Haster 1:79b6cc67d8b4 315 if(_server_instance) {
Christopher Haster 1:79b6cc67d8b4 316 String res_name = "";
Christopher Haster 1:79b6cc67d8b4 317 switch(res) {
Christopher Haster 1:79b6cc67d8b4 318 case M2MServerUri:
Christopher Haster 1:79b6cc67d8b4 319 res_name = SECURITY_M2M_SERVER_URI;
Christopher Haster 1:79b6cc67d8b4 320 break;
Christopher Haster 1:79b6cc67d8b4 321 case BootstrapServer:
Christopher Haster 1:79b6cc67d8b4 322 res_name = SECURITY_BOOTSTRAP_SERVER;
Christopher Haster 1:79b6cc67d8b4 323 break;
Christopher Haster 1:79b6cc67d8b4 324 case SecurityMode:
Christopher Haster 1:79b6cc67d8b4 325 res_name = SECURITY_SECURITY_MODE;
Christopher Haster 1:79b6cc67d8b4 326 break;
Christopher Haster 1:79b6cc67d8b4 327 case PublicKey:
Christopher Haster 1:79b6cc67d8b4 328 res_name = SECURITY_PUBLIC_KEY;
Christopher Haster 1:79b6cc67d8b4 329 break;
Christopher Haster 1:79b6cc67d8b4 330 case ServerPublicKey:
Christopher Haster 1:79b6cc67d8b4 331 res_name = SECURITY_SERVER_PUBLIC_KEY;
Christopher Haster 1:79b6cc67d8b4 332 break;
Christopher Haster 1:79b6cc67d8b4 333 case Secretkey:
Christopher Haster 1:79b6cc67d8b4 334 res_name = SECURITY_SECRET_KEY;
Christopher Haster 1:79b6cc67d8b4 335 break;
Christopher Haster 1:79b6cc67d8b4 336 case SMSSecurityMode:
Christopher Haster 1:79b6cc67d8b4 337 res_name = SECURITY_SMS_SECURITY_MODE;
Christopher Haster 1:79b6cc67d8b4 338 break;
Christopher Haster 1:79b6cc67d8b4 339 case SMSBindingKey:
Christopher Haster 1:79b6cc67d8b4 340 res_name = SECURITY_SMS_BINDING_KEY;
Christopher Haster 1:79b6cc67d8b4 341 break;
Christopher Haster 1:79b6cc67d8b4 342 case SMSBindingSecretKey:
Christopher Haster 1:79b6cc67d8b4 343 res_name = SECURITY_SMS_BINDING_SECRET_KEY;
Christopher Haster 1:79b6cc67d8b4 344 break;
Christopher Haster 1:79b6cc67d8b4 345 case M2MServerSMSNumber:
Christopher Haster 1:79b6cc67d8b4 346 res_name = SECURITY_M2M_SERVER_SMS_NUMBER;
Christopher Haster 1:79b6cc67d8b4 347 break;
Christopher Haster 1:79b6cc67d8b4 348 case ShortServerID:
Christopher Haster 1:79b6cc67d8b4 349 res_name = SECURITY_SHORT_SERVER_ID;
Christopher Haster 1:79b6cc67d8b4 350 break;
Christopher Haster 1:79b6cc67d8b4 351 case ClientHoldOffTime:
Christopher Haster 1:79b6cc67d8b4 352 res_name = SECURITY_CLIENT_HOLD_OFF_TIME;
Christopher Haster 1:79b6cc67d8b4 353 break;
Christopher Haster 1:79b6cc67d8b4 354 }
Christopher Haster 1:79b6cc67d8b4 355 res_object = _server_instance->resource(res_name);
Christopher Haster 1:79b6cc67d8b4 356 }
Christopher Haster 1:79b6cc67d8b4 357 return res_object;
Christopher Haster 1:79b6cc67d8b4 358 }