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