ID 单元
ID Unit 是一款加密协处理器,具备基于硬件的安全密钥存储功能,集成 ATECC608B 硬件加密芯片,并采用 I2C 通信接口。该芯片内置 10Kb EEPROM,用于存储密钥、证书、数据、消耗记录以及安全配置。
支持以下产品:
MicroPython 应用示例
import os, sys, io
import M5
from M5 import *
from hardware import *
from unit import IDUnit
i2c0 = I2C(0, scl=Pin(1), sda=Pin(2), freq=100000)
id_0 = IDUnit(i2c0)
print(id_0.get_sha256_hash('Hello M5', 1))
print(id_0.get_generate_key(0, False))
print(id_0.randrange(500, 1000, 5))
UiFlow2 应用示例
class IDUnit
Constructors
Methods
- IDUnit.get_revision_number() int
返回 ATECC608B 修订版本号。修订版本号是指用于表示硬件设计特定迭代或更新的版本标识。该修订版本号有助于区分同一芯片型号的不同版本。
返回:
int:十六进制
UiFlow2

- IDUnit.get_serial_number() str
返回 ATECC 序列号。
9 字节序列号的结构如下:
前 4 字节:这些字节是序列号的第一部分,包含固定模式以及设备唯一部分的一部分。接下来的 2 字节:这些字节为保留字段,通常设置为 0x00 或其他保留值。最后 3 字节:这些字节是序列号的最后一部分,且对该设备是唯一的。
Return:
string
UiFlow2

- IDUnit.randint(min, max) int
返回随机数(4 字节)。使用其基于硬件的随机数生成器(RNG)生成真随机数。该 RNG 常用于需要高质量随机性的安全应用中,例如密钥生成。
返回值:
int:0 ~ 4294967295
UiFlow2

- IDUnit.randrange(min, max, step) int
第一种形式会从 range(0, max) 范围内返回一个随机整数。第二种形式会以 step 为步长,从 range(min, max, step) 范围内返回一个随机整数。例如,调用 randrange(1, 10, 2) 将返回 1 到 9(含)之间的奇数。
返回:
int:0 ~ 4294967295
UiFlow2

- IDUnit.uniform(min, max) float
返回一个随机浮点数 N,使得当 min <= max 时满足 min <= N <= max,当 max < min 时满足 max <= N <= min。
Return:
float:
UiFlow2

- IDUnit.get_generate_key(slot_num, private_key) bytearray
返回生成的私钥或公钥。私钥是一段机密数据,用于在密码学中执行各种功能。公钥是在公钥密码学中与私钥配对的加密密钥。
返回:
bytearray:
UiFlow2

- IDUnit.get_ecdsa_sign(slot, message) bytearray
返回 ECDSA 签名。ECDSA 广泛用于数字签名,以确保消息和文档的真实性与完整性。
- 参数:
slot (int) – 0 ~ 4
message –
string或list或bytearray
返回:
bytearray:
UiFlow2

- IDUnit.get_verify_ecdsa_sign(message, sign, key) bool
返回验证 ECDSA 签名的状态。椭圆曲线数字签名算法(ECDSA)中的签名验证,是检查给定的数字签名是否有效,并且确实由对应私钥或公钥的持有者生成的过程。该过程可确保消息或数据。
- 参数:
message –
string或list或bytearraysign –
bytearraykey –
bytearray
返回:
bool:True 或 False
UiFlow2

- IDUnit.get_sha256_hash(message, format) str
获取生成的 SHA-256 哈希值。SHA-256(Secure Hash Algorithm 256-bit)是一种加密哈希函数,无论输入数据大小如何,都会生成固定大小的 256 位(32 字节)哈希值。
- 参数:
message – string
format – 0:十六进制,1:base64
Return:
string:
UiFlow2

- IDUnit.set_certificate_signing_request(slot_num, private_key, country, state_prov, city, org, org_unit, file_path) None
证书签名请求(CSR)是一段经过编码的文本块,当您申请 SSL/TLS 证书时会将其发送给证书颁发机构(CA)。它包含 CA 用于创建证书的信息,包括您的公钥以及有关您组织的一些信息。
- 参数:
UiFlow2

- IDUnit.aes_ecb_encrypt(position, data) bytearray
对数据执行 AES-ECB 模式加密。AES 密钥存储在芯片的 slot 9 中。
返回:
bytearray:返回 16 字节的加密数据
- IDUnit.aes_ecb_decrypt(position, data) bytearray
对数据执行 AES-ECB 模式解密。AES 密钥存储在芯片的 slot 9 中。
返回:
bytearray:返回 16 字节的解密数据



