Anjay Lite
Loading...
Searching...
No Matches
security_object.h
Go to the documentation of this file.
1/*
2 * Copyright 2023-2025 AVSystem <avsystem@avsystem.com>
3 * AVSystem Anjay Lite LwM2M SDK
4 * All rights reserved.
5 *
6 * Licensed under AVSystem Anjay Lite LwM2M Client SDK - Non-Commercial License.
7 * See the attached LICENSE file for details.
8 */
9
10#include <anj/init.h>
11
12#ifndef ANJ_DM_SECURITY_OBJECT_H
13# define ANJ_DM_SECURITY_OBJECT_H
14
15# include <stdbool.h>
16# include <stddef.h>
17# include <stdint.h>
18
19# include <anj/defs.h>
20# include <anj/dm/core.h>
21
22# ifdef __cplusplus
23extern "C" {
24# endif
25
26# ifdef ANJ_WITH_DEFAULT_SECURITY_OBJ
27
28# ifdef ANJ_WITH_BOOTSTRAP
29# define ANJ_DM_SECURITY_OBJ_INSTANCES 2
30# else // ANJ_WITH_BOOTSTRAP
31# define ANJ_DM_SECURITY_OBJ_INSTANCES 1
32# endif // ANJ_WITH_BOOTSTRAP
33
34/*
35 * Security Object Instance context, used to store Instance specific data, don't
36 * modify directly.
37 */
52
57typedef enum {
58 ANJ_DM_SECURITY_PSK = 0, // Pre-Shared Key mode
59 ANJ_DM_SECURITY_RPK = 1, // Raw Public Key mode
60 ANJ_DM_SECURITY_CERTIFICATE = 2, // Certificate mode
61 ANJ_DM_SECURITY_NOSEC = 3, // NoSec mode
62 ANJ_DM_SECURITY_EST = 4, // Certificate mode with EST
64
94
95/*
96 * Complex structure of a whole Security Object entity context that holds the
97 * Object and its Instances that are linked to Static Data Model.
98 *
99 * User is expected to instantiate a structure of this type and not modify it
100 * directly throughout the LwM2M Client life.
101 */
113
121
132
146 anj_dm_security_obj_t *security_obj_ctx);
147
148# endif // ANJ_WITH_DEFAULT_SECURITY_OBJ
149
150# ifdef __cplusplus
151}
152# endif
153
154#endif // ANJ_DM_SECURITY_OBJECT_H
#define ANJ_SEC_OBJ_MAX_SERVER_PUBLIC_KEY_SIZE
Definition anj_config.h:124
#define ANJ_SEC_OBJ_MAX_SECRET_KEY_SIZE
Definition anj_config.h:133
#define ANJ_SEC_OBJ_MAX_PUBLIC_KEY_OR_IDENTITY_SIZE
Definition anj_config.h:115
struct anj_struct anj_t
Definition defs.h:133
#define ANJ_SERVER_URI_MAX_SIZE
Definition defs.h:147
uint16_t anj_iid_t
Definition defs.h:121
void anj_dm_security_obj_init(anj_dm_security_obj_t *security_obj_ctx)
anj_dm_security_mode_t
Definition security_object.h:57
@ ANJ_DM_SECURITY_CERTIFICATE
Definition security_object.h:60
@ ANJ_DM_SECURITY_NOSEC
Definition security_object.h:61
@ ANJ_DM_SECURITY_EST
Definition security_object.h:62
@ ANJ_DM_SECURITY_PSK
Definition security_object.h:58
@ ANJ_DM_SECURITY_RPK
Definition security_object.h:59
int anj_dm_security_obj_install(anj_t *anj, anj_dm_security_obj_t *security_obj_ctx)
int anj_dm_security_obj_add_instance(anj_dm_security_obj_t *security_obj_ctx, anj_dm_security_instance_init_t *instance)
#define ANJ_DM_SECURITY_OBJ_INSTANCES
Definition security_object.h:29
Definition defs.h:84
Definition defs.h:114
Definition security_object.h:68
uint16_t ssid
Definition security_object.h:86
const anj_iid_t * iid
Definition security_object.h:92
size_t server_public_key_size
Definition security_object.h:81
uint32_t client_hold_off_time
Definition security_object.h:89
size_t public_key_or_identity_size
Definition security_object.h:78
bool bootstrap_server
Definition security_object.h:73
const char * secret_key
Definition security_object.h:83
size_t secret_key_size
Definition security_object.h:84
const char * server_public_key
Definition security_object.h:80
const char * server_uri
Definition security_object.h:71
const char * public_key_or_identity
Definition security_object.h:77
anj_dm_security_mode_t security_mode
Definition security_object.h:75
Definition security_object.h:38
uint16_t ssid
Definition security_object.h:49
anj_iid_t iid
Definition security_object.h:50
size_t server_public_key_size
Definition security_object.h:45
uint32_t client_hold_off_time
Definition security_object.h:48
size_t public_key_or_identity_size
Definition security_object.h:43
int64_t security_mode
Definition security_object.h:41
bool bootstrap_server
Definition security_object.h:40
size_t secret_key_size
Definition security_object.h:47
Definition security_object.h:102
anj_dm_obj_t obj
Definition security_object.h:103
anj_iid_t new_instance_iid
Definition security_object.h:111
bool installed
Definition security_object.h:110