Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

88 lines
2.7 KiB

//
// MODULE: RegistryPasswords.h
//
// PURPOSE: Handles the storing and retrieval of encrypted passwords in the registry.
//
// COMPANY: Saltmine Creative, Inc. (206)-284-7511 [email protected]
//
// AUTHOR: Randy Biley
//
// ORIGINAL DATE: 10-23-98
//
// NOTES: Utilizes CryptoAPI v2.0 to store and retrieve passwords from the registry.
//
// Here are some sample calls.
// {
// // Construct a registry password object.
// CRegistryPasswords pwd( _T("SOFTWARE\\ISAPITroubleShoot"),
// _T("APGTS"), _T("APGTS"), _T("Koshka8Spider") );
// ... or equivalently
// CRegistryPasswords pwd( );
// bool bRetVal;
//
// pwd.WriteKey( _T("StatusAccess"), _T("2The9s") ); // Writes an encrypted password.
// bRetVal= pwd.KeyValidate( _T("StatusAccess"), _T("2The9s1") ); // Returns false.
// bRetVal= pwd.KeyValidate( _T("StatusAccess"), _T("2The9s") ); // Returns true.
// }
//
//
// Version Date By Comments
//--------------------------------------------------------------------
// V3.0 10-23-98 RAB
//
#ifndef __REGISTRYPASSWORDS_19981023_H_
#define __REGISTRYPASSWORDS_19981023_H_
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include <windows.h>
#include <wincrypt.h>
#include "apgtsstr.h"
#include "apgts.h"
#define HASH_SEED _T("Koshka8Spider")
class CRegistryPasswords
{
public:
// Assembles all of the CryptAPI components.
CRegistryPasswords(
LPCTSTR szRegSoftwareLoc=REG_SOFTWARE_LOC, // Registry Software Key location.
LPCTSTR szRegThisProgram=REG_THIS_PROGRAM, // Registry Program Name.
LPCTSTR szKeyContainer=REG_THIS_PROGRAM, // Key Container Name.
LPCTSTR szHashString=HASH_SEED // Value used to seed the hash.
);
// Simply calls Destroy().
~CRegistryPasswords();
// Function to encrypt and then write RegValue to RegKey.
bool WriteKey( const CString& RegKey, const CString& RegValue );
// Function to encrypt a given key.
bool EncryptKey( const CString& RegValue, char** ppBuf, long* plBufLen );
// Function to retrieves and then decrypt the value stored in RegKey,
// compares to RegValue, returns true if equal.
bool KeyValidate( const CString& RegKey, const CString& RegValue );
private:
void Destroy(); // Releases all of the CryptAPI components.
HCRYPTPROV m_hProv; // The handle to a CSP.
HCRYPTHASH m_hHash; // The handle to a hash object.
HCRYPTKEY m_hKey; // The handle to a cryptographic key.
bool m_bAllValid; // A flag when set to true indicates valid handles for the
// three objects above.
CString m_strRegSoftwareLoc; // Registry location e.g. _T("SOFTWARE\\ISAPITroubleShoot")
CString m_strRegThisProgram; // Registry program name e.g. _T("APGTS")
} ;
#endif
//
// EOF.
//