This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

how to use cc1310 hardware encrption

how i can use hardware AES encryption in CC13xx. Is there any application program??

  • Hi

    Please see the documentation of the crypto driver found when downloading the TI-RTOS:

    C:\ti\tirtos_cc13xx_cc26xx_2_15_00_17\products\tidrivers_cc13xx_cc26xx_2_15_00_26\docs\doxygen\html\_crypto_c_c26_x_x_8h.html

    Siri

  • I used the documentation that you referred and my code block is as below

    keyIndex

    // Declared globally outside the task function 
    typedef struct
    {
    	uint8_t ui8AESKey[16];
    	CryptoCC26XX_KeyLocation ui8AESKeyLocation; // Location in Key RAM
    	uint8_t ui8AESClearText[16];                // Input message - clear text
    	uint8_t ui8AESMsgOut[16];                   // Output message
    	uint8_t ui8IntEnable;                       // Set to true/false to enable/
    	// disable interrupts
    } AESEncryptStore;
    
    AESEncryptStore mykeyStore ={
    	       { 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6,
    	       0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C },
    	       CRYPTOCC26XX_KEY_0,
    	       { 0x6B, 0xC1, 0xBE, 0xE2, 0x2E, 0x40, 0x9F, 0x96,
    	       0xE9, 0x3D, 0x7E, 0x11, 0x73, 0x93, 0x17, 0x2A },
    	       { 0x3A, 0xD7, 0x7B, 0xB4, 0x0D, 0x7A, 0x36, 0x60,
    	       0xA8, 0x9E, 0xCA, 0xF3, 0x24, 0x66, 0xEF, 0x97 },
    	       true,
    	   };
    CryptoCC26XX_Handle      handle;
    CryptoCC26XX_Params      params;
    bool                     exclusiveAccess = false;
    int                         keyIndex;
    CryptoCC26XX_AESECB_Transaction trans;
    
    
    
    Inside a task
    
    	if (!handle)
    	{
    		System_printf("CryptoCC26XX did not open");
    		System_flush();
    
    	}
    	else
    	{
    		System_printf("Entering else block");
    		System_flush();
    		keyIndex = CryptoCC26XX_allocateKey(handle, mykeyStore.ui8AESKeyLocation,(const uint32_t *) mykeyStore.ui8AESKey);
    		if (keyIndex != CRYPTOCC26XX_STATUS_ERROR)
    		{
    			// Setup transaction
    			trans.keyIndex         = keyIndex;
    			trans.msgIn            = (uint32_t *) mykeyStore.ui8AESClearText;
    			trans.msgOut           = (uint32_t *) mykeyStore.ui8AESMsgOut;
    			// Do AES-ECB operation
    			CryptoCC26XX_transact(handle, (CryptoCC26XX_Transaction *) &trans);
    			CryptoCC26XX_releaseKey(handle,&keyIndex);
    			System_printf("Before encryption %s",(uint32_t *) mykeyStore.ui8AESClearText);
    			System_printf(" After %s",(uint32_t *) mykeyStore.ui8AESMsgOut);
    System_flush(); } else { System_printf("Key Location was not allocated."); } }

    The code reaches the CryptoCC26XX_transact line and crashes after that, debugger when stepped into shows few registers and values, but it never returns from that function.

    I just took the code verbatim from #include <ti/drivers/crypto/CryptoCC26XX.h> as advised. I made the data type of KeyIndex as int,since compiler was warning the comparison is futile since u_int8 was being compared against a negative number.

    Can you advise what is incorrect in the above code?


     

  • I was missing this line CryptoCC26XX_Transac_init((CryptoCC26XX_Transaction *) &trans, CRYPTOCC26XX_OP_AES_ECB);

    Now it works