Mistake on this page? Email us

#include <m2msecurity.h>

Inheritance diagram for M2MSecurity:
M2MObject M2MBase M2MReportObserver

Public Types

enum  SecurityResource {
  M2MServerUri, BootstrapServer, SecurityMode, PublicKey,
  ServerPublicKey, Secretkey, SMSSecurityMode, SMSBindingKey,
  SMSBindingSecretKey, M2MServerSMSNumber, ShortServerID, ClientHoldOffTime,
  OpenCertificateChain, CloseCertificateChain, ReadDeviceCertificateChain
}
 An enum defining all resources associated with a Security Object in the LWM2M framework.
 
enum  SecurityModeType {
  SecurityNotSet = -1, Psk = 0, Certificate = 2, NoSecurity = 3,
  EST = 4
}
 An enum defining the type of the security attribute used by the Security Object.
 
enum  ServerType { M2MServer = 0x0, Bootstrap = 0x1, NotDefined =0x2 }
 An enum defining an interface operation that can be handled by the Security Object.
 
- Public Types inherited from M2MBase
enum  BaseType { Object = 0x0, Resource = 0x1, ObjectInstance = 0x2, ResourceInstance = 0x3 }
 Enum to define the type of object.
 
enum  Observation {
  None = 0x0, R_Attribute = 0x01, OI_Attribute = 0x02, OIR_Attribute = 0x03,
  O_Attribute = 0x04, OR_Attribute = 0x05, OOI_Attribute = 0x06, OOIR_Attribute = 0x07
}
 Enum to define observation level.
 
enum  Mode { Static, Dynamic, Directory }
 Enum defining a resource type. More...
 
enum  DataType {
  STRING, INTEGER, FLOAT, BOOLEAN,
  OPAQUE, TIME, OBJLINK
}
 Enum defining a resource data type.
 
enum  Operation {
  NOT_ALLOWED = 0x00, GET_ALLOWED = 0x01, PUT_ALLOWED = 0x02, GET_PUT_ALLOWED = 0x03,
  POST_ALLOWED = 0x04, GET_POST_ALLOWED = 0x05, PUT_POST_ALLOWED = 0x06, GET_PUT_POST_ALLOWED = 0x07,
  DELETE_ALLOWED = 0x08, GET_DELETE_ALLOWED = 0x09, PUT_DELETE_ALLOWED = 0x0A, GET_PUT_DELETE_ALLOWED = 0x0B,
  POST_DELETE_ALLOWED = 0x0C, GET_POST_DELETE_ALLOWED = 0x0D, PUT_POST_DELETE_ALLOWED = 0x0E, GET_PUT_POST_DELETE_ALLOWED = 0x0F
}
 Enum defining an operation that can be supported by a given resource. More...
 
enum  MessageDeliveryStatus {
  MESSAGE_STATUS_INIT = 0, MESSAGE_STATUS_BUILD_ERROR, MESSAGE_STATUS_RESEND_QUEUE_FULL, MESSAGE_STATUS_SENT,
  MESSAGE_STATUS_DELIVERED, MESSAGE_STATUS_SEND_FAILED, MESSAGE_STATUS_SUBSCRIBED, MESSAGE_STATUS_UNSUBSCRIBED,
  MESSAGE_STATUS_REJECTED
}
 Enum defining an status codes that can happen when sending confirmable message. More...
 
enum  MessageType {
  NOTIFICATION = 0, DELAYED_POST_RESPONSE, BLOCK_SUBSCRIBE, PING,
  DELAYED_RESPONSE
}
 
enum  MaxPathSize {
  MAX_NAME_SIZE = 64, MAX_INSTANCE_SIZE = 5, MAX_PATH_SIZE = ((MAX_NAME_SIZE * 2) + (MAX_INSTANCE_SIZE * 2) + 3 + 1), MAX_PATH_SIZE_2 = ((MAX_NAME_SIZE * 2) + MAX_INSTANCE_SIZE + 2 + 1),
  MAX_PATH_SIZE_3 = (MAX_NAME_SIZE + (MAX_INSTANCE_SIZE * 2) + 2 + 1), MAX_PATH_SIZE_4 = (MAX_NAME_SIZE + MAX_INSTANCE_SIZE + 1 + 1)
}
 
typedef void(* message_delivery_status_cb) (const M2MBase &base, const MessageDeliveryStatus status, const MessageType type, void *client_args)
 
typedef struct M2MBase::lwm2m_parameters lwm2m_parameters_s
 LwM2M parameters. More...
 

Public Member Functions

M2MObjectInstancecreate_object_instance (ServerType server_type)
 Creates a new object instance. More...
 
M2MObjectInstancecreate_object_instance (uint16_t instance_id)
 Creates a new object instance. More...
 
void remove_security_instances ()
 Remove all security object instances.
 
M2MResourcecreate_resource (SecurityResource rescource, uint32_t value, uint16_t instance_id)
 Creates a new resource for a given resource enum. More...
 
bool delete_resource (SecurityResource rescource, uint16_t instance_id)
 Deletes a resource with a given resource enum. Mandatory resources cannot be deleted. More...
 
bool set_resource_value (SecurityResource resource, const String &value, uint16_t instance_id)
 Sets the value of a given resource enum. More...
 
bool set_resource_value (SecurityResource resource, uint32_t value, uint16_t instance_id)
 Sets the value of a given resource enum. More...
 
bool set_resource_value (SecurityResource resource, const uint8_t *value, const uint16_t length, uint16_t instance_id)
 Sets the value of a given resource enum. More...
 
String resource_value_string (SecurityResource resource, uint16_t instance_id) const
 Returns the value of a given resource enum, in string format. More...
 
int resource_value_buffer (SecurityResource resource, uint8_t *&data, uint16_t instance_id, size_t *buffer_len) const
 Populates the data buffer and returns the size of the buffer. More...
 
uint32_t resource_value_buffer (SecurityResource resource, const uint8_t *&data, uint16_t instance_id) const
 Returns a pointer to the value and size of the buffer. More...
 
int resource_value_buffer_size (SecurityResource resource, uint16_t instance_id, size_t *buffer_len) const
 Get a size of the buffer. More...
 
uint32_t resource_value_int (SecurityResource resource, uint16_t instance_id) const
 Returns the value of a given resource name, in integer format. More...
 
bool is_resource_present (SecurityResource resource, uint16_t instance_id) const
 Returns whether a resource instance with a given resource enum exists or not. More...
 
uint16_t total_resource_count (uint16_t instance_id) const
 Returns the total number of resources for a security object. More...
 
ServerType server_type (uint16_t instance_id) const
 Returns the type of the Security Object. It can be either Bootstrap or M2MServer. More...
 
int32_t get_security_instance_id (ServerType server_type) const
 Returns first bootstrap or lwm2m server security object instance id. More...
 
M2MResourceget_resource (SecurityResource resource, uint16_t instance_id=0) const
 
- Public Member Functions inherited from M2MObject
virtual ~M2MObject ()
 Destructor.
 
M2MObjectInstancecreate_object_instance (uint16_t instance_id=0)
 Creates a new object instance for a given mbed Client Interface object. With this, the client can respond to server's GET methods with the provided value. More...
 
M2MObjectInstancecreate_object_instance (const lwm2m_parameters_s *s)
 Creates a new object instance for a given mbed Client Interface object. With this, the client can respond to server's GET methods with the provided value. More...
 
bool remove_object_instance (uint16_t instance_id=0)
 Removes the object instance resource with the given instance id. More...
 
M2MObjectInstanceobject_instance (uint16_t instance_id=0) const
 Returns the object instance with the the given instance ID. More...
 
const M2MObjectInstanceList & instances () const
 Returns a list of object instances. More...
 
uint16_t instance_count () const
 Returns the total number of object instances-. More...
 
uint16_t new_instance_id () const
 Returns instance id to be used for new instances. More...
 
virtual M2MObservationHandlerobservation_handler () const
 Returns the Observation Handler object. More...
 
virtual void set_observation_handler (M2MObservationHandler *handler)
 Sets the observation handler. More...
 
virtual void add_observation_level (M2MBase::Observation observation_level)
 Adds the observation level for the object. More...
 
virtual void remove_observation_level (M2MBase::Observation observation_level)
 Removes the observation level from the object. More...
 
virtual sn_coap_hdr_s * handle_get_request (nsdl_s *nsdl, sn_coap_hdr_s *received_coap_header, M2MObservationHandler *observation_handler=NULL)
 Handles GET request for the registered objects. More...
 
virtual sn_coap_hdr_s * handle_put_request (nsdl_s *nsdl, sn_coap_hdr_s *received_coap_header, M2MObservationHandler *observation_handler, bool &execute_value_updated)
 Handles PUT request for the registered objects. More...
 
virtual sn_coap_hdr_s * handle_post_request (nsdl_s *nsdl, sn_coap_hdr_s *received_coap_header, M2MObservationHandler *observation_handler, bool &execute_value_updated, sn_nsdl_addr_s *address=NULL)
 Handles GET request for the registered objects. More...
 
void notification_update (uint16_t obj_instance_id)
 
- Public Member Functions inherited from M2MBase
virtual ~M2MBase ()
 Destructor.
 
void set_operation (M2MBase::Operation operation)
 Sets the operation type for an object. More...
 
void set_interface_description (const String &description)
 Sets the interface description of the object. More...
 
void set_interface_description (const char *description)
 Sets the interface description of the object. More...
 
const char * interface_description () const
 Returns the interface description of the object. More...
 
virtual void set_resource_type (const String &resource_type)
 Sets the resource type of the object. More...
 
virtual void set_resource_type (const char *resource_type)
 Sets the resource type of the object. More...
 
const char * resource_type () const
 Returns the resource type of the object. More...
 
void set_coap_content_type (const uint16_t content_type)
 Sets the CoAP content type of the object. More...
 
void set_observable (bool observable)
 Sets the observable mode for the object. More...
 
void set_auto_observable (bool auto_observable)
 Sets the object to be auto-observable. More...
 
void set_confirmable (bool confirmable)
 Sets how the notification is sent. By default confirmable CoAP message type is used. More...
 
void set_under_observation (bool observed, M2MObservationHandler *handler)
 Sets the object under observation. More...
 
void set_instance_id (const uint16_t instance_id)
 Sets the instance ID of the object. More...
 
void set_max_age (const uint32_t max_age)
 Sets the max age for the resource value to be cached. More...
 
M2MBase::BaseType base_type () const
 Returns the object type. More...
 
M2MBase::Operation operation () const
 Returns the operation type of the object. More...
 
const char * name () const
 Returns the object name. More...
 
int32_t name_id () const
 Returns the object name in integer. More...
 
uint16_t instance_id () const
 Returns the object's instance ID. More...
 
const char * uri_path () const
 Returns the path of the object. More...
 
uint16_t coap_content_type () const
 Returns the CoAP content type of the object. More...
 
bool is_readable () const
 Returns get operation allow state. More...
 
bool is_auto_observable () const
 Returns the auto observation status of the object. More...
 
M2MBase::Observation observation_level () const
 Returns the observation level of the object. More...
 
Mode mode () const
 Returns the mode of the resource. More...
 
uint16_t observation_number () const
 Returns the observation number. More...
 
uint32_t max_age () const
 Returns the max age for the resource value to be cached. More...
 
void send_message_delivery_status (const M2MBase &object, const MessageDeliveryStatus status, const MessageType type)
 Executes the function that is set in "set_message_delivery_status_cb".
 
void set_register_uri (bool register_uri)
 Sets whether this resource is published to server or not. More...
 
bool register_uri ()
 Returns whether this resource is published to server or not. More...
 
bool is_under_observation () const
 Returns whether this resource is under observation or not. More...
 
bool set_value_updated_function (value_updated_callback callback)
 Sets the function that is executed when this object receives a PUT or POST command. More...
 
bool set_value_updated_function (value_updated_callback2 callback)
 Sets the function that is executed when this object receives a PUT or POST command. More...
 
bool is_value_updated_function_set () const
 Returns whether a callback function is set or not. More...
 
void execute_value_updated (const String &name)
 Calls the function that is set in the "set_value_updated_function". More...
 
size_t resource_name_length () const
 Returns length of the object name. More...
 
sn_nsdl_dynamic_resource_parameters_s * get_nsdl_resource () const
 Returns the resource information. More...
 
M2MBase::lwm2m_parameters_sget_lwm2m_parameters () const
 Returns the resource structure. More...
 
uint16_t get_notification_msgid () const m2m_deprecated
 Returns the notification message id. More...
 
void set_notification_msgid (uint16_t msgid) m2m_deprecated
 Sets the notification message id. This is used to map RESET and EMPTY ACK messages. More...
 
bool set_message_delivery_status_cb (message_delivery_status_cb callback, void *client_args)
 Sets the function that is executed when message state changes. Currently this is used to track notifications and delayed response delivery statuses. More...
 
M2MReportHandler * report_handler () const
 Returns the Report Handler object. More...
 

Static Public Member Functions

static M2MSecurityget_instance ()
 Get the singleton instance of M2MSecurity.
 
static void delete_instance ()
 Delete the singleton instance of M2MSecurity.
 
- Static Public Member Functions inherited from M2MBase
static char * create_path (const M2MObject &parent, const char *name)
 
static char * create_path (const M2MObject &parent, uint16_t object_instance)
 
static char * create_path (const M2MResource &parent, uint16_t resource_instance)
 
static char * create_path (const M2MResource &parent, const char *name)
 
static char * create_path (const M2MObjectInstance &parent, const char *name)
 

Static Protected Attributes

static M2MSecurity_instance
 

Friends

class M2MInterfaceFactory
 
class M2MNsdlInterface
 
class Test_M2MSecurity
 
class Test_M2MInterfaceImpl
 
class Test_M2MConnectionSecurityImpl
 
class Test_M2MConnectionHandlerPimpl_linux
 
class Test_M2MConnectionHandlerPimpl_mbed
 
class Test_M2MConnectionSecurityPimpl
 
class Test_M2MNsdlInterface
 
class Test_M2MConnectionHandlerPimpl_classic
 

Additional Inherited Members

- Protected Member Functions inherited from M2MObject
 M2MObject (const String &object_name, char *path, bool external_blockwise_store=false)
 Constructor. More...
 
M2MObjectoperator= (const M2MObject &)
 
 M2MObject (const M2MObject &)
 
 M2MObject (const M2MBase::lwm2m_parameters_s *static_res)
 Constructor. More...
 
virtual M2MBaseget_parent () const
 Returns the owner object. Can return NULL if the object has no parent.
 
- Protected Member Functions inherited from M2MBase
M2MBaseoperator= (const M2MBase &)
 
 M2MBase (const M2MBase &)
 
 M2MBase (const String &name, M2MBase::Mode mode, const String &resource_type, char *path, bool external_blockwise_store, bool multiple_instance, M2MBase::DataType type=M2MBase::OBJLINK)
 Constructor. More...
 
 M2MBase (const lwm2m_parameters_s *s)
 
virtual bool observation_to_be_sent (const m2m::Vector< uint16_t > &changed_instance_ids, uint16_t obs_number, bool send_object=false)
 An observation callback to be sent to the server due to a change in the observed parameter. More...
 
void set_base_type (M2MBase::BaseType type)
 Sets the base type for an object. More...
 
M2MReportHandler * create_report_handler ()
 Create Report Handler object. More...
 
void free_resources ()
 Delete the resource structures owned by this object. Note: this needs to be called separately from each subclass' destructor as this method uses a virtual method and the call needs to be done at same class which has the implementation of the pure virtual method.
 
void clear_notification_delivery_status () m2m_deprecated
 Clears the notification send status to initial state.
 
void get_observation_token (uint8_t *token, uint8_t &token_length) const
 Provides the observation token of the object. More...
 
void set_observation_token (const uint8_t *token, const uint8_t length)
 Sets the observation token value. More...
 
virtual void set_changed ()
 The data has changed and it needs to be updated into Device Management. Current implementation maintains the changed state only in M2MEndpoint. If any of the changes in an object changes the M2M registration structure, the information is propagated to M2MEndpoint using this interface.
 
void handle_observation (nsdl_s *nsdl, const sn_coap_hdr_s &received_coap_header, sn_coap_hdr_s &coap_response, M2MObservationHandler *observation_handler, sn_coap_msg_code_e &response_code)
 Handles subscription request. More...
 
void cancel_observation (M2MBase::MessageDeliveryStatus status=M2MBase::MESSAGE_STATUS_UNSUBSCRIBED, bool notify=true)
 Cancels the ongoing observation. More...
 
void start_observation (const sn_coap_hdr_s &received_coap_header, M2MObservationHandler *observation_handler)
 Start the observation. More...
 
- Static Protected Member Functions inherited from M2MBase
static void * memory_alloc (uint32_t size)
 Memory allocation required for libCoap. More...
 
static void memory_free (void *ptr)
 Memory free functions required for libCoap. More...
 
static char * alloc_string_copy (const char *source)
 Allocate and make a copy of given zero terminated string. This is functionally equivalent with strdup(). More...
 
static uint8_t * alloc_string_copy (const uint8_t *source, uint32_t size)
 Allocate (size + 1) amount of memory, copy size bytes into it and add zero termination. More...
 
static uint8_t * alloc_copy (const uint8_t *source, uint32_t size)
 Allocate (size) amount of memory, copy size bytes into it. More...
 
static bool validate_string_length (const String &string, size_t min_length, size_t max_length)
 
static bool validate_string_length (const char *string, size_t min_length, size_t max_length)
 
static bool build_path (StringBuffer< MAX_PATH_SIZE > &buffer, const char *s1, uint16_t i1, const char *s2, uint16_t i2)
 
static bool build_path (StringBuffer< MAX_PATH_SIZE_2 > &buffer, const char *s1, uint16_t i1, const char *s2)
 
static bool build_path (StringBuffer< MAX_PATH_SIZE_3 > &buffer, const char *s1, uint16_t i1, uint16_t i2)
 
static bool build_path (StringBuffer< MAX_PATH_SIZE_4 > &buffer, const char *s1, uint16_t i1)
 
static char * stringdup (const char *s)
 
static bool is_blockwise_needed (const nsdl_s *nsdl, uint32_t payload_len)
 Checks whether blockwise is needed to send resource value to server. More...
 

Detailed Description

This class represents an interface for the Security Object model of the LWM2M framework. It handles the security object instances and all corresponding resources.

Member Function Documentation

M2MObjectInstance* M2MSecurity::create_object_instance ( ServerType  server_type)

Creates a new object instance.

Parameters
server_typeServer type for new object instance.
Returns
M2MObjectInstance if created successfully, else NULL.
M2MObjectInstance* M2MSecurity::create_object_instance ( uint16_t  instance_id)

Creates a new object instance.

Parameters
instance_idInstance id for new object instance.
Returns
M2MObjectInstance if created successfully, else NULL.
M2MResource* M2MSecurity::create_resource ( SecurityResource  rescource,
uint32_t  value,
uint16_t  instance_id 
)

Creates a new resource for a given resource enum.

Parameters
rescourceWith this function, the following resources can be created: ' BootstrapServer', 'SecurityMode', 'SMSSecurityMode', 'M2MServerSMSNumber', 'ShortServerID', 'ClientHoldOffTime'.
valueThe value to be set on the resource, in integer format.
instance_idInstance id of the security instance where resource should be created.
Returns
M2MResource if created successfully, else NULL.
bool M2MSecurity::delete_resource ( SecurityResource  rescource,
uint16_t  instance_id 
)

Deletes a resource with a given resource enum. Mandatory resources cannot be deleted.

Parameters
resourceThe resource to be deleted.
instance_idInstance id of the security instance where resource should be deleted.
Returns
True if deleted, else false.
int32_t M2MSecurity::get_security_instance_id ( ServerType  server_type) const

Returns first bootstrap or lwm2m server security object instance id.

Parameters
server_typeWhich server type security instance to return.
Returns
Object instance id, or -1 if no such instance exists.
bool M2MSecurity::is_resource_present ( SecurityResource  resource,
uint16_t  instance_id 
) const

Returns whether a resource instance with a given resource enum exists or not.

Parameters
resourceResource enum.
instance_idInstance id of the security instance where resource should be checked.
Returns
True if at least one instance exists, else false.
int M2MSecurity::resource_value_buffer ( SecurityResource  resource,
uint8_t *&  data,
uint16_t  instance_id,
size_t *  buffer_len 
) const

Populates the data buffer and returns the size of the buffer.

Parameters
resourceWith this function, the following resources can return a value: 'PublicKey', 'ServerPublicKey', 'Secretkey', 'OpenCertificateChain', 'CloseCertificateChain' 'ReadDeviceCertificateChain'.
[OUT]dataA copy of the data buffer that contains the value. The caller is responsible for freeing this buffer.
instance_idInstance id of the security instance where resource value should be retrieve.
buffer_len[IN/OUT]Length of the buffer.
Returns
Error code, 0 on success otherwise < 0
uint32_t M2MSecurity::resource_value_buffer ( SecurityResource  resource,
const uint8_t *&  data,
uint16_t  instance_id 
) const

Returns a pointer to the value and size of the buffer.

Parameters
resourceWith this function, the following resources can return a value: 'PublicKey', 'ServerPublicKey', 'Secretkey'.
[OUT]dataA pointer to the data buffer that contains the value.
instance_idInstance id of the security instance where resource value should be retrieved.
Returns
The size of the populated buffer.
int M2MSecurity::resource_value_buffer_size ( SecurityResource  resource,
uint16_t  instance_id,
size_t *  buffer_len 
) const

Get a size of the buffer.

Parameters
resourceWith this function, the following resources can return the size: 'PublicKey', 'ServerPublicKey', 'Secretkey'.
instance_idInstance id of the security instance where resource value should be retrieved.
[OUT]buffer_lenThe size of the buffer.
Returns
Error code, 0 on success otherwise < 0
uint32_t M2MSecurity::resource_value_int ( SecurityResource  resource,
uint16_t  instance_id 
) const

Returns the value of a given resource name, in integer format.

Parameters
resourceWith this function, the following resources can return a value: 'BootstrapServer', 'SecurityMode', 'SMSSecurityMode', 'M2MServerSMSNumber', 'ShortServerID', 'ClientHoldOffTime'.
instance_idInstance id of the security instance where resource should be created.
Returns
The value associated with the resource. If the resource is not valid 0 is returned.
String M2MSecurity::resource_value_string ( SecurityResource  resource,
uint16_t  instance_id 
) const

Returns the value of a given resource enum, in string format.

Parameters
resourceWith this function, the following resources can return a value: 'M2MServerUri','SMSBindingKey', 'SMSBindingSecretKey'.
instance_idInstance id of the security instance where resource value should be retrieved.
Returns
The value associated with the resource. If the resource is not valid an empty string is returned.
ServerType M2MSecurity::server_type ( uint16_t  instance_id) const

Returns the type of the Security Object. It can be either Bootstrap or M2MServer.

Parameters
instance_idInstance id of the security instance where resource should be created.
Returns
ServerType The type of the Security Object.
bool M2MSecurity::set_resource_value ( SecurityResource  resource,
const String &  value,
uint16_t  instance_id 
)

Sets the value of a given resource enum.

Parameters
resourceWith this function, a value can be set for the following resources: 'M2MServerUri', 'SMSBindingKey', 'SMSBindingSecretKey'.
valueThe value to be set on the resource, in string format.
instance_idInstance id of the security instance where resource value should be set.
Returns
True if successfully set, else false.
bool M2MSecurity::set_resource_value ( SecurityResource  resource,
uint32_t  value,
uint16_t  instance_id 
)

Sets the value of a given resource enum.

Parameters
resourceWith this function, a value can be set for the following resourecs: 'BootstrapServer', 'SecurityMode', 'SMSSecurityMode', 'M2MServerSMSNumber', 'ShortServerID', 'ClientHoldOffTime'.
valueThe value to be set on the resource, in integer format.
instance_idInstance id of the security instance where resource value should be set.
Returns
True if successfully set, else false.
bool M2MSecurity::set_resource_value ( SecurityResource  resource,
const uint8_t *  value,
const uint16_t  length,
uint16_t  instance_id 
)

Sets the value of a given resource enum.

Parameters
resourceWith this function, a value can be set for the follwing resources: 'PublicKey', 'ServerPublicKey', 'Secretkey'.
valueThe value to be set on the resource, in uint8_t format.
lengthThe size of the buffer value to be set on the resource.
instance_idInstance id of the security instance where resource value should be set.
Returns
True if successfully set, else false.
uint16_t M2MSecurity::total_resource_count ( uint16_t  instance_id) const

Returns the total number of resources for a security object.

Parameters
instance_idInstance id of the security instance where resources should be counted.
Returns
The total number of resources.

The documentation for this class was generated from the following file: