148 lines
1.9 KiB
C
148 lines
1.9 KiB
C
|
/*++
|
||
|
|
||
|
Copyright (c) 1994-1998 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
tssec.c
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
Contains code that generates random keys.
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Madan Appiah (madana) 1-Jan-1998
|
||
|
Modified by Nadim Abdo 31-Aug-2001 to use system RNG
|
||
|
|
||
|
Environment:
|
||
|
|
||
|
User Mode - Win32
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
|
||
|
#include <seccom.h>
|
||
|
#include <stdlib.h>
|
||
|
|
||
|
#include <rng.h>
|
||
|
|
||
|
#ifndef OS_WINCE
|
||
|
#include <randlib.h>
|
||
|
#endif
|
||
|
|
||
|
VOID
|
||
|
TSRNG_Initialize(
|
||
|
)
|
||
|
{
|
||
|
#ifndef OS_WINCE
|
||
|
InitializeRNG(NULL);
|
||
|
#else
|
||
|
TSInitializeRNG();
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
|
||
|
VOID
|
||
|
TSRNG_Shutdown(
|
||
|
)
|
||
|
{
|
||
|
#ifndef OS_WINCE
|
||
|
ShutdownRNG(NULL);
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// function definitions
|
||
|
//
|
||
|
|
||
|
BOOL
|
||
|
TSRNG_GenerateRandomBits(
|
||
|
LPBYTE pbRandomBits,
|
||
|
DWORD cbLen
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This function returns random bits
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
pbRandomBits - pointer to a buffer where a random key is returned.
|
||
|
|
||
|
cbLen - length of the random key required.
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
TRUE - if a random key is generated successfully.
|
||
|
FALSE - otherwise.
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
#ifndef OS_WINCE
|
||
|
BOOL fRet;
|
||
|
|
||
|
fRet = NewGenRandom(NULL, NULL, pbRandomBits, cbLen);
|
||
|
|
||
|
return fRet;
|
||
|
#else
|
||
|
GenerateRandomBits(pbRandomBits, cbLen);
|
||
|
return( TRUE );
|
||
|
#endif
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// Legacy RNG's
|
||
|
VOID
|
||
|
InitRandomGenerator(
|
||
|
VOID
|
||
|
)
|
||
|
{
|
||
|
//
|
||
|
// initialize the random generator first.
|
||
|
//
|
||
|
|
||
|
TSInitializeRNG();
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// function definitions
|
||
|
//
|
||
|
BOOL
|
||
|
GenerateRandomKey(
|
||
|
LPBYTE pbRandomKey,
|
||
|
DWORD dwRandomKeyLen
|
||
|
)
|
||
|
/*++
|
||
|
|
||
|
Routine Description:
|
||
|
|
||
|
This function makes and return the microsoft terminal server certificate
|
||
|
blob of data.
|
||
|
|
||
|
Arguments:
|
||
|
|
||
|
pbRandomKey - pointer to a buffer where a random key is returned.
|
||
|
|
||
|
dwRandomKeyLen - length of the random key required.
|
||
|
|
||
|
Return Value:
|
||
|
|
||
|
TRUE - if a random key is generated successfully.
|
||
|
FALSE - otherwise.
|
||
|
|
||
|
--*/
|
||
|
{
|
||
|
//
|
||
|
// generate random bits now.
|
||
|
//
|
||
|
|
||
|
legacyGenerateRandomBits( pbRandomKey, dwRandomKeyLen );
|
||
|
return( TRUE );
|
||
|
}
|