/** ****************************************************************************** * @file fm33a0xxev_aes.h * @author FM33A0XXEV Application Team * @version V1.0.0 * @date 16-April-2020 * @brief This file contains all the functions prototypes for the AES firmware library. ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __FM33A0XXEV_AES_H #define __FM33A0XXEV_AES_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "FM33A0XXEV.h" //------------------------------------------------------------------------------ typedef struct { uint32_t KEYLEN; //AES¼ÓÃÜÃÜÔ¿³¤¶È£¬AESEN=1ʱ²»¿ÉÐÞ¸Ä uint32_t CHMOD; //AESÊý¾ÝÁ÷´¦Àíģʽ£¬AESEN=1ʱ²»¿ÉÐÞ¸Ä uint32_t MODE; //AES¹¤×÷ģʽ£¬AESEN=1ʱ²»¿ÉÐÞ¸Ä uint32_t DATATYP; //Ñ¡ÔñÊý¾ÝÀàÐÍ£¬AESEN=1ʱ²»¿ÉÐ޸ġ£¾ßÌå½»»»¹æÔò¿É²Î¿¼AESÊý¾ÝÀàÐÍÕÂ½Ú FunState DMAOEN; //DMAÊý¾Ý×Ô¶¯¶Á³öʹÄÜ FunState DMAIEN; //DMAÊý¾Ý×Ô¶¯Ð´ÈëʹÄÜ FunState WERRIE; //´íÎó±êÖ¾£¨WRERR£©ÖжÏʹÄÜ FunState RERRIE; //´íÎó±êÖ¾£¨RDERR£©ÖжÏʹÄÜ FunState CCFIE; //CCF±êÖ¾ÖжÏʹÄÜ FunState AESEN; //AESʹÄÜ }AES_InitTypeDef; #define AES_CR_KEYLEN_Pos 13 /* AES¼ÓÃÜÃÜÔ¿³¤¶È£¬AESEN=1ʱ²»¿ÉÐ޸ġ£ (Key Length) 00£º128bit 01£º192bit 10£º256bit 11£º±£Áô */ #define AES_CR_KEYLEN_Msk (0x3U << AES_CR_KEYLEN_Pos) #define AES_CR_KEYLEN_128BIT (0x0U << AES_CR_KEYLEN_Pos) /* 128bit */ #define AES_CR_KEYLEN_192BIT (0x1U << AES_CR_KEYLEN_Pos) /* 192bit */ #define AES_CR_KEYLEN_256BIT (0x2U << AES_CR_KEYLEN_Pos) /* 256bit */ #define AES_CR_KEYLEN_ (0x3U << AES_CR_KEYLEN_Pos) /* ±£Áô */ #define AES_CR_DMAOEN_Pos 12 /* DMAÊý¾Ý×Ô¶¯¶Á³öʹÄÜ (DMA output enable) 0£º²»¿ªÆô 1£º¿ªÆô ¸ÃλÖÃλºóÔÚģʽ1£¬Ä£Ê½3ºÍģʽ4ÏÂAESÄ£¿é»á×Ô¶¯²úÉúAES->RAMµÄ´«ÊäÇëÇó¡£Ä£Ê½2ϲ»»á²úÉú¡£ */ #define AES_CR_DMAOEN_Msk (0x1U << AES_CR_DMAOEN_Pos) #define AES_CR_DMAIEN_Pos 11 /* ¿ªÆôDMAÊý¾Ý×Ô¶¯Ð´ÈëʹÄÜ (DMA input enable) 0£º²»¿ªÆô 1£º¿ªÆô ¸ÃλÉèÖÃΪ1ºóÔÚģʽ1£¬Ä£Ê½3ºÍģʽ4ÒÔ¼°MultHģʽÏÂAESÄ£¿é»á×Ô¶¯²úÉúRAM->AESµÄ´«ÊäÇëÇó¡£Ä£Ê½2ϲ»»á²úÉú¡£ */ #define AES_CR_DMAIEN_Msk (0x1U << AES_CR_DMAIEN_Pos) #define AES_CR_CHMOD_Pos 5 /* AESÊý¾ÝÁ÷´¦Àíģʽ£¬AESEN=1ʱ²»¿ÉÐ޸ġ£ (Cipher Mode) 00£ºECB 01£ºCBC 10£ºCTR 11£ºÊ¹ÓÃMultHÄ£¿é */ #define AES_CR_CHMOD_Msk (0x3U << AES_CR_CHMOD_Pos) #define AES_CR_CHMOD_ECB (0x0U << AES_CR_CHMOD_Pos) /* ECB */ #define AES_CR_CHMOD_CBC (0x1U << AES_CR_CHMOD_Pos) /* CBC */ #define AES_CR_CHMOD_CTR (0x2U << AES_CR_CHMOD_Pos) /* CTR */ #define AES_CR_CHMOD_MULTH (0x3U << AES_CR_CHMOD_Pos) /* ʹÓÃMultHÄ£¿é */ #define AES_CR_MODE_Pos 3 /* AES¹¤×÷ģʽ£¬AESEN=1ʱ²»¿ÉÐ޸ġ£ (operation MODE) 00£ºÄ£Ê½1£º¼ÓÃÜ 01£ºÄ£Ê½2£ºÃÜÔ¿À©Õ¹ 10£ºÄ£Ê½3£º½âÃÜ 11£ºÄ£Ê½4£ºÃÜÔ¿À©Õ¹+½âÃÜ CTRģʽÏÂÅäÖóÉģʽ4½«×Ô¶¯½øÈëCTRµÄ½âÃÜģʽ¡£¼´ÔÚCHMOD=2¡¯b10ʱÅäÖÃMODE=2¡¯b11£¬AES½«°´ÕÕMODE=2¡¯b10µÄÇéÐÎÖ´ÐС£ */ #define AES_CR_MODE_Msk (0x3U << AES_CR_MODE_Pos) #define AES_CR_MODE_ENCRYPT (0x0U << AES_CR_MODE_Pos) /* ģʽ1 */ #define AES_CR_MODE_KEYEXP (0x1U << AES_CR_MODE_Pos) /* ģʽ2 */ #define AES_CR_MODE_DECRYPT (0x2U << AES_CR_MODE_Pos) /* ģʽ3 */ #define AES_CR_MODE_KEYEXPDECRYPT (0x3U << AES_CR_MODE_Pos) /* ģʽ4 */ #define AES_CR_DATATYP_Pos 1 /* Ñ¡ÔñÊý¾ÝÀàÐÍ£¬AESEN=1ʱ²»¿ÉÐ޸ġ£¾ßÌå½»»»¹æÔò¿É²Î¿¼AESÊý¾ÝÀàÐÍÕ½ڡ£ (Data type) 00£º32bitÊý¾Ý²»½»»» 01£º16bitÊý¾Ý°ë×Ö½»»» 10£º8bitÊý¾Ý×Ö½Ú½»»» 11£º1bitÊý¾Ý±ÈÌØ½»»» */ #define AES_CR_DATATYP_Msk (0x3U << AES_CR_DATATYP_Pos) #define AES_CR_DATATYP_32BITNOEX (0x0U << AES_CR_DATATYP_Pos) /* 32bitÊý¾Ý²»½»»» */ #define AES_CR_DATATYP_16BITEX (0x1U << AES_CR_DATATYP_Pos) /* 16bitÊý¾Ý°ë×Ö½»»» */ #define AES_CR_DATATYP_8BITEX (0x2U << AES_CR_DATATYP_Pos) /* 8bitÊý¾Ý×Ö½Ú½»»» */ #define AES_CR_DATATYP_1BITEX (0x3U << AES_CR_DATATYP_Pos) /* 1bitÊý¾Ý±ÈÌØ½»»» */ #define AES_CR_EN_Pos 0 /* AESʹÄÜ (AES enable) 0£º²»Ê¹ÄÜ 1£ºÊ¹ÄÜ ÔÚÈκÎʱºòÇå³ýAESENλ¶¼Äܹ»¸´Î»AESÄ£¿é ÔÚģʽ2ϸÃλ»áÔÚÒ»´Î¼ÆËãÍê³ÉºóÓ²¼þ×Ô¶¯Çå0 */ #define AES_CR_EN_Msk (0x1U << AES_CR_EN_Pos) /* ²»Ê¹ÄÜ */ /* ʹÄÜ */ #define AES_IER_WRERR_IE_Pos 2 /* д´íÎóÖжÏʹÄÜ£¬1ÓÐЧ¡£(Write Error interrupt enable) */ #define AES_IER_WRERR_IE_Msk (0x1U << AES_IER_WRERR_IE_Pos) #define AES_IER_RDERR_IE_Pos 1 /* ¶Á´íÎóÖжÏʹÄÜ£¬1ÓÐЧ¡£(Read Error interrupt enable) */ #define AES_IER_RDERR_IE_Msk (0x1U << AES_IER_RDERR_IE_Pos) #define AES_IER_CCF_IE_Pos 0 /* AES¼ÆËãÍê³ÉÖжÏʹÄÜ£¬1ÓÐЧ¡£(Cipher Complete Interrupt enable) */ #define AES_IER_CCF_IE_Msk (0x1U << AES_IER_CCF_IE_Pos) #define AES_DIR_DIN_Pos 0 /* Êý¾ÝÊäÈë¼Ä´æÆ÷£¬µ±AESÐèÒªÊäÈë¼Ó½âÃÜÊý¾Ýʱ£¬Ó¦¸ÃÍù¸Ã¼Ä´æÆ÷Á¬ÐøÐ´4´Î¡£(AES Data Input) ģʽ1£¨¼ÓÃÜ£©£º°ÑÃ÷ÎÄ´ÓMSBµ½LSB·Ö4´ÎдÈë¡£ ģʽ2£¨ÃÜÔ¿À©Õ¹£©£ºÎÞÐèʹÓÃÊý¾ÝÊäÈë¼Ä´æÆ÷ ģʽ3ºÍģʽ4£¨½âÃÜ£©£º°ÑÃÜÎÄ´ÓMSBµ½LSB·Ö4´ÎдÈë¡£ MultHģʽ£º°Ñ³ËÊýA»òC´ÓMSBµ½LSB·Ö4´ÎдÈë¡£ */ #define AES_DIR_DIN_Msk (0xffffffffU << AES_DIR_DIN_Pos) #define AES_DOR_DOUT_Pos 0 /* Êý¾ÝÊä³ö¼Ä´æÆ÷£¬µ±AES¼ÆËãÍê³Éºó£¬¿ÉÒÔ·ÖËĴζÁ³ö¼Ó½âÃܵĽá¹û¡£(AES Data Output) ģʽ1£¨¼ÓÃÜ£©£º°ÑÃÜÎÄ´ÓMSBµ½LSB·Ö4´Î¶Á³ö¡£ ģʽ2£¨ÃÜÔ¿À©Õ¹£©£ºÎÞÐèʹÓÃÊý¾ÝÊäÊä³ö¼Ä´æÆ÷ ģʽ3ºÍģʽ4£¨½âÃÜ£©£º°ÑÃ÷ÎÄ´ÓMSBµ½LSB·Ö4´ÎÊä³ö¡£ MultHģʽ£ºÔËËã½á¹û´æ´¢ÔÚIVR¼Ä´æÆ÷ÖУ¬ÎÞÐè¶ÁÈ¡AES_DOUTR¼Ä´æÆ÷¡£ */ #define AES_DOR_DOUT_Msk (0xffffffffU << AES_DOR_DOUT_Pos) #define AES_KEY0_KEYx_Pos 0 /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key) ×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì */ #define AES_KEY0_KEYx_Msk (0xffffffffU << AES_KEY0_KEYx_Pos) #define AES_KEY1_KEYx_Pos 0 /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key) ×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì */ #define AES_KEY1_KEYx_Msk (0xffffffffU << AES_KEY1_KEYx_Pos) #define AES_KEY2_KEYx_Pos 0 /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key) ×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì */ #define AES_KEY2_KEYx_Msk (0xffffffffU << AES_KEY2_KEYx_Pos) #define AES_KEY3_KEYx_Pos 0 /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key) ×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì */ #define AES_KEY3_KEYx_Msk (0xffffffffU << AES_KEY3_KEYx_Pos) #define AES_KEY4_KEYx_Pos 0 /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key) ×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì */ #define AES_KEY4_KEYx_Msk (0xffffffffU << AES_KEY4_KEYx_Pos) #define AES_KEY5_KEYx_Pos 0 /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key) ×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì */ #define AES_KEY5_KEYx_Msk (0xffffffffU << AES_KEY5_KEYx_Pos) #define AES_KEY6_KEYx_Pos 0 /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key) ×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì */ #define AES_KEY6_KEYx_Msk (0xffffffffU << AES_KEY6_KEYx_Pos) #define AES_KEY7_KEYx_Pos 0 /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key) ×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì */ #define AES_KEY7_KEYx_Msk (0xffffffffU << AES_KEY7_KEYx_Pos) #define AES_IVR0_IVRx_Pos 0 /* AESÔËËã128bit³õʼÏòÁ¿£¬ÔÚMultHģʽϱ£´æÔËËã½á¹û¡£ (AES Initial Vector Registers) */ #define AES_IVR0_IVRx_Msk (0xffffffffU << AES_IVR0_IVRx_Pos) #define AES_IVR1_IVRx_Pos 0 /* AESÔËËã128bit³õʼÏòÁ¿£¬ÔÚMultHģʽϱ£´æÔËËã½á¹û¡£ (AES Initial Vector Registers) */ #define AES_IVR1_IVRx_Msk (0xffffffffU << AES_IVR1_IVRx_Pos) #define AES_IVR2_IVRx_Pos 0 /* AESÔËËã128bit³õʼÏòÁ¿£¬ÔÚMultHģʽϱ£´æÔËËã½á¹û¡£ (AES Initial Vector Registers) */ #define AES_IVR2_IVRx_Msk (0xffffffffU << AES_IVR2_IVRx_Pos) #define AES_IVR3_IVRx_Pos 0 /* AESÔËËã128bit³õʼÏòÁ¿£¬ÔÚMultHģʽϱ£´æÔËËã½á¹û¡£ (AES Initial Vector Registers) */ #define AES_IVR3_IVRx_Msk (0xffffffffU << AES_IVR3_IVRx_Pos) #define AES_H0_Hx_Pos 0 /* MultHÔËËã128bitÊäÈëH²ÎÊý (H Parameter) H0±£´æH[31:0]£¬H3±£´æH[127:96] */ #define AES_H0_Hx_Msk (0xffffffffU << AES_H0_Hx_Pos) #define AES_H1_Hx_Pos 0 /* MultHÔËËã128bitÊäÈëH²ÎÊý (H Parameter) H0±£´æH[31:0]£¬H3±£´æH[127:96] */ #define AES_H1_Hx_Msk (0xffffffffU << AES_H1_Hx_Pos) #define AES_H2_Hx_Pos 0 /* MultHÔËËã128bitÊäÈëH²ÎÊý (H Parameter) H0±£´æH[31:0]£¬H3±£´æH[127:96] */ #define AES_H2_Hx_Msk (0xffffffffU << AES_H2_Hx_Pos) #define AES_H3_Hx_Pos 0 /* MultHÔËËã128bitÊäÈëH²ÎÊý (H Parameter) H0±£´æH[31:0]£¬H3±£´æH[127:96] */ #define AES_H3_Hx_Msk (0xffffffffU << AES_H3_Hx_Pos) #define AES_ISR_WRERR_Pos 2 /* д´íÎó±êÖ¾£ºÔÚ¼ÆËã»òÊä³ö½×¶Î·¢Éúд²Ù×÷ʱÖÃ룬Èí¼þд1ÇåÁã */ #define AES_ISR_WRERR_Msk (0x1U << AES_ISR_WRERR_Pos) #define AES_ISR_RDERR_Pos 1 /* ¶Á´íÎó±êÖ¾£ºÔÚ¼ÆËã»òÊäÈë½×¶Î·¢Éú¶Á²Ù×÷ʱÖÃ룬Èí¼þд1ÇåÁã */ #define AES_ISR_RDERR_Msk (0x1U << AES_ISR_RDERR_Pos) #define AES_ISR_CCF_Pos 0 /* AES¼ÆËãÍê³É±êÖ¾£¬Èí¼þд1ÇåÁã 1£º¼ÆËãÍê³É 0£º¼ÆËãûÓÐÍê³É */ #define AES_ISR_CCF_Msk (0x1U << AES_ISR_CCF_Pos) //Macro_End /* Exported functions --------------------------------------------------------*/ extern void AES_Deinit(void); /* AES¼ÓÃÜÃÜÔ¿³¤¶È£¬AESEN=1ʱ²»¿ÉÐ޸ġ£ (Key Length) 00£º128bit 01£º192bit 10£º256bit 11£º±£Áô Ïà¹Øº¯Êý */ extern void AES_CR_KEYLEN_Set(uint32_t SetValue); extern uint32_t AES_CR_KEYLEN_Get(void); /* DMAÊý¾Ý×Ô¶¯¶Á³öʹÄÜ (DMA output enable) 0£º²»¿ªÆô 1£º¿ªÆô ¸ÃλÖÃλºóÔÚģʽ1£¬Ä£Ê½3ºÍģʽ4ÏÂAESÄ£¿é»á×Ô¶¯²úÉúAES->RAMµÄ´«ÊäÇëÇó¡£Ä£Ê½2ϲ»»á²úÉú¡£ Ïà¹Øº¯Êý */ extern void AES_CR_DMAOEN_Setable(FunState NewState); extern FunState AES_CR_DMAOEN_Getable(void); /* ¿ªÆôDMAÊý¾Ý×Ô¶¯Ð´ÈëʹÄÜ (DMA input enable) 0£º²»¿ªÆô 1£º¿ªÆô ¸ÃλÉèÖÃΪ1ºóÔÚģʽ1£¬Ä£Ê½3ºÍģʽ4ÒÔ¼°MultHģʽÏÂAESÄ£¿é»á×Ô¶¯²úÉúRAM->AESµÄ´«ÊäÇëÇó¡£Ä£Ê½2ϲ»»á²úÉú¡£ Ïà¹Øº¯Êý */ extern void AES_CR_DMAIEN_Setable(FunState NewState); extern FunState FunStateAES_CR_DMAIEN_Getable(void); /* AESÊý¾ÝÁ÷´¦Àíģʽ£¬AESEN=1ʱ²»¿ÉÐ޸ġ£ (Cipher Mode) 00£ºECB 01£ºCBC 10£ºCTR 11£ºÊ¹ÓÃMultHÄ£¿é Ïà¹Øº¯Êý */ extern void AES_CR_CHMOD_Set(uint32_t SetValue); extern uint32_t AES_CR_CHMOD_Get(void); /* AES¹¤×÷ģʽ£¬AESEN=1ʱ²»¿ÉÐ޸ġ£ (operation MODE) 00£ºÄ£Ê½1£º¼ÓÃÜ 01£ºÄ£Ê½2£ºÃÜÔ¿À©Õ¹ 10£ºÄ£Ê½3£º½âÃÜ 11£ºÄ£Ê½4£ºÃÜÔ¿À©Õ¹+½âÃÜ CTRģʽÏÂÅäÖóÉģʽ4½«×Ô¶¯½øÈëCTRµÄ½âÃÜģʽ¡£¼´ÔÚCHMOD=2¡¯b10ʱÅäÖÃMODE=2¡¯b11£¬AES½«°´ÕÕMODE=2¡¯b10µÄÇéÐÎÖ´ÐС£ Ïà¹Øº¯Êý */ extern void AES_CR_MODE_Set(uint32_t SetValue); extern uint32_t AES_CR_MODE_Get(void); /* Ñ¡ÔñÊý¾ÝÀàÐÍ£¬AESEN=1ʱ²»¿ÉÐ޸ġ£¾ßÌå½»»»¹æÔò¿É²Î¿¼AESÊý¾ÝÀàÐÍÕ½ڡ£ (Data type) 00£º32bitÊý¾Ý²»½»»» 01£º16bitÊý¾Ý°ë×Ö½»»» 10£º8bitÊý¾Ý×Ö½Ú½»»» 11£º1bitÊý¾Ý±ÈÌØ½»»» Ïà¹Øº¯Êý */ extern void AES_CR_DATATYP_Set(uint32_t SetValue); extern uint32_t AES_CR_DATATYP_Get(void); /* AESʹÄÜ (AES enable) 0£º²»Ê¹ÄÜ 1£ºÊ¹ÄÜ ÔÚÈκÎʱºòÇå³ýAESENλ¶¼Äܹ»¸´Î»AESÄ£¿é ÔÚģʽ2ϸÃλ»áÔÚÒ»´Î¼ÆËãÍê³ÉºóÓ²¼þ×Ô¶¯Çå0 Ïà¹Øº¯Êý */ extern void AES_CR_EN_Setable(FunState NewState); extern FunState AES_CR_EN_Getable(void); /* д´íÎóÖжÏʹÄÜ£¬1ÓÐЧ¡£(Write Error interrupt enable) Ïà¹Øº¯Êý */ extern void AES_IER_WRERR_IE_Setable(FunState NewState); extern FunState AES_IER_WRERR_IE_Getable(void); /* ¶Á´íÎóÖжÏʹÄÜ£¬1ÓÐЧ¡£(Read Error interrupt enable) Ïà¹Øº¯Êý */ extern void AES_IER_RDERR_IE_Setable(FunState NewState); extern FunState AES_IER_RDERR_IE_Getable(void); /* AES¼ÆËãÍê³ÉÖжÏʹÄÜ£¬1ÓÐЧ¡£(Cipher Complete Interrupt enable) Ïà¹Øº¯Êý */ extern void AES_IER_CCF_IE_Setable(FunState NewState); extern FunState AES_IER_CCF_IE_Getable(void); /* Êý¾ÝÊäÈë¼Ä´æÆ÷£¬µ±AESÐèÒªÊäÈë¼Ó½âÃÜÊý¾Ýʱ£¬Ó¦¸ÃÍù¸Ã¼Ä´æÆ÷Á¬ÐøÐ´4´Î¡£(AES Data Input) ģʽ1£¨¼ÓÃÜ£©£º°ÑÃ÷ÎÄ´ÓMSBµ½LSB·Ö4´ÎдÈë¡£ ģʽ2£¨ÃÜÔ¿À©Õ¹£©£ºÎÞÐèʹÓÃÊý¾ÝÊäÈë¼Ä´æÆ÷ ģʽ3ºÍģʽ4£¨½âÃÜ£©£º°ÑÃÜÎÄ´ÓMSBµ½LSB·Ö4´ÎдÈë¡£ MultHģʽ£º°Ñ³ËÊýA»òC´ÓMSBµ½LSB·Ö4´ÎдÈë¡£ Ïà¹Øº¯Êý */ extern void AES_DIR_Write(uint32_t SetValue); extern uint32_t AES_DIR_Read(void); /* Êý¾ÝÊä³ö¼Ä´æÆ÷£¬µ±AES¼ÆËãÍê³Éºó£¬¿ÉÒÔ·ÖËĴζÁ³ö¼Ó½âÃܵĽá¹û¡£(AES Data Output) ģʽ1£¨¼ÓÃÜ£©£º°ÑÃÜÎÄ´ÓMSBµ½LSB·Ö4´Î¶Á³ö¡£ ģʽ2£¨ÃÜÔ¿À©Õ¹£©£ºÎÞÐèʹÓÃÊý¾ÝÊäÊä³ö¼Ä´æÆ÷ ģʽ3ºÍģʽ4£¨½âÃÜ£©£º°ÑÃ÷ÎÄ´ÓMSBµ½LSB·Ö4´ÎÊä³ö¡£ MultHģʽ£ºÔËËã½á¹û´æ´¢ÔÚIVR¼Ä´æÆ÷ÖУ¬ÎÞÐè¶ÁÈ¡AES_DOUTR¼Ä´æÆ÷¡£ Ïà¹Øº¯Êý */ extern uint32_t AES_DOR_Read(void); /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key) ×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì Ïà¹Øº¯Êý */ extern void AES_KEY0_Write(uint32_t SetValue); /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key) ×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì Ïà¹Øº¯Êý */ extern void AES_KEY1_Write(uint32_t SetValue); /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key) ×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì Ïà¹Øº¯Êý */ extern void AES_KEY2_Write(uint32_t SetValue); /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key) ×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì Ïà¹Øº¯Êý */ extern void AES_KEY3_Write(uint32_t SetValue); /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key) ×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì Ïà¹Øº¯Êý */ extern void AES_KEY4_Write(uint32_t SetValue); /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key) ×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì Ïà¹Øº¯Êý */ extern void AES_KEY5_Write(uint32_t SetValue); /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key) ×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì Ïà¹Øº¯Êý */ extern void AES_KEY6_Write(uint32_t SetValue); /* AESÔËËãÃØÔ¿£¬×256bit£¬AESKEY0´æ·ÅÃØÔ¿×îµÍ32bit£¬AESLKEY7´æ·ÅÃØÔ¿×î¸ß32bit¡£(AES Key) ×¢Ò⣺´Ë¼Ä´æÆ÷Èí¼þÖ»¿Éд£¬²»¿É¶Á£»´Ë¼Ä´æÆ÷ÄÚÈݲ»ÊÜWWDT¸´Î»Ó°Ïì Ïà¹Øº¯Êý */ extern void AES_KEY7_Write(uint32_t SetValue); /* AESÔËËã128bit³õʼÏòÁ¿£¬ÔÚMultHģʽϱ£´æÔËËã½á¹û¡£ (AES Initial Vector Registers) Ïà¹Øº¯Êý */ extern void AES_IVR0_Write(uint32_t SetValue); extern uint32_t AES_IVR0_Read(void); /* AESÔËËã128bit³õʼÏòÁ¿£¬ÔÚMultHģʽϱ£´æÔËËã½á¹û¡£ (AES Initial Vector Registers) Ïà¹Øº¯Êý */ extern void AES_IVR1_Write(uint32_t SetValue); extern uint32_t AES_IVR1_Read(void); /* AESÔËËã128bit³õʼÏòÁ¿£¬ÔÚMultHģʽϱ£´æÔËËã½á¹û¡£ (AES Initial Vector Registers) Ïà¹Øº¯Êý */ extern void AES_IVR2_Write(uint32_t SetValue); extern uint32_t AES_IVR2_Read(void); /* AESÔËËã128bit³õʼÏòÁ¿£¬ÔÚMultHģʽϱ£´æÔËËã½á¹û¡£ (AES Initial Vector Registers) Ïà¹Øº¯Êý */ extern void AES_IVR3_Write(uint32_t SetValue); extern uint32_t AES_IVR3_Read(void); /* MultHÔËËã128bitÊäÈëH²ÎÊý (H Parameter) H0±£´æH[31:0]£¬H3±£´æH[127:96] Ïà¹Øº¯Êý */ extern void AES_H0_Write(uint32_t SetValue); extern uint32_t AES_H0_Read(void); /* MultHÔËËã128bitÊäÈëH²ÎÊý (H Parameter) H0±£´æH[31:0]£¬H3±£´æH[127:96] Ïà¹Øº¯Êý */ extern void AES_H1_Write(uint32_t SetValue); extern uint32_t AES_H1_Read(void); /* MultHÔËËã128bitÊäÈëH²ÎÊý (H Parameter) H0±£´æH[31:0]£¬H3±£´æH[127:96] Ïà¹Øº¯Êý */ extern void AES_H2_Write(uint32_t SetValue); extern uint32_t AES_H2_Read(void); /* MultHÔËËã128bitÊäÈëH²ÎÊý (H Parameter) H0±£´æH[31:0]£¬H3±£´æH[127:96] Ïà¹Øº¯Êý */ extern void AES_H3_Write(uint32_t SetValue); extern uint32_t AES_H3_Read(void); /* д´íÎó±êÖ¾£ºÔÚ¼ÆËã»òÊä³ö½×¶Î·¢Éúд²Ù×÷ʱÖÃ룬Èí¼þд1ÇåÁã Ïà¹Øº¯Êý */ extern void AES_ISR_WRERR_Clr(void); extern FlagStatus AES_ISR_WRERR_Chk(void); /* ¶Á´íÎó±êÖ¾£ºÔÚ¼ÆËã»òÊäÈë½×¶Î·¢Éú¶Á²Ù×÷ʱÖÃ룬Èí¼þд1ÇåÁã Ïà¹Øº¯Êý */ extern void AES_ISR_RDERR_Clr(void); extern FlagStatus AES_ISR_RDERR_Chk(void); /* AES¼ÆËãÍê³É±êÖ¾£¬Èí¼þд1ÇåÁã 1£º¼ÆËãÍê³É 0£º¼ÆËãûÓÐÍê³É Ïà¹Øº¯Êý */ extern void AES_ISR_CCF_Clr(void); extern FlagStatus AES_ISR_CCF_Chk(void); //Announce_End extern void AES_KEY_WriteEx(uint8_t *KeyIn, uint8_t Len); extern void AES_IVR_WriteEx(uint8_t *IVRIn); extern void AES_IVR_ReadEx(uint8_t *IVROut); extern void AES_DIN_GroupWrite_128BIT(uint8_t *DataIn); extern void AES_DOUT_GroupRead_128BIT(uint8_t *DataOut); extern uint8_t AES_GroupWriteAndRead_128BIT(uint8_t *DataIn, uint8_t *DataOut); extern uint8_t AES_GroupWriteAndRead_128BIT_IVR(uint8_t *DataIn, uint8_t *DataOut); extern void AES_Init(AES_InitTypeDef* para); extern void AES_Hx_WriteEx(uint8_t *HxIn, uint8_t Len); extern void AES_Hx_ReadEx(uint8_t *HxOut, uint8_t Len); #ifdef __cplusplus } #endif #endif /*__FM33A0XXEV_AES_H */