|
|
/* Copyright (c) 1993, Microsoft Corporation, all rights reserved
** ** ppputil.h ** Public header for miscellaneuos PPP common library functions. */
#ifndef _PWUTIL_H_
#define _PWUTIL_H_
#ifndef USE_PROTECT_MEMORY
#define USE_PROTECT_MEMORY
#endif
VOID DecodePasswordA( CHAR* pszPassword );
VOID DecodePasswordW( WCHAR* pszPassword );
VOID EncodePasswordA( CHAR* pszPassword );
VOID EncodePasswordW( WCHAR* pszPassword );
VOID WipePasswordA( CHAR* pszPassword );
VOID WipePasswordW( WCHAR* pszPassword );
//New safer APIs to protect password. for .Net 534499 and LH 754400
#ifdef USE_PROTECT_MEMORY
//dwInSize has to be multiple of 16 bytes.
DWORD EncryptMemoryInPlace( IN OUT PBYTE pbIn, IN DWORD dwInSize);
DWORD DecryptMemoryInPlace( IN OUT PBYTE pbIn, IN DWORD dwInSize);
DWORD WipeMemoryInPlace( IN OUT PBYTE pbIn, IN DWORD dwInSize);
DWORD CopyMemoryInPlace( IN OUT PBYTE pbDest, IN DWORD dwDestSize, IN PBYTE pbSrc, IN DWORD dwSrcSize);
DWORD TrimToMul16( IN DWORD dwSize); #else
DWORD EncodePasswordInPlace( IN OUT PBYTE pbIn, IN DWORD dwInSize);
DWORD DecodePasswordInPlace( IN OUT PBYTE pbIn, IN DWORD dwInSize);
DWORD WipePasswordInPlace( IN OUT PBYTE pbIn, IN DWORD dwInSize);
DWORD CopyPasswordInPlace( IN OUT PBYTE pbDest, IN DWORD dwDestSize, IN PBYTE pbSrc, IN DWORD dwSrcSize);
#endif
#ifdef UNICODE
#define DecodePassword DecodePasswordW
#define EncodePassword EncodePasswordW
#define WipePassword WipePasswordW
#else
#define DecodePassword DecodePasswordA
#define EncodePassword EncodePasswordA
#define WipePassword WipePasswordA
#endif
//!!!
//XXXXBuf macros are only meant for array buffers like szPassword[PWLEN+1];
//for pointers to strings, the calller has to use SafeEncodePassword and as such
//
#ifdef USE_PROTECT_MEMORY
#define SafeEncodePassword EncryptMemoryInPlace
#define SafeDecodePassword DecryptMemoryInPlace
#define SafeWipePassword WipeMemoryInPlace
#define SafeCopyPassword CopyMemoryInPlace
#define SafeCopyPasswordBuf(x,y) CopyMemoryInPlace((PBYTE)(x),TrimToMul16(sizeof((x))),(PBYTE)(y),TrimToMul16(sizeof((y))))
#define SafeEncodePasswordBuf(x) EncryptMemoryInPlace((PBYTE)(x),TrimToMul16(sizeof((x))))
#define SafeDecodePasswordBuf(x) DecryptMemoryInPlace((PBYTE)(x), TrimToMul16(sizeof((x))))
#define SafeWipePasswordBuf(x) WipeMemoryInPlace((PBYTE)(x), sizeof((x)))
#else
#define SafeEncodePassword EncodePasswordInPlace
#define SafeDecodePassword DecodePasswordInPlace
#define SafeWipePassword WipePasswordInPlace
#define SafeCopyPassword CopyPasswordInPlace
#define SafeCopyPasswordBuf(x,y) CopyPasswordInPlace((PBYTE)(x),sizeof((x)),(PBYTE)(y), sizeof((y)))
#define SafeEncodePasswordBuf(x) EncodePasswordInPlace((PBYTE)(x), sizeof((x)))
#define SafeDecodePasswordBuf(x) DecodePasswordInPlace((PBYTE)(x), sizeof((x)))
#define SafeWipePasswordBuf(x) WipePasswordInPlace((PBYTE)(x), sizeof((x)))
#endif
#endif // _PWUTIL_H_
|