面向小型设备的签名URL。
signy 是一个用于在嵌入设备上使用非对称加密生成签名URL的库。签名URL通常用于授予对私有资源(例如由内容分发网络(CDN)提供的资源)的限时访问权限。在嵌入设备的场景中,签名URL可用于使外部系统或同一系统中的另一个组件能够访问特定资源。例如,设备可以生成签名URL并将其传递给性能更强的系统,以便让其代表设备下载资源。
使用 signy 需要一个能够验证其生成的签名URL的服务器。如果与 Golioth 配合使用 signy,则必须将颁发设备证书的证书颁发机构(CA)关联的证书上传到您的项目。
signy 利用平台安全架构(PSA)加密 API 进行签名操作。私钥必须使用 PSA 加密 API 生成或导入,并且必须将包含公钥的签名证书传递给 signy 库。
由 signy 生成的签名URL遵循以下格式。
BASEURL?nb=NOTBEFORE&na=NOTAFTER&cert=CERTIFICATE&sig=SIGNATURE
BASEURL:资源的地址(例如 https://gw.golioth.io/.u/c/[email protected])NOTBEFORE / NOTAFTER:定义签名URL有效时间窗口的Unix时间戳。signy 使用设备系统时间作为 NOTBEFORE,并根据 CONFIG_SIGNY_URL_VALIDITY_DURATION 设置 NOTAFTER 时间戳。CERTIFICATE:设备证书的base64无填充URL编码。SIGNATURE:对URL中&sig=之前整个部分的签名。signy 仓库是一个 Zephyr 模块,可以通过在项目的 west.yml 文件中添加以下内容来包含在任何 Zephyr 项目中。
- name: signy
path: modules/lib/signy
revision: v0.2.0
url: https://github.com/golioth/signy.git
更多信息请参阅 Zephyr 示例。
signy 仓库是一个 ESP-IDF 组件,可以通过在项目的 idf_component.yml 中将其指定为依赖项来包含在任何 ESP-IDF 项目中。
dependencies:
signy:
version: v0.2.0
git: https://github.com/golioth/signy.git
更多信息请参阅 esp-idf 示例。