Skip to content
This repository was archived by the owner on Jul 22, 2021. It is now read-only.

Commit 1982c97

Browse files
committed
Add RngLib.
Signed-off-by: Jiewen Yao <jiewen.yao@intel.com>
1 parent c629300 commit 1982c97

File tree

41 files changed

+642
-157
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+642
-157
lines changed

GNUmakefile

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ all:
3232
@"$(MAKE)" $(MAKE_FLAGS) -f $(WORKSPACE)/OsStub/DebugLib/$(MAKEFILE) ARCH=$(ARCH) TARGET=$(TARGET) TOOLCHAIN=$(TOOLCHAIN) CRYPTO=$(CRYPTO)
3333
@"$(MAKE)" $(MAKE_FLAGS) -f $(WORKSPACE)/OsStub/BaseCryptLib$(CRYPTO)/$(MAKEFILE) ARCH=$(ARCH) TARGET=$(TARGET) TOOLCHAIN=$(TOOLCHAIN) CRYPTO=$(CRYPTO)
3434
@"$(MAKE)" $(MAKE_FLAGS) -f $(WORKSPACE)/OsStub/$(CRYPTO)Lib/$(MAKEFILE) ARCH=$(ARCH) TARGET=$(TARGET) TOOLCHAIN=$(TOOLCHAIN) CRYPTO=$(CRYPTO)
35+
@"$(MAKE)" $(MAKE_FLAGS) -f $(WORKSPACE)/OsStub/RngLib/$(MAKEFILE) ARCH=$(ARCH) TARGET=$(TARGET) TOOLCHAIN=$(TOOLCHAIN) CRYPTO=$(CRYPTO)
3536
@"$(MAKE)" $(MAKE_FLAGS) -f $(WORKSPACE)/OsStub/MemoryAllocationLib/$(MAKEFILE) ARCH=$(ARCH) TARGET=$(TARGET) TOOLCHAIN=$(TOOLCHAIN) CRYPTO=$(CRYPTO)
3637
@"$(MAKE)" $(MAKE_FLAGS) -f $(WORKSPACE)/OsTest/SpdmRequesterTest/$(MAKEFILE) ARCH=$(ARCH) TARGET=$(TARGET) TOOLCHAIN=$(TOOLCHAIN) CRYPTO=$(CRYPTO)
3738
@"$(MAKE)" $(MAKE_FLAGS) -f $(WORKSPACE)/OsTest/SpdmResponderTest/$(MAKEFILE) ARCH=$(ARCH) TARGET=$(TARGET) TOOLCHAIN=$(TOOLCHAIN) CRYPTO=$(CRYPTO)

Makefile

+1
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ all:
3333
@"$(MAKE)" $(MAKE_FLAGS) -f $(WORKSPACE)\OsStub\DebugLib\$(MAKEFILE) ARCH=$(ARCH) TARGET=$(TARGET) TOOLCHAIN=$(TOOLCHAIN) CRYPTO=$(CRYPTO)
3434
@"$(MAKE)" $(MAKE_FLAGS) -f $(WORKSPACE)\OsStub\BaseCryptLib$(CRYPTO)\$(MAKEFILE) ARCH=$(ARCH) TARGET=$(TARGET) TOOLCHAIN=$(TOOLCHAIN) CRYPTO=$(CRYPTO)
3535
@"$(MAKE)" $(MAKE_FLAGS) -f $(WORKSPACE)\OsStub\$(CRYPTO)Lib\$(MAKEFILE) ARCH=$(ARCH) TARGET=$(TARGET) TOOLCHAIN=$(TOOLCHAIN) CRYPTO=$(CRYPTO)
36+
@"$(MAKE)" $(MAKE_FLAGS) -f $(WORKSPACE)\OsStub\RngLib\$(MAKEFILE) ARCH=$(ARCH) TARGET=$(TARGET) TOOLCHAIN=$(TOOLCHAIN) CRYPTO=$(CRYPTO)
3637
@"$(MAKE)" $(MAKE_FLAGS) -f $(WORKSPACE)\OsStub\MemoryAllocationLib\$(MAKEFILE) ARCH=$(ARCH) TARGET=$(TARGET) TOOLCHAIN=$(TOOLCHAIN) CRYPTO=$(CRYPTO)
3738
@"$(MAKE)" $(MAKE_FLAGS) -f $(WORKSPACE)\OsTest\SpdmRequesterTest\$(MAKEFILE) ARCH=$(ARCH) TARGET=$(TARGET) TOOLCHAIN=$(TOOLCHAIN) CRYPTO=$(CRYPTO)
3839
@"$(MAKE)" $(MAKE_FLAGS) -f $(WORKSPACE)\OsTest\SpdmResponderTest\$(MAKEFILE) ARCH=$(ARCH) TARGET=$(TARGET) TOOLCHAIN=$(TOOLCHAIN) CRYPTO=$(CRYPTO)

OsStub/BaseCryptLibMbedTls/Rand/CryptRand.c

+24-14
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
77
**/
88

99
#include "InternalCryptLib.h"
10-
11-
int rand ();
10+
#include <Library/RngLib.h>
1211

1312
/**
1413
Sets up the seed value for the pseudorandom number generator.
@@ -56,19 +55,30 @@ RandomBytes (
5655
IN UINTN Size
5756
)
5857
{
59-
UINTN Count = Size/4;
60-
UINTN Final = Size%4;
61-
UINTN Index = 0;
62-
UINT32 Data32;
63-
64-
for (Index = 0; Index < Count; Index++) {
65-
*(UINT32 *)(Output + Index * 4) = rand();
66-
}
67-
if (Final != 0) {
68-
Data32 = rand();
69-
CopyMem (Output + Count * 4, &Data32, Final);
58+
BOOLEAN Ret;
59+
UINT64 TempRand;
60+
61+
Ret = FALSE;
62+
63+
while (Size > 0) {
64+
// Use RngLib to get random number
65+
Ret = GetRandomNumber64 (&TempRand);
66+
67+
if (!Ret) {
68+
return Ret;
69+
}
70+
if (Size >= sizeof (TempRand)) {
71+
*((UINT64*) Output) = TempRand;
72+
Output += sizeof (UINT64);
73+
Size -= sizeof (TempRand);
74+
}
75+
else {
76+
CopyMem (Output, &TempRand, Size);
77+
Size = 0;
78+
}
7079
}
71-
return TRUE;
80+
81+
return Ret;
7282
}
7383

7484
int myrand( void *rng_state, unsigned char *output, size_t len )

OsStub/Include/Library/RngLib.h

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/** @file
2+
Provides random number generator services.
3+
4+
Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
5+
SPDX-License-Identifier: BSD-2-Clause-Patent
6+
7+
**/
8+
9+
#ifndef __RNG_LIB_H__
10+
#define __RNG_LIB_H__
11+
12+
/**
13+
Generates a 64-bit random number.
14+
15+
if Rand is NULL, then ASSERT().
16+
17+
@param[out] Rand Buffer pointer to store the 64-bit random value.
18+
19+
@retval TRUE Random number generated successfully.
20+
@retval FALSE Failed to generate the random number.
21+
22+
**/
23+
BOOLEAN
24+
EFIAPI
25+
GetRandomNumber64 (
26+
OUT UINT64 *Rand
27+
);
28+
29+
#endif // __RNG_LIB_H__

0 commit comments

Comments
 (0)