// Copyright 1999 Memesoft.  All rights reserved.

package krb5.lib.util;

import krb5.lib.KrbException;
import krb5.lib.PrincipalName;
import krb5.lib.EncryptionKey;

/**
 * Key tab
 */
public interface Keytab {

	/**
	 * Returns encryption key
	 *
	 * @return EncryptionKey is a result
	 * @param princName is of type PrincipalName
	 * @exception KrbException an exception
	 * @see krb5.lib.EncryptionKey
	 * @see krb5.lib.PrincipalName
	 * @see krb5.lib.KrbException
	 */
    public EncryptionKey getEncryptionKey(PrincipalName princName) throws KrbException;

	/**
	 * Prints
	 *
	 * @exception KrbException an exception
	 * @see krb5.lib.KrbException
	 */
	public void print() throws KrbException;

	/**
	 * Returns first entry
	 *
	 * @return KeytabEntry is a result
	 * @exception KrbException an exception
	 * @see krb5.lib.util.KeytabEntry
	 * @see krb5.lib.KrbException
	 */
	public KeytabEntry getFirstEntry() throws KrbException;

	/**
	 * Returns next entry
	 *
	 * @return KeytabEntry is a result
	 * @exception KrbException an exception
	 * @see krb5.lib.util.KeytabEntry
	 * @see krb5.lib.KrbException
	 */
	public KeytabEntry getNextEntry() throws KrbException;
}