windows-nt/Source/XPSP1/NT/ds/security/base/lsa/inc/cr.h

132 lines
2.9 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
cr.h
Abstract:
Local Security Authority - Encryption Routine Definitions
NOTE: This file is included via lsacomp.h. It should
not be included directly.
Author:
Scott Birrell (ScottBi) December 13, 1991
Environment:
Revision History:
--*/
//
// Max encryption Key Length
//
#define LSAP_CR_MAX_CIPHER_KEY_LENGTH (0x00000010L)
//
// Cipher Key Structure
//
typedef struct _LSAP_CR_CIPHER_KEY {
ULONG Length;
ULONG MaximumLength;
PUCHAR Buffer;
} LSAP_CR_CIPHER_KEY, *PLSAP_CR_CIPHER_KEY;
//
// Clear value structure
//
typedef struct _LSAP_CR_CLEAR_VALUE {
ULONG Length;
ULONG MaximumLength;
PUCHAR Buffer;
} LSAP_CR_CLEAR_VALUE, *PLSAP_CR_CLEAR_VALUE;
//
// Two-way encrypted value structure in Self-relative form. This
// is just like a String.
//
typedef struct _LSAP_CR_CIPHER_VALUE {
ULONG Length;
ULONG MaximumLength;
PUCHAR Buffer;
} LSAP_CR_CIPHER_VALUE, *PLSAP_CR_CIPHER_VALUE;
NTSTATUS
LsapCrClientGetSessionKey(
IN LSA_HANDLE ObjectHandle,
OUT PLSAP_CR_CIPHER_KEY *SessionKey
);
NTSTATUS
LsapCrServerGetSessionKey(
IN LSA_HANDLE ObjectHandle,
OUT PLSAP_CR_CIPHER_KEY *SessionKey
);
NTSTATUS
LsapCrEncryptValue(
IN PLSAP_CR_CLEAR_VALUE ClearValue,
IN PLSAP_CR_CIPHER_KEY CipherKey,
OUT PLSAP_CR_CIPHER_VALUE *CipherValue
);
NTSTATUS
LsapCrDecryptValue(
IN PLSAP_CR_CIPHER_VALUE CipherValue,
IN PLSAP_CR_CIPHER_KEY CipherKey,
OUT PLSAP_CR_CLEAR_VALUE *ClearValue
);
VOID
LsapCrFreeMemoryValue(
IN PVOID MemoryValue
);
VOID
LsapCrUnicodeToClearValue(
IN PUNICODE_STRING UnicodeString,
OUT PLSAP_CR_CLEAR_VALUE ClearValue
);
VOID
LsapCrClearValueToUnicode(
IN PLSAP_CR_CLEAR_VALUE ClearValue,
OUT PUNICODE_STRING UnicodeString
);
#define LsapCrRtlEncryptData(ClearData, CipherKey, CipherData) \
( \
RtlEncryptData( \
(PCLEAR_DATA) ClearData, \
(PDATA_KEY) CipherKey, \
(PCYPHER_DATA) CipherData \
) \
)
#define LsapCrRtlDecryptData(ClearData, CipherKey, CipherData) \
( \
RtlDecryptData( \
(PCLEAR_DATA) ClearData, \
(PDATA_KEY) CipherKey, \
(PCYPHER_DATA) CipherData \
) \
)