| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- /*
- * snmpusm.h
- *
- * Header file for USM support.
- *
- * Portions of this file are copyrighted by:
- * Copyright (c) 2016 VMware, Inc. All rights reserved.
- * Use is subject to license terms specified in the COPYING file
- * distributed with the Net-SNMP package.
- */
- #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_HMAC128SHA224_AUTH_LEN 16 /* OPTIONAL */
- #define USM_HMAC192SHA256_AUTH_LEN 24 /* MUST */
- #define USM_HMAC256SHA384_AUTH_LEN 32 /* OPTIONAL */
- #define USM_HMAC384SHA512_AUTH_LEN 48 /* SHOULD */
- #define USM_MAX_AUTHSIZE USM_HMAC384SHA512_AUTH_LEN
- #define USM_SEC_MODEL_NUMBER SNMP_SEC_MODEL_USM
- /*
- * Structures.
- */
- struct usmStateReference;
- /*
- * 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_int flags;
- 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;
- u_char *authKeyKu;
- size_t authKeyKuLen;
- oid *privProtocol;
- size_t privProtocolLen;
- u_char *privKeyKu;
- size_t privKeyKuLen;
- 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;
- };
- #define USMUSER_FLAG_KEEP_MASTER_KEY 0x01
- /*
- * Prototypes.
- */
- NETSNMP_IMPORT
- int usm_extend_user_kul(struct usmUser *user,
- u_int privKeyBufSize);
- NETSNMP_IMPORT
- struct usmUser *usm_get_userList(void);
- NETSNMP_IMPORT
- struct usmUser *usm_get_user(const u_char *engineID, size_t engineIDLen,
- const char *name);
- NETSNMP_IMPORT
- struct usmUser *usm_add_user(struct usmUser *user);
- NETSNMP_IMPORT
- struct usmUser *usm_free_user(struct usmUser *user);
- NETSNMP_IMPORT
- struct usmUser *usm_create_user(void);
- NETSNMP_IMPORT
- struct usmUser *usm_cloneFrom_user(struct usmUser *from,
- struct usmUser *to);
- NETSNMP_IMPORT
- struct usmUser *usm_remove_user(struct usmUser *user);
- NETSNMP_IMPORT
- void usm_parse_config_usmUser(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);
- NETSNMP_IMPORT
- void shutdown_usm(void);
- NETSNMP_IMPORT
- int usm_lookup_auth_type(const char *str);
- NETSNMP_IMPORT
- const char *usm_lookup_auth_str(int value);
- NETSNMP_IMPORT
- oid *usm_get_auth_oid(int auth_type, size_t *oid_len);
- NETSNMP_IMPORT
- int usm_lookup_priv_type(const char *str);
- NETSNMP_IMPORT
- const char *usm_lookup_priv_str(int value);
- NETSNMP_IMPORT
- oid *usm_get_priv_oid(int priv_type, size_t *oid_len);
- #define USM_CREATE_USER_AUTH_DFLT -1
- #define USM_CREATE_USER_AUTH_NONE NETSNMP_USMAUTH_NONE
- #define USM_CREATE_USER_AUTH_MD5 NETSNMP_USMAUTH_HMACMD5
- #define USM_CREATE_USER_AUTH_SHA1 NETSNMP_USMAUTH_HMACSHA1
- #define USM_CREATE_USER_AUTH_SHA USM_CREATE_USER_AUTH_SHA1
- #define USM_CREATE_USER_AUTH_SHA512 NETSNMP_USMAUTH_HMAC384SHA512
- #define USM_CREATE_USER_AUTH_SHA384 NETSNMP_USMAUTH_HMAC256SHA384
- #define USM_CREATE_USER_AUTH_SHA256 NETSNMP_USMAUTH_HMAC192SHA256
- #define USM_CREATE_USER_AUTH_SHA224 NETSNMP_USMAUTH_HMAC128SHA224
- /** flags for variants fo priv algorithsm */
- #define USM_DES_FLAG_3 0x000100
- #define USM_AES_FLAG_192 0x000100
- #define USM_AES_FLAG_256 0x000200
- #define USM_AES_REEDER_FLAG 0x030000
- #define USM_AES_FLAG_CISCO 0x100000
- #define USM_PRIV_MASK_ALG 0x0000ff
- #define USM_PRIV_MASK_VARIANT 0x00ff00
- #define USM_CREATE_USER_PRIV_DFLT -1
- #define USM_CREATE_USER_PRIV_NONE 0
- #define USM_CREATE_USER_PRIV_DES 0x01
- #define USM_CREATE_USER_PRIV_3DES \
- (USM_CREATE_USER_PRIV_DES | USM_DES_FLAG_3)
- #define USM_CREATE_USER_PRIV_AES 0x02
- #define USM_CREATE_USER_PRIV_AES192 \
- (USM_CREATE_USER_PRIV_AES | USM_AES_FLAG_192)
- #define USM_CREATE_USER_PRIV_AES256 \
- (USM_CREATE_USER_PRIV_AES | USM_AES_FLAG_256)
- #define USM_CREATE_USER_PRIV_AES192_CISCO \
- (USM_CREATE_USER_PRIV_AES | USM_AES_FLAG_192 | USM_AES_FLAG_CISCO \
- | USM_AES_REEDER_FLAG)
- #define USM_CREATE_USER_PRIV_AES256_CISCO \
- (USM_CREATE_USER_PRIV_AES | USM_AES_FLAG_256 | USM_AES_FLAG_CISCO \
- | USM_AES_REEDER_FLAG)
- NETSNMP_IMPORT
- int usm_create_user_from_session(netsnmp_session * session);
- 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 *);
- #ifdef __cplusplus
- }
- #endif
- #endif /* SNMPUSM_H */
|