MIB:   SNMP-USER-BASED-SM-MIBMain Index
          
   - Textual Convention/Type Defs  (1)   - Notification/Trap Definitions  (0)
   - Object Identifier Definitions  (11)   - Object Group Definitions  (1)
   - Table Definitions  (1)   - Notification Group Definitions  (0)
   - Table Entry/Row Definitions  (1)   - Agent Capabilities Definitions  (0)
   - Column Object Definitions  (13)   - Module Compliance Definitions  (1)
   - Scalar Object Definitions  (7)     
                          
Module DependenciesMIB:  SNMP-USER-BASED-SM-MIB
 
     SNMPv2-TC
     SNMP-FRAMEWORK-MIB
 
                          
Module Identity: snmpUsmMIB1.3.6.1.6.3.15
 
 Last Updated
 
9901200000Z
 
 Organization
 
SNMPv3 Working Group
 
 Contact Info
 
WG-email:   snmpv3@lists.tislabs.com
Subscribe:  majordomo@lists.tislabs.com
            In msg body:  subscribe snmpv3

Chair:      Russ Mundy
            Trusted Information Systems
postal:     3060 Washington Rd
            Glenwood MD 21738
            USA
email:      mundy@tislabs.com
phone:      +1-301-854-6889

Co-editor   Uri Blumenthal

            IBM T. J. Watson Research
postal:     30 Saw Mill River Pkwy,
            Hawthorne, NY 10532
            USA
email:      uri@watson.ibm.com
phone:      +1-914-784-7964

Co-editor:  Bert Wijnen
            IBM T. J. Watson Research
postal:     Schagen 33
            3461 GL Linschoten
            Netherlands
email:      wijnen@vnet.ibm.com
phone:      +31-348-432-794
 
 Description
 
The management information definitions for the
SNMP User-based Security Model.
 
                          
Textual Convention (Type) DefinitionsMIB:  SNMP-USER-BASED-SM-MIB
 
 
  1) KeyChange  
 
 
   
 
KeyChange::=TEXTUAL CONVENTION
                  
Description:
 
Every definition of an object with this syntax must identify
a protocol P, a secret key K, and a hash algorithm H
that produces output of L octets.

The object's value is a manager-generated, partially-random
value which, when modified, causes the value of the secret
key K, to be modified via a one-way function.

The value of an instance of this object is the concatenation
of two components: first a 'random' component and then a
'delta' component.

The lengths of the random and delta components
are given by the corresponding value of the protocol P;
if P requires K to be a fixed length, the length of both the
random and delta components is that fixed length; if P
allows the length of K to be variable up to a particular
maximum length, the length of the random component is that
maximum length and the length of the delta component is any
length less than or equal to that maximum length.
For example, usmHMACMD5AuthProtocol requires K to be a fixed
length of 16 octets and L - of 16 octets.
usmHMACSHAAuthProtocol requires K to be a fixed length of
20 octets and L - of 20 octets. Other protocols may define
other sizes, as deemed appropriate.

When a requester wants to change the old key K to a new
key keyNew on a remote entity, the 'random' component is
obtained from either a true random generator, or from a
pseudorandom generator, and the 'delta' component is
computed as follows:

 - a temporary variable is initialized to the existing value
   of K;
 - if the length of the keyNew is greater than L octets,
   then:
    - the random component is appended to the value of the
      temporary variable, and the result is input to the
      the hash algorithm H to produce a digest value, and
      the temporary variable is set to this digest value;
    - the value of the temporary variable is XOR-ed with
      the first (next) L-octets (16 octets in case of MD5)
      of the keyNew to produce the first (next) L-octets
      (16 octets in case of MD5) of the 'delta' component.
    - the above two steps are repeated until the unused
      portion of the keyNew component is L octets or less,
 - the random component is appended to the value of the
   temporary variable, and the result is input to the

   hash algorithm H to produce a digest value;
 - this digest value, truncated if necessary to be the same
   length as the unused portion of the keyNew, is XOR-ed
   with the unused portion of the keyNew to produce the
   (final portion of the) 'delta' component.

 For example, using MD5 as the hash algorithm H:

    iterations = (lenOfDelta - 1)/16; /* integer division */
    temp = keyOld;
    for (i = 0; i < iterations; i++) {
        temp = MD5 (temp || random);
        delta[i*16 .. (i*16)+15] =
               temp XOR keyNew[i*16 .. (i*16)+15];
    }
    temp = MD5 (temp || random);
    delta[i*16 .. lenOfDelta-1] =
           temp XOR keyNew[i*16 .. lenOfDelta-1];

The 'random' and 'delta' components are then concatenated as
described above, and the resulting octet string is sent to
the recipient as the new value of an instance of this object.

At the receiver side, when an instance of this object is set
to a new value, then a new value of K is computed as follows:

 - a temporary variable is initialized to the existing value
   of K;
 - if the length of the delta component is greater than L
   octets, then:
    - the random component is appended to the value of the
      temporary variable, and the result is input to the
      hash algorithm H to produce a digest value, and the
      temporary variable is set to this digest value;
    - the value of the temporary variable is XOR-ed with
      the first (next) L-octets (16 octets in case of MD5)
      of the delta component to produce the first (next)
      L-octets (16 octets in case of MD5) of the new value
      of K.
    - the above two steps are repeated until the unused
      portion of the delta component is L octets or less,
 - the random component is appended to the value of the
   temporary variable, and the result is input to the
   hash algorithm H to produce a digest value;
 - this digest value, truncated if necessary to be the same
   length as the unused portion of the delta component, is
   XOR-ed with the unused portion of the delta component to
   produce the (final portion of the) new value of K.

 For example, using MD5 as the hash algorithm H:

    iterations = (lenOfDelta - 1)/16; /* integer division */
    temp = keyOld;
    for (i = 0; i < iterations; i++) {
        temp = MD5 (temp || random);
        keyNew[i*16 .. (i*16)+15] =
               temp XOR delta[i*16 .. (i*16)+15];
    }
    temp = MD5 (temp || random);
    keyNew[i*16 .. lenOfDelta-1] =
           temp XOR delta[i*16 .. lenOfDelta-1];

The value of an object with this syntax, whenever it is
retrieved by the management protocol, is always the zero
length string.

Note that the keyOld and keyNew are the localized keys.

Note that it is probably wise that when an SNMP entity sends
a SetRequest to change a key, that it keeps a copy of the old
key until it has confirmed that the key change actually
succeeded.
 
Syntax:   OCTET STRING
 
                          
Object Identifier DefinitionsMIB:  SNMP-USER-BASED-SM-MIB
 
    
usmMIBObjects ::= snmpUsmMIB.11.3.6.1.6.3.15.1
usmMIBConformance ::= snmpUsmMIB.21.3.6.1.6.3.15.2
usmNoAuthProtocol ::= 1.3.6.1.6.3.10.1.1.11.3.6.1.6.3.10.1.1.1
usmHMACMD5AuthProtocol ::= 1.3.6.1.6.3.10.1.1.21.3.6.1.6.3.10.1.1.2
usmHMACSHAAuthProtocol ::= 1.3.6.1.6.3.10.1.1.31.3.6.1.6.3.10.1.1.3
usmNoPrivProtocol ::= 1.3.6.1.6.3.10.1.2.11.3.6.1.6.3.10.1.2.1
usmDESPrivProtocol ::= 1.3.6.1.6.3.10.1.2.21.3.6.1.6.3.10.1.2.2
usmStats ::= usmMIBObjects.11.3.6.1.6.3.15.1.1
usmUser ::= usmMIBObjects.21.3.6.1.6.3.15.1.2
usmMIBCompliances ::= usmMIBConformance.11.3.6.1.6.3.15.2.1
usmMIBGroups ::= usmMIBConformance.21.3.6.1.6.3.15.2.2
                          
Table DefinitionsMIB:  SNMP-USER-BASED-SM-MIB
 
 
  1) usmUserTable  
 
 Table: usmUserTable1.3.6.1.6.3.15.1.2.2
  status | indexes | columns ) section | top )
 
 Description
 
The table of users configured in the SNMP engine's
Local Configuration Datastore (LCD).

To create a new user (i.e., to instantiate a new
conceptual row in this table), it is recommended to
follow this procedure:

  1)  GET(usmUserSpinLock.0) and save in sValue.
  2)  SET(usmUserSpinLock.0=sValue,
          usmUserCloneFrom=templateUser,
          usmUserStatus=createAndWait)
      You should use a template user to clone from
      which has the proper auth/priv protocol defined.

If the new user is to use privacy:

  3)  generate the keyChange value based on the secret
      privKey of the clone-from user and the secret key
      to be used for the new user. Let us call this
      pkcValue.
  4)  GET(usmUserSpinLock.0) and save in sValue.
  5)  SET(usmUserSpinLock.0=sValue,
          usmUserPrivKeyChange=pkcValue
          usmUserPublic=randomValue1)
  6)  GET(usmUserPulic) and check it has randomValue1.
      If not, repeat steps 4-6.

If the new user will never use privacy:


  7)  SET(usmUserPrivProtocol=usmNoPrivProtocol)

If the new user is to use authentication:

  8)  generate the keyChange value based on the secret
      authKey of the clone-from user and the secret key
      to be used for the new user. Let us call this
      akcValue.
  9)  GET(usmUserSpinLock.0) and save in sValue.
  10) SET(usmUserSpinLock.0=sValue,
          usmUserAuthKeyChange=akcValue
          usmUserPublic=randomValue2)
  11) GET(usmUserPulic) and check it has randomValue2.
      If not, repeat steps 9-11.

If the new user will never use authentication:

  12) SET(usmUserAuthProtocol=usmNoAuthProtocol)

Finally, activate the new user:

  13) SET(usmUserStatus=active)

The new user should now be available and ready to be
used for SNMPv3 communication. Note however that access
to MIB data must be provided via configuration of the
SNMP-VIEW-BASED-ACM-MIB.

The use of usmUserSpinlock is to avoid conflicts with
another SNMP command responder application which may
also be acting on the usmUserTable.
 
  Status:   current
  Row Entry:  usmUserEntry
 
  Indexes:   
   
 #  Object  Type  OID 
usmUserEngineID  OCTET STRING  1.3.6.1.6.3.15.1.2.2.1.1
usmUserName  OCTET STRING  1.3.6.1.6.3.15.1.2.2.1.2
 
  Columns:  
   
 #  Object  Type  Syntax  Access  OID 
usmUserEngineID sSnmpEngineID na 1.3.6.1.6.3.15.1.2.2.1.1
usmUserName sSnmpAdminString na 1.3.6.1.6.3.15.1.2.2.1.2
usmUserSecurityName sSnmpAdminString ro 1.3.6.1.6.3.15.1.2.2.1.3
usmUserCloneFrom oRowPointer rc 1.3.6.1.6.3.15.1.2.2.1.4
usmUserAuthProtocol oAutonomousType rc 1.3.6.1.6.3.15.1.2.2.1.5
usmUserAuthKeyChange sKeyChange rc 1.3.6.1.6.3.15.1.2.2.1.6
usmUserOwnAuthKeyChange sKeyChange rc 1.3.6.1.6.3.15.1.2.2.1.7
usmUserPrivProtocol oAutonomousType rc 1.3.6.1.6.3.15.1.2.2.1.8
usmUserPrivKeyChange sKeyChange rc 1.3.6.1.6.3.15.1.2.2.1.9
10  usmUserOwnPrivKeyChange sKeyChange rc 1.3.6.1.6.3.15.1.2.2.1.10
11  usmUserPublic sOCTET STRING rc 1.3.6.1.6.3.15.1.2.2.1.11
12  usmUserStorageType iStorageType rc 1.3.6.1.6.3.15.1.2.2.1.12
13  usmUserStatus iRowStatus rc 1.3.6.1.6.3.15.1.2.2.1.13
 
                          
Table Row/Entry Object DefinitionsMIB:  SNMP-USER-BASED-SM-MIB
 
 
  1) usmUserEntry  
 
 Entry Object:   usmUserEntry1.3.6.1.6.3.15.1.2.2.1
  status | access | type | syntax ) section | top )
 
 Description
 
A user configured in the SNMP engine's Local
Configuration Datastore (LCD) for the User-based
Security Model.
 
  Table:  usmUserTable
  Status:   current
  Access:   not-accessible
 
  Type:   SEQUENCE
  Syntax:   SEQUENCE
 
                          
Table Column Object DefinitionsMIB:  SNMP-USER-BASED-SM-MIB
 
 
  1) usmUserEngineID  
  2) usmUserName  
  3) usmUserSecurityName  
  4) usmUserCloneFrom  
  5) usmUserAuthProtocol  
  6) usmUserAuthKeyChange  
  7) usmUserOwnAuthKeyChange  
  8) usmUserPrivProtocol  
  9) usmUserPrivKeyChange  
  10) usmUserOwnPrivKeyChange  
  11) usmUserPublic  
  12) usmUserStorageType  
  13) usmUserStatus  
 
 Column Object:   usmUserEngineID1.3.6.1.6.3.15.1.2.2.1.1
  status | access | type | syntax ) section | top )
 
 Description
 
An SNMP engine's administratively-unique identifier.

In a simple agent, this value is always that agent's
own snmpEngineID value.

The value can also take the value of the snmpEngineID
of a remote SNMP engine with which this user can
communicate.
 
  Table: usmUserTable
  Indexing:  usmUserTable
  Status:   current
  Access:   not-accessible
 
  Type:   OCTET STRING
  Syntax:   SNMP-FRAMEWORK-MIB.SnmpEngineID
 
 Column Object:   usmUserName1.3.6.1.6.3.15.1.2.2.1.2
  status | access | type | syntax ) section | top )
 
 Description
 
A human readable string representing the name of
the user.

This is the (User-based Security) Model dependent
security ID.
 
  Table: usmUserTable
  Indexing:  usmUserTable
  Status:   current
  Access:   not-accessible
 
  Type:   OCTET STRING
  Syntax:   SNMP-FRAMEWORK-MIB.SnmpAdminString (SIZE (1..32) )
 
 Column Object:   usmUserSecurityName1.3.6.1.6.3.15.1.2.2.1.3
  status | access | type | syntax ) section | top )
 
 Description
 
A human readable string representing the user in

Security Model independent format.

The default transformation of the User-based Security
Model dependent security ID to the securityName and
vice versa is the identity function so that the
securityName is the same as the userName.
 
  Table: usmUserTable
  Status:   current
  Access:   read-only
 
  Type:   OCTET STRING
  Syntax:   SNMP-FRAMEWORK-MIB.SnmpAdminString
 
 Column Object:   usmUserCloneFrom1.3.6.1.6.3.15.1.2.2.1.4
  status | access | type | syntax ) section | top )
 
 Description
 
A pointer to another conceptual row in this
usmUserTable.  The user in this other conceptual
row is called the clone-from user.

When a new user is created (i.e., a new conceptual
row is instantiated in this table), the privacy and
authentication parameters of the new user must be
cloned from its clone-from user. These parameters are:
  - authentication protocol (usmUserAuthProtocol)
  - privacy protocol (usmUserPrivProtocol)
They will be copied regardless of what the current
value is.

Cloning also causes the initial values of the secret
authentication key (authKey) and the secret encryption
key (privKey) of the new user to be set to the same
value as the corresponding secret of the clone-from
user.

The first time an instance of this object is set by
a management operation (either at or after its
instantiation), the cloning process is invoked.
Subsequent writes are successful but invoke no
action to be taken by the receiver.
The cloning process fails with an 'inconsistentName'
error if the conceptual row representing the
clone-from user does not exist or is not in an active
state when the cloning process is invoked.

When this object is read, the ZeroDotZero OID
is returned.
 
  Table: usmUserTable
  Status:   current
  Access:   read-create
 
  Type:   OBJECT IDENTIFIER
  Syntax:   SNMPv2-TC.RowPointer
 
 Column Object:   usmUserAuthProtocol1.3.6.1.6.3.15.1.2.2.1.5
  status | access | type | syntax ) section | top )
 
 Description
 
An indication of whether messages sent on behalf of
this user to/from the SNMP engine identified by
usmUserEngineID, can be authenticated, and if so,
the type of authentication protocol which is used.

An instance of this object is created concurrently
with the creation of any other object instance for
the same user (i.e., as part of the processing of
the set operation which creates the first object
instance in the same conceptual row).

If an initial set operation (i.e. at row creation time)
tries to set a value for an unknown or unsupported
protocol, then a 'wrongValue' error must be returned.

The value will be overwritten/set when a set operation
is performed on the corresponding instance of
usmUserCloneFrom.

Once instantiated, the value of such an instance of
this object can only be changed via a set operation to
the value of the usmNoAuthProtocol.

If a set operation tries to change the value of an
existing instance of this object to any value other
than usmNoAuthProtocol, then an 'inconsistentValue'
error must be returned.

If a set operation tries to set the value to the
usmNoAuthProtocol while the usmUserPrivProtocol value
in the same row is not equal to usmNoPrivProtocol,
then an 'inconsistentValue' error must be returned.
That means that an SNMP command generator application
must first ensure that the usmUserPrivProtocol is set
to the usmNoPrivProtocol value before it can set
the usmUserAuthProtocol value to usmNoAuthProtocol.
 
  Table: usmUserTable
  Status:   current
  Access:   read-create
 
  Type:   OBJECT IDENTIFIER
  Syntax:   SNMPv2-TC.AutonomousType
 
 Column Object:   usmUserAuthKeyChange1.3.6.1.6.3.15.1.2.2.1.6
  status | access | type | syntax ) section | top )
 
 Description
 
An object, which when modified, causes the secret
authentication key used for messages sent on behalf
of this user to/from the SNMP engine identified by
usmUserEngineID, to be modified via a one-way
function.

The associated protocol is the usmUserAuthProtocol.
The associated secret key is the user's secret
authentication key (authKey). The associated hash
algorithm is the algorithm used by the user's
usmUserAuthProtocol.

When creating a new user, it is an 'inconsistentName'
error for a set operation to refer to this object
unless it is previously or concurrently initialized
through a set operation on the corresponding instance
of usmUserCloneFrom.

When the value of the corresponding usmUserAuthProtocol
is usmNoAuthProtocol, then a set is successful, but
effectively is a no-op.

When this object is read, the zero-length (empty)
string is returned.

The recommended way to do a key change is as follows:

  1) GET(usmUserSpinLock.0) and save in sValue.
  2) generate the keyChange value based on the old
     (existing) secret key and the new secret key,
     let us call this kcValue.

If you do the key change on behalf of another user:

  3) SET(usmUserSpinLock.0=sValue,
         usmUserAuthKeyChange=kcValue
         usmUserPublic=randomValue)

If you do the key change for yourself:

  4) SET(usmUserSpinLock.0=sValue,
         usmUserOwnAuthKeyChange=kcValue
         usmUserPublic=randomValue)

If you get a response with error-status of noError,
then the SET succeeded and the new key is active.
If you do not get a response, then you can issue a
GET(usmUserPublic) and check if the value is equal

to the randomValue you did send in the SET. If so, then
the key change succeeded and the new key is active
(probably the response got lost). If not, then the SET
request probably never reached the target and so you
can start over with the procedure above.
 
  Table: usmUserTable
  Status:   current
  Access:   read-create
 
  Type:   OCTET STRING
  Syntax:   SNMP-USER-BASED-SM-MIB.KeyChange
 
 Column Object:   usmUserOwnAuthKeyChange1.3.6.1.6.3.15.1.2.2.1.7
  status | access | type | syntax ) section | top )
 
 Description
 
Behaves exactly as usmUserAuthKeyChange, with one
notable difference: in order for the set operation
to succeed, the usmUserName of the operation
requester must match the usmUserName that
indexes the row which is targeted by this
operation.
In addition, the USM security model must be
used for this operation.

The idea here is that access to this column can be
public, since it will only allow a user to change
his own secret authentication key (authKey).
Note that this can only be done once the row is active.

When a set is received and the usmUserName of the
requester is not the same as the umsUserName that
indexes the row which is targeted by this operation,
then a 'noAccess' error must be returned.

When a set is received and the security model in use
is not USM, then a 'noAccess' error must be returned.
 
  Table: usmUserTable
  Status:   current
  Access:   read-create
 
  Type:   OCTET STRING
  Syntax:   SNMP-USER-BASED-SM-MIB.KeyChange
 
 Column Object:   usmUserPrivProtocol1.3.6.1.6.3.15.1.2.2.1.8
  status | access | type | syntax ) section | top )
 
 Description
 
An indication of whether messages sent on behalf of
this user to/from the SNMP engine identified by
usmUserEngineID, can be protected from disclosure,
and if so, the type of privacy protocol which is used.


An instance of this object is created concurrently
with the creation of any other object instance for
the same user (i.e., as part of the processing of
the set operation which creates the first object
instance in the same conceptual row).

If an initial set operation (i.e. at row creation time)
tries to set a value for an unknown or unsupported
protocol, then a 'wrongValue' error must be returned.

The value will be overwritten/set when a set operation
is performed on the corresponding instance of
usmUserCloneFrom.

Once instantiated, the value of such an instance of
this object can only be changed via a set operation to
the value of the usmNoPrivProtocol.

If a set operation tries to change the value of an
existing instance of this object to any value other
than usmNoPrivProtocol, then an 'inconsistentValue'
error must be returned.

Note that if any privacy protocol is used, then you
must also use an authentication protocol. In other
words, if usmUserPrivProtocol is set to anything else
than usmNoPrivProtocol, then the corresponding instance
of usmUserAuthProtocol cannot have a value of
usmNoAuthProtocol. If it does, then an
'inconsistentValue' error must be returned.
 
  Table: usmUserTable
  Status:   current
  Access:   read-create
 
  Type:   OBJECT IDENTIFIER
  Syntax:   SNMPv2-TC.AutonomousType
 
 Column Object:   usmUserPrivKeyChange1.3.6.1.6.3.15.1.2.2.1.9
  status | access | type | syntax ) section | top )
 
 Description
 
An object, which when modified, causes the secret
encryption key used for messages sent on behalf
of this user to/from the SNMP engine identified by
usmUserEngineID, to be modified via a one-way
function.

The associated protocol is the usmUserPrivProtocol.
The associated secret key is the user's secret
privacy key (privKey). The associated hash
algorithm is the algorithm used by the user's

usmUserAuthProtocol.

When creating a new user, it is an 'inconsistentName'
error for a set operation to refer to this object
unless it is previously or concurrently initialized
through a set operation on the corresponding instance
of usmUserCloneFrom.

When the value of the corresponding usmUserPrivProtocol
is usmNoPrivProtocol, then a set is successful, but
effectively is a no-op.

When this object is read, the zero-length (empty)
string is returned.
See the description clause of usmUserAuthKeyChange for
a recommended procedure to do a key change.
 
  Table: usmUserTable
  Status:   current
  Access:   read-create
 
  Type:   OCTET STRING
  Syntax:   SNMP-USER-BASED-SM-MIB.KeyChange
 
 Column Object:   usmUserOwnPrivKeyChange1.3.6.1.6.3.15.1.2.2.1.10
  status | access | type | syntax ) section | top )
 
 Description
 
Behaves exactly as usmUserPrivKeyChange, with one
notable difference: in order for the Set operation
to succeed, the usmUserName of the operation
requester must match the usmUserName that indexes
the row which is targeted by this operation.
In addition, the USM security model must be
used for this operation.

The idea here is that access to this column can be
public, since it will only allow a user to change
his own secret privacy key (privKey).
Note that this can only be done once the row is active.

When a set is received and the usmUserName of the
requester is not the same as the umsUserName that
indexes the row which is targeted by this operation,
then a 'noAccess' error must be returned.

When a set is received and the security model in use
is not USM, then a 'noAccess' error must be returned.
 
  Table: usmUserTable
  Status:   current
  Access:   read-create
 
  Type:   OCTET STRING
  Syntax:   SNMP-USER-BASED-SM-MIB.KeyChange
 
 Column Object:   usmUserPublic1.3.6.1.6.3.15.1.2.2.1.11
  status | access | type | syntax ) section | top )
 
 Description
 
A publicly-readable value which can be written as part
of the procedure for changing a user's secret
authentication and/or privacy key, and later read to
determine whether the change of the secret was
effected.
 
  Table: usmUserTable
  Status:   current
  Access:   read-create
 
  Type:   OCTET STRING
  Syntax:   OCTET STRING (SIZE (0..32) )
 
 Column Object:   usmUserStorageType1.3.6.1.6.3.15.1.2.2.1.12
  status | access | type | syntax ) section | top )
 
 Description
 
The storage type for this conceptual row.

Conceptual rows having the value 'permanent' must
allow write-access at a minimum to:

- usmUserAuthKeyChange, usmUserOwnAuthKeyChange
  and usmUserPublic for a user who employs
  authentication, and
- usmUserPrivKeyChange, usmUserOwnPrivKeyChange
  and usmUserPublic for a user who employs
  privacy.

Note that any user who employs authentication or
privacy must allow its secret(s) to be updated and
thus cannot be 'readOnly'.

If an initial set operation tries to set the value to
'readOnly' for a user who employs authentication or
privacy, then an 'inconsistentValue' error must be
returned.  Note that if the value has been previously
set (implicit or explicit) to any value, then the rules
as defined in the StorageType Textual Convention apply.

It is an implementation issue to decide if a SET for
a readOnly or permanent row is accepted at all. In some
contexts this may make sense, in others it may not. If
a SET for a readOnly or permanent row is not accepted
at all, then a 'wrongValue' error must be returned.
 
  Table: usmUserTable
  Status:   current
  Access:   read-create
 
  Type:   INTEGER
  Syntax:   SNMPv2-TC.StorageType
 
 Column Object:   usmUserStatus1.3.6.1.6.3.15.1.2.2.1.13
  status | access | type | syntax ) section | top )
 
 Description
 
The status of this conceptual row.

Until instances of all corresponding columns are
appropriately configured, the value of the
corresponding instance of the usmUserStatus column
is 'notReady'.

In particular, a newly created row for a user who
employs authentication, cannot be made active until the
corresponding usmUserCloneFrom and usmUserAuthKeyChange
have been set.

Further, a newly created row for a user who also
employs privacy, cannot be made active until the
usmUserPrivKeyChange has been set.

The RowStatus TC [RFC2579] requires that this
DESCRIPTION clause states under which circumstances
other objects in this row can be modified:

The value of this object has no effect on whether
other objects in this conceptual row can be modified,
except for usmUserOwnAuthKeyChange and
usmUserOwnPrivKeyChange. For these 2 objects, the
value of usmUserStatus MUST be active.
 
  Table: usmUserTable
  Status:   current
  Access:   read-create
 
  Type:   INTEGER
  Syntax:   SNMPv2-TC.RowStatus
 
                          
                          
Scalar Object DefinitionsMIB:  SNMP-USER-BASED-SM-MIB
 
 
  1) usmStatsUnsupportedSecLevels  
  2) usmStatsNotInTimeWindows  
  3) usmStatsUnknownUserNames  
  4) usmStatsUnknownEngineIDs  
  5) usmStatsWrongDigests  
  6) usmStatsDecryptionErrors  
  7) usmUserSpinLock  
 
 Scalar Object:   usmStatsUnsupportedSecLevels1.3.6.1.6.3.15.1.1.1
  status | access | type | syntax ) section | top )
 
 Description
 
The total number of packets received by the SNMP
engine which were dropped because they requested a
securityLevel that was unknown to the SNMP engine
or otherwise unavailable.
 
  Status:   current
  Access:   read-only
 
  Type:   Counter32
  Syntax:   Counter32
 
 Scalar Object:   usmStatsNotInTimeWindows1.3.6.1.6.3.15.1.1.2
  status | access | type | syntax ) section | top )
 
 Description
 
The total number of packets received by the SNMP
engine which were dropped because they appeared
outside of the authoritative SNMP engine's window.
 
  Status:   current
  Access:   read-only
 
  Type:   Counter32
  Syntax:   Counter32
 
 Scalar Object:   usmStatsUnknownUserNames1.3.6.1.6.3.15.1.1.3
  status | access | type | syntax ) section | top )
 
 Description
 
The total number of packets received by the SNMP
engine which were dropped because they referenced a
user that was not known to the SNMP engine.
 
  Status:   current
  Access:   read-only
 
  Type:   Counter32
  Syntax:   Counter32
 
 Scalar Object:   usmStatsUnknownEngineIDs1.3.6.1.6.3.15.1.1.4
  status | access | type | syntax ) section | top )
 
 Description
 
The total number of packets received by the SNMP
engine which were dropped because they referenced an
snmpEngineID that was not known to the SNMP engine.
 
  Status:   current
  Access:   read-only
 
  Type:   Counter32
  Syntax:   Counter32
 
 Scalar Object:   usmStatsWrongDigests1.3.6.1.6.3.15.1.1.5
  status | access | type | syntax ) section | top )
 
 Description
 
The total number of packets received by the SNMP
engine which were dropped because they didn't
contain the expected digest value.
 
  Status:   current
  Access:   read-only
 
  Type:   Counter32
  Syntax:   Counter32
 
 Scalar Object:   usmStatsDecryptionErrors1.3.6.1.6.3.15.1.1.6
  status | access | type | syntax ) section | top )
 
 Description
 
The total number of packets received by the SNMP
engine which were dropped because they could not be
decrypted.
 
  Status:   current
  Access:   read-only
 
  Type:   Counter32
  Syntax:   Counter32
 
 Scalar Object:   usmUserSpinLock1.3.6.1.6.3.15.1.2.1
  status | access | type | syntax ) section | top )
 
 Description
 
An advisory lock used to allow several cooperating
Command Generator Applications to coordinate their
use of facilities to alter secrets in the
usmUserTable.
 
  Status:   current
  Access:   read-write
 
  Type:   INTEGER
  Syntax:   SNMPv2-TC.TestAndIncr
 
                          
Notification/Trap DefinitionsMIB:  SNMP-USER-BASED-SM-MIB
 
 
 
                          
Object Group DefinitionsMIB:  SNMP-USER-BASED-SM-MIB
 
 
  1) usmMIBBasicGroup  
 
 ObjectGroup:   usmMIBBasicGroup1.3.6.1.6.3.15.2.2.1
 
 Description
 
A collection of objects providing for configuration
of an SNMP engine which implements the SNMP
User-based Security Model.
 
  Status:   current
 
  Objects:  
   
 Object  Type  OID 
 usmStatsUnsupportedSecLevels  Counter32  1.3.6.1.6.3.15.1.1.1
 usmStatsNotInTimeWindows  Counter32  1.3.6.1.6.3.15.1.1.2
 usmStatsUnknownUserNames  Counter32  1.3.6.1.6.3.15.1.1.3
 usmStatsUnknownEngineIDs  Counter32  1.3.6.1.6.3.15.1.1.4
 usmStatsWrongDigests  Counter32  1.3.6.1.6.3.15.1.1.5
 usmStatsDecryptionErrors  Counter32  1.3.6.1.6.3.15.1.1.6
 usmUserSpinLock  INTEGER  1.3.6.1.6.3.15.1.2.1
 usmUserSecurityName  OCTET STRING  1.3.6.1.6.3.15.1.2.2.1.3
 usmUserCloneFrom  OBJECT IDENTIFIER  1.3.6.1.6.3.15.1.2.2.1.4
 usmUserAuthProtocol  OBJECT IDENTIFIER  1.3.6.1.6.3.15.1.2.2.1.5
 usmUserAuthKeyChange  OCTET STRING  1.3.6.1.6.3.15.1.2.2.1.6
 usmUserOwnAuthKeyChange  OCTET STRING  1.3.6.1.6.3.15.1.2.2.1.7
 usmUserPrivProtocol  OBJECT IDENTIFIER  1.3.6.1.6.3.15.1.2.2.1.8
 usmUserPrivKeyChange  OCTET STRING  1.3.6.1.6.3.15.1.2.2.1.9
 usmUserOwnPrivKeyChange  OCTET STRING  1.3.6.1.6.3.15.1.2.2.1.10
 usmUserPublic  OCTET STRING  1.3.6.1.6.3.15.1.2.2.1.11
 usmUserStorageType  INTEGER  1.3.6.1.6.3.15.1.2.2.1.12
 usmUserStatus  INTEGER  1.3.6.1.6.3.15.1.2.2.1.13
 
                          
Notification Group DefinitionsMIB:  SNMP-USER-BASED-SM-MIB
 
 
 
                          
                          
Agent Capabilities DefinitionsMIB:  SNMP-USER-BASED-SM-MIB
 
 
 
                          
Module Compliance DefinitionsMIB:  SNMP-USER-BASED-SM-MIB
 
 
  1) usmMIBCompliance  
 
 ModuleCompliance:   usmMIBCompliance1.3.6.1.6.3.15.2.1.1
 
 Description
 
The compliance statement for SNMP engines which
implement the SNMP-USER-BASED-SM-MIB.
 
  Status:   current
 
  Module:  
 
   
Mandatory Group  OID 
      usmMIBBasicGroup 1.3.6.1.6.3.15.2.2.1
   Exception:usmUserAuthProtocol1.3.6.1.6.3.15.1.2.2.1.5
 
 Description
 
Write access is not required.
 
   Access:   read-only
 
   Exception:usmUserPrivProtocol1.3.6.1.6.3.15.1.2.2.1.8
 
 Description
 
Write access is not required.
 
   Access:   read-only