/*****************************************************************
JADE - Java Agent DEvelopment Framework is a framework to develop
multi-agent systems in compliance with the FIPA specifications.
Copyright (C) 2002 TILAB S.p.A.

GNU Lesser General Public License

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation,
version 2.1 of the License.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA  02111-1307, USA.
*****************************************************************/

package jade.security;


/**
	The <code>JADEPrincipal</code> interface represents all principals
	acting on the platform. They will be held responsible for their
	own agents and containers.

	@author Michele Tomaiuolo - Universita` di Parma
	@author Giosue Vitaglione - Telecom Italia LAB

	@version $Date: 2004-05-10 17:36:04 +0200 (lun, 10 mag 2004) $ $Revision: 5069 $
*/
public interface JADEPrincipal
//#ALL_EXCLUDE_BEGIN
		extends java.security.Principal
//#ALL_EXCLUDE_END
{
  
	/**
   * The name which marks an unidentified principal.
   */
	public static final String NONE = "none";
  
	/**
   * Returns the name of this principal as known to its platform.
   * @return The name.
   */
	public String getName();

	/**
   * Returns the SDSI name of this principal (if any)
   * @return The SDSIName
   */
	public  SDSIName getSDSIName();
  
  
	/**
   *	Checks the hierarchical relationship between two principals, i.e.
   *tells if this principal belongs to group <code>p</code>.
   *If this holds, all permissions granted to <code>p</code> will be
   *automatically granted to this principal, too.
   *@param p The principal to check.
   *@return True if this principal is a member of group <code>p</code>.
   */
  //public boolean implies(JADEPrincipal p);
  
  public byte[] getEncoded();
  public String toString();
  public int hashCode ();
  public boolean equals(Object p);
}
