ID Unit
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
构造函数
方法
- IDUnit.get_revision_number() int
返回 ATECC608B 的修订号。修订号是一个版本标识,用于指示硬件设计的特定迭代或更新,有助于区分同一芯片型号的不同版本。
返回:
int:十六进制数。
UiFlow2:

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

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

- IDUnit.randrange(min, max, step) int
第一种形式返回区间 (0, max) 内的随机整数。第二种形式返回区间 (min, max, step) 内、步长为 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。
返回:
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或bytearray。sign –
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 –
stringformat – 0:十六进制,1:base64。
返回:
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 密钥存储在芯片的槽 9 中。
返回:
bytearray:返回 16 字节加密数据。
- IDUnit.aes_ecb_decrypt(position, data) bytearray
对数据执行 AES-ECB 模式解密。AES 密钥存储在芯片的槽 9 中。
返回:
bytearray:返回 16 字节解密数据。



