OpenCore
1.0.4
OpenCore Bootloader
|
#include "CryptoInternal.h"
Go to the source code of this file.
Macros | |
#define | Nb 4 |
#define | GetSboxValue(num) |
#define | GetSBoxInvert(num) |
#define | Multiply(x, y) |
Typedefs | |
typedef UINT8 | AES_INTERNAL_STATE[4][4] |
Functions | |
STATIC VOID | KeyExpansion (OUT UINT8 *RoundKey, IN CONST UINT8 *Key) |
VOID | AesInitCtxIv (OUT AES_CONTEXT *Context, IN CONST UINT8 *Key, IN CONST UINT8 *Iv) |
VOID | AesSetCtxIv (OUT AES_CONTEXT *Context, IN CONST UINT8 *Iv) |
STATIC VOID | AddRoundKey (IN UINT8 Round, IN OUT AES_INTERNAL_STATE *State, IN CONST UINT8 *RoundKey) |
STATIC VOID | SubBytes (IN OUT AES_INTERNAL_STATE *State) |
STATIC VOID | ShiftRows (IN OUT AES_INTERNAL_STATE *State) |
STATIC UINT8 | XTime (IN UINT8 X) |
STATIC VOID | MixColumns (IN OUT AES_INTERNAL_STATE *State) |
STATIC VOID | InvMixColumns (IN OUT AES_INTERNAL_STATE *State) |
STATIC VOID | InvSubBytes (IN OUT AES_INTERNAL_STATE *State) |
STATIC VOID | InvShiftRows (IN OUT AES_INTERNAL_STATE *State) |
STATIC VOID | Cipher (IN OUT AES_INTERNAL_STATE *State, IN CONST UINT8 *RoundKey) |
STATIC VOID | InvCipher (IN OUT AES_INTERNAL_STATE *State, IN CONST UINT8 *RoundKey) |
STATIC VOID | XorWithIv (IN OUT UINT8 *Buf, IN CONST UINT8 *Iv) |
VOID | AesCbcEncryptBuffer (IN OUT AES_CONTEXT *Context, IN OUT UINT8 *Data, IN UINT32 Len) |
VOID | AesCbcDecryptBuffer (IN OUT AES_CONTEXT *Context, IN OUT UINT8 *Data, IN UINT32 Len) |
VOID | AesCtrXcryptBuffer (IN OUT AES_CONTEXT *Context, IN OUT UINT8 *Data, IN UINT32 Len) |
Variables | |
STATIC CONST UINT8 | Sbox [256] |
STATIC CONST UINT8 | RsBox [256] |
STATIC CONST UINT8 | Rcon [11] |
OcCryptoLib
Copyright (c) 2018, savvas
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.
Definition in file Aes.c.
#define GetSBoxInvert | ( | num | ) |
#define GetSboxValue | ( | num | ) |
#define Nb 4 |
Copyright (c) 2014-2018, kokke
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.
In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
For more information, please refer to http://unlicense.org/ This is an implementation of the AES algorithm, specifically CTR and CBC mode. Block size can be chosen in OcCryptoLib.h.
The implementation is verified against the test vectors in: National Institute of Standards and Technology Special Publication 800-38A 2001 ED
NOTE: String length must be evenly divisible by 16byte (str_len % 16 == 0) You should pad the end of the string with zeros if this is not the case. For AES192/256 the key size is proportionally larger.
STATIC VOID AddRoundKey | ( | IN UINT8 | Round, |
IN OUT AES_INTERNAL_STATE * | State, | ||
IN CONST UINT8 * | RoundKey ) |
VOID AesCbcDecryptBuffer | ( | IN OUT AES_CONTEXT * | Context, |
IN OUT UINT8 * | Data, | ||
IN UINT32 | Len ) |
VOID AesCbcEncryptBuffer | ( | IN OUT AES_CONTEXT * | Context, |
IN OUT UINT8 * | Data, | ||
IN UINT32 | Len ) |
VOID AesCtrXcryptBuffer | ( | IN OUT AES_CONTEXT * | Context, |
IN OUT UINT8 * | Data, | ||
IN UINT32 | Len ) |
VOID AesInitCtxIv | ( | OUT AES_CONTEXT * | Context, |
IN CONST UINT8 * | Key, | ||
IN CONST UINT8 * | Iv ) |
VOID AesSetCtxIv | ( | OUT AES_CONTEXT * | Context, |
IN CONST UINT8 * | Iv ) |
STATIC VOID Cipher | ( | IN OUT AES_INTERNAL_STATE * | State, |
IN CONST UINT8 * | RoundKey ) |
STATIC VOID InvCipher | ( | IN OUT AES_INTERNAL_STATE * | State, |
IN CONST UINT8 * | RoundKey ) |
STATIC VOID InvMixColumns | ( | IN OUT AES_INTERNAL_STATE * | State | ) |
STATIC VOID InvShiftRows | ( | IN OUT AES_INTERNAL_STATE * | State | ) |
STATIC VOID InvSubBytes | ( | IN OUT AES_INTERNAL_STATE * | State | ) |
STATIC VOID KeyExpansion | ( | OUT UINT8 * | RoundKey, |
IN CONST UINT8 * | Key ) |
STATIC VOID MixColumns | ( | IN OUT AES_INTERNAL_STATE * | State | ) |
STATIC VOID ShiftRows | ( | IN OUT AES_INTERNAL_STATE * | State | ) |
STATIC VOID SubBytes | ( | IN OUT AES_INTERNAL_STATE * | State | ) |
STATIC VOID XorWithIv | ( | IN OUT UINT8 * | Buf, |
IN CONST UINT8 * | Iv ) |
STATIC CONST UINT8 Rcon[11] |
STATIC CONST UINT8 RsBox[256] |
STATIC CONST UINT8 Sbox[256] |