/***********************************************************************
 * 
 *  Copyright (C) 2005-2006 Novell, Inc. All Rights Reserved.
 *
 *  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
 *  Library 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, Novell, Inc.
 * 
 *  To contact Novell about this file by physical or electronic mail, 
 *  you may find current contact information at www.novell.com.
 * 
 ***********************************************************************/

using System;
using System.Collections;
using System.Text;
using System.Threading;
using sscs.verbs;
using sscs.common;


    namespace sscs.verbs 
    {

     /*
     * Defines the interfaces to be implemenetd by all Secret Store Verbs. 
     */
    interface SSVerb
    {
        /* Takes in the raw bytes and sets them for a Verb, 
         * so that the verb will execute in the bytes given.
         * TBD: In case we are able to send the byte[] through constructor, 
         * we can avoid this interface.    
         */

        void SetMessageContent(byte[] rawbytes); 
         
        /* Takes in the SecretStore Reeference and returns the correct SSVerb
         */
        byte[] ProcessRequest(UserIdentifier userId);

        //Gives the name of operation performed.Can be used in case of error. 
        string GetVerbName();
    }
    
    }