/***********************************************************************
 * 
 *  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;
namespace sscs.constants
{
    class IPCRetCodes
    {
        internal static int SSCS_REPLY_SUCCESS                     =  0;
        internal static int SSCS_E_INVALID_MESSAGE                 = -1;
        internal static int SSCS_E_VERSION_NOT_SUPPORTED           = -2;
        internal static int SSCS_E_SYSTEM_ERROR                    = -3;
        internal static int SSCS_E_REPLY_NOT_AVAILABLE             = -4;
        internal static int SSCS_E_INVALID_KEYCHAIN                = -5;
        internal static int SSCS_E_INVALID_SECRETID                = -6;
        internal static int SSCS_E_KEYCHAIN_ALREADY_EXISTS         = -7;
        internal static int SSCS_E_MAX_KEYCHAINS_REACHED           = -8;
        internal static int SSCS_E_ADD_KEYCHAIN_FAILED             = -9;
        internal static int SSCS_E_NO_KEYCHAINS_EXIST              = -10;
        internal static int SSCS_E_KEYCHAIN_DOES_NOT_EXIST         = -11;
        internal static int SSCS_E_REMOVE_KEYCHAIN_FAILED          = -12;
        internal static int SSCS_E_WRITE_SECRET_FAILED             = -13;
        internal static int SSCS_E_ADDING_DEFAULT_KEYCHAIN_FAILED  = -14;
        internal static int SSCS_E_NO_SECRETS_EXIST                = -15;
        internal static int SSCS_E_REMOVE_SECRET_FAILED            = -16;
        internal static int SSCS_E_GET_SOCKET_PATH_FAILED          = -17;
        internal static int SSCS_E_CREATE_SOCKET_FAILED            = -18;
        internal static int SSCS_E_SECRETID_DOES_NOT_EXIST         = -19;
        internal static int SSCS_E_INVALID_INPUT                   = -20;
        internal static int SSCS_E_SETTING_PASSCODE_FAILED         = -21;
        internal static int SSCS_PROMPT_PASSCODE                   = 1;
        internal static int SSCS_STORE_IS_PERSISTENT               = -22;
        internal static int SSCS_STORE_IS_NOT_PERSISTENT           = -23;
        internal static int SSCS_SECRET_IS_PERSISTENT              = -24;
        internal static int SSCS_SECRET_IS_NOT_PERSISTENT          = -25;
        internal static int SSCS_SECRET_STORE_IS_LOCKED            = -26;        
    }    

    internal class ReqMsgId
    {
        
    }
    internal class RespMsgId
    {

    }

    internal class RetCodes
    {
        internal static int SUCCESS = 0;
        internal static int FAILURE = -1;
        internal static int LOAD_HIDDEN_ONLY = 1;
        internal static int LOAD_ALL_EXCEPT_HIDDEN = 2;
        internal static int WRITE_HIDDEN_ONLY = 3;
        internal static int WRITE_ALL_EXCEPT_HIDDEN = 4;
        internal static int WRITE_ALL = 5;
    }

    internal class ConstStrings
    {
        internal static string SSCS_SESSION_KEY_CHAIN_ID = "SSCS_SESSION_KEY_CHAIN_ID";
        internal static string SSCS_LOCAL_KEY_CHAIN_ID = "SSCS_LOCAL_KEY_CHAIN_ID";
        internal static string SSCS_HIDDEN_LOCAL_KEYCHAIN_ID = "SSCS_HIDDEN_LOCAL_KEYCHAIN_ID";
        internal static string SSCS_REMOTE_KEYCHAIN_ID = "SSCS_REMOTE_KEYCHAIN_ID";
        internal static string SSCS_LOCAL_REMOTE_KEYCHAIN_ID = "SSCS_LOCAL_REMOTE_KEYCHAIN_ID";
        
        //TBD , Need to look at Novell standard for the desktop
        internal static string SSCS_WIN_ENGINELOG = "c:\\CSSS.log";
        internal static string SSCS_WIN_DEBUGLOG = "c:\\CSSSDEBUG.log";

        //TBD , Need to look at Novell standard for the desktop
        internal static string SSCS_LINUX_ENGINELOG = "/var/log/localmessages";
        internal static string SSCS_LINUX_DEBUGLOG = "/var/log/micasad_debug.log";
        internal static string SSCS_LINUX_PIDFILE  = "/var/run/micasad.pid";

		
        internal static bool STATUS = true;
        internal static bool DEBUG = false;

        internal static string MICASA_DESKTOP_PASSWD = "SS_CredSet:Desktop\0";

//        internal static string MICASA_DESKTOP_PASSWD_KEYNAME = "Password\0";
        internal static string MICASA_DESKTOP_PASSWD_KEYNAME = "Password";

        // The file where the key (encrypted with master passcode)
        // would be stored
        internal static string MICASA_PASSCODE_BY_DESKTOP_FILE = "/.miCASAPCByDesktop";

        internal static string MICASA_PASSCODE_BY_MASTERPASSWD_FILE = "/.miCASAPCByMPasswd";

        //The file where all possible passwds are cross encrypted and
        //stored to provide multiple recovery points.
        internal static string MICASA_KEY_FILE    = "/.miCASAKey";

        //The file where the user's credentials are persisted.
        internal static string MICASA_PERSISTENCE_FILE = "/.miCASA";

        //The file required to validate the desktop passwd
        internal static string MICASA_VALIDATION_FILE = "/.miCASAValidate";

        internal static string MICASA_VALIDATION_STRING = "miCASAValidationString";

    }

    internal class ConstFlags
    {
        internal static uint SSFLAGS_DESTROY_SESSION_F = 1;
    }
    internal class XmlConsts
    {
        internal static string miCASANode  = "miCASA";
        internal static string versionAttr = "version";
        internal static string keyChainNode = "KeyChain";
        internal static string idAttr       = "id";
        internal static string secretNode   = "Secret";
        internal static string valueNode    = "Value";
        internal static string timeNode     = "Time";
        internal static string createdTimeNode = "created";
        internal static string modifiedTimeNode = "modified";
        internal static string keyNode = "Key";
        internal static string keyValueNode = "KeyValue";
		internal static string linkedKeyNode = "LinkedKey";
		internal static string linkedTargetSecretNode   = "TargetSecret";
		internal static string linkedTargetKeyNode   = "TargetKey";
    }
}