// /** @file
// Produces the UEFI Random Number Generator protocol
//
// This module will leverage Intel Secure Key technology to produce the Random
// Number Generator protocol, which is used to provide high-quality random numbers
// for use in applications, or entropy for seeding other random number generators.
// Refer to http://software.intel.com/en-us/articles/intel-digital-random-number
// -generator-drng-software-implementation-guide/ for more information about Intel
// Secure Key technology.
//
// Copyright (c) 2013 - 2018, Intel Corporation. All rights reserved.<BR>
//
// 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.
//
// **/


#string STR_MODULE_ABSTRACT             #language en-US "Produces UEFI Random Number Generator protocol"

#string STR_MODULE_DESCRIPTION          #language en-US "This module will produce UEFI Random Number Generator protocol. In current implementation, Only SP800_90_CTR_256 and "RAW" RNG algorithms are supported."

