Module org.snmp4j

Class TSM

  • All Implemented Interfaces:
    SecurityModel

    public class TSM
    extends SNMPv3SecurityModel
    The TSM (Transport Security Model) implements a SecurityModel which uses transport security mechanisms as defined in RFC 5591.
    Since:
    2.0
    Version:
    2.0
    Author:
    Frank Fock
    • Constructor Detail

      • TSM

        public TSM()
      • TSM

        public TSM​(OctetString localEngineID,
                   boolean usePrefix)
    • Method Detail

      • setLocalEngineID

        public void setLocalEngineID​(OctetString localEngineID)
      • fireIncrementCounter

        protected void fireIncrementCounter​(CounterEvent e)
      • supportsEngineIdDiscovery

        public boolean supportsEngineIdDiscovery()
        Description copied from interface: SecurityModel
        Checks whether this SecurityModel supports authoritative engine ID discovery. The USM for instance, returns true whereas TSM returns false. See also RFC 5343 3.2 for details.
        Returns:
        true if this security model has its own authoritative engine ID discovery mechanism.
      • hasAuthoritativeEngineID

        public boolean hasAuthoritativeEngineID()
        Description copied from interface: SecurityModel
        Checks whether this SecurityModel has an authoritative engine ID.
        Returns:
        true if an authoritative engine ID is exchanged between command sender and responder using this security model, false otherwise.
      • newSecurityParametersInstance

        public SecurityParameters newSecurityParametersInstance()
        Description copied from interface: SecurityModel
        Creates a new SecurityParameters instance that corresponds to this security model.
        Returns:
        a new SecurityParameters instance.
      • generateRequestMessage

        public int generateRequestMessage​(int messageProcessingModel,
                                          byte[] globalData,
                                          int maxMessageSize,
                                          int securityModel,
                                          byte[] securityEngineID,
                                          byte[] securityName,
                                          int securityLevel,
                                          BERInputStream scopedPDU,
                                          SecurityParameters securityParameters,
                                          BEROutputStream wholeMsg,
                                          TransportStateReference tmStateReference)
                                   throws java.io.IOException
        Description copied from interface: SecurityModel
        Generate a request message.
        Parameters:
        messageProcessingModel - the ID of the message processing model (SNMP version) to use.
        globalData - the message header and admin data.
        maxMessageSize - the maximum message size of the sending (this) SNMP entity for the selected transport mapping (determined by the message processing model).
        securityModel - the security model for the outgoing message.
        securityEngineID - the authoritative SNMP entity.
        securityName - the principal on behalf of this message is generated.
        securityLevel - the requested SecurityLevel.
        scopedPDU - a BERInputStream containing the message (plain text) payload.
        securityParameters - returns the SecurityParameters filled by the security model.
        wholeMsg - returns the complete generated message in a BEROutputStream. The buffer of wholeMsg is set to null by the caller and must be set by the implementation of this method.
        tmStateReference - the transport model state reference as defined by RFC 5590.
        Returns:
        the error status of the message generation. On success SnmpConstants.SNMPv3_USM_OK is returned, otherwise one of the other SnmpConstants.SNMPv3_USM_* values is returned.
        Throws:
        java.io.IOException - if generation of the message fails because of an internal or an resource error.
      • getSecurityNamePrefix

        protected java.lang.String getSecurityNamePrefix​(byte[] securityName)
      • getTransportDomainPrefix

        protected java.lang.String getTransportDomainPrefix​(Address address)
      • generateResponseMessage

        public int generateResponseMessage​(int messageProcessingModel,
                                           byte[] globalData,
                                           int maxMessageSize,
                                           int securityModel,
                                           byte[] securityEngineID,
                                           byte[] securityName,
                                           int securityLevel,
                                           BERInputStream scopedPDU,
                                           SecurityStateReference securityStateReference,
                                           SecurityParameters securityParameters,
                                           BEROutputStream wholeMsg)
                                    throws java.io.IOException
        Description copied from interface: SecurityModel
        Generates a response message.
        Parameters:
        messageProcessingModel - the ID of the message processing model (SNMP version) to use.
        globalData - the message header and admin data.
        maxMessageSize - the maximum message size of the sending (this) SNMP entity for the selected transport mapping (determined by the message processing model).
        securityModel - the security model for the outgoing message.
        securityEngineID - the authoritative SNMP entity.
        securityName - the principal on behalf of this message is generated.
        securityLevel - the requested SecurityLevel.
        scopedPDU - a BERInputStream containing the message (plain text) payload.
        securityStateReference - a SecurityStateReference instance providing information from original request.
        securityParameters - returns the SecurityParameters filled by the security model.
        wholeMsg - returns the complete generated message in a BEROutputStream. The buffer of wholeMsg is set to null by the caller and must be set by the implementation of this method.
        Returns:
        the error status of the message generation. On success SnmpConstants.SNMPv3_USM_OK is returned, otherwise one of the other SnmpConstants.SNMPv3_USM_* values is returned.
        Throws:
        java.io.IOException - if generation of the message fails because of an internal or an resource error.
      • processIncomingMsg

        public int processIncomingMsg​(int messageProcessingModel,
                                      int maxMessageSize,
                                      SecurityParameters securityParameters,
                                      SecurityModel securityModel,
                                      int securityLevel,
                                      BERInputStream wholeMsg,
                                      TransportStateReference tmStateReference,
                                      OctetString securityEngineID,
                                      OctetString securityName,
                                      BEROutputStream scopedPDU,
                                      Integer32 maxSizeResponseScopedPDU,
                                      SecurityStateReference securityStateReference,
                                      StatusInformation statusInfo)
                               throws java.io.IOException
        Description copied from interface: SecurityModel
        Processes an incoming message and returns its plaintext payload.
        Parameters:
        messageProcessingModel - the ID of the message processing model (SNMP version) to use.
        maxMessageSize - the maximum message size of the message processing model for the transport mapping associated with this message's source address less the length of the maximum header length of the message processing model. This value is used by the security model to determine the maxSizeResponseScopedPDU value.
        securityParameters - the SecurityParameters for the received message.
        securityModel - the SecurityModel instance for the received message.
        securityLevel - the SecurityLevel ID.
        wholeMsg - the BERInputStream containing the whole message as received on the wire.
        tmStateReference - the transport model state reference as defined by RFC 5590.
        securityEngineID - the authoritative SNMP entity.
        securityName - the identification of the principal.
        scopedPDU - returns the message (plaintext) payload into the supplied BEROutputStream. The buffer of scopedPDU is set to null by the caller and must be set by the implementation of this method.
        maxSizeResponseScopedPDU - the determined maximum size for a response PDU.
        securityStateReference - the SecurityStateReference information needed for a response.
        statusInfo - the StatusInformation needed to generate reports if processing of the incoming message failed.
        Returns:
        the error status of the message processing. On success SnmpConstants.SNMPv3_USM_OK is returned, otherwise one of the other SnmpConstants.SNMPv3_USM_* values is returned.
        Throws:
        java.io.IOException - if an unexpected (internal) or an resource error occurred.
      • isUsePrefix

        public boolean isUsePrefix()
        Returns whether the transport domain prefix is prepended to the securityName.
        Returns:
        true if the transport domain prefix is prepended to the securityName.
      • setUsePrefix

        public void setUsePrefix​(boolean usePrefix)
        Sets the flag that controls whether the transport domain prefix is prepended to the securityName.
        Parameters:
        usePrefix - if true the transport domain prefix is prepended to the securityName.