/*++

Copyright (c) 1998  Microsoft Corporation

Module Name:

    persist.h

Abstract:

Author:

    Adriaan Canter (adriaanc) 13-Jan-1998

Revision History:

    13-Jan-1998 adriaanc
        Created
    01-Aug-1998 adriaanc
        revised for digest.
--*/

#ifndef PERSIST_HXX
#define PERSIST_HXX

#include <pstore.h>

#define INTERNET_SETTINGS_KEY         "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"
#define DISABLE_PASSWORD_CACHE_VALUE  "DisablePasswordCaching"

#define CRED_PERSIST_NOT_AVAIL        0
#define CRED_PERSIST_AVAIL            1
#define CRED_PERSIST_UNKNOWN          2

#define MAX_FIELD_LENGTH              64
// PWL related defines.

// Password-cache-entry, this should be in PCACHE.
#define PCE_WWW_BASIC 0x13  
#define MAX_AUTH_FIELD_LENGTH           MAX_FIELD_LENGTH * 2

#define WNETDLL_MODULE                  "mpr.dll"
#define PSTORE_MODULE                   "pstorec.dll"
#define WNETGETCACHEDPASS               "WNetGetCachedPassword"
#define WNETCACHEPASS                   "WNetCachePassword"
#define WNETREMOVECACHEDPASS            "WNetRemoveCachedPassword"

// MPR.DLL exports used by top level API.
typedef DWORD (APIENTRY *PFWNETGETCACHEDPASSWORD)    (LPSTR, WORD, LPSTR, LPWORD, BYTE);
typedef DWORD (APIENTRY *PFWNETCACHEPASSWORD)        (LPSTR, WORD, LPSTR, WORD, BYTE, UINT);
typedef DWORD (APIENTRY *PFWNETREMOVECACHEDPASSWORD) (LPSTR, WORD, BYTE);


// ----------------Public function prototypes----------------------

// Determines availability of credential cache.
DWORD  InetInitCredentialPersist();

// Persist credentials (username/password).
DWORD InetSetCachedCredentials  (LPSTR szCtx,
                                 LPSTR szRealm, 
                                 LPSTR szUser, 
                                 LPSTR szPass);


// Get persisted credentials (username/password).
DWORD InetGetCachedCredentials  (LPSTR szCtx,
                                 LPSTR szRealm,
                                 LPSTR szUser, 
                                 LPSTR szPass);


// Remove persisted credentials (username/password).
DWORD InetRemoveCachedCredentials (LPSTR szCtx, LPSTR szRealm);



#endif //PERSIST_HXX


