你好
我正在尝试使用AES硬件加密对某些用户数据,基于BLE App Narebone
我已经经历了剩下的论坛文件,但它没有帮助。
我的代码如下:
struct gapm_use_enc_block_cmd * enccmd = ke_msg_alloc(gapm_use_enc_block_cmd,task_gapm,task_app,gapm_use_enc_block_cmd);
enccmd->操作= gapm_use_enc_block;
UINT8_T键[16] = {0x00,0x01,0x02,0.0x03,0x07,0x08,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};
UINT8_T PT [16] = {0x00,0x11,0x22,0x33,0x77,0x55,0x66,0x77,0x55,0x66,0x77,0x88,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff};
memcpy(enccmd->操作数_1,键,16);
memcpy(enccmd->操作数_2,pt,16);
ke_msg_send(enccmd);
这位于user_app_init()的底部;
---
我在user_catch_rest_hndl中添加了这个
CASE GAPM_USE_ENC_BLOCK_IND:
{
struct gapm_use_enc_block_ind const * msg_param =(结构gapm_use_enc_block_ind const *)(param);
UINT8_T密文[16];
memcpy(密文,msg_param->结果,16);
if(ciphertext [0] == 0x01){
密文[0] ++;
}
if(ciphertext [0] == 0x01){
- 密码[0];
}
}
休息;
我添加了断点,但似乎消息从未捕获过。你能帮我弄清楚我错过/做错了吗?
谢谢
你好Ankitdaf,
我目前正在恢复您的查询,并将回复您。
问候,
LC.
更新 :
我想出来,我猜一些组件未在user_app_init返回之前初始化,因此调用gapm_use_enc_block_cmd失败,因为它需要这些组件。在广告开始或完整的工作中致电它只是很好。
我现在有一个不同的问题。如果我想加密整个数据块,请说64个字节,是否有“阻塞”方式来执行它?目前,它发生在呼叫 - 回调模式,跟踪相当繁琐。是否可以调用硬件加密块,然后在继续之前等待结果?
谢谢
是的。看到我的帖子https://support.dialog-semicondiondiondum/feature-request-easy-encblock.
谢谢,现在尝试这件事!
我想知道你是否可以解释那里的一些陈述。你做几件事的确切原因对我来说并不清楚..
1.您是否直接编写的较低级别寄存器的文档?(例如,ble_aeskey31_0_reg,ble_aescntl_reg等)
2。
volatile uint8_t * plaintext_ptr =(volatile uint8_t *)0x80000 + jump_table_struct [offset_em_enc_plain];
vieltText_ptr =(易失性uint8_t *)0x80000 + jump_struct_struct [offset_em_enc_cipher];
上述两个指针地址的任何原因都是它们的方式?
他们是如何选择的?
我想我错过了一些文件,一些文件或理解,并希望更好地了解系统。
非常感谢您的帮助 !
谢谢 !
没有比Datasheet.h内的内部有多少文件。但是,字段的名称应几乎足够作为文档。BLE_AESKEYX_X_REG保存密钥,BLE_AESCNTL_REG仅包含一个名为AES_START(当在加密时写入1时启动加密并读取1)。BLE_AESPTR_REG包含已设置为(Volatile UINT8_T *)0x80000 + jump_table_struct [offset_em_enc_plain]的plaintext和密文(内存连续内存)的内存地址。它可以包含0x80000段中的任何RAM地址,因此这只是一个任意选择的区域。