/usr/include/net-snmp/library/snmpusm.h is in libsnmp-dev 5.7.2~dfsg-8.1ubuntu3.3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 | /*
* snmpusm.h
*
* Header file for USM support.
*/
#ifndef SNMPUSM_H
#define SNMPUSM_H
#include <net-snmp/library/callback.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 SNMP_SEC_MODEL_USM
/*
* 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;
size_t userPublicStringLen;
int userStatus;
int userStorageType;
/* these are actually DH * pointers but only if openssl is avail. */
void *usmDHUserAuthKeyChange;
void *usmDHUserPrivKeyChange;
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);
int usm_clone_usmStateReference(struct usmStateReference *from,
struct usmStateReference **to);
#ifdef NETSNMP_ENABLE_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);
SecmodSessionCallback usm_open_session;
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);
NETSNMP_IMPORT
struct usmUser *usm_get_userList(void);
NETSNMP_IMPORT
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);
NETSNMP_IMPORT
struct usmUser *usm_add_user(struct usmUser *user);
struct usmUser *usm_add_user_to_list(struct usmUser *user,
struct usmUser *userList);
NETSNMP_IMPORT
struct usmUser *usm_free_user(struct usmUser *user);
NETSNMP_IMPORT
struct usmUser *usm_create_user(void);
NETSNMP_IMPORT
struct usmUser *usm_create_initial_user(const char *name,
const oid * authProtocol,
size_t authProtocolLen,
const oid * privProtocol,
size_t privProtocolLen);
NETSNMP_IMPORT
struct usmUser *usm_cloneFrom_user(struct usmUser *from,
struct usmUser *to);
NETSNMP_IMPORT
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);
NETSNMP_IMPORT
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);
NETSNMP_IMPORT
SNMPCallback usm_store_users;
struct usmUser *usm_read_user(const char *line);
NETSNMP_IMPORT
void usm_parse_config_usmUser(const char *token,
char *line);
void usm_set_password(const char *token, char *line);
NETSNMP_IMPORT
void usm_set_user_password(struct usmUser *user,
const char *token, char *line);
void init_usm(void);
NETSNMP_IMPORT
void init_usm_conf(const char *app);
int init_usm_post_config(int majorid, int minorid,
void *serverarg, void *clientarg);
int deinit_usm_post_config(int majorid, int minorid, void *serverarg,
void *clientarg);
NETSNMP_IMPORT
void clear_user_list(void);
NETSNMP_IMPORT
void shutdown_usm(void);
NETSNMP_IMPORT
int usm_create_user_from_session(netsnmp_session * session);
SecmodPostDiscovery usm_create_user_from_session_hook;
NETSNMP_IMPORT
void usm_parse_create_usmUser(const char *token,
char *line);
NETSNMP_IMPORT
const oid *get_default_authtype(size_t *);
NETSNMP_IMPORT
const oid *get_default_privtype(size_t *);
void snmpv3_authtype_conf(const char *word, char *cptr);
void snmpv3_privtype_conf(const char *word, char *cptr);
#ifdef __cplusplus
}
#endif
#endif /* SNMPUSM_H */
|