//++=======================================================================
// Program Name:  Novell XTier Authentication Services
// File Name:     SECRETSTORE.H
// Version:       v1.00
// Authors:       Jim Norman       (jnorman) 
// Abstract:      This module contains definition and prototype information
//                for the local secret store sevice.
// Revision History:
//
//
// (C) Unpublished Copyright of Novell, Inc.  All Rights Reserved.
//
// No part of this file may be duplicated, revised, translated, localized,
// or modified in any manner or compiled, linked or uploaded or downloaded
// to or from any computer system without the prior written consent of
// Novell, Inc.
//=======================================================================--

#ifndef _SECRETSTOREDEF_
#define _SECRETSTOREDEF_


//===[ Header files specific to this module ]==============================
#include <ncpltype.h>
#include <cppsup.h>
#include <nscmdef.h>

//===[ Manifest constants                   ]==============================

// {A118B15C-66A3-46ba-BA3B-D45FBBF0C5DA}
DEFINE_GUID(CLSID_SecretStoreClientService, 
	0xa118b15c, 
	0x66a3, 
	0x46ba, 
	0xba, 0x3b, 0xd4, 0x5f, 0xbb, 0xf0, 0xc5, 0xda);

// {6DF6121E-C823-43dd-9D1C-7B89056CC4AE}
DEFINE_GUID(IID_SSCS, 
	0x6df6121e, 
	0xc823, 
	0x43dd, 
	0x9d, 0x1c, 0x7b, 0x89, 0x5, 0x6c, 0xc4, 0xae);


//===[ Structure Definitions                ]==============================

//===[ Function Prototypes                  ]==============================

// {54BFEBE2-F726-44d9-AEDE-E9252FA99549}
DEFINE_GUID(IID_VerifyAccessSS_1,
	0x2d4c7faa,
   0x8e3c,
   0x4c70,
   0x87, 0xa7, 0xc8, 0x7d, 0xad, 0x80, 0x2a, 0xd);

/*
	0x54bfebe2,
	0xf726,
	0x44d9,
	0xae, 0xde, 0xe9, 0x25, 0x2f, 0xa9, 0x95, 0x49);
*/

#undef NICM_INTERFACE
#define NICM_INTERFACE     IVerifiedAccessSS


NICM_DECLARE_INHERITTED_INTERFACE(IVerifiedAccessSS, NICM_IUnknown)
{
   VIRT NCSTATUS NICM_STDMETHOD
      (QueryInterface) (
         IN       THISPTR
         IN       const GUID *pIId,
         OUT      void **ppvObj
         ) PURE;

   VIRT UINT32 NICM_STDMETHOD
      (AddRef) (
         IN       THISPTRONLY
         ) PURE;

   VIRT UINT32 NICM_STDMETHOD
      (Release) (
         IN       THISPTRONLY
         ) PURE;

   VIRT NCSTATUS NICM_STDMETHOD
      (QuerySecureInterface) (
         IN       THISPTR
         IN       HMODULE hModule,
         IN       const GUID *pIId,
         OUT      void **ppvObj
         ) PURE;
};

typedef IVerifiedAccessSS FAR *PIVerifiedAccessSS;


#undef NICM_INTERFACE
#define NICM_INTERFACE     ISecretStore

NICM_DECLARE_INHERITTED_INTERFACE(ISecretStore, NICM_IUnknown)
{
   VIRT NCSTATUS NICM_STDMETHOD
      (QueryInterface) (
         IN       THISPTR
         IN       const GUID *pIId,
         OUT      void **ppvObj
         ) PURE;

    VIRT UINT32 NICM_STDMETHOD
      (AddRef) (
         IN       THISPTRONLY
         ) PURE;

    VIRT UINT32 NICM_STDMETHOD
      (Release) (
         IN       THISPTRONLY
         ) PURE;

	VIRT NCSTATUS NICM_STDMETHOD
		(CacheOpenSecretStore)
	(
		IN      THISPTR
		IN		PVOID		secretStoreID,
		IN		ULONG		ssFlags,
		OUT		PVOID		ssHandle,
		IN OUT 	PVOID		reserved
	) PURE;

	VIRT NCSTATUS NICM_STDMETHOD
		(CacheCloseSecretStore)
	(
		IN      THISPTR		
		IN		PVOID		ssHandle,
		IN		ULONG		ssFlags,
		IN OUT 	PVOID		reserved
	) PURE;

	VIRT NCSTATUS NICM_STDMETHOD
		(CacheRemoveSecretStore)
	(
		IN      THISPTR		
		IN		PVOID		ssHandle,
		IN		ULONG		ssFlags,
		IN OUT 	PVOID		reserved
	) PURE;


	VIRT NCSTATUS NICM_STDMETHOD
	(CacheRemoveSecret) (
      IN       THISPTR
      IN       SCHANDLE hSC,
	  IN	   ULONG ssFlags,
	  IN	   SSCS_KEYCHAIN_ID_T *keyChainID,
      IN     SSCS_SECRET_ID_T *secretID,	  
		IN	SSCS_PASSWORD_T		*epPassword,
	  IN	   PVOID reserved
      ) PURE;


	VIRT NCSTATUS NICM_STDMETHOD
	(CacheReadSecret) (
      IN       THISPTR
      IN       SCHANDLE hSC,
	  IN	   ULONG ssFlags,
	  IN	   SSCS_KEYCHAIN_ID_T *keyChainID,
      IN     SSCS_SECRET_ID_T *secretID,	  
	  IN OUT   SSCS_SECRET_T		*secretData,
	  IN	   SSCS_PASSWORD_T		*epPassword,
	IN OUT	   void 				*bytesRequired,
	IN OUT     void				    *reserved
      ) PURE;

	VIRT NCSTATUS NICM_STDMETHOD
	(CacheWriteSecret) (
      IN       THISPTR
      IN       SCHANDLE hSC,
	  IN	   ULONG ssFlags,
	  IN	   SSCS_KEYCHAIN_ID_T *keyChainID,
      IN     SSCS_SECRET_ID_T *secretID,	  
	  IN	   SSCS_SECRET_T *secretData,
	  IN	   SSCS_PASSWORD_T *epPassword,
	  IN	   void *reserved
	  ) PURE;

	VIRT NCSTATUS NICM_STDMETHOD
	(CacheEnumerateSecretIDs) (
      IN       THISPTR
      IN       SCHANDLE					hSC,
	  IN	   ULONG					ssFlags,
	  IN	   SSCS_KEYCHAIN_ID_T *keyChainID,
	  IN	   SSCS_SRCH_KEY_T			*searchKey,
	  IN OUT   SSCS_SECRET_ID_LIST_T 	*secretIDList,
	  IN OUT   VOID						*reserved
      ) PURE;

	VIRT NCSTATUS NICM_STDMETHOD
	(CacheEnumerateKeyChainIDs) (
      IN       THISPTR
      IN       SCHANDLE					hSC,
	  IN	   ULONG					ssflags,
	  IN	   SSCS_SRCH_KEY_T			*searchKey,
	  IN OUT   SSCS_KEYCHAIN_ID_LIST_T 	*kcIDList,
	  IN OUT   VOID						*reserved
	  ) PURE;

   VIRT NCSTATUS NICM_STDMETHOD
	(CacheAddKeyChain) (
      IN       THISPTR
      IN       SCHANDLE		hSC,
      IN       ULONG		ssFlags,	  
	  IN	   SSCS_KEYCHAIN_ID_T *keyChainID,
	  IN OUT   PVOID		reserved
      ) PURE;

   VIRT NCSTATUS NICM_STDMETHOD
	(CacheRemoveKeyChain) (
      IN       THISPTR
      IN       SCHANDLE hSC,
	  IN       ULONG	  ssFlags,	  	  
	  IN	   SSCS_KEYCHAIN_ID_T *keyChainID,
	  IN OUT   PVOID  reserved
	  ) PURE;

	VIRT NCSTATUS NICM_STDMETHOD
	(CacheGetSecretStoreInfo) (
      IN		THISPTR
      IN		SCHANDLE hSC,      
	  IN		ULONG ssFlags,
	  IN		SSCS_SECRETSTORE_INFO_T  *ssInfo,
	  IN OUT	PVOID  reserved
      ) PURE;

	VIRT NCSTATUS NICM_STDMETHOD
	(CacheGetKeychainInfo) (
      IN		THISPTR
      IN		SCHANDLE hSC,      
	  IN		ULONG ssFlags,
	  IN	   SSCS_KEYCHAIN_ID_T *keyChainID,
	  IN		SSCS_KEYCHAIN_INFO_T  *kcInfo,
	  IN OUT	PVOID  reserved
      ) PURE;

	VIRT NCSTATUS NICM_STDMETHOD
	 (LockCache ) (
		IN		THISPTR
		IN		SCHANDLE hSC,      
		IN		ULONG ssFlags,	  	  
		IN OUT	PVOID  reserved		
		) PURE;

	VIRT NCSTATUS NICM_STDMETHOD
	 (UnLockCache ) (
		IN		THISPTR
		IN		SCHANDLE hSC,      
		IN		ULONG ssFlags,	  	  
		IN		SSCS_PASSCODE_T  *passcode,
		IN OUT	PVOID  reserved		
		) PURE;
};

typedef ISecretStore FAR *PISecretStore;

#endif // _SECRETSTOREDEF_

//=========================================================================
//=========================================================================