19 return (
Value << Bits) | (
Value >> (32 - Bits));
37 for (Round = 0; Round < 16; Round++)
39 Schedule[Round] = ((
ULONG)
Block[Round * 4] << 24) |
45 for (Round = 16; Round < 80; Round++)
47 Schedule[Round] =
HubSha1Rotate(Schedule[Round - 3] ^ Schedule[Round - 8] ^
48 Schedule[Round - 14] ^ Schedule[Round - 16], 1);
53 for (Round = 0; Round < 80; Round++)
57 Mix = (Work[1] & Work[2]) | (~Work[1] & Work[3]);
62 Mix = Work[1] ^ Work[2] ^ Work[3];
67 Mix = (Work[1] & Work[2]) | (Work[1] & Work[3]) | (Work[2] & Work[3]);
72 Mix = Work[1] ^ Work[2] ^ Work[3];
84 for (Round = 0; Round < 5; Round++)
85 State[Round] += Work[Round];
#define HUB_SHA1_DIGEST_BYTES
VOID NTAPI HubSha1Init(_Out_ HubSha1 *Context)
VOID NTAPI HubSha1Update(_Inout_ HubSha1 *Context, _In_reads_bytes_(Length) const VOID *Data, _In_ SIZE_T Length)
VOID NTAPI HubSha1Final(_Inout_ HubSha1 *Context, _Out_writes_bytes_all_(HUB_SHA1_DIGEST_BYTES) PUCHAR Digest)
static VOID NTAPI HubSha1Compress(_Inout_updates_(5) PULONG State, _In_reads_bytes_(64) const UCHAR *Block)
static ULONG NTAPI HubSha1Rotate(_In_ ULONG Value, _In_ ULONG Bits)
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_ PVOID Context
#define _In_reads_bytes_(s)
#define _Inout_updates_(s)
#define _Out_writes_bytes_all_(s)
_In_ ULONG _In_ ULONG _In_ ULONG Length
PACPI_METHOD_ARGUMENT Next
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
PUSBUSER_REQUEST_HEADER Block
_In_ WDFCOLLECTION _In_ ULONG Index
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
FORCEINLINE PVOID RtlSecureZeroMemory(_Out_writes_bytes_all_(Size) PVOID Pointer, _In_ SIZE_T Size)