iot - ATECC608A| 谷歌物联网核心 | 如何将 X 和 Y 整数 big-endian 格式转换为 base64 字符串有效的公钥格式?
问题描述
我正在使用 ATECC608 生成公钥/私钥来验证 IOT 设备和 Google IOT Core。
我能够生成私钥和公钥。私钥存储在 Slot1 上,公共存储在 slot 11 上。我正在使用 atcab_get_pubkey() 返回公钥。如何从大端格式的 X 和 Y 整数进行转换。64 字节到 base64 字符串有效的公钥格式,所以我可以把它放在谷歌物联网云上?我尝试使用 atcab_base64encode() 但它插入了奇怪的字符并且我的公钥在 google iot 核心上无效:
0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A,
0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0x03,
0x42, 0x00, 0x04};
char buf[128];
size_t buf_len = sizeof(buf);
/* Convert to base 64 */
atcab_base64encode(public_key, ATCA_PUB_KEY_SIZE + sizeof(public_key_x509_header), buf, &buf_len);
for (int i = 0; i < strlen((char *)public_key); i++)
{
printf("0x%02x, ", public_key[i]);
}
printf("\n");
/* Print out the key */
DEBUG_PRINTF("-----BEGIN PUBLIC KEY-----\r\n%s\r\n-----END PUBLIC KEY-----\r\n", buf);
/* Add a null terminator */
buf[buf_len] = 0;
atcab_release();```
Generated public key is: {X:c888157854773773e93b18c34803d417d6d2b3e54f40b451fe0eb8a1ae824feb, Y:8dfb0ab2aca0eca0c296e1579cfbaa58aba2cd8e223c76d43a01197a33ab6d93}
-----BEGIN PUBLIC KEY-----
yIgVeFR3N3PpOxjDSAPUF9bSs+VPQLRR/g64oa6CT+uN+wqyrKDsoMKW4Vec+6pY
q6LNjiI8dtQ6ARl6M6ttk48AhyCPIMSPj4+Pj5+Pr4+PjwAAAAAAAAAAAA==
-----END PUBLIC KEY-----
解决方案
推荐阅读
- craftcms - 我没有在 Craft CMS 中的字段上设置字符限制,但由于内容太长而无法保存条目?
- c# - 使用 C# 和 Microsoft Graph SDK 从日历获取事件
- turtle-graphics - 小型基本海龟 MoveTo 错误“值对于小数而言太大或太小。”
- python - Pandas:在表格摘要中考虑输入差异和特定列值
- node.js - 节点从Debian服务器发送邮件到用户的电子邮件
- apache - RedirectMatch - 阻止它匹配第一次出现
- c# - ASP.NET Core 2.1 Razor 页面返回带有模型的页面
- c - 为什么 `realloc()` 在某些神秘的输入上会失败?
- python - 关于Python中定义函数的问题
- .htaccess - .htaccess 密码在重定向时请求了两次,未请求/站点在移动设备上未授权