Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

200 lines
3.5 KiB

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1995.
//
// File: bulk.c
//
// Contents:
//
// Classes:
//
// Functions:
//
// History: 9-22-95 RichardW Created
//
//----------------------------------------------------------------------------
#include "sslsspi.h"
#include "md5.h"
#include "rc4.h"
BOOL
WINAPI
rc4Initialize( PUCHAR pbKey,
ULONG dwOptions,
PStateBuffer * psbBuffer);
BOOL
WINAPI
rc4Encrypt( PStateBuffer psbBuffer,
PUCHAR pbInput,
PUCHAR pbOutput,
ULONG cbInput);
BOOL
WINAPI
rc4Decrypt( PStateBuffer psbBuffer,
PUCHAR pbInput,
PUCHAR pbOutput,
ULONG cbInput);
BOOL
WINAPI
rc4Finish( PStateBuffer * psbBuffer);
BOOL
WINAPI
md5Initialize( ULONG dwSeed,
PCheckSumBuffer * ppcsBuffer);
BOOL
WINAPI
md5Sum( PCheckSumBuffer pcsBuffer,
ULONG cbData,
PUCHAR pbData);
BOOL
WINAPI
md5Finalize( PCheckSumBuffer pcsBuffer,
PUCHAR pbSum);
BOOL
WINAPI
md5Finish( PCheckSumBuffer * ppcsBuffer);
SslCryptoSystem csRC4 = {
RC4_STREAM,
1, // Blocksize (stream)
"RC4",
rc4Initialize,
rc4Encrypt,
rc4Encrypt, // Same operation...
rc4Finish
};
CheckSumFunction ckMD5 = {
MD5,
16,
sizeof(MD5_CTX),
"MD5",
md5Initialize,
md5Sum,
md5Finalize,
md5Finish
};
typedef struct RC4_KEYSTRUCT RC4Key;
BOOL
WINAPI
rc4Initialize( PUCHAR pbKey,
ULONG cbKey,
PStateBuffer * psbBuffer)
{
RC4Key * pRC4Key;
pRC4Key = SslAlloc(' 4CR', LMEM_FIXED | LMEM_ZEROINIT, sizeof(RC4Key));
if (!pRC4Key)
{
return(FALSE);
}
rc4_key(pRC4Key, cbKey, pbKey);
*psbBuffer = (PStateBuffer) pRC4Key;
return(TRUE);
}
BOOL
WINAPI
rc4Encrypt( PStateBuffer psbBuffer,
PUCHAR pbInput,
PUCHAR pbOutput,
ULONG cbInput)
{
if (pbInput != pbOutput)
{
memcpy(pbOutput, pbInput, cbInput);
}
rc4((RC4Key *) psbBuffer, cbInput, pbOutput);
return(TRUE);
}
BOOL
WINAPI
rc4Finish( PStateBuffer * psbBuffer)
{
SslFree( *psbBuffer );
*psbBuffer = NULL;
return( TRUE );
}
BOOL
WINAPI
md5Initialize( ULONG dwSeed,
PCheckSumBuffer * ppcsBuffer)
{
MD5_CTX * pMD5Context;
pMD5Context = SslAlloc( ' 5DM', LMEM_FIXED | LMEM_ZEROINIT, sizeof(MD5_CTX));
if (!pMD5Context)
{
return( FALSE );
}
MD5Init(pMD5Context);
*ppcsBuffer = pMD5Context;
return( TRUE );
}
BOOL
WINAPI
md5Sum( PCheckSumBuffer pcsBuffer,
ULONG cbData,
PUCHAR pbData)
{
MD5Update((MD5_CTX *) pcsBuffer, pbData, cbData);
return( TRUE );
}
BOOL
WINAPI
md5Finalize( PCheckSumBuffer pcsBuffer,
PUCHAR pbSum)
{
MD5Final((MD5_CTX *) pcsBuffer);
memcpy(pbSum, ((MD5_CTX *) pcsBuffer)->digest, 16);
return( TRUE );
}
BOOL
WINAPI
md5Finish( PCheckSumBuffer * ppcsBuffer)
{
SslFree(*ppcsBuffer);
*ppcsBuffer = 0;
return( TRUE );
}