Donald Meyers / Mbed OS evan
Committer:
djmeyers
Date:
Sat Mar 18 22:37:16 2017 +0000
Revision:
0:06ee5f8a484a
Initial commit

Who changed what in which revision?

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