mirror of
https://github.com/tianocore/edk2
synced 2026-08-27 00:23:19 -04:00
This is preparation patch to build TCG TPM v2.0 implementation [0]. TCG TPM v2.0 uses AES_encrypt()/AES_decrpyt() in openssl library to implement its crypto operation. For this, add wrapper for AES_encrypt()/AES_decrpyt(). Link: https://github.com/TrustedComputingGroup/TPM[0] Signed-off-by: Yeoreum Yun <yeoreum.yun@arm.com>
173 lines
4.5 KiB
C
173 lines
4.5 KiB
C
/** @file
|
|
AES Wrapper Implementation which does not provide real capabilities.
|
|
|
|
Copyright (c) 2012 - 2018, Intel Corporation. All rights reserved.<BR>
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#include "InternalCryptLib.h"
|
|
|
|
/**
|
|
Retrieves the size, in bytes, of the context buffer required for AES operations.
|
|
|
|
Return zero to indicate this interface is not supported.
|
|
|
|
@retval 0 This interface is not supported.
|
|
|
|
**/
|
|
UINTN
|
|
EFIAPI
|
|
AesGetContextSize (
|
|
VOID
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
Initializes user-supplied memory as AES context for subsequent use.
|
|
|
|
Return FALSE to indicate this interface is not supported.
|
|
|
|
@param[out] AesContext Pointer to AES context being initialized.
|
|
@param[in] Key Pointer to the user-supplied AES key.
|
|
@param[in] KeyLength Length of AES key in bits.
|
|
|
|
@retval FALSE This interface is not supported.
|
|
|
|
**/
|
|
BOOLEAN
|
|
EFIAPI
|
|
AesInit (
|
|
OUT VOID *AesContext,
|
|
IN CONST UINT8 *Key,
|
|
IN UINTN KeyLength
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return FALSE;
|
|
}
|
|
|
|
/**
|
|
Performs AES encryption on a data buffer of the specified size in CBC mode.
|
|
|
|
Return FALSE to indicate this interface is not supported.
|
|
|
|
@param[in] AesContext Pointer to the AES context.
|
|
@param[in] Input Pointer to the buffer containing the data to be encrypted.
|
|
@param[in] InputSize Size of the Input buffer in bytes.
|
|
@param[in] Ivec Pointer to initialization vector.
|
|
@param[out] Output Pointer to a buffer that receives the AES encryption output.
|
|
|
|
@retval FALSE This interface is not supported.
|
|
|
|
**/
|
|
BOOLEAN
|
|
EFIAPI
|
|
AesCbcEncrypt (
|
|
IN VOID *AesContext,
|
|
IN CONST UINT8 *Input,
|
|
IN UINTN InputSize,
|
|
IN CONST UINT8 *Ivec,
|
|
OUT UINT8 *Output
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return FALSE;
|
|
}
|
|
|
|
/**
|
|
Performs AES decryption on a data buffer of the specified size in CBC mode.
|
|
|
|
Return FALSE to indicate this interface is not supported.
|
|
|
|
@param[in] AesContext Pointer to the AES context.
|
|
@param[in] Input Pointer to the buffer containing the data to be encrypted.
|
|
@param[in] InputSize Size of the Input buffer in bytes.
|
|
@param[in] Ivec Pointer to initialization vector.
|
|
@param[out] Output Pointer to a buffer that receives the AES encryption output.
|
|
|
|
@retval FALSE This interface is not supported.
|
|
|
|
**/
|
|
BOOLEAN
|
|
EFIAPI
|
|
AesCbcDecrypt (
|
|
IN VOID *AesContext,
|
|
IN CONST UINT8 *Input,
|
|
IN UINTN InputSize,
|
|
IN CONST UINT8 *Ivec,
|
|
OUT UINT8 *Output
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return FALSE;
|
|
}
|
|
|
|
/**
|
|
Performs AES encryption on single block (AES_BLOCK_SIZE)
|
|
|
|
This function performs AES encryption on single block pointed by Input.
|
|
|
|
Caller must perform padding, if necessary, to ensure single block size.
|
|
AesContext should be already correctly initialized by AesInit().
|
|
Behavior with invalid AES context is undefined.
|
|
|
|
If AesContext is NULL, then return FALSE.
|
|
If Input is NULL, then return FALSE.
|
|
If Output is NULL, then return FALSE.
|
|
|
|
@param[in] AesContext Pointer to the AES context.
|
|
@param[in] Input Pointer to the buffer containing single block data
|
|
@param[out] Output Pointer to a buffer that receives the AES encryption output.
|
|
|
|
@retval TRUE AES encryption succeeded.
|
|
@retval FALSE AES encryption failed.
|
|
|
|
**/
|
|
BOOLEAN
|
|
EFIAPI
|
|
AesEncrypt (
|
|
IN VOID *AesContext,
|
|
IN CONST UINT8 *Input,
|
|
OUT UINT8 *Output
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return FALSE;
|
|
}
|
|
|
|
/**
|
|
Performs AES decryption on single block (AES_BLOCK_SIZE)
|
|
|
|
This function performs AES decryption on single block pointed by Input.
|
|
|
|
Caller must perform padding, if necessary, to ensure single block size.
|
|
AesContext should be already correctly initialized by AesInit().
|
|
Behavior with invalid AES context is undefined.
|
|
|
|
If AesContext is NULL, then return FALSE.
|
|
If Input is NULL, then return FALSE.
|
|
If Output is NULL, then return FALSE.
|
|
|
|
@param[in] AesContext Pointer to the AES context.
|
|
@param[in] Input Pointer to the buffer containing single block encrpyted data.
|
|
@param[out] Output Pointer to a buffer that receives the AES decryption output.
|
|
|
|
@retval TRUE AES decryption succeeded.
|
|
@retval FALSE AES decryption failed.
|
|
|
|
**/
|
|
BOOLEAN
|
|
EFIAPI
|
|
AesDecrypt (
|
|
IN VOID *AesContext,
|
|
IN CONST UINT8 *Input,
|
|
OUT UINT8 *Output
|
|
)
|
|
{
|
|
ASSERT (FALSE);
|
|
return FALSE;
|
|
}
|