From 9ad48dd148e167261161a606e120a3132048e1e9 Mon Sep 17 00:00:00 2001 From: Thomas Palmer Date: Fri, 9 Oct 2015 06:03:34 +0000 Subject: [PATCH] SecurityPkg: Clean up unused files in RngDxe Clean up files in RngDxe/IA32 and RngDxe/X64 that are subsumed by files in BaseRngLib. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Thomas Palmer Reviewed-by: Samer El-Haj-Mahmoud Reviewed-by: Michael Kinney Reviewed-by: Chao Zhang Reviewed-by: Qin Long git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18592 6f19259b-4bc3-4df7-8a09-765794883524 --- .../RngDxe/IA32/AsmRdRand.asm | 67 ----------- .../RngDxe/IA32/GccRdRand.c | 69 ------------ .../RngDxe/IA32/RdRandWord.c | 104 ------------------ .../RngDxe/X64/AsmRdRand.asm | 83 -------------- .../RngDxe/X64/GccRdRand.c | 95 ---------------- .../RngDxe/X64/RdRandWord.c | 70 ------------ 6 files changed, 488 deletions(-) delete mode 100644 SecurityPkg/RandomNumberGenerator/RngDxe/IA32/AsmRdRand.asm delete mode 100644 SecurityPkg/RandomNumberGenerator/RngDxe/IA32/GccRdRand.c delete mode 100644 SecurityPkg/RandomNumberGenerator/RngDxe/IA32/RdRandWord.c delete mode 100644 SecurityPkg/RandomNumberGenerator/RngDxe/X64/AsmRdRand.asm delete mode 100644 SecurityPkg/RandomNumberGenerator/RngDxe/X64/GccRdRand.c delete mode 100644 SecurityPkg/RandomNumberGenerator/RngDxe/X64/RdRandWord.c diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/IA32/AsmRdRand.asm b/SecurityPkg/RandomNumberGenerator/RngDxe/IA32/AsmRdRand.asm deleted file mode 100644 index 37b38307e2..0000000000 --- a/SecurityPkg/RandomNumberGenerator/RngDxe/IA32/AsmRdRand.asm +++ /dev/null @@ -1,67 +0,0 @@ -;------------------------------------------------------------------------------ -; -; Copyright (c) 2013, Intel Corporation. All rights reserved.
-; This program and the accompanying materials -; are licensed and made available under the terms and conditions of the BSD License -; which accompanies this distribution. The full text of the license may be found at -; http://opensource.org/licenses/bsd-license.php. -; -; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -; -; Module Name: -; -; AsmRdRand.Asm -; -; Abstract: -; -; Implementation for 16-, and 32- invocations of RDRAND instruction under 32bit platform. -; -; Notes: -; -; Visual Studio coding practices do not use inline asm since multiple compilers and -; architectures are supported assembler not recognizing rdrand instruction so using DB's. -; -;------------------------------------------------------------------------------ - - .586P - .model flat, C - .code - -;------------------------------------------------------------------------------ -; Generate a 16 bit random number -; Return TRUE if Rand generated successfully, or FALSE if not -; -; BOOLEAN EFIAPI RdRand16Step (UINT16 *Rand); ECX -;------------------------------------------------------------------------------ -RdRand16Step PROC - ; rdrand ax ; generate a 16 bit RN into ax, CF=1 if RN generated ok, otherwise CF=0 - db 0fh, 0c7h, 0f0h ; rdrand r16: "0f c7 /6 ModRM:r/m(w)" - jb rn16_ok ; jmp if CF=1 - xor eax, eax ; reg=0 if CF=0 - ret ; return with failure status -rn16_ok: - mov [ecx], ax - mov eax, 1 - ret -RdRand16Step ENDP - -;------------------------------------------------------------------------------ -; Generate a 32 bit random number -; Return TRUE if Rand generated successfully, or FALSE if not -; -; BOOLEAN EFIAPI RdRand32Step (UINT32 *Rand); ECX -;------------------------------------------------------------------------------ -RdRand32Step PROC - ; rdrand eax ; generate a 32 bit RN into eax, CF=1 if RN generated ok, otherwise CF=0 - db 0fh, 0c7h, 0f0h ; rdrand r32: "0f c7 /6 ModRM:r/m(w)" - jb rn32_ok ; jmp if CF=1 - xor eax, eax ; reg=0 if CF=0 - ret ; return with failure status -rn32_ok: - mov [ecx], eax - mov eax, 1 - ret -RdRand32Step ENDP - - END diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/IA32/GccRdRand.c b/SecurityPkg/RandomNumberGenerator/RngDxe/IA32/GccRdRand.c deleted file mode 100644 index f42302afe3..0000000000 --- a/SecurityPkg/RandomNumberGenerator/RngDxe/IA32/GccRdRand.c +++ /dev/null @@ -1,69 +0,0 @@ -/** @file - RDRAND Support Routines for GCC environment. - -Copyright (c) 2013, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -/** - Generates a 16-bit random number through RDRAND instruction. - - @param[out] Rand Buffer pointer to store the random result. - - @retval TRUE RDRAND call was successful. - @retval FALSE Failed attempts to call RDRAND. - -**/ -BOOLEAN -EFIAPI -RdRand16Step ( - OUT UINT16 *Rand - ) -{ - UINT8 Carry; - - // - // Uses byte code for RDRAND instruction, - // in case that GCC version has no direct support on RDRAND assembly. - // - __asm__ __volatile__ ( - ".byte 0x66; .byte 0x0f; .byte 0xc7; .byte 0xf0; setc %1" - :"=a" (*Rand), - "=qm" (Carry) - ); - - return (BOOLEAN) Carry; -} - -/** - Generates a 32-bit random number through RDRAND instruction. - - @param[out] Rand Buffer pointer to store the random result. - - @retval TRUE RDRAND call was successful. - @retval FALSE Failed attempts to call RDRAND. - -**/ -BOOLEAN -EFIAPI -RdRand32Step ( - OUT UINT32 *Rand - ) -{ - UINT8 Carry; - - __asm__ __volatile__ ( - ".byte 0x0f; .byte 0xc7; .byte 0xf0; setc %1" - :"=a" (*Rand), - "=qm" (Carry) - ); - - return (BOOLEAN) Carry; -} \ No newline at end of file diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/IA32/RdRandWord.c b/SecurityPkg/RandomNumberGenerator/RngDxe/IA32/RdRandWord.c deleted file mode 100644 index 125c53b3d3..0000000000 --- a/SecurityPkg/RandomNumberGenerator/RngDxe/IA32/RdRandWord.c +++ /dev/null @@ -1,104 +0,0 @@ -/** @file - RDRAND Support Routines. - -Copyright (c) 2013, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "RdRand.h" - -/** - Generates a 64-bit random number through RDRAND instruction. - - @param[out] Rand Buffer pointer to store the random result. - - @retval TRUE RDRAND call was successful. - @retval FALSE Failed attempts to call RDRAND. - -**/ -BOOLEAN -EFIAPI -RdRand64Step ( - OUT UINT64 *Rand - ) -{ - UINT32 RandLow; - UINT32 RandHigh; - - // - // Generating a 64-bit rand on a 32-bit system by - // mapping two 32-bit RDRAND instructions. - // - if (!RdRand32Step (&RandLow)) { - return FALSE; - } - if (!RdRand32Step (&RandHigh)) { - return FALSE; - } - - *Rand = (UINT64) RandLow | LShiftU64 ((UINT64)RandHigh, 32); - - return TRUE; -} - -/** - Calls RDRAND to request a word-length random number. - - @param[out] Rand Buffer pointer to store the random number. - @param[in] NeedRetry Determine whether or not to loop retry. - - @retval EFI_SUCCESS Random word generation succeeded. - @retval EFI_NOT_READY Failed to request random word. - -**/ -EFI_STATUS -EFIAPI -RdRandWord ( - OUT UINTN *Rand, - IN BOOLEAN NeedRetry - ) -{ - return RdRand32 (Rand, NeedRetry); -} - -/** - Calls RDRAND to request multiple word-length random numbers. - - @param[in] Length Size of the buffer, in words, to fill with. - @param[out] RandBuffer Pointer to the buffer to store the random result. - - @retval EFI_SUCCESS Random words generation succeeded. - @retval EFI_NOT_READY Failed to request random words. - -**/ -EFI_STATUS -EFIAPI -RdRandGetWords ( - IN UINTN Length, - OUT UINTN *RandBuffer - ) -{ - EFI_STATUS Status; - UINT32 Index; - - for (Index = 0; Index < Length; Index++) { - // - // Obtain one word-length (32-bit) Random Number with possible retry-loop. - // - Status = RdRand32 (RandBuffer, TRUE); - if (EFI_ERROR (Status)) { - return Status; - } - - RandBuffer++; - } - - return EFI_SUCCESS; -} diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/X64/AsmRdRand.asm b/SecurityPkg/RandomNumberGenerator/RngDxe/X64/AsmRdRand.asm deleted file mode 100644 index 8a4fe65d05..0000000000 --- a/SecurityPkg/RandomNumberGenerator/RngDxe/X64/AsmRdRand.asm +++ /dev/null @@ -1,83 +0,0 @@ -;------------------------------------------------------------------------------ -; -; Copyright (c) 2013, Intel Corporation. All rights reserved.
-; This program and the accompanying materials -; are licensed and made available under the terms and conditions of the BSD License -; which accompanies this distribution. The full text of the license may be found at -; http://opensource.org/licenses/bsd-license.php. -; -; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. -; -; Module Name: -; -; AsmRdRand.Asm -; -; Abstract: -; -; Implementation for 16-, 32-, and 64-bit invocations of RDRAND instruction under 64bit platform. -; -; Notes: -; -; Visual Studio coding practices do not use inline asm since multiple compilers and -; architectures are supported assembler not recognizing rdrand instruction so using DB's. -; -;------------------------------------------------------------------------------ - - .code - -;------------------------------------------------------------------------------ -; Generate a 16 bit random number -; Return TRUE if Rand generated successfully, or FALSE if not -; -; BOOLEAN EFIAPI RdRand16Step (UINT16 *Rand); RCX -;------------------------------------------------------------------------------ -RdRand16Step PROC - ; rdrand ax ; generate a 16 bit RN into ax, CF=1 if RN generated ok, otherwise CF=0 - db 0fh, 0c7h, 0f0h ; rdrand r16: "0f c7 /6 ModRM:r/m(w)" - jb rn16_ok ; jmp if CF=1 - xor rax, rax ; reg=0 if CF=0 - ret ; return with failure status -rn16_ok: - mov [rcx], ax - mov rax, 1 - ret -RdRand16Step ENDP - -;------------------------------------------------------------------------------ -; Generate a 32 bit random number -; Return TRUE if Rand generated successfully, or FALSE if not -; -; BOOLEAN EFIAPI RdRand32Step (UINT32 *Rand); RCX -;------------------------------------------------------------------------------ -RdRand32Step PROC - ; rdrand eax ; generate a 32 bit RN into eax, CF=1 if RN generated ok, otherwise CF=0 - db 0fh, 0c7h, 0f0h ; rdrand r32: "0f c7 /6 ModRM:r/m(w)" - jb rn32_ok ; jmp if CF=1 - xor rax, rax ; reg=0 if CF=0 - ret ; return with failure status -rn32_ok: - mov [rcx], eax - mov rax, 1 - ret -RdRand32Step ENDP - -;------------------------------------------------------------------------------ -; Generate a 64 bit random number -; Return TRUE if RN generated successfully, or FALSE if not -; -; BOOLEAN EFIAPI RdRand64Step (UINT64 *Random); RCX -;------------------------------------------------------------------------------ -RdRand64Step PROC - ; rdrand rax ; generate a 64 bit RN into rax, CF=1 if RN generated ok, otherwise CF=0 - db 048h, 0fh, 0c7h, 0f0h ; rdrand r64: "REX.W + 0F C7 /6 ModRM:r/m(w)" - jb rn64_ok ; jmp if CF=1 - xor rax, rax ; reg=0 if CF=0 - ret ; return with failure status -rn64_ok: - mov [rcx], rax - mov rax, 1 - ret -RdRand64Step ENDP - - END diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/X64/GccRdRand.c b/SecurityPkg/RandomNumberGenerator/RngDxe/X64/GccRdRand.c deleted file mode 100644 index d28336de48..0000000000 --- a/SecurityPkg/RandomNumberGenerator/RngDxe/X64/GccRdRand.c +++ /dev/null @@ -1,95 +0,0 @@ -/** @file - RDRAND Support Routines for GCC environment. - -Copyright (c) 2013, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -/** - Generates a 16-bit random number through RDRAND instruction. - - @param[out] Rand Buffer pointer to store the random result. - - @retval TRUE RDRAND call was successful. - @retval FALSE Failed attempts to call RDRAND. - -**/ -BOOLEAN -EFIAPI -RdRand16Step ( - OUT UINT16 *Rand - ) -{ - UINT8 Carry; - - // - // Uses byte code for RDRAND instruction, - // in case that GCC version has no direct support on RDRAND assembly. - // - __asm__ __volatile__ ( - ".byte 0x66; .byte 0x0f; .byte 0xc7; .byte 0xf0; setc %1" - :"=a" (*Rand), - "=qm" (Carry) - ); - - return (BOOLEAN) Carry; -} - -/** - Generates a 32-bit random number through RDRAND instruction. - - @param[out] Rand Buffer pointer to store the random result. - - @retval TRUE RDRAND call was successful. - @retval FALSE Failed attempts to call RDRAND. - -**/ -BOOLEAN -EFIAPI -RdRand32Step ( - OUT UINT32 *Rand - ) -{ - UINT8 Carry; - - __asm__ __volatile__ ( - ".byte 0x0f; .byte 0xc7; .byte 0xf0; setc %1" - :"=a" (*Rand), - "=qm" (Carry) - ); - - return (BOOLEAN) Carry; -} - -/** - Generates a 64-bit random number through RDRAND instruction. - - @param[out] Rand Buffer pointer to store the random result. - - @retval TRUE RDRAND call was successful. - @retval FALSE Failed attempts to call RDRAND. - -**/ -BOOLEAN -EFIAPI -RdRand64Step ( - OUT UINT64 *Rand - ) -{ - UINT8 Carry; - - __asm__ __volatile__ ( - ".byte 0x48; .byte 0x0f; .byte 0xc7; .byte 0xf0; setc %1" - :"=a" (*Rand), - "=qm" (Carry) - ); - - return (BOOLEAN) Carry; -} diff --git a/SecurityPkg/RandomNumberGenerator/RngDxe/X64/RdRandWord.c b/SecurityPkg/RandomNumberGenerator/RngDxe/X64/RdRandWord.c deleted file mode 100644 index 946e5babaa..0000000000 --- a/SecurityPkg/RandomNumberGenerator/RngDxe/X64/RdRandWord.c +++ /dev/null @@ -1,70 +0,0 @@ -/** @file - RDRAND Support Routines. - -Copyright (c) 2013, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "RdRand.h" - -/** - Calls RDRAND to request a word-length random number. - - @param[out] Rand Buffer pointer to store the random number. - @param[in] NeedRetry Determine whether or not to loop retry. - - @retval EFI_SUCCESS Random word generation succeeded. - @retval EFI_NOT_READY Failed to request random word. - -**/ -EFI_STATUS -EFIAPI -RdRandWord ( - OUT UINTN *Rand, - IN BOOLEAN NeedRetry - ) -{ - return RdRand64 (Rand, NeedRetry); -} - -/** - Calls RDRAND to request multiple word-length random numbers. - - @param[in] Length Size of the buffer, in words, to fill with. - @param[out] RandBuffer Pointer to the buffer to store the random result. - - @retval EFI_SUCCESS Random words generation succeeded. - @retval EFI_NOT_READY Failed to request random words. - -**/ -EFI_STATUS -EFIAPI -RdRandGetWords ( - IN UINTN Length, - OUT UINTN *RandBuffer - ) -{ - EFI_STATUS Status; - UINT32 Index; - - for (Index = 0; Index < Length; Index++) { - // - // Obtain one word-length (64-bit) Random Number with possible retry-loop. - // - Status = RdRand64 (RandBuffer, TRUE); - if (EFI_ERROR (Status)) { - return Status; - } - - RandBuffer++; - } - - return EFI_SUCCESS; -} \ No newline at end of file -- 2.39.2