92 lines
2.7 KiB
C
92 lines
2.7 KiB
C
/****************************************************************************
|
|
|
|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
|
|
|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
|
be copied by any method or incorporated into another program without
|
|
the express written consent of Aerospace C.Power. This Information or any portion
|
|
thereof remains the property of Aerospace C.Power. The Information contained herein
|
|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
|
liability for its use in any way and conveys no license or title under
|
|
any patent or copyright and makes no representation or warranty that this
|
|
Information is free from patent or copyright infringement.
|
|
|
|
****************************************************************************/
|
|
#include "os_types.h"
|
|
#include "os_mem.h"
|
|
|
|
#include "iot_io.h"
|
|
#include "mbedtls/chacha20.h"
|
|
#include "sec_sys.h"
|
|
|
|
|
|
#define mbedtls_printf iot_printf
|
|
#if 0
|
|
static const uint8_t key[32] = {
|
|
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
|
|
0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
|
|
0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
|
|
0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f
|
|
};
|
|
#endif
|
|
static const uint8_t key[32] = {
|
|
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
|
|
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
|
|
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
|
|
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
|
|
};
|
|
|
|
//t uint8_t m[10] = { 0x86, 0xd0, 0x99, 0x74, 0x84, 0x0b, 0xde, 0xd2, 0xa5, 0xca };
|
|
static const uint8_t m[64] = { 0x0 };
|
|
|
|
//static const uint8_t nonce[12] = { 0x07, 0x00, 0x00, 0x00, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47 };
|
|
|
|
static const uint8_t nonce[12] = { 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00};
|
|
static uint8_t c[2][64];
|
|
|
|
int chacha20_test( int verbose )
|
|
{
|
|
int ret = 0;
|
|
|
|
uint32_t ic_l = 0x1;
|
|
|
|
if( verbose != 0 )
|
|
mbedtls_printf( " CHACHA20 test: ");
|
|
#if 0
|
|
uint32_t ic_h = 0x2;
|
|
|
|
uint64_t ic = ic_l |((uint64_t)ic_h << 32);
|
|
stream_ref_xor_ic(c[0], m, 64, nonce, ic, key);
|
|
sec_sys_chacha20(c[1], m, 64, nonce, ic, key);
|
|
#else
|
|
stream_ietf_ref_xor_ic(c[0], m, 64, nonce, ic_l, key);
|
|
sec_sys_itef_chacha20(c[1], m, 64, nonce, ic_l, key);
|
|
#endif
|
|
|
|
if( os_mem_cmp( c[0], c[1], 64 ) != 0 )
|
|
{
|
|
if( verbose != 0 )
|
|
mbedtls_printf( "failed\n" );
|
|
|
|
ret = 1;
|
|
goto exit;
|
|
}
|
|
|
|
if( verbose != 0 )
|
|
mbedtls_printf( "passed\n" );
|
|
|
|
if( verbose != 0 )
|
|
mbedtls_printf( "\n" );
|
|
|
|
exit:
|
|
return( ret );
|
|
}
|
|
|
|
int chacha20_main( )
|
|
{
|
|
sec_sys_chacha20_init();
|
|
chacha20_test(1);
|
|
|
|
return 0;
|
|
}
|