Package org.snmp4j.security

Source Code of org.snmp4j.security.UsmUserEntry

/*_############################################################################
  _##
  _##  SNMP4J - UsmUserEntry.java 
  _##
  _##  Copyright (C) 2003-2009  Frank Fock and Jochen Katz (SNMP4J.org)
  _## 
  _##  Licensed under the Apache License, Version 2.0 (the "License");
  _##  you may not use this file except in compliance with the License.
  _##  You may obtain a copy of the License at
  _## 
  _##      http://www.apache.org/licenses/LICENSE-2.0
  _## 
  _##  Unless required by applicable law or agreed to in writing, software
  _##  distributed under the License is distributed on an "AS IS" BASIS,
  _##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  _##  See the License for the specific language governing permissions and
  _##  limitations under the License.
  _## 
  _##########################################################################*/

package org.snmp4j.security;

import java.io.Serializable;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.OID;

/**
* The <code>UsmUserEntry</code> class represents a user in the
* Local Configuration Datastore (LCD).
*
* @author Frank Fock
* @version 1.1
*/
public class UsmUserEntry implements Serializable, Comparable {

  private static final long serialVersionUID = -3021438367015187166L;

  private OctetString engineID;
  private OctetString userName;
  private UsmUser usmUser;
  private byte[] authenticationKey;
  private byte[] privacyKey;

  /**
   * Creates a new user entry with empty engine ID and empty user.
   */
  public UsmUserEntry() {
    engineID = new OctetString();
    userName = new OctetString();
    usmUser = new UsmUser(new OctetString(), null, null, null, null);
  }

  /**
   * Creates a user with user name and associated {@link UsmUser}.
   * @param userName
   *    the user name of the new entry.
   * @param user
   *    the <code>UsmUser</code> representing the security information of the
   *    user.
   */
  public UsmUserEntry(OctetString userName, UsmUser user) {
    this.userName = userName;
    this.usmUser = user;
    if (user.isLocalized()) {
      if ((user.getAuthenticationProtocol() != null) &&
          (user.getAuthenticationPassphrase() != null)) {
        authenticationKey = user.getAuthenticationPassphrase().getValue();
        if ((user.getPrivacyProtocol() != null) &&
            (user.getPrivacyPassphrase() != null)) {
          privacyKey = user.getPrivacyPassphrase().getValue();
        }
      }
    }
  }

  /**
   * Creates a user with user name and associated {@link UsmUser}.
   * @param userName
   *    the user name of the new entry.
   * @param engineID
   *    the authoritative engine ID associated with the user.
   * @param user
   *    the <code>UsmUser</code> representing the security information of the
   *    user.
   */
  public UsmUserEntry(OctetString userName,
                      OctetString engineID,
                      UsmUser user) {
    this(userName, user);
    this.engineID = engineID;
  }

  /**
   * Creates a localized user entry.
   * @param engineID
   *    the engine ID for which the users has bee localized.
   * @param securityName
   *    the user and security name of the new entry.
   * @param authProtocol
   *    the authentication protocol ID.
   * @param authKey
   *    the authentication key.
   * @param privProtocol
   *    the privacy protocol ID.
   * @param privKey
   *    the privacy key.
   */
  public UsmUserEntry(byte[] engineID, OctetString securityName,
                      OID authProtocol, byte[] authKey,
                      OID privProtocol, byte[] privKey) {
    this.engineID = (engineID == null) ? null : new OctetString(engineID);
    this.userName = securityName;
    this.authenticationKey = authKey;
    this.privacyKey = privKey;
    this.usmUser =
        new UsmUser(userName, authProtocol,
                    ((authenticationKey != null) ?
                     new OctetString(authenticationKey) : null),
                    privProtocol,
                    ((privacyKey != null) ?
                     new OctetString(privacyKey) : null), this.engineID);
  }

  public OctetString getEngineID() {
    return engineID;
  }
  public void setEngineID(OctetString engineID) {
    this.engineID = engineID;
  }
  public void setUserName(OctetString userName) {
    this.userName = userName;
  }
  public OctetString getUserName() {
    return userName;
  }
  public void setUsmUser(UsmUser usmUser) {
    this.usmUser = usmUser;
  }
  public UsmUser getUsmUser() {
    return usmUser;
  }
  public void setAuthenticationKey(byte[] authenticationKey) {
    this.authenticationKey = authenticationKey;
  }
  public byte[] getAuthenticationKey() {
    return authenticationKey;
  }
  public void setPrivacyKey(byte[] privacyKey) {
    this.privacyKey = privacyKey;
  }
  public byte[] getPrivacyKey() {
    return privacyKey;
  }

  /**
   * Compares this user entry with another one by engine ID then by their user
   * names.
   *
   * @param o
   *    a <code>UsmUserEntry</code> instance.
   * @return
   *    a negative integer, zero, or a positive integer as this object is
   *    less than, equal to, or greater than the specified object.
   */
  public int compareTo(Object o) {
    UsmUserEntry other = (UsmUserEntry)o;
    int result = 0;
    if ((engineID != null) && (other.engineID != null)) {
      result = engineID.compareTo(other.engineID);
    }
    else if ((engineID != null) && (other.engineID == null)) {
      result = 1;
    }
    else if ((engineID == null) && (other.engineID != null)) {
      result = -1;
    }
    if (result == 0) {
      result = userName.compareTo(other.userName);
      if (result == 0) {
        result = usmUser.compareTo(other.usmUser);
      }
    }
    return result;
  }

  public String toString() {
    return "UsmUserEntry[userName="+userName+",usmUser="+usmUser+"]";
  }

}

TOP

Related Classes of org.snmp4j.security.UsmUserEntry

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.