~hexmode/+junk/main

« back to all changes in this revision

Viewing changes to install-files/bin/php/php5.2.5/extras/mibs/SNMP-USER-BASED-SM-MIB.txt

  • Committer: Mark A. Hershberger
  • Date: 2008-01-05 19:38:56 UTC
  • Revision ID: hershberger@spawn-xp-20080105193856-6rnzgwa4nehue3qj
initial commit

Show diffs side-by-side

added added

removed removed

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