扩展库 / pkcs
pkcs
常用 ASN.1 DER 构件的 HEX 编码、解析和组合。
底层复用 XRT ASN.1/DER;不承诺 PKCS#7/#8/#11/#12、证书或密钥管理。2026-10-29 当前存在 C/XRT 诊断风险:八类非法点分 OID 返回失败但缺少新错误,或保留旧 I/O 错误。语言的非空字符串检查会兜底抛异常,不是接受非法编码;C 侧仍必须检查返回值,不能把空错误槽当作成功。来源修复尚未同步,不签收整包发布。
API
| 函数 | 用途 |
|---|---|
encodeInt / decodeInt | int64 与 DER INTEGER |
encodeOid / decodeOid | 点分 OID 与 DER OBJECT IDENTIFIER |
encodeNull / encodeOctet / encodeBitString | 常用原始值编码 |
wrapSequence / wrapSet / concat | DER 构件组合;SET 子项须按完整编码字节排序 |
getTag / tagName / getLength / getContent / derLen / nextOffset | 单个 DER 值的元信息及子项边界;nextOffset 校验整段多项输入,拒绝损坏尾项 |
xlang
import pkcs
auto oid = pkcs.encodeOid("1.2.840.113549.1.1.1")
auto algorithm = pkcs.wrapSequence(pkcs.concat(oid, pkcs.encodeNull()))
println(pkcs.tagName(algorithm))
println(pkcs.decodeOid(oid))
C
2026-10-28:11 条文本返回链已删除接管后的重复复制,生成 C 的完整夹具逐一验证全部入口;INTEGER/NULL 两个入口的 C/XLang 分配预算对照一致。Windows/Linux 完整门禁含 GCC/TCC、Linux ASan/UBSan、OpenSSL 互通和新旧语言 JIT/AOT。必要的 DER/HEX 分配、strlen、输入校验及错误检查仍存在,不能称为所有操作零开销。
包含 include/pkcs_native.h。C 的文本结果由调用方以 xrtFree 释放;整数解码用成功标志和输出参数区分零与错误。XLang 文本输入拒绝内嵌 NUL,避免 C 零结尾接口只处理前缀;构造分配失败与 DER 格式错误分别报告。完整语义及可复跑命令见包内 README。
当前两平台默认门禁先通过严格 C、十六项实际原型、分配故障、文本接管检查、22 项新语言边界、七条 AOT 与双语输出,Linux 还包含 C ASan/UBSan 和 OpenSSL 独立解析;最后的 C OID 回归在 133 检查中有 48 诊断失败,门禁如实退出 1。已有成功路径不能代替 C/XRT 完整错误合同,完整复现与修复责任见包内 README。编译器和冻结 XRT 未修改。