/release/src/router/snmp/include/net-snmp/library/snmpusm.h
C Header | 238 lines | 185 code | 32 blank | 21 comment | 0 complexity | 157f7c1c31183687b6cec18da045b5c9 MD5 | raw file
- /*
- * snmpusm.h
- *
- * Header file for USM support.
- */
- #ifndef SNMPUSM_H
- #define SNMPUSM_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #define WILDCARDSTRING "*"
- /*
- * General.
- */
- #define USM_MAX_ID_LENGTH 1024 /* In bytes. */
- #define USM_MAX_SALT_LENGTH 128 /* In BITS. */
- #define USM_DES_SALT_LENGTH 64 /* In BITS. */
- #define USM_AES_SALT_LENGTH 128 /* In BITS. */
- #define USM_MAX_KEYEDHASH_LENGTH 128 /* In BITS. */
- #define USM_TIME_WINDOW 150
- #define USM_MD5_AND_SHA_AUTH_LEN 12 /* bytes */
- #define USM_MAX_AUTHSIZE USM_MD5_AND_SHA_AUTH_LEN
- #define USM_SEC_MODEL_NUMBER 3
- /*
- * Structures.
- */
- struct usmStateReference {
- char *usr_name;
- size_t usr_name_length;
- u_char *usr_engine_id;
- size_t usr_engine_id_length;
- oid *usr_auth_protocol;
- size_t usr_auth_protocol_length;
- u_char *usr_auth_key;
- size_t usr_auth_key_length;
- oid *usr_priv_protocol;
- size_t usr_priv_protocol_length;
- u_char *usr_priv_key;
- size_t usr_priv_key_length;
- u_int usr_sec_level;
- };
- /*
- * struct usmUser: a structure to represent a given user in a list
- */
- /*
- * Note: Any changes made to this structure need to be reflected in
- * the following functions:
- */
- struct usmUser;
- struct usmUser {
- u_char *engineID;
- size_t engineIDLen;
- char *name;
- char *secName;
- oid *cloneFrom;
- size_t cloneFromLen;
- oid *authProtocol;
- size_t authProtocolLen;
- u_char *authKey;
- size_t authKeyLen;
- oid *privProtocol;
- size_t privProtocolLen;
- u_char *privKey;
- size_t privKeyLen;
- u_char *userPublicString;
- int userStatus;
- int userStorageType;
- struct usmUser *next;
- struct usmUser *prev;
- };
- /*
- * Prototypes.
- */
- struct usmStateReference *usm_malloc_usmStateReference(void);
- void usm_free_usmStateReference(void *old);
- int usm_set_usmStateReference_name(struct usmStateReference
- *ref, char *name,
- size_t name_len);
- int usm_set_usmStateReference_engine_id(struct
- usmStateReference
- *ref,
- u_char * engine_id,
- size_t
- engine_id_len);
- int usm_set_usmStateReference_auth_protocol(struct
- usmStateReference
- *ref,
- oid *
- auth_protocol,
- size_t
- auth_protocol_len);
- int usm_set_usmStateReference_auth_key(struct
- usmStateReference
- *ref,
- u_char * auth_key,
- size_t
- auth_key_len);
- int usm_set_usmStateReference_priv_protocol(struct
- usmStateReference
- *ref,
- oid *
- priv_protocol,
- size_t
- priv_protocol_len);
- int usm_set_usmStateReference_priv_key(struct
- usmStateReference
- *ref,
- u_char * priv_key,
- size_t
- priv_key_len);
- int usm_set_usmStateReference_sec_level(struct
- usmStateReference
- *ref,
- int sec_level);
- #ifdef SNMP_TESTING_CODE
- void emergency_print(u_char * field, u_int length);
- #endif
- int asn_predict_int_length(int type, long number,
- size_t len);
- int asn_predict_length(int type, u_char * ptr,
- size_t u_char_len);
- int usm_set_salt(u_char * iv,
- size_t * iv_length,
- u_char * priv_salt,
- size_t priv_salt_length,
- u_char * msgSalt);
- int usm_parse_security_parameters(u_char * secParams,
- size_t remaining,
- u_char * secEngineID,
- size_t * secEngineIDLen,
- u_int * boots_uint,
- u_int * time_uint,
- char *secName,
- size_t * secNameLen,
- u_char * signature,
- size_t *
- signature_length,
- u_char * salt,
- size_t * salt_length,
- u_char ** data_ptr);
- int usm_check_and_update_timeliness(u_char * secEngineID,
- size_t secEngineIDLen,
- u_int boots_uint,
- u_int time_uint,
- int *error);
- SecmodOutMsg usm_secmod_generate_out_msg;
- SecmodOutMsg usm_secmod_generate_out_msg;
- SecmodInMsg usm_secmod_process_in_msg;
- int usm_generate_out_msg(int, u_char *, size_t, int, int,
- u_char *, size_t, char *, size_t,
- int, u_char *, size_t, void *,
- u_char *, size_t *, u_char **,
- size_t *);
- int usm_rgenerate_out_msg(int, u_char *, size_t, int, int,
- u_char *, size_t, char *, size_t,
- int, u_char *, size_t, void *,
- u_char **, size_t *, size_t *);
- int usm_process_in_msg(int, size_t, u_char *, int, int,
- u_char *, size_t, u_char *,
- size_t *, char *, size_t *,
- u_char **, size_t *, size_t *,
- void **, netsnmp_session *, u_char);
- int usm_check_secLevel(int level, struct usmUser *user);
- struct usmUser *usm_get_userList(void);
- struct usmUser *usm_get_user(u_char * engineID, size_t engineIDLen,
- char *name);
- struct usmUser *usm_get_user_from_list(u_char * engineID,
- size_t engineIDLen, char *name,
- struct usmUser *userList,
- int use_default);
- struct usmUser *usm_add_user(struct usmUser *user);
- struct usmUser *usm_add_user_to_list(struct usmUser *user,
- struct usmUser *userList);
- struct usmUser *usm_free_user(struct usmUser *user);
- struct usmUser *usm_create_user(void);
- struct usmUser *usm_create_initial_user(const char *name,
- const oid * authProtocol,
- size_t authProtocolLen,
- const oid * privProtocol,
- size_t privProtocolLen);
- struct usmUser *usm_cloneFrom_user(struct usmUser *from,
- struct usmUser *to);
- struct usmUser *usm_remove_user(struct usmUser *user);
- struct usmUser *usm_remove_user_from_list(struct usmUser *user,
- struct usmUser **userList);
- char *get_objid(char *line, oid ** optr, size_t * len);
- void usm_save_users(const char *token, const char *type);
- void usm_save_users_from_list(struct usmUser *user,
- const char *token,
- const char *type);
- void usm_save_user(struct usmUser *user, const char *token,
- const char *type);
- SNMPCallback usm_store_users;
- struct usmUser *usm_read_user(char *line);
- void usm_parse_config_usmUser(const char *token,
- char *line);
- void usm_set_password(const char *token, char *line);
- void usm_set_user_password(struct usmUser *user,
- const char *token, char *line);
- void init_usm(void);
- int init_usm_post_config(int majorid, int minorid,
- void *serverarg, void *clientarg);
- #ifdef __cplusplus
- }
- #endif
- #endif /* SNMPUSM_H */