Module org.snmp4j

Class UsmUser

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, java.lang.Comparable<UsmUser>, User

    public class UsmUser
    extends java.lang.Object
    implements User, java.lang.Comparable<UsmUser>, java.lang.Cloneable
    The UsmUser class represents USM user providing information to secure SNMPv3 message exchange. A user is characterized by its security name and optionally by a authentication protocol and passphrase as well as a privacy protocol and passphrase.

    There are no setters for the attributes of this class, to prevent inconsistent states in the USM, when a user is changed from outside.

    Version:
    3.6.1
    Author:
    Frank Fock
    See Also:
    Serialized Form
    • Constructor Detail

      • UsmUser

        public UsmUser​(OctetString securityName,
                       OID authenticationProtocol,
                       OctetString authenticationPassphrase,
                       OID privacyProtocol,
                       OctetString privacyPassphrase)
        Creates a USM user.
        Parameters:
        securityName - the security name of the user (typically the user name).
        authenticationProtocol - the authentication protocol ID to be associated with this user. If set to null, this user only supports unauthenticated messages.
        authenticationPassphrase - the authentication passphrase. If not null, authenticationProtocol must also be not null. RFC3414 §11.2 requires passphrases to have a minimum length of 8 bytes. If the length of authenticationPassphrase is less than 8 bytes an IllegalArgumentException is thrown.
        privacyProtocol - the privacy protocol ID to be associated with this user. If set to null, this user only supports unencrypted messages.
        privacyPassphrase - the privacy passphrase. If not null, privacyProtocol must also be not null. RFC3414 §11.2 requires passphrases to have a minimum length of 8 bytes. If the length of authenticationPassphrase is less than 8 bytes an IllegalArgumentException is thrown.
      • UsmUser

        public UsmUser​(OctetString securityName,
                       OID authenticationProtocol,
                       OctetString authenticationPassphrase,
                       OID privacyProtocol,
                       OctetString privacyPassphrase,
                       OctetString localizationEngineID)
        Creates a localized USM user.
        Parameters:
        securityName - the security name of the user (typically the user name).
        authenticationProtocol - the authentication protcol ID to be associated with this user. If set to null, this user only supports unauthenticated messages.
        authenticationPassphrase - the authentication passphrase. If not null, authenticationProtocol must also be not null. RFC3414 §11.2 requires passphrases to have a minimum length of 8 bytes. If the length of authenticationPassphrase is less than 8 bytes an IllegalArgumentException is thrown.
        privacyProtocol - the privacy protocol ID to be associated with this user. If set to null, this user only supports unencrypted messages.
        privacyPassphrase - the privacy passphrase. If not null, privacyProtocol must also be not null. RFC3414 §11.2 requires passphrases to have a minimum length of 8 bytes. If the length of authenticationPassphrase is less than 8 bytes an IllegalArgumentException is thrown.
        localizationEngineID - if not null, the localizationEngineID specifies the engine ID for which the supplied passphrases are already localized. Such an USM user can only be used with the target whose engine ID equals localizationEngineID.
    • Method Detail

      • getSecurityName

        public OctetString getSecurityName()
        Gets the user's security name.
        Returns:
        a clone of the user's security name.
      • getAuthenticationProtocol

        public OID getAuthenticationProtocol()
        Gets the authentication protocol ID.
        Returns:
        a clone of the authentication protocol ID or null.
      • getPrivacyProtocol

        public OID getPrivacyProtocol()
        Gets the privacy protocol ID.
        Returns:
        a clone of the privacy protocol ID or null.
      • getAuthenticationPassphrase

        public OctetString getAuthenticationPassphrase()
        Gets the authentication passphrase.
        Returns:
        a clone of the authentication passphrase or null.
      • getPrivacyPassphrase

        public OctetString getPrivacyPassphrase()
        Gets the privacy passphrase.
        Returns:
        a clone of the privacy passphrase or null.
      • getLocalizationEngineID

        public OctetString getLocalizationEngineID()
        Returns the localization engine ID for which this USM user has been already localized.
        Returns:
        null if this USM user is not localized or the SNMP engine ID of the target for which this user has been localized.
        Since:
        1.6
      • isLocalized

        public boolean isLocalized()
        Indicates whether the passphrases of this USM user need to be localized or not (true is returned in that case).
        Returns:
        true if the passphrases of this USM user represent localized keys.
        Since:
        1.6
      • getSecurityModel

        public int getSecurityModel()
        Gets the security model ID of the USM.
        Returns:
        USM.getID()
      • compareTo

        public int compareTo​(UsmUser other)
        Compares two USM users by their security names.
        Specified by:
        compareTo in interface java.lang.Comparable<UsmUser>
        Parameters:
        other - another UsmUser instance.
        Returns:
        a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.
      • clone

        public java.lang.Object clone()
        Overrides:
        clone in class java.lang.Object
      • localizeUser

        public UsmUser localizeUser​(OctetString localizationEngineID,
                                    OctetString localizedAuthenticationKey,
                                    OctetString localizedPrivacyKey,
                                    SecurityProtocols securityProtocols)
        Return a copy of the current user with (updated) localized keys.
        Parameters:
        localizationEngineID - the localizationEngineID specifies the engine ID for which the supplied keys are already localized. Such an USM user can only be used with the target whose engine ID equals localizationEngineID. If null, then a NullPointerException will be thrown.
        localizedAuthenticationKey - the optional new (localized) authentication key. If null, then the existing authentication key of this user is preserved and it is returned by UsmUser in its localized representation.
        localizedPrivacyKey - the optional new (localized) privacy key. If null, then the existing privacy key of this user is preserved and it is returned by UsmUser in its localized representation.
        securityProtocols - a collection of SecurityProtocol instances providing security protocols used by the SecurityProtocols.passwordToKey(OID, OctetString, byte[]) operation to localize existing passphrases. If not provided (i.e. null) and at least one of the existing passphrases is not null, then a NullPointerException is thrown.
        Returns:
        a copy of this user but with localized (optionally new) authentication or privacy keys.
        Since:
        3.4.0
      • equals

        public boolean equals​(java.lang.Object o)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object