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.
 
 
 
 
 
 

178 lines
4.2 KiB

//+-----------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (c) Microsoft Corporation 1991 - 1992
//
// File: crypt.c
//
// Contents: Root DLL file
//
//
// History: 04 Jun 92 RichardW Created
//
//------------------------------------------------------------------------
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <windows.h>
#include <security.h>
#include <cryptdll.h>
#include <kerbcon.h>
//#define DONT_SUPPORT_OLD_ETYPES 1
// List Default CryptoSystems here. If you add anything, be sure to add it
// in the LoadCSystems() function
extern CRYPTO_SYSTEM csRC4_HMAC;
extern CRYPTO_SYSTEM csRC4_HMAC_EXP;
extern CRYPTO_SYSTEM csRC4_LM;
extern CRYPTO_SYSTEM csRC4_PLAIN;
extern CRYPTO_SYSTEM csRC4_PLAIN_EXP;
#ifndef DONT_SUPPORT_OLD_ETYPES
extern CRYPTO_SYSTEM csRC4_MD4;
extern CRYPTO_SYSTEM csRC4_HMAC_OLD;
extern CRYPTO_SYSTEM csRC4_HMAC_OLD_EXP;
extern CRYPTO_SYSTEM csRC4_PLAIN_OLD;
extern CRYPTO_SYSTEM csRC4_PLAIN_OLD_EXP;
#endif
extern CRYPTO_SYSTEM csDES_MD5;
extern CRYPTO_SYSTEM csDES_CRC32;
extern CRYPTO_SYSTEM csDES_PLAIN;
extern CRYPTO_SYSTEM csNULL;
extern CHECKSUM_FUNCTION csfMD4;
extern CHECKSUM_FUNCTION csfMD5;
extern CHECKSUM_FUNCTION csfCRC32;
extern CHECKSUM_FUNCTION csfKERB_CRC32;
extern CHECKSUM_FUNCTION csfSHA;
extern CHECKSUM_FUNCTION csfLM;
extern CHECKSUM_FUNCTION csfRC4_MD5;
extern CHECKSUM_FUNCTION csfDES_MAC_MD5;
extern CHECKSUM_FUNCTION csfMD5_HMAC;
extern CHECKSUM_FUNCTION csfHMAC_MD5;
extern CHECKSUM_FUNCTION csfMD25;
extern CHECKSUM_FUNCTION csfDesMac;
extern CHECKSUM_FUNCTION csfDesMacK;
extern CHECKSUM_FUNCTION csfDesMac1510;
extern CHECKSUM_FUNCTION csfDES_MAC_MD5_1510;
extern RANDOM_NUMBER_GENERATOR DefaultRng;
SECURITY_STATUS LoadCSystems(void);
SECURITY_STATUS LoadCheckSums(void);
BOOLEAN LoadRngs(void);
#ifdef WIN32_CHICAGO
BOOL Sys003Initialize (PVOID hInstance, ULONG dwReason, PVOID lpReserved);
#endif // WIN32_CHICAGO
int
LibAttach(
HANDLE hInstance,
PVOID lpReserved)
{
SECURITY_STATUS scRet;
scRet = LoadCSystems();
scRet = LoadCheckSums();
(void) LoadRngs();
if (scRet)
return(0);
else
return(1);
}
#ifndef KERNEL_MODE
#define _DECL_DLLMAIN
#include <process.h>
BOOL WINAPI DllMain (
HANDLE hInstance,
ULONG dwReason,
PVOID lpReserved)
{
#ifdef WIN32_CHICAGO
if (!Sys003Initialize ((PVOID) hInstance, dwReason, NULL ))
{
// Something really bad happened
return FALSE;
}
#endif // WIN32_CHICAGO
if ( dwReason == DLL_PROCESS_ATTACH )
{
DisableThreadLibraryCalls ( hInstance );
return LibAttach ( hInstance, lpReserved );
}
else
return TRUE;
}
#endif // KERNEL_MODE
SECURITY_STATUS
LoadCSystems(void)
{
//
// The order here is the order of preference
//
CDRegisterCSystem( &csRC4_HMAC);
#ifndef DONT_SUPPORT_OLD_ETYPES
CDRegisterCSystem( &csRC4_HMAC_OLD);
CDRegisterCSystem( &csRC4_MD4);
#endif
CDRegisterCSystem( &csDES_MD5);
CDRegisterCSystem( &csDES_CRC32);
CDRegisterCSystem( &csRC4_PLAIN);
CDRegisterCSystem( &csRC4_PLAIN_EXP);
CDRegisterCSystem( &csRC4_HMAC_EXP);
#ifndef DONT_SUPPORT_OLD_ETYPES
CDRegisterCSystem( &csRC4_HMAC_OLD_EXP);
CDRegisterCSystem( &csRC4_PLAIN_OLD);
CDRegisterCSystem( &csRC4_PLAIN_OLD_EXP);
#endif
CDRegisterCSystem( &csDES_PLAIN);
return(0);
}
SECURITY_STATUS
LoadCheckSums(void)
{
CDRegisterCheckSum( &csfMD5_HMAC );
CDRegisterCheckSum( &csfHMAC_MD5 );
CDRegisterCheckSum( &csfMD4);
CDRegisterCheckSum( &csfMD5);
CDRegisterCheckSum( &csfKERB_CRC32);
CDRegisterCheckSum( &csfDES_MAC_MD5 );
CDRegisterCheckSum( &csfMD25 );
CDRegisterCheckSum( &csfDesMac );
CDRegisterCheckSum( &csfRC4_MD5 );
CDRegisterCheckSum( &csfCRC32);
#ifndef KERNEL_MODE
CDRegisterCheckSum( &csfLM );
#endif
CDRegisterCheckSum( &csfSHA );
CDRegisterCheckSum( &csfDES_MAC_MD5_1510 );
CDRegisterCheckSum( &csfDesMac1510 );
CDRegisterCheckSum( &csfDesMacK );
return(0);
}
BOOLEAN
LoadRngs(void)
{
CDRegisterRng(&DefaultRng);
return(TRUE);
}