RTEMS  5.0.0
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 
49 extern void AES_Start(void);
50 extern void AES_SoftReset(void);
51 extern void AES_Recount(void);
52 extern void AES_Configure(uint32_t mode);
53 extern void AES_EnableIt(uint32_t sources);
54 extern void AES_DisableIt(uint32_t sources);
55 extern uint32_t AES_GetStatus(void);
56 extern void AES_WriteKey(const uint32_t *pKey, uint32_t keyLength);
57 extern void AES_SetInput(const uint32_t *data);
58 extern void AES_GetOutput(uint32_t *data);
59 extern void AES_SetVector(const uint32_t *pVector);
60 extern void AES_SetAadLen(uint32_t len);
61 extern void AES_SetDataLen(uint32_t len);
62 extern void AES_SetGcmHash(uint32_t *hash);
63 extern void AES_GetGcmTag(uint32_t *tag);
64 extern void AES_GetGcmCounter(uint32_t *counter);
65 extern void AES_GetGcmH(uint32_t *h);
66 
67 
68 #endif /* #ifndef _AES_ */
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
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_Configure(uint32_t mode)
Configures an AES peripheral with the specified parameters.
Definition: aes.c:120
void AES_Start(void)
Starts Manual encryption/decryption process.
Definition: aes.c:102
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_SoftReset(void)
Resets the AES. A software triggered hardware reset of the AES interface is performed.
Definition: aes.c:111
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_DisableIt(uint32_t sources)
Disables the selected interrupts sources on a AES peripheral.
Definition: aes.c:138
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_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_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_GetGcmCounter(uint32_t *counter)
Reports the current value of the 32-bit GCM counter.
Definition: aes.c:267
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_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