无法使用AES硬件加密块

6个帖子/ 0新
最后一篇
Ankitdaf.
离线
最后一次露面:2年10个月前
加入:2015-09-03 20:14
无法使用AES硬件加密块

你好

我正在尝试使用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];
}
}
休息;

我添加了断点,但似乎消息从未捕获过。你能帮我弄清楚我错过/做错了吗?

谢谢

关键词:
设备:
lc_dialog.
离线
最后一次露面:1周19小时前
职员
加入:2016-09-19 23:20
你好Ankitdaf,

你好Ankitdaf,

我目前正在恢复您的查询,并将回复您。

问候,

LC.

Ankitdaf.
离线
最后一次露面:2年10个月前
加入:2015-09-03 20:14
更新 :

更新 :

我想出来,我猜一些组件未在user_app_init返回之前初始化,因此调用gapm_use_enc_block_cmd失败,因为它需要这些组件。在广告开始或完整的工作中致电它只是很好。

我现在有一个不同的问题。如果我想加密整个数据块,请说64个字节,是否有“阻塞”方式来执行它?目前,它发生在呼叫 - 回调模式,跟踪相当繁琐。是否可以调用硬件加密块,然后在继续之前等待结果?

谢谢

Joacimwe.
离线
最后一次露面:1年7个月前
格鲁鲁
加入:2014-01-14 06:45
是的。在https看到我的帖子:/
Ankitdaf.
离线
最后一次露面:2年10个月前
加入:2015-09-03 20:14
谢谢,现在尝试这件事!

谢谢,现在尝试这件事!

我想知道你是否可以解释那里的一些陈述。你做几件事的确切原因对我来说并不清楚..

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];

上述两个指针地址的任何原因都是它们的方式?
他们是如何选择的?

我想我错过了一些文件,一些文件或理解,并希望更好地了解系统。

非常感谢您的帮助 !

谢谢 !

Joacimwe.
离线
最后一次露面:1年7个月前
格鲁鲁
加入:2014-01-14 06:45
没有那么多

没有比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地址,因此这只是一个任意选择的区域。