RTEMS 6.1-rc1
aes.h
1/* ---------------------------------------------------------------------------- */
2/* Atmel Microcontroller Software Support */
3/* SAM Software Package License */
4/* ---------------------------------------------------------------------------- */
5/* Copyright (c) 2015, Atmel Corporation */
6/* */
7/* All rights reserved. */
8/* */
9/* Redistribution and use in source and binary forms, with or without */
10/* modification, are permitted provided that the following condition is met: */
11/* */
12/* - Redistributions of source code must retain the above copyright notice, */
13/* this list of conditions and the disclaimer below. */
14/* */
15/* Atmel's name may not be used to endorse or promote products derived from */
16/* this software without specific prior written permission. */
17/* */
18/* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR */
19/* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
20/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE */
21/* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, */
22/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
23/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
24/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
25/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
26/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */
27/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
28/* ---------------------------------------------------------------------------- */
29
30#ifndef _AES_
31#define _AES_
32
33/*------------------------------------------------------------------------------
34 * Headers
35 *----------------------------------------------------------------------------*/
36
37#include "chip.h"
38
39
40/*----------------------------------------------------------------------------*/
41/* Definition */
42/*----------------------------------------------------------------------------*/
43#define AES_MR_CIPHER_ENCRYPT 1
44#define AES_MR_CIPHER_DECRYPT 0
45/*----------------------------------------------------------------------------*/
46/* Exported functions */
47/*----------------------------------------------------------------------------*/
48
49extern void AES_Start(void);
50extern void AES_SoftReset(void);
51extern void AES_Recount(void);
52extern void AES_Configure(uint32_t mode);
53extern void AES_EnableIt(uint32_t sources);
54extern void AES_DisableIt(uint32_t sources);
55extern uint32_t AES_GetStatus(void);
56extern void AES_WriteKey(const uint32_t *pKey, uint32_t keyLength);
57extern void AES_SetInput(const uint32_t *data);
58extern void AES_GetOutput(uint32_t *data);
59extern void AES_SetVector(const uint32_t *pVector);
60extern void AES_SetAadLen(uint32_t len);
61extern void AES_SetDataLen(uint32_t len);
62extern void AES_SetGcmHash(uint32_t *hash);
63extern void AES_GetGcmTag(uint32_t *tag);
64extern void AES_GetGcmCounter(uint32_t *counter);
65extern void AES_GetGcmH(uint32_t *h);
66
67
68#endif /* #ifndef _AES_ */
void AES_Configure(uint32_t mode)
Configures an AES peripheral with the specified parameters.
Definition: aes.c:120
void AES_WriteKey(const uint32_t *pKey, uint32_t keyLength)
Set the 128-bit/192-bit/256-bit cryptographic key used for encryption/decryption.
Definition: aes.c:158
void AES_SoftReset(void)
Resets the AES. A software triggered hardware reset of the AES interface is performed.
Definition: aes.c:111
void AES_GetGcmH(uint32_t *h)
Get the four 32-bit data contain the 128-bit H value computed from the KEYW value.
Definition: aes.c:278
void AES_DisableIt(uint32_t sources)
Disables the selected interrupts sources on a AES peripheral.
Definition: aes.c:138
void AES_GetOutput(uint32_t *data)
Get the four 32-bit data contain the 128-bit data block which has been encrypted/decrypted.
Definition: aes.c:194
void AES_SetVector(const uint32_t *pVector)
Set four 64-bit initialization vector data block, which is used by some modes of operation as an addi...
Definition: aes.c:207
void AES_SetDataLen(uint32_t len)
Set Length in bytes of the Length in bytes of the plaintext/ciphertext (C) data that is to be process...
Definition: aes.c:229
void AES_GetGcmTag(uint32_t *tag)
Get The four 32-bit Tag which contain the final 128-bit GCM Authentication tag Ħ°TĦħ when GCM process...
Definition: aes.c:255
void AES_Start(void)
Starts Manual encryption/decryption process.
Definition: aes.c:102
void AES_GetGcmCounter(uint32_t *counter)
Reports the current value of the 32-bit GCM counter.
Definition: aes.c:267
void AES_SetGcmHash(uint32_t *hash)
Set The four 32-bit Hash Word registers expose the intermediate GHASH value. May be read to save the ...
Definition: aes.c:241
void AES_SetAadLen(uint32_t len)
Set Length in bytes of the AAD data that is to be processed.
Definition: aes.c:219
uint32_t AES_GetStatus(void)
Get the current status register of the given AES peripheral.
Definition: aes.c:147
void AES_EnableIt(uint32_t sources)
Enables the selected interrupts sources on a AES peripheral.
Definition: aes.c:129
void AES_SetInput(const uint32_t *data)
Set the for 32-bit input Data allow to set the 128-bit data block used for encryption/decryption.
Definition: aes.c:181