1*be42267cSmartijnSNMP-USER-BASED-SM-MIB DEFINITIONS ::= BEGIN 2*be42267cSmartijn 3*be42267cSmartijnIMPORTS 4*be42267cSmartijn MODULE-IDENTITY, OBJECT-TYPE, 5*be42267cSmartijn OBJECT-IDENTITY, 6*be42267cSmartijn snmpModules, Counter32 FROM SNMPv2-SMI 7*be42267cSmartijn TEXTUAL-CONVENTION, TestAndIncr, 8*be42267cSmartijn RowStatus, RowPointer, 9*be42267cSmartijn StorageType, AutonomousType FROM SNMPv2-TC 10*be42267cSmartijn MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF 11*be42267cSmartijn SnmpAdminString, SnmpEngineID, 12*be42267cSmartijn snmpAuthProtocols, snmpPrivProtocols FROM SNMP-FRAMEWORK-MIB; 13*be42267cSmartijn 14*be42267cSmartijnsnmpUsmMIB MODULE-IDENTITY 15*be42267cSmartijn LAST-UPDATED "200210160000Z" -- 16 Oct 2002, midnight 16*be42267cSmartijn ORGANIZATION "SNMPv3 Working Group" 17*be42267cSmartijn CONTACT-INFO "WG-email: snmpv3@lists.tislabs.com 18*be42267cSmartijn Subscribe: majordomo@lists.tislabs.com 19*be42267cSmartijn In msg body: subscribe snmpv3 20*be42267cSmartijn 21*be42267cSmartijn Chair: Russ Mundy 22*be42267cSmartijn Network Associates Laboratories 23*be42267cSmartijn postal: 15204 Omega Drive, Suite 300 24*be42267cSmartijn Rockville, MD 20850-4601 25*be42267cSmartijn USA 26*be42267cSmartijn email: mundy@tislabs.com 27*be42267cSmartijn 28*be42267cSmartijn phone: +1 301-947-7107 29*be42267cSmartijn 30*be42267cSmartijn Co-Chair: David Harrington 31*be42267cSmartijn Enterasys Networks 32*be42267cSmartijn Postal: 35 Industrial Way 33*be42267cSmartijn P. O. Box 5004 34*be42267cSmartijn Rochester, New Hampshire 03866-5005 35*be42267cSmartijn USA 36*be42267cSmartijn EMail: dbh@enterasys.com 37*be42267cSmartijn Phone: +1 603-337-2614 38*be42267cSmartijn 39*be42267cSmartijn Co-editor Uri Blumenthal 40*be42267cSmartijn Lucent Technologies 41*be42267cSmartijn postal: 67 Whippany Rd. 42*be42267cSmartijn Whippany, NJ 07981 43*be42267cSmartijn USA 44*be42267cSmartijn email: uri@lucent.com 45*be42267cSmartijn phone: +1-973-386-2163 46*be42267cSmartijn 47*be42267cSmartijn Co-editor: Bert Wijnen 48*be42267cSmartijn Lucent Technologies 49*be42267cSmartijn postal: Schagen 33 50*be42267cSmartijn 3461 GL Linschoten 51*be42267cSmartijn Netherlands 52*be42267cSmartijn email: bwijnen@lucent.com 53*be42267cSmartijn phone: +31-348-480-685 54*be42267cSmartijn " 55*be42267cSmartijn DESCRIPTION "The management information definitions for the 56*be42267cSmartijn SNMP User-based Security Model. 57*be42267cSmartijn 58*be42267cSmartijn Copyright (C) The Internet Society (2002). This 59*be42267cSmartijn version of this MIB module is part of RFC 3414; 60*be42267cSmartijn see the RFC itself for full legal notices. 61*be42267cSmartijn " 62*be42267cSmartijn-- Revision history 63*be42267cSmartijn 64*be42267cSmartijn REVISION "200210160000Z" -- 16 Oct 2002, midnight 65*be42267cSmartijn DESCRIPTION "Changes in this revision: 66*be42267cSmartijn - Updated references and contact info. 67*be42267cSmartijn - Clarification to usmUserCloneFrom DESCRIPTION 68*be42267cSmartijn clause 69*be42267cSmartijn - Fixed 'command responder' into 'command generator' 70*be42267cSmartijn in last para of DESCRIPTION clause of 71*be42267cSmartijn usmUserTable. 72*be42267cSmartijn This revision published as RFC3414. 73*be42267cSmartijn " 74*be42267cSmartijn REVISION "199901200000Z" -- 20 Jan 1999, midnight 75*be42267cSmartijn DESCRIPTION "Clarifications, published as RFC2574" 76*be42267cSmartijn 77*be42267cSmartijn REVISION "199711200000Z" -- 20 Nov 1997, midnight 78*be42267cSmartijn DESCRIPTION "Initial version, published as RFC2274" 79*be42267cSmartijn ::= { snmpModules 15 } 80*be42267cSmartijn 81*be42267cSmartijn-- Administrative assignments **************************************** 82*be42267cSmartijn 83*be42267cSmartijnusmMIBObjects OBJECT IDENTIFIER ::= { snmpUsmMIB 1 } 84*be42267cSmartijnusmMIBConformance OBJECT IDENTIFIER ::= { snmpUsmMIB 2 } 85*be42267cSmartijn 86*be42267cSmartijn-- Identification of Authentication and Privacy Protocols ************ 87*be42267cSmartijn 88*be42267cSmartijnusmNoAuthProtocol OBJECT-IDENTITY 89*be42267cSmartijn STATUS current 90*be42267cSmartijn DESCRIPTION "No Authentication Protocol." 91*be42267cSmartijn ::= { snmpAuthProtocols 1 } 92*be42267cSmartijn 93*be42267cSmartijnusmHMACMD5AuthProtocol OBJECT-IDENTITY 94*be42267cSmartijn STATUS current 95*be42267cSmartijn DESCRIPTION "The HMAC-MD5-96 Digest Authentication Protocol." 96*be42267cSmartijn REFERENCE "- H. Krawczyk, M. Bellare, R. Canetti HMAC: 97*be42267cSmartijn Keyed-Hashing for Message Authentication, 98*be42267cSmartijn RFC2104, Feb 1997. 99*be42267cSmartijn - Rivest, R., Message Digest Algorithm MD5, RFC1321. 100*be42267cSmartijn " 101*be42267cSmartijn ::= { snmpAuthProtocols 2 } 102*be42267cSmartijn 103*be42267cSmartijnusmHMACSHAAuthProtocol OBJECT-IDENTITY 104*be42267cSmartijn STATUS current 105*be42267cSmartijn DESCRIPTION "The HMAC-SHA-96 Digest Authentication Protocol." 106*be42267cSmartijn REFERENCE "- H. Krawczyk, M. Bellare, R. Canetti, HMAC: 107*be42267cSmartijn Keyed-Hashing for Message Authentication, 108*be42267cSmartijn RFC2104, Feb 1997. 109*be42267cSmartijn - Secure Hash Algorithm. NIST FIPS 180-1. 110*be42267cSmartijn " 111*be42267cSmartijn ::= { snmpAuthProtocols 3 } 112*be42267cSmartijn 113*be42267cSmartijnusmNoPrivProtocol OBJECT-IDENTITY 114*be42267cSmartijn STATUS current 115*be42267cSmartijn DESCRIPTION "No Privacy Protocol." 116*be42267cSmartijn ::= { snmpPrivProtocols 1 } 117*be42267cSmartijn 118*be42267cSmartijnusmDESPrivProtocol OBJECT-IDENTITY 119*be42267cSmartijn STATUS current 120*be42267cSmartijn DESCRIPTION "The CBC-DES Symmetric Encryption Protocol." 121*be42267cSmartijn REFERENCE "- Data Encryption Standard, National Institute of 122*be42267cSmartijn Standards and Technology. Federal Information 123*be42267cSmartijn Processing Standard (FIPS) Publication 46-1. 124*be42267cSmartijn 125*be42267cSmartijn Supersedes FIPS Publication 46, 126*be42267cSmartijn (January, 1977; reaffirmed January, 1988). 127*be42267cSmartijn 128*be42267cSmartijn - Data Encryption Algorithm, American National 129*be42267cSmartijn Standards Institute. ANSI X3.92-1981, 130*be42267cSmartijn (December, 1980). 131*be42267cSmartijn 132*be42267cSmartijn - DES Modes of Operation, National Institute of 133*be42267cSmartijn Standards and Technology. Federal Information 134*be42267cSmartijn Processing Standard (FIPS) Publication 81, 135*be42267cSmartijn (December, 1980). 136*be42267cSmartijn 137*be42267cSmartijn - Data Encryption Algorithm - Modes of Operation, 138*be42267cSmartijn American National Standards Institute. 139*be42267cSmartijn ANSI X3.106-1983, (May 1983). 140*be42267cSmartijn " 141*be42267cSmartijn ::= { snmpPrivProtocols 2 } 142*be42267cSmartijn 143*be42267cSmartijn-- Textual Conventions *********************************************** 144*be42267cSmartijn 145*be42267cSmartijnKeyChange ::= TEXTUAL-CONVENTION 146*be42267cSmartijn STATUS current 147*be42267cSmartijn DESCRIPTION 148*be42267cSmartijn "Every definition of an object with this syntax must identify 149*be42267cSmartijn a protocol P, a secret key K, and a hash algorithm H 150*be42267cSmartijn that produces output of L octets. 151*be42267cSmartijn 152*be42267cSmartijn The object's value is a manager-generated, partially-random 153*be42267cSmartijn value which, when modified, causes the value of the secret 154*be42267cSmartijn key K, to be modified via a one-way function. 155*be42267cSmartijn 156*be42267cSmartijn The value of an instance of this object is the concatenation 157*be42267cSmartijn of two components: first a 'random' component and then a 158*be42267cSmartijn 'delta' component. 159*be42267cSmartijn 160*be42267cSmartijn The lengths of the random and delta components 161*be42267cSmartijn are given by the corresponding value of the protocol P; 162*be42267cSmartijn if P requires K to be a fixed length, the length of both the 163*be42267cSmartijn random and delta components is that fixed length; if P 164*be42267cSmartijn allows the length of K to be variable up to a particular 165*be42267cSmartijn maximum length, the length of the random component is that 166*be42267cSmartijn maximum length and the length of the delta component is any 167*be42267cSmartijn length less than or equal to that maximum length. 168*be42267cSmartijn For example, usmHMACMD5AuthProtocol requires K to be a fixed 169*be42267cSmartijn length of 16 octets and L - of 16 octets. 170*be42267cSmartijn usmHMACSHAAuthProtocol requires K to be a fixed length of 171*be42267cSmartijn 20 octets and L - of 20 octets. Other protocols may define 172*be42267cSmartijn other sizes, as deemed appropriate. 173*be42267cSmartijn 174*be42267cSmartijn When a requester wants to change the old key K to a new 175*be42267cSmartijn key keyNew on a remote entity, the 'random' component is 176*be42267cSmartijn obtained from either a true random generator, or from a 177*be42267cSmartijn pseudorandom generator, and the 'delta' component is 178*be42267cSmartijn computed as follows: 179*be42267cSmartijn 180*be42267cSmartijn - a temporary variable is initialized to the existing value 181*be42267cSmartijn of K; 182*be42267cSmartijn - if the length of the keyNew is greater than L octets, 183*be42267cSmartijn then: 184*be42267cSmartijn - the random component is appended to the value of the 185*be42267cSmartijn temporary variable, and the result is input to the 186*be42267cSmartijn the hash algorithm H to produce a digest value, and 187*be42267cSmartijn the temporary variable is set to this digest value; 188*be42267cSmartijn - the value of the temporary variable is XOR-ed with 189*be42267cSmartijn the first (next) L-octets (16 octets in case of MD5) 190*be42267cSmartijn of the keyNew to produce the first (next) L-octets 191*be42267cSmartijn (16 octets in case of MD5) of the 'delta' component. 192*be42267cSmartijn - the above two steps are repeated until the unused 193*be42267cSmartijn portion of the keyNew component is L octets or less, 194*be42267cSmartijn - the random component is appended to the value of the 195*be42267cSmartijn temporary variable, and the result is input to the 196*be42267cSmartijn hash algorithm H to produce a digest value; 197*be42267cSmartijn - this digest value, truncated if necessary to be the same 198*be42267cSmartijn length as the unused portion of the keyNew, is XOR-ed 199*be42267cSmartijn with the unused portion of the keyNew to produce the 200*be42267cSmartijn (final portion of the) 'delta' component. 201*be42267cSmartijn 202*be42267cSmartijn For example, using MD5 as the hash algorithm H: 203*be42267cSmartijn 204*be42267cSmartijn iterations = (lenOfDelta - 1)/16; /* integer division */ 205*be42267cSmartijn temp = keyOld; 206*be42267cSmartijn for (i = 0; i < iterations; i++) { 207*be42267cSmartijn temp = MD5 (temp || random); 208*be42267cSmartijn delta[i*16 .. (i*16)+15] = 209*be42267cSmartijn temp XOR keyNew[i*16 .. (i*16)+15]; 210*be42267cSmartijn } 211*be42267cSmartijn temp = MD5 (temp || random); 212*be42267cSmartijn delta[i*16 .. lenOfDelta-1] = 213*be42267cSmartijn temp XOR keyNew[i*16 .. lenOfDelta-1]; 214*be42267cSmartijn 215*be42267cSmartijn The 'random' and 'delta' components are then concatenated as 216*be42267cSmartijn described above, and the resulting octet string is sent to 217*be42267cSmartijn the recipient as the new value of an instance of this object. 218*be42267cSmartijn 219*be42267cSmartijn At the receiver side, when an instance of this object is set 220*be42267cSmartijn to a new value, then a new value of K is computed as follows: 221*be42267cSmartijn 222*be42267cSmartijn - a temporary variable is initialized to the existing value 223*be42267cSmartijn of K; 224*be42267cSmartijn - if the length of the delta component is greater than L 225*be42267cSmartijn octets, then: 226*be42267cSmartijn - the random component is appended to the value of the 227*be42267cSmartijn temporary variable, and the result is input to the 228*be42267cSmartijn hash algorithm H to produce a digest value, and the 229*be42267cSmartijn temporary variable is set to this digest value; 230*be42267cSmartijn - the value of the temporary variable is XOR-ed with 231*be42267cSmartijn the first (next) L-octets (16 octets in case of MD5) 232*be42267cSmartijn of the delta component to produce the first (next) 233*be42267cSmartijn L-octets (16 octets in case of MD5) of the new value 234*be42267cSmartijn of K. 235*be42267cSmartijn - the above two steps are repeated until the unused 236*be42267cSmartijn portion of the delta component is L octets or less, 237*be42267cSmartijn - the random component is appended to the value of the 238*be42267cSmartijn temporary variable, and the result is input to the 239*be42267cSmartijn hash algorithm H to produce a digest value; 240*be42267cSmartijn - this digest value, truncated if necessary to be the same 241*be42267cSmartijn length as the unused portion of the delta component, is 242*be42267cSmartijn XOR-ed with the unused portion of the delta component to 243*be42267cSmartijn produce the (final portion of the) new value of K. 244*be42267cSmartijn 245*be42267cSmartijn For example, using MD5 as the hash algorithm H: 246*be42267cSmartijn 247*be42267cSmartijn iterations = (lenOfDelta - 1)/16; /* integer division */ 248*be42267cSmartijn temp = keyOld; 249*be42267cSmartijn for (i = 0; i < iterations; i++) { 250*be42267cSmartijn temp = MD5 (temp || random); 251*be42267cSmartijn keyNew[i*16 .. (i*16)+15] = 252*be42267cSmartijn temp XOR delta[i*16 .. (i*16)+15]; 253*be42267cSmartijn } 254*be42267cSmartijn temp = MD5 (temp || random); 255*be42267cSmartijn keyNew[i*16 .. lenOfDelta-1] = 256*be42267cSmartijn temp XOR delta[i*16 .. lenOfDelta-1]; 257*be42267cSmartijn 258*be42267cSmartijn The value of an object with this syntax, whenever it is 259*be42267cSmartijn retrieved by the management protocol, is always the zero 260*be42267cSmartijn length string. 261*be42267cSmartijn 262*be42267cSmartijn Note that the keyOld and keyNew are the localized keys. 263*be42267cSmartijn 264*be42267cSmartijn Note that it is probably wise that when an SNMP entity sends 265*be42267cSmartijn a SetRequest to change a key, that it keeps a copy of the old 266*be42267cSmartijn key until it has confirmed that the key change actually 267*be42267cSmartijn succeeded. 268*be42267cSmartijn " 269*be42267cSmartijn SYNTAX OCTET STRING 270*be42267cSmartijn 271*be42267cSmartijn-- Statistics for the User-based Security Model ********************** 272*be42267cSmartijn 273*be42267cSmartijnusmStats OBJECT IDENTIFIER ::= { usmMIBObjects 1 } 274*be42267cSmartijn 275*be42267cSmartijnusmStatsUnsupportedSecLevels OBJECT-TYPE 276*be42267cSmartijn SYNTAX Counter32 277*be42267cSmartijn MAX-ACCESS read-only 278*be42267cSmartijn STATUS current 279*be42267cSmartijn DESCRIPTION "The total number of packets received by the SNMP 280*be42267cSmartijn engine which were dropped because they requested a 281*be42267cSmartijn securityLevel that was unknown to the SNMP engine 282*be42267cSmartijn or otherwise unavailable. 283*be42267cSmartijn " 284*be42267cSmartijn ::= { usmStats 1 } 285*be42267cSmartijn 286*be42267cSmartijnusmStatsNotInTimeWindows OBJECT-TYPE 287*be42267cSmartijn SYNTAX Counter32 288*be42267cSmartijn MAX-ACCESS read-only 289*be42267cSmartijn STATUS current 290*be42267cSmartijn DESCRIPTION "The total number of packets received by the SNMP 291*be42267cSmartijn engine which were dropped because they appeared 292*be42267cSmartijn outside of the authoritative SNMP engine's window. 293*be42267cSmartijn " 294*be42267cSmartijn ::= { usmStats 2 } 295*be42267cSmartijn 296*be42267cSmartijnusmStatsUnknownUserNames OBJECT-TYPE 297*be42267cSmartijn SYNTAX Counter32 298*be42267cSmartijn MAX-ACCESS read-only 299*be42267cSmartijn STATUS current 300*be42267cSmartijn DESCRIPTION "The total number of packets received by the SNMP 301*be42267cSmartijn engine which were dropped because they referenced a 302*be42267cSmartijn user that was not known to the SNMP engine. 303*be42267cSmartijn " 304*be42267cSmartijn ::= { usmStats 3 } 305*be42267cSmartijn 306*be42267cSmartijnusmStatsUnknownEngineIDs OBJECT-TYPE 307*be42267cSmartijn SYNTAX Counter32 308*be42267cSmartijn MAX-ACCESS read-only 309*be42267cSmartijn STATUS current 310*be42267cSmartijn DESCRIPTION "The total number of packets received by the SNMP 311*be42267cSmartijn engine which were dropped because they referenced an 312*be42267cSmartijn snmpEngineID that was not known to the SNMP engine. 313*be42267cSmartijn " 314*be42267cSmartijn ::= { usmStats 4 } 315*be42267cSmartijn 316*be42267cSmartijnusmStatsWrongDigests OBJECT-TYPE 317*be42267cSmartijn SYNTAX Counter32 318*be42267cSmartijn MAX-ACCESS read-only 319*be42267cSmartijn STATUS current 320*be42267cSmartijn DESCRIPTION "The total number of packets received by the SNMP 321*be42267cSmartijn engine which were dropped because they didn't 322*be42267cSmartijn contain the expected digest value. 323*be42267cSmartijn " 324*be42267cSmartijn ::= { usmStats 5 } 325*be42267cSmartijn 326*be42267cSmartijnusmStatsDecryptionErrors OBJECT-TYPE 327*be42267cSmartijn SYNTAX Counter32 328*be42267cSmartijn MAX-ACCESS read-only 329*be42267cSmartijn STATUS current 330*be42267cSmartijn DESCRIPTION "The total number of packets received by the SNMP 331*be42267cSmartijn engine which were dropped because they could not be 332*be42267cSmartijn decrypted. 333*be42267cSmartijn " 334*be42267cSmartijn ::= { usmStats 6 } 335*be42267cSmartijn 336*be42267cSmartijn-- The usmUser Group ************************************************ 337*be42267cSmartijn 338*be42267cSmartijnusmUser OBJECT IDENTIFIER ::= { usmMIBObjects 2 } 339*be42267cSmartijn 340*be42267cSmartijnusmUserSpinLock OBJECT-TYPE 341*be42267cSmartijn SYNTAX TestAndIncr 342*be42267cSmartijn MAX-ACCESS read-write 343*be42267cSmartijn STATUS current 344*be42267cSmartijn DESCRIPTION "An advisory lock used to allow several cooperating 345*be42267cSmartijn Command Generator Applications to coordinate their 346*be42267cSmartijn use of facilities to alter secrets in the 347*be42267cSmartijn usmUserTable. 348*be42267cSmartijn " 349*be42267cSmartijn ::= { usmUser 1 } 350*be42267cSmartijn 351*be42267cSmartijn-- The table of valid users for the User-based Security Model ******** 352*be42267cSmartijn 353*be42267cSmartijnusmUserTable OBJECT-TYPE 354*be42267cSmartijn SYNTAX SEQUENCE OF UsmUserEntry 355*be42267cSmartijn MAX-ACCESS not-accessible 356*be42267cSmartijn STATUS current 357*be42267cSmartijn DESCRIPTION "The table of users configured in the SNMP engine's 358*be42267cSmartijn Local Configuration Datastore (LCD). 359*be42267cSmartijn 360*be42267cSmartijn To create a new user (i.e., to instantiate a new 361*be42267cSmartijn conceptual row in this table), it is recommended to 362*be42267cSmartijn follow this procedure: 363*be42267cSmartijn 364*be42267cSmartijn 1) GET(usmUserSpinLock.0) and save in sValue. 365*be42267cSmartijn 366*be42267cSmartijn 2) SET(usmUserSpinLock.0=sValue, 367*be42267cSmartijn usmUserCloneFrom=templateUser, 368*be42267cSmartijn usmUserStatus=createAndWait) 369*be42267cSmartijn You should use a template user to clone from 370*be42267cSmartijn which has the proper auth/priv protocol defined. 371*be42267cSmartijn 372*be42267cSmartijn If the new user is to use privacy: 373*be42267cSmartijn 374*be42267cSmartijn 3) generate the keyChange value based on the secret 375*be42267cSmartijn privKey of the clone-from user and the secret key 376*be42267cSmartijn to be used for the new user. Let us call this 377*be42267cSmartijn pkcValue. 378*be42267cSmartijn 4) GET(usmUserSpinLock.0) and save in sValue. 379*be42267cSmartijn 5) SET(usmUserSpinLock.0=sValue, 380*be42267cSmartijn usmUserPrivKeyChange=pkcValue 381*be42267cSmartijn usmUserPublic=randomValue1) 382*be42267cSmartijn 6) GET(usmUserPulic) and check it has randomValue1. 383*be42267cSmartijn If not, repeat steps 4-6. 384*be42267cSmartijn 385*be42267cSmartijn If the new user will never use privacy: 386*be42267cSmartijn 387*be42267cSmartijn 7) SET(usmUserPrivProtocol=usmNoPrivProtocol) 388*be42267cSmartijn 389*be42267cSmartijn If the new user is to use authentication: 390*be42267cSmartijn 391*be42267cSmartijn 8) generate the keyChange value based on the secret 392*be42267cSmartijn authKey of the clone-from user and the secret key 393*be42267cSmartijn to be used for the new user. Let us call this 394*be42267cSmartijn akcValue. 395*be42267cSmartijn 9) GET(usmUserSpinLock.0) and save in sValue. 396*be42267cSmartijn 10) SET(usmUserSpinLock.0=sValue, 397*be42267cSmartijn usmUserAuthKeyChange=akcValue 398*be42267cSmartijn usmUserPublic=randomValue2) 399*be42267cSmartijn 11) GET(usmUserPulic) and check it has randomValue2. 400*be42267cSmartijn If not, repeat steps 9-11. 401*be42267cSmartijn 402*be42267cSmartijn If the new user will never use authentication: 403*be42267cSmartijn 404*be42267cSmartijn 12) SET(usmUserAuthProtocol=usmNoAuthProtocol) 405*be42267cSmartijn 406*be42267cSmartijn Finally, activate the new user: 407*be42267cSmartijn 408*be42267cSmartijn 13) SET(usmUserStatus=active) 409*be42267cSmartijn 410*be42267cSmartijn The new user should now be available and ready to be 411*be42267cSmartijn used for SNMPv3 communication. Note however that access 412*be42267cSmartijn to MIB data must be provided via configuration of the 413*be42267cSmartijn SNMP-VIEW-BASED-ACM-MIB. 414*be42267cSmartijn 415*be42267cSmartijn The use of usmUserSpinlock is to avoid conflicts with 416*be42267cSmartijn another SNMP command generator application which may 417*be42267cSmartijn also be acting on the usmUserTable. 418*be42267cSmartijn " 419*be42267cSmartijn ::= { usmUser 2 } 420*be42267cSmartijn 421*be42267cSmartijnusmUserEntry OBJECT-TYPE 422*be42267cSmartijn SYNTAX UsmUserEntry 423*be42267cSmartijn MAX-ACCESS not-accessible 424*be42267cSmartijn STATUS current 425*be42267cSmartijn DESCRIPTION "A user configured in the SNMP engine's Local 426*be42267cSmartijn Configuration Datastore (LCD) for the User-based 427*be42267cSmartijn Security Model. 428*be42267cSmartijn " 429*be42267cSmartijn INDEX { usmUserEngineID, 430*be42267cSmartijn usmUserName 431*be42267cSmartijn } 432*be42267cSmartijn ::= { usmUserTable 1 } 433*be42267cSmartijn 434*be42267cSmartijnUsmUserEntry ::= SEQUENCE 435*be42267cSmartijn { 436*be42267cSmartijn usmUserEngineID SnmpEngineID, 437*be42267cSmartijn usmUserName SnmpAdminString, 438*be42267cSmartijn usmUserSecurityName SnmpAdminString, 439*be42267cSmartijn usmUserCloneFrom RowPointer, 440*be42267cSmartijn usmUserAuthProtocol AutonomousType, 441*be42267cSmartijn usmUserAuthKeyChange KeyChange, 442*be42267cSmartijn usmUserOwnAuthKeyChange KeyChange, 443*be42267cSmartijn usmUserPrivProtocol AutonomousType, 444*be42267cSmartijn usmUserPrivKeyChange KeyChange, 445*be42267cSmartijn usmUserOwnPrivKeyChange KeyChange, 446*be42267cSmartijn usmUserPublic OCTET STRING, 447*be42267cSmartijn usmUserStorageType StorageType, 448*be42267cSmartijn usmUserStatus RowStatus 449*be42267cSmartijn } 450*be42267cSmartijn 451*be42267cSmartijnusmUserEngineID OBJECT-TYPE 452*be42267cSmartijn SYNTAX SnmpEngineID 453*be42267cSmartijn MAX-ACCESS not-accessible 454*be42267cSmartijn STATUS current 455*be42267cSmartijn DESCRIPTION "An SNMP engine's administratively-unique identifier. 456*be42267cSmartijn 457*be42267cSmartijn In a simple agent, this value is always that agent's 458*be42267cSmartijn own snmpEngineID value. 459*be42267cSmartijn 460*be42267cSmartijn The value can also take the value of the snmpEngineID 461*be42267cSmartijn of a remote SNMP engine with which this user can 462*be42267cSmartijn communicate. 463*be42267cSmartijn " 464*be42267cSmartijn ::= { usmUserEntry 1 } 465*be42267cSmartijn 466*be42267cSmartijnusmUserName OBJECT-TYPE 467*be42267cSmartijn SYNTAX SnmpAdminString (SIZE(1..32)) 468*be42267cSmartijn MAX-ACCESS not-accessible 469*be42267cSmartijn STATUS current 470*be42267cSmartijn DESCRIPTION "A human readable string representing the name of 471*be42267cSmartijn the user. 472*be42267cSmartijn 473*be42267cSmartijn This is the (User-based Security) Model dependent 474*be42267cSmartijn security ID. 475*be42267cSmartijn " 476*be42267cSmartijn ::= { usmUserEntry 2 } 477*be42267cSmartijn 478*be42267cSmartijnusmUserSecurityName OBJECT-TYPE 479*be42267cSmartijn SYNTAX SnmpAdminString 480*be42267cSmartijn MAX-ACCESS read-only 481*be42267cSmartijn STATUS current 482*be42267cSmartijn DESCRIPTION "A human readable string representing the user in 483*be42267cSmartijn Security Model independent format. 484*be42267cSmartijn 485*be42267cSmartijn The default transformation of the User-based Security 486*be42267cSmartijn Model dependent security ID to the securityName and 487*be42267cSmartijn vice versa is the identity function so that the 488*be42267cSmartijn securityName is the same as the userName. 489*be42267cSmartijn " 490*be42267cSmartijn ::= { usmUserEntry 3 } 491*be42267cSmartijn 492*be42267cSmartijnusmUserCloneFrom OBJECT-TYPE 493*be42267cSmartijn SYNTAX RowPointer 494*be42267cSmartijn MAX-ACCESS read-create 495*be42267cSmartijn STATUS current 496*be42267cSmartijn DESCRIPTION "A pointer to another conceptual row in this 497*be42267cSmartijn usmUserTable. The user in this other conceptual 498*be42267cSmartijn row is called the clone-from user. 499*be42267cSmartijn 500*be42267cSmartijn When a new user is created (i.e., a new conceptual 501*be42267cSmartijn row is instantiated in this table), the privacy and 502*be42267cSmartijn authentication parameters of the new user must be 503*be42267cSmartijn cloned from its clone-from user. These parameters are: 504*be42267cSmartijn - authentication protocol (usmUserAuthProtocol) 505*be42267cSmartijn - privacy protocol (usmUserPrivProtocol) 506*be42267cSmartijn They will be copied regardless of what the current 507*be42267cSmartijn value is. 508*be42267cSmartijn 509*be42267cSmartijn Cloning also causes the initial values of the secret 510*be42267cSmartijn authentication key (authKey) and the secret encryption 511*be42267cSmartijn 512*be42267cSmartijn key (privKey) of the new user to be set to the same 513*be42267cSmartijn values as the corresponding secrets of the clone-from 514*be42267cSmartijn user to allow the KeyChange process to occur as 515*be42267cSmartijn required during user creation. 516*be42267cSmartijn 517*be42267cSmartijn The first time an instance of this object is set by 518*be42267cSmartijn a management operation (either at or after its 519*be42267cSmartijn instantiation), the cloning process is invoked. 520*be42267cSmartijn Subsequent writes are successful but invoke no 521*be42267cSmartijn action to be taken by the receiver. 522*be42267cSmartijn The cloning process fails with an 'inconsistentName' 523*be42267cSmartijn error if the conceptual row representing the 524*be42267cSmartijn clone-from user does not exist or is not in an active 525*be42267cSmartijn state when the cloning process is invoked. 526*be42267cSmartijn 527*be42267cSmartijn When this object is read, the ZeroDotZero OID 528*be42267cSmartijn is returned. 529*be42267cSmartijn " 530*be42267cSmartijn ::= { usmUserEntry 4 } 531*be42267cSmartijn 532*be42267cSmartijnusmUserAuthProtocol OBJECT-TYPE 533*be42267cSmartijn SYNTAX AutonomousType 534*be42267cSmartijn MAX-ACCESS read-create 535*be42267cSmartijn STATUS current 536*be42267cSmartijn DESCRIPTION "An indication of whether messages sent on behalf of 537*be42267cSmartijn this user to/from the SNMP engine identified by 538*be42267cSmartijn usmUserEngineID, can be authenticated, and if so, 539*be42267cSmartijn the type of authentication protocol which is used. 540*be42267cSmartijn 541*be42267cSmartijn An instance of this object is created concurrently 542*be42267cSmartijn with the creation of any other object instance for 543*be42267cSmartijn the same user (i.e., as part of the processing of 544*be42267cSmartijn the set operation which creates the first object 545*be42267cSmartijn instance in the same conceptual row). 546*be42267cSmartijn 547*be42267cSmartijn If an initial set operation (i.e. at row creation time) 548*be42267cSmartijn tries to set a value for an unknown or unsupported 549*be42267cSmartijn protocol, then a 'wrongValue' error must be returned. 550*be42267cSmartijn 551*be42267cSmartijn The value will be overwritten/set when a set operation 552*be42267cSmartijn is performed on the corresponding instance of 553*be42267cSmartijn usmUserCloneFrom. 554*be42267cSmartijn 555*be42267cSmartijn Once instantiated, the value of such an instance of 556*be42267cSmartijn this object can only be changed via a set operation to 557*be42267cSmartijn the value of the usmNoAuthProtocol. 558*be42267cSmartijn 559*be42267cSmartijn If a set operation tries to change the value of an 560*be42267cSmartijn 561*be42267cSmartijn existing instance of this object to any value other 562*be42267cSmartijn than usmNoAuthProtocol, then an 'inconsistentValue' 563*be42267cSmartijn error must be returned. 564*be42267cSmartijn 565*be42267cSmartijn If a set operation tries to set the value to the 566*be42267cSmartijn usmNoAuthProtocol while the usmUserPrivProtocol value 567*be42267cSmartijn in the same row is not equal to usmNoPrivProtocol, 568*be42267cSmartijn then an 'inconsistentValue' error must be returned. 569*be42267cSmartijn That means that an SNMP command generator application 570*be42267cSmartijn must first ensure that the usmUserPrivProtocol is set 571*be42267cSmartijn to the usmNoPrivProtocol value before it can set 572*be42267cSmartijn the usmUserAuthProtocol value to usmNoAuthProtocol. 573*be42267cSmartijn " 574*be42267cSmartijn DEFVAL { usmNoAuthProtocol } 575*be42267cSmartijn ::= { usmUserEntry 5 } 576*be42267cSmartijn 577*be42267cSmartijnusmUserAuthKeyChange OBJECT-TYPE 578*be42267cSmartijn SYNTAX KeyChange -- typically (SIZE (0 | 32)) for HMACMD5 579*be42267cSmartijn -- typically (SIZE (0 | 40)) for HMACSHA 580*be42267cSmartijn MAX-ACCESS read-create 581*be42267cSmartijn STATUS current 582*be42267cSmartijn DESCRIPTION "An object, which when modified, causes the secret 583*be42267cSmartijn authentication key used for messages sent on behalf 584*be42267cSmartijn of this user to/from the SNMP engine identified by 585*be42267cSmartijn usmUserEngineID, to be modified via a one-way 586*be42267cSmartijn function. 587*be42267cSmartijn 588*be42267cSmartijn The associated protocol is the usmUserAuthProtocol. 589*be42267cSmartijn The associated secret key is the user's secret 590*be42267cSmartijn authentication key (authKey). The associated hash 591*be42267cSmartijn algorithm is the algorithm used by the user's 592*be42267cSmartijn usmUserAuthProtocol. 593*be42267cSmartijn 594*be42267cSmartijn When creating a new user, it is an 'inconsistentName' 595*be42267cSmartijn error for a set operation to refer to this object 596*be42267cSmartijn unless it is previously or concurrently initialized 597*be42267cSmartijn through a set operation on the corresponding instance 598*be42267cSmartijn of usmUserCloneFrom. 599*be42267cSmartijn 600*be42267cSmartijn When the value of the corresponding usmUserAuthProtocol 601*be42267cSmartijn is usmNoAuthProtocol, then a set is successful, but 602*be42267cSmartijn effectively is a no-op. 603*be42267cSmartijn 604*be42267cSmartijn When this object is read, the zero-length (empty) 605*be42267cSmartijn string is returned. 606*be42267cSmartijn 607*be42267cSmartijn The recommended way to do a key change is as follows: 608*be42267cSmartijn 609*be42267cSmartijn 1) GET(usmUserSpinLock.0) and save in sValue. 610*be42267cSmartijn 2) generate the keyChange value based on the old 611*be42267cSmartijn (existing) secret key and the new secret key, 612*be42267cSmartijn let us call this kcValue. 613*be42267cSmartijn 614*be42267cSmartijn If you do the key change on behalf of another user: 615*be42267cSmartijn 616*be42267cSmartijn 3) SET(usmUserSpinLock.0=sValue, 617*be42267cSmartijn usmUserAuthKeyChange=kcValue 618*be42267cSmartijn usmUserPublic=randomValue) 619*be42267cSmartijn 620*be42267cSmartijn If you do the key change for yourself: 621*be42267cSmartijn 622*be42267cSmartijn 4) SET(usmUserSpinLock.0=sValue, 623*be42267cSmartijn usmUserOwnAuthKeyChange=kcValue 624*be42267cSmartijn usmUserPublic=randomValue) 625*be42267cSmartijn 626*be42267cSmartijn If you get a response with error-status of noError, 627*be42267cSmartijn then the SET succeeded and the new key is active. 628*be42267cSmartijn If you do not get a response, then you can issue a 629*be42267cSmartijn GET(usmUserPublic) and check if the value is equal 630*be42267cSmartijn to the randomValue you did send in the SET. If so, then 631*be42267cSmartijn the key change succeeded and the new key is active 632*be42267cSmartijn (probably the response got lost). If not, then the SET 633*be42267cSmartijn request probably never reached the target and so you 634*be42267cSmartijn can start over with the procedure above. 635*be42267cSmartijn " 636*be42267cSmartijn DEFVAL { ''H } -- the empty string 637*be42267cSmartijn ::= { usmUserEntry 6 } 638*be42267cSmartijn 639*be42267cSmartijnusmUserOwnAuthKeyChange OBJECT-TYPE 640*be42267cSmartijn SYNTAX KeyChange -- typically (SIZE (0 | 32)) for HMACMD5 641*be42267cSmartijn -- typically (SIZE (0 | 40)) for HMACSHA 642*be42267cSmartijn MAX-ACCESS read-create 643*be42267cSmartijn STATUS current 644*be42267cSmartijn DESCRIPTION "Behaves exactly as usmUserAuthKeyChange, with one 645*be42267cSmartijn notable difference: in order for the set operation 646*be42267cSmartijn to succeed, the usmUserName of the operation 647*be42267cSmartijn requester must match the usmUserName that 648*be42267cSmartijn indexes the row which is targeted by this 649*be42267cSmartijn operation. 650*be42267cSmartijn In addition, the USM security model must be 651*be42267cSmartijn used for this operation. 652*be42267cSmartijn 653*be42267cSmartijn The idea here is that access to this column can be 654*be42267cSmartijn public, since it will only allow a user to change 655*be42267cSmartijn his own secret authentication key (authKey). 656*be42267cSmartijn Note that this can only be done once the row is active. 657*be42267cSmartijn 658*be42267cSmartijn When a set is received and the usmUserName of the 659*be42267cSmartijn requester is not the same as the umsUserName that 660*be42267cSmartijn indexes the row which is targeted by this operation, 661*be42267cSmartijn then a 'noAccess' error must be returned. 662*be42267cSmartijn 663*be42267cSmartijn When a set is received and the security model in use 664*be42267cSmartijn is not USM, then a 'noAccess' error must be returned. 665*be42267cSmartijn " 666*be42267cSmartijn DEFVAL { ''H } -- the empty string 667*be42267cSmartijn ::= { usmUserEntry 7 } 668*be42267cSmartijn 669*be42267cSmartijnusmUserPrivProtocol OBJECT-TYPE 670*be42267cSmartijn SYNTAX AutonomousType 671*be42267cSmartijn MAX-ACCESS read-create 672*be42267cSmartijn STATUS current 673*be42267cSmartijn DESCRIPTION "An indication of whether messages sent on behalf of 674*be42267cSmartijn this user to/from the SNMP engine identified by 675*be42267cSmartijn usmUserEngineID, can be protected from disclosure, 676*be42267cSmartijn and if so, the type of privacy protocol which is used. 677*be42267cSmartijn 678*be42267cSmartijn An instance of this object is created concurrently 679*be42267cSmartijn with the creation of any other object instance for 680*be42267cSmartijn the same user (i.e., as part of the processing of 681*be42267cSmartijn the set operation which creates the first object 682*be42267cSmartijn instance in the same conceptual row). 683*be42267cSmartijn 684*be42267cSmartijn If an initial set operation (i.e. at row creation time) 685*be42267cSmartijn tries to set a value for an unknown or unsupported 686*be42267cSmartijn protocol, then a 'wrongValue' error must be returned. 687*be42267cSmartijn 688*be42267cSmartijn The value will be overwritten/set when a set operation 689*be42267cSmartijn is performed on the corresponding instance of 690*be42267cSmartijn usmUserCloneFrom. 691*be42267cSmartijn 692*be42267cSmartijn Once instantiated, the value of such an instance of 693*be42267cSmartijn this object can only be changed via a set operation to 694*be42267cSmartijn the value of the usmNoPrivProtocol. 695*be42267cSmartijn 696*be42267cSmartijn If a set operation tries to change the value of an 697*be42267cSmartijn existing instance of this object to any value other 698*be42267cSmartijn than usmNoPrivProtocol, then an 'inconsistentValue' 699*be42267cSmartijn error must be returned. 700*be42267cSmartijn 701*be42267cSmartijn Note that if any privacy protocol is used, then you 702*be42267cSmartijn must also use an authentication protocol. In other 703*be42267cSmartijn words, if usmUserPrivProtocol is set to anything else 704*be42267cSmartijn than usmNoPrivProtocol, then the corresponding instance 705*be42267cSmartijn of usmUserAuthProtocol cannot have a value of 706*be42267cSmartijn 707*be42267cSmartijn usmNoAuthProtocol. If it does, then an 708*be42267cSmartijn 'inconsistentValue' error must be returned. 709*be42267cSmartijn " 710*be42267cSmartijn DEFVAL { usmNoPrivProtocol } 711*be42267cSmartijn ::= { usmUserEntry 8 } 712*be42267cSmartijn 713*be42267cSmartijnusmUserPrivKeyChange OBJECT-TYPE 714*be42267cSmartijn SYNTAX KeyChange -- typically (SIZE (0 | 32)) for DES 715*be42267cSmartijn MAX-ACCESS read-create 716*be42267cSmartijn STATUS current 717*be42267cSmartijn DESCRIPTION "An object, which when modified, causes the secret 718*be42267cSmartijn encryption key used for messages sent on behalf 719*be42267cSmartijn of this user to/from the SNMP engine identified by 720*be42267cSmartijn usmUserEngineID, to be modified via a one-way 721*be42267cSmartijn function. 722*be42267cSmartijn 723*be42267cSmartijn The associated protocol is the usmUserPrivProtocol. 724*be42267cSmartijn The associated secret key is the user's secret 725*be42267cSmartijn privacy key (privKey). The associated hash 726*be42267cSmartijn algorithm is the algorithm used by the user's 727*be42267cSmartijn usmUserAuthProtocol. 728*be42267cSmartijn 729*be42267cSmartijn When creating a new user, it is an 'inconsistentName' 730*be42267cSmartijn error for a set operation to refer to this object 731*be42267cSmartijn unless it is previously or concurrently initialized 732*be42267cSmartijn through a set operation on the corresponding instance 733*be42267cSmartijn of usmUserCloneFrom. 734*be42267cSmartijn 735*be42267cSmartijn When the value of the corresponding usmUserPrivProtocol 736*be42267cSmartijn is usmNoPrivProtocol, then a set is successful, but 737*be42267cSmartijn effectively is a no-op. 738*be42267cSmartijn 739*be42267cSmartijn When this object is read, the zero-length (empty) 740*be42267cSmartijn string is returned. 741*be42267cSmartijn See the description clause of usmUserAuthKeyChange for 742*be42267cSmartijn a recommended procedure to do a key change. 743*be42267cSmartijn " 744*be42267cSmartijn DEFVAL { ''H } -- the empty string 745*be42267cSmartijn ::= { usmUserEntry 9 } 746*be42267cSmartijn 747*be42267cSmartijnusmUserOwnPrivKeyChange OBJECT-TYPE 748*be42267cSmartijn SYNTAX KeyChange -- typically (SIZE (0 | 32)) for DES 749*be42267cSmartijn MAX-ACCESS read-create 750*be42267cSmartijn STATUS current 751*be42267cSmartijn DESCRIPTION "Behaves exactly as usmUserPrivKeyChange, with one 752*be42267cSmartijn notable difference: in order for the Set operation 753*be42267cSmartijn to succeed, the usmUserName of the operation 754*be42267cSmartijn requester must match the usmUserName that indexes 755*be42267cSmartijn 756*be42267cSmartijn the row which is targeted by this operation. 757*be42267cSmartijn In addition, the USM security model must be 758*be42267cSmartijn used for this operation. 759*be42267cSmartijn 760*be42267cSmartijn The idea here is that access to this column can be 761*be42267cSmartijn public, since it will only allow a user to change 762*be42267cSmartijn his own secret privacy key (privKey). 763*be42267cSmartijn Note that this can only be done once the row is active. 764*be42267cSmartijn 765*be42267cSmartijn When a set is received and the usmUserName of the 766*be42267cSmartijn requester is not the same as the umsUserName that 767*be42267cSmartijn indexes the row which is targeted by this operation, 768*be42267cSmartijn then a 'noAccess' error must be returned. 769*be42267cSmartijn 770*be42267cSmartijn When a set is received and the security model in use 771*be42267cSmartijn is not USM, then a 'noAccess' error must be returned. 772*be42267cSmartijn " 773*be42267cSmartijn DEFVAL { ''H } -- the empty string 774*be42267cSmartijn ::= { usmUserEntry 10 } 775*be42267cSmartijn 776*be42267cSmartijnusmUserPublic OBJECT-TYPE 777*be42267cSmartijn SYNTAX OCTET STRING (SIZE(0..32)) 778*be42267cSmartijn MAX-ACCESS read-create 779*be42267cSmartijn STATUS current 780*be42267cSmartijn DESCRIPTION "A publicly-readable value which can be written as part 781*be42267cSmartijn of the procedure for changing a user's secret 782*be42267cSmartijn authentication and/or privacy key, and later read to 783*be42267cSmartijn determine whether the change of the secret was 784*be42267cSmartijn effected. 785*be42267cSmartijn " 786*be42267cSmartijn DEFVAL { ''H } -- the empty string 787*be42267cSmartijn ::= { usmUserEntry 11 } 788*be42267cSmartijn 789*be42267cSmartijnusmUserStorageType OBJECT-TYPE 790*be42267cSmartijn SYNTAX StorageType 791*be42267cSmartijn MAX-ACCESS read-create 792*be42267cSmartijn STATUS current 793*be42267cSmartijn DESCRIPTION "The storage type for this conceptual row. 794*be42267cSmartijn 795*be42267cSmartijn Conceptual rows having the value 'permanent' must 796*be42267cSmartijn allow write-access at a minimum to: 797*be42267cSmartijn 798*be42267cSmartijn - usmUserAuthKeyChange, usmUserOwnAuthKeyChange 799*be42267cSmartijn and usmUserPublic for a user who employs 800*be42267cSmartijn authentication, and 801*be42267cSmartijn - usmUserPrivKeyChange, usmUserOwnPrivKeyChange 802*be42267cSmartijn and usmUserPublic for a user who employs 803*be42267cSmartijn privacy. 804*be42267cSmartijn 805*be42267cSmartijn Note that any user who employs authentication or 806*be42267cSmartijn privacy must allow its secret(s) to be updated and 807*be42267cSmartijn thus cannot be 'readOnly'. 808*be42267cSmartijn 809*be42267cSmartijn If an initial set operation tries to set the value to 810*be42267cSmartijn 'readOnly' for a user who employs authentication or 811*be42267cSmartijn privacy, then an 'inconsistentValue' error must be 812*be42267cSmartijn returned. Note that if the value has been previously 813*be42267cSmartijn set (implicit or explicit) to any value, then the rules 814*be42267cSmartijn as defined in the StorageType Textual Convention apply. 815*be42267cSmartijn 816*be42267cSmartijn It is an implementation issue to decide if a SET for 817*be42267cSmartijn a readOnly or permanent row is accepted at all. In some 818*be42267cSmartijn contexts this may make sense, in others it may not. If 819*be42267cSmartijn a SET for a readOnly or permanent row is not accepted 820*be42267cSmartijn at all, then a 'wrongValue' error must be returned. 821*be42267cSmartijn " 822*be42267cSmartijn DEFVAL { nonVolatile } 823*be42267cSmartijn ::= { usmUserEntry 12 } 824*be42267cSmartijn 825*be42267cSmartijnusmUserStatus OBJECT-TYPE 826*be42267cSmartijn SYNTAX RowStatus 827*be42267cSmartijn MAX-ACCESS read-create 828*be42267cSmartijn STATUS current 829*be42267cSmartijn DESCRIPTION "The status of this conceptual row. 830*be42267cSmartijn 831*be42267cSmartijn Until instances of all corresponding columns are 832*be42267cSmartijn appropriately configured, the value of the 833*be42267cSmartijn corresponding instance of the usmUserStatus column 834*be42267cSmartijn is 'notReady'. 835*be42267cSmartijn 836*be42267cSmartijn In particular, a newly created row for a user who 837*be42267cSmartijn employs authentication, cannot be made active until the 838*be42267cSmartijn corresponding usmUserCloneFrom and usmUserAuthKeyChange 839*be42267cSmartijn have been set. 840*be42267cSmartijn 841*be42267cSmartijn Further, a newly created row for a user who also 842*be42267cSmartijn employs privacy, cannot be made active until the 843*be42267cSmartijn usmUserPrivKeyChange has been set. 844*be42267cSmartijn 845*be42267cSmartijn The RowStatus TC [RFC2579] requires that this 846*be42267cSmartijn DESCRIPTION clause states under which circumstances 847*be42267cSmartijn other objects in this row can be modified: 848*be42267cSmartijn 849*be42267cSmartijn The value of this object has no effect on whether 850*be42267cSmartijn other objects in this conceptual row can be modified, 851*be42267cSmartijn except for usmUserOwnAuthKeyChange and 852*be42267cSmartijn usmUserOwnPrivKeyChange. For these 2 objects, the 853*be42267cSmartijn 854*be42267cSmartijn value of usmUserStatus MUST be active. 855*be42267cSmartijn " 856*be42267cSmartijn ::= { usmUserEntry 13 } 857*be42267cSmartijn 858*be42267cSmartijn-- Conformance Information ******************************************* 859*be42267cSmartijn 860*be42267cSmartijnusmMIBCompliances OBJECT IDENTIFIER ::= { usmMIBConformance 1 } 861*be42267cSmartijnusmMIBGroups OBJECT IDENTIFIER ::= { usmMIBConformance 2 } 862*be42267cSmartijn 863*be42267cSmartijn-- Compliance statements 864*be42267cSmartijn 865*be42267cSmartijnusmMIBCompliance MODULE-COMPLIANCE 866*be42267cSmartijn STATUS current 867*be42267cSmartijn DESCRIPTION "The compliance statement for SNMP engines which 868*be42267cSmartijn implement the SNMP-USER-BASED-SM-MIB. 869*be42267cSmartijn " 870*be42267cSmartijn 871*be42267cSmartijn MODULE -- this module 872*be42267cSmartijn MANDATORY-GROUPS { usmMIBBasicGroup } 873*be42267cSmartijn 874*be42267cSmartijn OBJECT usmUserAuthProtocol 875*be42267cSmartijn MIN-ACCESS read-only 876*be42267cSmartijn DESCRIPTION "Write access is not required." 877*be42267cSmartijn 878*be42267cSmartijn OBJECT usmUserPrivProtocol 879*be42267cSmartijn MIN-ACCESS read-only 880*be42267cSmartijn DESCRIPTION "Write access is not required." 881*be42267cSmartijn ::= { usmMIBCompliances 1 } 882*be42267cSmartijn 883*be42267cSmartijn-- Units of compliance 884*be42267cSmartijnusmMIBBasicGroup OBJECT-GROUP 885*be42267cSmartijn OBJECTS { 886*be42267cSmartijn usmStatsUnsupportedSecLevels, 887*be42267cSmartijn usmStatsNotInTimeWindows, 888*be42267cSmartijn usmStatsUnknownUserNames, 889*be42267cSmartijn usmStatsUnknownEngineIDs, 890*be42267cSmartijn usmStatsWrongDigests, 891*be42267cSmartijn usmStatsDecryptionErrors, 892*be42267cSmartijn usmUserSpinLock, 893*be42267cSmartijn usmUserSecurityName, 894*be42267cSmartijn usmUserCloneFrom, 895*be42267cSmartijn usmUserAuthProtocol, 896*be42267cSmartijn usmUserAuthKeyChange, 897*be42267cSmartijn usmUserOwnAuthKeyChange, 898*be42267cSmartijn usmUserPrivProtocol, 899*be42267cSmartijn usmUserPrivKeyChange, 900*be42267cSmartijn usmUserOwnPrivKeyChange, 901*be42267cSmartijn usmUserPublic, 902*be42267cSmartijn usmUserStorageType, 903*be42267cSmartijn usmUserStatus 904*be42267cSmartijn } 905*be42267cSmartijn STATUS current 906*be42267cSmartijn DESCRIPTION "A collection of objects providing for configuration 907*be42267cSmartijn of an SNMP engine which implements the SNMP 908*be42267cSmartijn User-based Security Model. 909*be42267cSmartijn " 910*be42267cSmartijn ::= { usmMIBGroups 1 } 911*be42267cSmartijn 912*be42267cSmartijnEND 913