|
|
/*++ BUILD Version: 0001 // Increment this if a change has global effects
Copyright (c) 2000 Microsoft Corporation
Module Name:
credp.h
Abstract:
This module contains the private data structures and API definitions needed for the Credential Manager.
Author:
Cliff Van Dyke (CliffV) 28-February-2000
Revision History:
--*/
#ifndef _CREDP_H_
#define _CREDP_H_
#if !defined(_ADVAPI32_)
#define WINADVAPI DECLSPEC_IMPORT
#else
#define WINADVAPI
#endif
#include <lmcons.h>
#ifdef __cplusplus
extern "C" { #endif
//
// Describe direction of character conversion
//
typedef enum _WTOA_ENUM { DoWtoA = 1, // Convert unicode to ansi
DoAtoW, // Convert ansi to unicode
DoWtoW // Convert unicode to unicode
} WTOA_ENUM, *PWTOA_ENUM;
//
// Describe whether encoding or decoding should be done
//
typedef enum _ENCODE_BLOB_ENUM { DoBlobEncode = 0, // Encode CredentialBlob
DoBlobDecode, // Decode CredentialBlob
DoBlobNeither // Leave Credential blob intact
} ENCODE_BLOB_ENUM, *PENCODE_BLOB_ENUM;
//
// Define the valid target name types
//
typedef enum _TARGET_NAME_TYPE { IsUsernameTarget, IsNotUsernameTarget, MightBeUsernameTarget } TARGET_NAME_TYPE, *PTARGET_NAME_TYPE;
//
// enum describing different types of wildcarding in the TargetName field of a credential.
//
typedef enum _WILDCARD_TYPE { WcDfsShareName, // Target name of the form <DfsRoot>\<DfsShare>
WcServerName, // Target name of the form <ServerName>
WcServerWildcard, // Wildcard of the form *.<DnsName>
WcDomainWildcard, // Wildcard of the form <Domain>\*
WcUniversalSessionWildcard, // Wildcard of the form "*Session"
WcUniversalWildcard, // Wildcard of the form *
WcUserName // Target Name equals UserName
} WILDCARD_TYPE, *PWILDCARD_TYPE;
//
// When passing a credential around, the CredentialBlob field is encrypted.
// This structure describes this encrypted form.
//
//
#ifndef _ENCRYPTED_CREDENTIAL_DEFINED
#define _ENCRYPTED_CREDENTIAL_DEFINED
typedef struct _ENCRYPTED_CREDENTIALW {
//
// The credential
//
// The CredentialBlob field points to the encrypted credential
// The CredentialBlobSize field is the length (in bytes) of the encrypted credential
//
CREDENTIALW Cred;
//
// The size in bytes of the clear text credential blob
//
ULONG ClearCredentialBlobSize;
} ENCRYPTED_CREDENTIALW, *PENCRYPTED_CREDENTIALW; #endif // _ENCRYPTED_CREDENTIAL_DEFINED
//
// Macro to determine the size of the credential blob buffer to allocate
//
// Round up for RTL_ENCRYPT_MEMORY_SIZE
//
#define AllocatedCredBlobSize( _Size ) \
ROUND_UP_COUNT( (_Size), RTL_ENCRYPT_MEMORY_SIZE )
//
// Procedures
//
WINADVAPI DWORD WINAPI CredpConvertTargetInfo ( IN WTOA_ENUM WtoA, IN PCREDENTIAL_TARGET_INFORMATIONW InTargetInfo, OUT PCREDENTIAL_TARGET_INFORMATIONW *OutTargetInfo, OUT PULONG OutTargetInfoSize );
WINADVAPI DWORD WINAPI CredpConvertCredential ( IN WTOA_ENUM WtoA, IN ENCODE_BLOB_ENUM DoDecode, IN PCREDENTIALW InCredential, OUT PCREDENTIALW *OutCredential );
WINADVAPI BOOL WINAPI CredpEncodeCredential ( IN OUT PENCRYPTED_CREDENTIALW Credential );
WINADVAPI BOOL WINAPI CredpDecodeCredential ( IN OUT PENCRYPTED_CREDENTIALW Credential );
WINADVAPI BOOL WINAPI CredProfileLoaded ( VOID );
NTSTATUS NET_API_FUNCTION CredpValidateTargetName( IN OUT LPWSTR TargetName, IN ULONG Type, IN TARGET_NAME_TYPE TargetNameType, IN LPWSTR *UserNamePointer OPTIONAL, IN LPDWORD PersistPointer OPTIONAL, OUT PULONG TargetNameSize, OUT PWILDCARD_TYPE WildcardTypePointer OPTIONAL, OUT PUNICODE_STRING NonWildcardedTargetName OPTIONAL );
#ifdef __cplusplus
} #endif
#endif // _CREDP_H_
|