mirror of https://github.com/tongzx/nt5src
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.
121 lines
2.7 KiB
121 lines
2.7 KiB
//+-----------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (c) Microsoft Corporation 1991 - 1992
|
|
//
|
|
// File: nullcs.c
|
|
//
|
|
// Contents: Null Crypto system
|
|
//
|
|
//
|
|
// History:
|
|
//
|
|
//------------------------------------------------------------------------
|
|
|
|
#include <nt.h>
|
|
#include <ntrtl.h>
|
|
#include <nturtl.h>
|
|
#include <windows.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <kerbcon.h>
|
|
#include <security.h>
|
|
#include <cryptdll.h>
|
|
#include "md4.h"
|
|
|
|
|
|
NTSTATUS NTAPI ncsInitialize(PUCHAR, ULONG, ULONG, PCRYPT_STATE_BUFFER *);
|
|
NTSTATUS NTAPI ncsEncrypt(PCRYPT_STATE_BUFFER, PUCHAR, ULONG, PUCHAR, PULONG);
|
|
NTSTATUS NTAPI ncsDecrypt(PCRYPT_STATE_BUFFER, PUCHAR, ULONG, PUCHAR, PULONG);
|
|
NTSTATUS NTAPI ncsFinish(PCRYPT_STATE_BUFFER *);
|
|
NTSTATUS NTAPI ncsHashPassword(PSECURITY_STRING, PUCHAR);
|
|
NTSTATUS NTAPI ncsRandomKey(PUCHAR, ULONG, PUCHAR );
|
|
NTSTATUS NTAPI ncsFinishRandom(void);
|
|
|
|
|
|
CRYPTO_SYSTEM csNULL = {
|
|
KERB_ETYPE_NULL, // Etype
|
|
1, // Blocksize (stream)
|
|
0, // no exportable version
|
|
0, // Key size, in bytes
|
|
0, // no header size
|
|
KERB_CHECKSUM_MD4, // Checksum algorithm
|
|
0, // no attributes
|
|
L"Microsoft NULL CS", // Text name
|
|
ncsInitialize,
|
|
ncsEncrypt,
|
|
ncsDecrypt,
|
|
ncsFinish,
|
|
ncsHashPassword,
|
|
ncsRandomKey
|
|
};
|
|
|
|
|
|
NTSTATUS NTAPI
|
|
ncsInitialize( PUCHAR pbKey,
|
|
ULONG KeySize,
|
|
ULONG dwOptions,
|
|
PCRYPT_STATE_BUFFER * psbBuffer)
|
|
{
|
|
|
|
*psbBuffer = NULL;
|
|
return(S_OK);
|
|
}
|
|
|
|
NTSTATUS NTAPI
|
|
ncsEncrypt( PCRYPT_STATE_BUFFER psbBuffer,
|
|
PUCHAR pbInput,
|
|
ULONG cbInput,
|
|
PUCHAR pbOutput,
|
|
PULONG cbOutput)
|
|
{
|
|
if (pbInput != pbOutput)
|
|
memcpy(pbOutput, pbInput, cbInput);
|
|
|
|
*cbOutput = cbInput;
|
|
return(S_OK);
|
|
}
|
|
|
|
NTSTATUS NTAPI
|
|
ncsDecrypt( PCRYPT_STATE_BUFFER psbBuffer,
|
|
PUCHAR pbInput,
|
|
ULONG cbInput,
|
|
PUCHAR pbOutput,
|
|
PULONG cbOutput)
|
|
{
|
|
if (pbInput != pbOutput)
|
|
memcpy(pbOutput, pbInput, cbInput);
|
|
*cbOutput = cbInput;
|
|
return(S_OK);
|
|
}
|
|
|
|
NTSTATUS NTAPI
|
|
ncsFinish( PCRYPT_STATE_BUFFER * psbBuffer)
|
|
{
|
|
*psbBuffer = NULL;
|
|
return(S_OK);
|
|
}
|
|
|
|
|
|
NTSTATUS NTAPI
|
|
ncsHashPassword(PSECURITY_STRING pbPassword,
|
|
PUCHAR pbKey)
|
|
{
|
|
|
|
return(STATUS_SUCCESS);
|
|
}
|
|
|
|
|
|
NTSTATUS NTAPI
|
|
ncsRandomKey(
|
|
IN PUCHAR Seed,
|
|
IN ULONG SeedLength,
|
|
OUT PUCHAR pbKey
|
|
)
|
|
{
|
|
return(STATUS_SUCCESS);
|
|
}
|
|
|
|
|