4
* Header file for USM support.
14
#define WILDCARDSTRING "*"
19
#define USM_MAX_ID_LENGTH 1024 /* In bytes. */
20
#define USM_MAX_SALT_LENGTH 128 /* In BITS. */
21
#define USM_DES_SALT_LENGTH 64 /* In BITS. */
22
#define USM_AES_SALT_LENGTH 128 /* In BITS. */
23
#define USM_MAX_KEYEDHASH_LENGTH 128 /* In BITS. */
25
#define USM_TIME_WINDOW 150
26
#define USM_MD5_AND_SHA_AUTH_LEN 12 /* bytes */
27
#define USM_MAX_AUTHSIZE USM_MD5_AND_SHA_AUTH_LEN
29
#define USM_SEC_MODEL_NUMBER 3
34
struct usmStateReference {
36
size_t usr_name_length;
37
u_char *usr_engine_id;
38
size_t usr_engine_id_length;
39
oid *usr_auth_protocol;
40
size_t usr_auth_protocol_length;
42
size_t usr_auth_key_length;
43
oid *usr_priv_protocol;
44
size_t usr_priv_protocol_length;
46
size_t usr_priv_key_length;
52
* struct usmUser: a structure to represent a given user in a list
55
* Note: Any changes made to this structure need to be reflected in
56
* the following functions:
68
size_t authProtocolLen;
72
size_t privProtocolLen;
75
u_char *userPublicString;
87
struct usmStateReference *usm_malloc_usmStateReference(void);
89
void usm_free_usmStateReference(void *old);
91
int usm_set_usmStateReference_name(struct usmStateReference
95
int usm_set_usmStateReference_engine_id(struct
102
int usm_set_usmStateReference_auth_protocol(struct
110
int usm_set_usmStateReference_auth_key(struct
117
int usm_set_usmStateReference_priv_protocol(struct
125
int usm_set_usmStateReference_priv_key(struct
132
int usm_set_usmStateReference_sec_level(struct
137
#ifdef SNMP_TESTING_CODE
138
void emergency_print(u_char * field, u_int length);
141
int asn_predict_int_length(int type, long number,
144
int asn_predict_length(int type, u_char * ptr,
147
int usm_set_salt(u_char * iv,
150
size_t priv_salt_length,
153
int usm_parse_security_parameters(u_char * secParams,
155
u_char * secEngineID,
156
size_t * secEngineIDLen,
165
size_t * salt_length,
168
int usm_check_and_update_timeliness(u_char * secEngineID,
169
size_t secEngineIDLen,
174
SecmodOutMsg usm_secmod_generate_out_msg;
175
SecmodOutMsg usm_secmod_generate_out_msg;
176
SecmodInMsg usm_secmod_process_in_msg;
177
int usm_generate_out_msg(int, u_char *, size_t, int, int,
178
u_char *, size_t, char *, size_t,
179
int, u_char *, size_t, void *,
180
u_char *, size_t *, u_char **,
182
int usm_rgenerate_out_msg(int, u_char *, size_t, int, int,
183
u_char *, size_t, char *, size_t,
184
int, u_char *, size_t, void *,
185
u_char **, size_t *, size_t *);
187
int usm_process_in_msg(int, size_t, u_char *, int, int,
188
u_char *, size_t, u_char *,
189
size_t *, char *, size_t *,
190
u_char **, size_t *, size_t *,
191
void **, netsnmp_session *, u_char);
193
int usm_check_secLevel(int level, struct usmUser *user);
194
struct usmUser *usm_get_userList(void);
195
struct usmUser *usm_get_user(u_char * engineID, size_t engineIDLen,
197
struct usmUser *usm_get_user_from_list(u_char * engineID,
198
size_t engineIDLen, char *name,
199
struct usmUser *userList,
201
struct usmUser *usm_add_user(struct usmUser *user);
202
struct usmUser *usm_add_user_to_list(struct usmUser *user,
203
struct usmUser *userList);
204
struct usmUser *usm_free_user(struct usmUser *user);
205
struct usmUser *usm_create_user(void);
206
struct usmUser *usm_create_initial_user(const char *name,
207
const oid * authProtocol,
208
size_t authProtocolLen,
209
const oid * privProtocol,
210
size_t privProtocolLen);
211
struct usmUser *usm_cloneFrom_user(struct usmUser *from,
213
struct usmUser *usm_remove_user(struct usmUser *user);
214
struct usmUser *usm_remove_user_from_list(struct usmUser *user,
215
struct usmUser **userList);
216
char *get_objid(char *line, oid ** optr, size_t * len);
217
void usm_save_users(const char *token, const char *type);
218
void usm_save_users_from_list(struct usmUser *user,
221
void usm_save_user(struct usmUser *user, const char *token,
223
SNMPCallback usm_store_users;
224
struct usmUser *usm_read_user(char *line);
225
void usm_parse_config_usmUser(const char *token,
228
void usm_set_password(const char *token, char *line);
229
void usm_set_user_password(struct usmUser *user,
230
const char *token, char *line);
232
int init_usm_post_config(int majorid, int minorid,
233
void *serverarg, void *clientarg);
234
int deinit_usm_post_config(int majorid, int minorid, void *serverarg,
236
void clear_user_list(void);
241
#endif /* SNMPUSM_H */