OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
AIKData.c
Go to the documentation of this file.
1
15#include "AIKData.h"
16
17#include <Library/BaseMemoryLib.h>
18#include <Library/DebugLib.h>
19
20VOID
22 IN OUT AIK_DATA *Data
23 )
24{
25 Data->KeyBufferHead = Data->KeyBufferTail = Data->KeyBuffer;
26 Data->KeyBufferSize = 0;
27}
28
29BOOLEAN
31 IN AIK_DATA *Data
32 )
33{
34 return Data->KeyBufferSize == 0;
35}
36
37EFI_STATUS
39 IN OUT AIK_DATA *Data,
40 OUT AMI_EFI_KEY_DATA *KeyData
41 )
42{
43 if (Data->KeyBufferSize == 0) {
44 return EFI_NOT_READY;
45 }
46
47 CopyMem (KeyData, Data->KeyBufferTail, sizeof (*KeyData));
48
49 Data->KeyBufferSize--;
50 Data->KeyBufferTail++;
51 if (Data->KeyBufferTail == &Data->KeyBuffer[AIK_DATA_BUFFER_SIZE]) {
52 Data->KeyBufferTail = Data->KeyBuffer;
53 }
54
55 return EFI_SUCCESS;
56}
57
58VOID
60 IN OUT AIK_DATA *Data,
61 IN AMI_EFI_KEY_DATA *KeyData
62 )
63{
64 //
65 // Eat the first entry if we have no room
66 //
67 if (Data->KeyBufferSize == AIK_DATA_BUFFER_SIZE) {
68 Data->KeyBufferSize--;
69 Data->KeyBufferTail++;
70 if (Data->KeyBufferTail == &Data->KeyBuffer[AIK_DATA_BUFFER_SIZE]) {
71 Data->KeyBufferTail = Data->KeyBuffer;
72 }
73 }
74
75 Data->KeyBufferSize++;
76 CopyMem (Data->KeyBufferHead, KeyData, sizeof (*KeyData));
77 Data->KeyBufferHead++;
78 if (Data->KeyBufferHead == &Data->KeyBuffer[AIK_DATA_BUFFER_SIZE]) {
79 Data->KeyBufferHead = Data->KeyBuffer;
80 }
81}
EFI_STATUS AIKDataReadEntry(IN OUT AIK_DATA *Data, OUT AMI_EFI_KEY_DATA *KeyData)
Definition AIKData.c:38
BOOLEAN AIKDataEmpty(IN AIK_DATA *Data)
Definition AIKData.c:30
VOID AIKDataReset(IN OUT AIK_DATA *Data)
Definition AIKData.c:21
VOID AIKDataWriteEntry(IN OUT AIK_DATA *Data, IN AMI_EFI_KEY_DATA *KeyData)
Definition AIKData.c:59
#define AIK_DATA_BUFFER_SIZE
Definition AIKData.h:23
VOID *EFIAPI CopyMem(OUT VOID *DestinationBuffer, IN CONST VOID *SourceBuffer, IN UINTN Length)