// /** @file
// Cryptographic Library Instance based on Runtime Crypt Protocol.
//
// This instance will be only used by the Authenticated Variable driver for IPF.
// 
// Note: MD4/MD5/SHA1 Digest functions, HMAC-MD5 functions, HMAC-SHA1 functions,
// AES/TDES/ARC4 functions, RSA external functions, PKCS#7 SignedData sign/verify
// functions, Diffie-Hellman functions, X.509 certificate handler functions,
// authenticode signature verification functions, PEM handler functions,
// pseudorandom number generator functions, and Sha256Duplicate() are not supported
// in this instance.
//
// Copyright (c) 2010 - 2014, 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 "Cryptographic Library Instance based on Runtime Crypt Protocol"

#string STR_MODULE_DESCRIPTION          #language en-US "This instance will be only used by the Authenticated Variable driver for IPF. Note: MD4/MD5/SHA1 Digest functions, HMAC-MD5 functions, HMAC-SHA1 functions, AES/TDES/ARC4 functions, RSA external functions, PKCS#7 SignedData sign/verify functions, Diffie-Hellman functions, X.509 certificate handler functions, authenticode signature verification functions, PEM handler functions, pseudorandom number generator functions, and Sha256Duplicate() are not supported in this instance."

