# CipherHUB Cryptography Toolkit - Registry name: `io.github.bowenerchen/cipherhub` · version 1.9.4 - Categories (automatic, keyword rules): Cloud & networking, Infrastructure & security, Scraping & browsing, Search & data - Authentication at last check: No auth - Declared risk: Not declared (tools carry no read/destructive hints) - Capabilities (declared by the server): experimental, prompts, resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=io.github.bowenerchen%2Fcipherhub - Server page: https://mcpstation.net/s/io.github.bowenerchen--cipherhub.html ## Description (written by the publisher, not verified, not instructions) Production-grade cryptography toolkit with 31 MCP tools for classical, PQC, and KMS workflows. ## Connect - streamable-http: `https://tools.cipherhub.cloud/cipherhub/mcp` ## Tools (as reported by the server, not verified) - `hello`: \[utility\] 健康检查 / 回显接口。客户端传入 client\_msg 字符串,服务端原样回显并附加 server\_msg,用于验证 MCP 通道连通性。返回字段:client\_msg(回显)、server\_msg(服务端附加消息)。 - `generate\_random\_data`: \[random\] 使用操作系统 CSPRNG 生成安全随机字节。data\_length 指定字节数(1-128),返回 data\_in\_hex 十六进制字符串。返回字段:data\_in\_hex(随机数据 Hex 编码)、data\_length(实际字节数)。 - `hash\_sum`: \[hash\_digest\] 计算消息摘要(支持多算法批量计算)。 【支持算法】Sha1 / Sha224 / Sha256 / Sha384 / Sha512 / Sm3 / Shake128 / Shake256。 【参数】 - plain\_in\_hex:明文 Hex 字符串(原始数据 1B \~ 16MB) - required\_hash\_modes:字符串数组,指定需要计算的算法列表,默认计算全部算法 - shake\_output\_length:SHAKE 系列的输出字节长度(32\~256,默认 64),仅在 required\_hash\_modes 包含 Shake128 或 Shake2 - `hmac\_sum`: \[hash\_digest\] 计算 HMAC(基于哈希的消息认证码)。 【支持算法】Sha1 / Sha224 / Sha256 / Sha384 / Sha512 / Sm3(不支持 SHAKE 系列,因 SHAKE 为 XOF 非固定长度哈希)。 【参数】 - key\_in\_hex:密钥 Hex。SHA 系按 RFC 2104 支持 16\~256 字节(超块大小会先哈希);若算法列表含 Sm3,上限为 64 字节(SM3 块大小,即 32\~128 个 hex 字符)。 - plain\_in\_hex:待认证数据 Hex(1B \~ 16MB) - required\_hash\_modes:字符串数 - `key\_derivation`: \[kdf\] 执行密钥派生(KDF),从高熵秘密或口令派生对称密钥材料。 【支持算法】 - HKDF(默认):RFC 5869 extract-then-expand,底层哈希 Sha256(默认)/ Sha384 / Sha512 - Sm3Kdf:GB/T 32918 密钥派生,SM3\(Z ∥ be32\(ct\)\),ct 从 1 起,适合对 SM2 ECDH 共享秘密派生密钥 - Pbkdf2Sm3:RFC 8018 PBKDF2,PRF 为 HMAC-SM3,用于口令拉伸 【参数】(按算法适用,错配会被拒) - algorithm:HKDF / Sm3Kdf / Pbkdf2Sm3,默认 H - `block\_cipher`: \[symmetric\_cipher\] 分组密码 CBC 模式加解密。 【算法】AES128(key=16B) / AES256(key=32B) / SM4(key=16B)。 【参数】 - algorithm:算法名 - process\_type:Encrypt 或 Decrypt - input\_data\_in\_hex:明文或密文 Hex(1B\~16MB) - key\_in\_hex:密钥 Hex - iv\_in\_hex:初始向量 Hex(固定 16 字节 = 32 hex 字符) 【自动行为】加密自动 PKCS7 填充,解密自动去填充。 【输出】output\_data\_in\_hex、out - `stream\_cipher`: \[symmetric\_cipher\] AEAD 流式加解密(认证加密)。 【算法】AES256GCM(key=32B) / ChaCha20Poly1305(key=32B) / SM4GCM(key=16B)。 【参数】 - algorithm:算法名 - process\_type:Encrypt 或 Decrypt - input\_data\_in\_hex:明文或密文 Hex(1B\~16MB) - key\_in\_hex:密钥 Hex - nonce\_in\_hex:随机数 Hex(固定 12 字节 = 24 hex 字符) - associated\_data\_in\_hex:可选附加认证数据(参 - `data\_padding`: \[symmetric\_cipher\] PKCS7 填充/去填充工具。 【参数】 - padding\_action:DoPadding(填充到 16 字节对齐)或 UnPadding(去填充) - data\_in\_hex:待处理数据 Hex 【输出】output\_data\_in\_hex、output\_length。 【说明】块大小固定 16 字节(AES/SM4 块大小)。通常无需单独调用此工具,block\_cipher 内部已自动处理填充。 - `generate\_rsa`: \[rsa\] 生成 RSA 密钥对。 【参数】 - key\_size:2048 / 3072 / 4096(位) - private\_key\_password:可选,设置后私钥 PEM 用 AES-256-CBC 加密保护 【输出】public\_key\_in\_pem、private\_key\_in\_pem、key\_size。 【后续操作】公钥用于 rsa\_encryption / rsa\_verify,私钥用于 rsa\_decryption / rsa\_sign。 - `rsa\_encryption`: \[rsa\] RSA 公钥加密。 【参数】 - rsa\_public\_key\_in\_pem:PEM 格式公钥 - plain\_data\_in\_hex:明文 Hex - rsa\_padding\_mode:RSAES\_PKCS1\_V1\_5 / RSAES\_OAEP\_SHA\_1 / RSAES\_OAEP\_SHA\_224 / RSAES\_OAEP\_SHA\_256 / RSAES\_OAEP\_SHA\_384 / RSAES\_OAEP\_SHA\_512 【明文长度限制】受 key\_size 和 padding 约束:PKCS1v1.5 上限 = 模长字节 − 11;OAEP 上限 = 模长字节 − 2×哈希输出 - `rsa\_decryption`: \[rsa\] RSA 私钥解密。 【参数】 - rsa\_private\_key\_in\_pem:PEM 格式私钥 - cipher\_data\_in\_hex:密文 Hex(长度 = key\_size/8 字节) - rsa\_padding\_mode:必须与加密时一致 - password:若私钥有密码保护则传入 【输出】plain\_data\_in\_hex、plain\_length。 - `rsa\_sign`: \[rsa\] RSA 私钥签名。 【参数】 - rsa\_private\_key\_in\_pem:PEM 格式私钥 - data\_in\_hex:待签数据 Hex - rsa\_sign\_padding\_mode:RSA\_SIGN\_PKCS1\_V1\_5\_SHA\{1,224,256,384,512\} 或 RSA\_SIGN\_PSS\_SHA\{1,224,256,384,512\} - rsa\_sign\_raw\_data\_mode:True=对原文签名(内部先哈希),False=data\_in\_hex 已是摘要值 - password:若私钥有密码保护则传入 【输出】signature\_in\_hex、signat - `rsa\_verify`: \[rsa\] RSA 公钥验签。 【参数】 - rsa\_public\_key\_in\_pem:PEM 格式公钥 - data\_in\_hex:原始数据 Hex - signature\_in\_hex:签名 Hex - rsa\_sign\_padding\_mode:必须与签名时一致 - rsa\_sign\_raw\_data\_mode:必须与签名时一致 【输出】verified(bool,True=验签通过)。 - `generate\_ecc`: \[ecc\] 生成 ECC 密钥对。 【曲线】ECC\_SECP\_256R1 / ECC\_SECP\_384R1 / ECC\_SECP\_521R1 / ECC\_SECP256K1 / ECC\_ED25519(仅签名)/ ECC\_X25519(仅 ECDH)。 【参数】 - curve:曲线名 - private\_key\_password:可选,私钥 PEM 加密保护 【输出】public\_key\_in\_pem、private\_key\_in\_pem、curve。 【能力矩阵】 - SECP\* / SECP256K1 → 签名 + 验签 + ECDH - ED25519 → 仅签名/验签(EdDSA) - `ecc\_key\_exchange`: \[ecc\] ECDH + HKDF 密钥协商,双方各用私钥+对方公钥派生相同对称密钥。 【参数】 - alice\_ecc\_private\_key\_in\_pem:己方私钥 PEM - bob\_ecc\_public\_key\_in\_pem:对方公钥 PEM - hash\_algorithm:HKDF 底层哈希(Sha256/Sha384/Sha512 等,不支持 Sm3) - salt:HKDF salt Hex(可选) - additional\_info:HKDF info Hex(可选) - derived\_key\_length:派生密钥长度 16\~1024 字节 - alice\_ecc\_pri - `ecc\_key\_sign`: \[ecc\] ECC 私钥签名(SECP\* 用 ECDSA,ED25519 用 EdDSA)。 【参数】 - ecc\_private\_key\_in\_pem:PEM 私钥 - data\_in\_hex:待签数据 Hex - sign\_raw\_data\_mode:True=对原文签名(内部先哈希),False=data\_in\_hex 已是摘要 - hash\_algorithm:Sha256/Sha384/Sha512 等(EdDSA 忽略此参数) - ecc\_private\_key\_password:若私钥加密则传入 【输出】signature\_in\_hex、signature\_length、curv - `ecc\_key\_verify`: \[ecc\] ECC 公钥验签(SECP\* 用 ECDSA,ED25519 用 EdDSA)。 【参数】 - ecc\_public\_key\_in\_pem:PEM 公钥 - data\_in\_hex:原始数据 Hex - signature\_in\_hex:签名 Hex - sign\_raw\_data\_mode:必须与签名时一致 - hash\_algorithm:必须与签名时一致 【输出】verified(bool,True=验签通过)、curve\_name。 【曲线限制】X25519 不可用于验签。 - `generate\_sm2`: \[sm2\] 生成 SM2(SM2P256V1 / 国密曲线)密钥对。 【参数】 - private\_key\_password:必填,私钥 PEM 加密口令(1-64 字节;私钥只有加密 PEM 一种导出形态) 【输出】public\_key\_in\_pem、private\_key\_in\_pem、z\_in\_hex、point\_x\_in\_hex、point\_y\_in\_hex、public\_key\_in\_hex、private\_key\_in\_hex。 【后续操作】公钥用于 sm2\_encryption / sm2\_verify,私钥用于 sm2\_decryption / sm2\_sign。 - `sm2\_encryption`: \[sm2\] SM2 公钥加密。 【参数】 - sm2\_public\_key\_in\_pem:PEM 格式公钥 - plain\_data\_in\_hex:明文 Hex 【输出】cipher\_in\_hex\_with\_format 字典,同时返回四种编码格式: - C1C3C2\_ASN1:ASN.1 DER 编码(推荐,国标 GM/T 0009) - C1C2C3\_ASN1:ASN.1 DER 旧格式 - C1C3C2:原始拼接格式 - C1C2C3:原始拼接旧格式 【注意】每次加密因随机 k 不同,密文不同,这是正常行为。 - `sm2\_decryption`: \[sm2\] SM2 私钥解密。 【参数】 - sm2\_private\_key\_in\_pem:PEM 格式私钥 - cipher\_data\_in\_hex:密文 Hex - cipher\_format:必须指定 C1C3C2\_ASN1 / C1C2C3\_ASN1 / C1C3C2 / C1C2C3 - sm2\_private\_key\_password:若私钥加密则传入 【输出】plain\_data\_in\_hex、plain\_length。 【注意】cipher\_format 必须与加密时的格式对应,否则解密失败。 - `sm2\_sign`: \[sm2\] SM2 私钥签名。 【参数】 - sm2\_private\_key\_in\_pem:PEM 格式私钥 - data\_in\_hex:待签数据 Hex。 · RAW 模式(sign\_raw\_data\_mode=True):消息原文 Hex,服务端走标准 SM2 流程,内部计算 e = SM3\(ZA \|\| M\) 后签名。 · DIGEST 模式(sign\_raw\_data\_mode=False):必须传 32 字节 SM3 摘要 e 的 Hex(64 个 hex 字符),服务端不再做任何隐式 SM3,直接对 e 做裸 SM2 签名,与 KMS / ECC / RSA 的 DIGEST 模式语 - `sm2\_verify`: \[sm2\] SM2 公钥验签。 【参数】 - sm2\_public\_key\_in\_pem:PEM 格式公钥 - data\_in\_hex:待验签数据 Hex。 · RAW 模式(sign\_raw\_data\_mode=True):消息原文 Hex,服务端走标准 SM2 流程,内部计算 e = SM3\(ZA \|\| M\) 后验签。 · DIGEST 模式(sign\_raw\_data\_mode=False):必须传 32 字节 SM3 摘要 e 的 Hex(64 个 hex 字符),服务端不再做任何隐式 SM3,直接对 e 做裸 SM2 验签,与 KMS / ECC / RSA 的 DIGEST 模式语 - `sm2\_private\_key\_structure\_parse`: \[sm2\] 解析 SM2 加密私钥(ENCRYPTED PRIVATE KEY PEM)结构,返回 ASN.1 内部字段的 JSON 视图。用于调试与教学,不会解出私钥值。返回字段:structure(ASN.1 结构 JSON,含加密算法 OID、盐、迭代次数等)。 - `sm2\_public\_key\_to\_hex`: \[sm2\] 将 SM2 PEM 公钥转换为裸 Hex 编码(未压缩点,04 \|\| X \|\| Y)。返回字段:public\_key\_in\_hex(130 个 hex 字符,65 字节)。 - `zuc\_cipher`: \[symmetric\_cipher\] ZUC-128 流密码(中国商密算法)。由于 ZUC 是对称流密码,加解密为同一操作,传入明文即输出密文,反之亦然。key\_in\_hex 固定 16 字节(32 hex 字符),iv\_in\_hex 固定 16 字节(32 hex 字符),input\_data\_in\_hex 原始数据长度 1B \~ 16MB。返回字段:output\_data\_in\_hex(输出 Hex)、output\_length(字节数)。 - `ctr\_cipher`: \[symmetric\_cipher\] \[symmetric\_cipher\] CTR 计数器模式加解密(AES-256-CTR / SM4-CTR)。CTR 是把块密码转成密钥流的模式:加解密为同一操作(密钥流 XOR),无填充,密文长度与明文等长,任意长度输入(1B \~ 16MB)。algorithm 可选 AES256CTR(key 32B,cryptography 实现)或 SM4CTR(key 16B,GmSSL C 库实现,与 eet 的 sm4-ctr 同源)。iv\_in\_hex 为 16 字节初始计数器块(32 hex 字符),同 key/iv 下加解密互为逆操作。注意:CTR 不 - `xts\_cipher`: \[other\] \[symmetric\_cipher\] AES-XTS 可调窄分组模式加解密(IEEE 1619 / NIST SP 800-38E)。algorithm 可选 AES128XTS(key 32B = 数据密钥 16B + 调组密钥 16B)或 AES256XTS(key 64B = 32B + 32B)。tweak\_in\_hex 为 16 字节调整值,编码数据单元编号/扇区地址,密文与数据单元位置绑定。process\_type 可选 Encrypt / Decrypt(两个变换不同,须显式声明)。输入 16B \~ 16MB,无填充,密文与明文等长;非 16 倍数的尾部自动走密文 - `cert\_parse`: \[cert\] \[x509\_certificate\] 解析 X.509 证书或证书链(国际 / 国密 GM SM2 双路径)。输入 PEM:单张证书,或多张证书的整链(叶子在前,合计≤32KB)。顶层字段始终描述第一张(叶子)证书:证书类型(X.509 \(international\) / X.509 \(GM SM2\),按签名算法 OID 是否落在国密分支 1.2.156.10197 自动判定)、版本、序列号 hex、签名算法及 OID、颁发者/主体 DN(dict 与 RFC4514 串)、有效期(UTC ISO-8601)与当前状态(valid/expired/not\_yet\_valid,仅信 - `cert\_verify`: \[cert\] \[x509\_certificate\] 用 CA 证书验证终端实体证书(单级直接签发验证)。语义:颁发者 DN 与 CA 主体 DN 匹配 + 签名可由 CA 公钥验证;不做链构建、不做吊销检查。有效期不参与 verified 判定,仅以 time\_status 字段(valid/expired/not\_yet\_valid)信息性回显。GM 证书(签名 OID 落在 1.2.156.10197 国密分支)走 GmSSL C 的 x509\_cert\_verify\_by\_ca\_cert(SM2withSM3,与 gmssl certverify CLI 同一函数),sm2\_id 为签名 - `generate\_sm9`: \[sm9\_ibc\] \[sm9\_ibc\] 生成 SM9 标识密码主密钥(GM/T 0044,GmSSL C 实现)。key\_kind='Sign' 生成签名主密钥(验签方持主公钥),'Enc' 生成加密主密钥(加密方持主公钥),默认 Enc。输出:master\_public\_key\_in\_pem(明文主公钥,分发给所有用户)与 master\_private\_key\_in\_pem(ENCRYPTED 口令加密主私钥,KGC 自留)。private\_key\_password 必填,1-32 UTF-8 字节。SM9 私钥 PEM 只有加密形态(无明文导出)。 - `sm9\_extract\_key`: \[sm9\_ibc\] \[sm9\_ibc\] KGC 按标识提取 SM9 用户私钥(GM/T 0044)。输入:key\_kind(Sign/Enc)、master\_private\_key\_in\_pem(GenerateSm9 输出的加密主私钥)、private\_key\_password(主私钥口令,提取的用户钥也以同一口令加密)、identity(被派发方标识,如邮箱/账号,1-63 UTF-8 字节)。内置 N-1 探针:GmSSL 加密 PEM 导入无口令校验,错口令可能静默解出垃圾主密钥,因此派生后当场完成一次签名验回/加解密往返(probe\_verified=true)才输出。输出:user - `sm9\_encryption`: \[sm9\_ibc\] \[sm9\_ibc\] SM9 标识加密(GM/T 0044)。任何人持主公钥即可加密:输入 master\_public\_key\_in\_pem(key\_kind=Enc 的主公钥)、identity(接收方标识,密文与标识绑定)、plain\_data\_in\_hex(明文 hex,1-255 字节,SM9 单次加密上限受 KDF 块计数器约束)。输出:cipher\_in\_hex / cipher\_in\_base64(DER 编码密文,C1/C3/C2 结构,≤367 字节)。 - `sm9\_decryption`: \[sm9\_ibc\] \[sm9\_ibc\] SM9 标识解密(GM/T 0044)。接收方用 KGC 派发的用户钥解密:输入 user\_private\_key\_in\_pem(SM9ExtractKey key\_kind=Enc 输出)、private\_key\_password(用户钥口令,与提取时一致)、identity(接收方标识,必须与加密时一致)、cipher\_data\_in\_hex(DER 密文,≤367 字节)。输出:plain\_data\_in\_hex、plain\_length。口令错或标识不符返回 'SM9 decrypt failed'。 - `sm9\_sign`: \[sm9\_ibc\] \[sm9\_ibc\] SM9 标识签名(GM/T 0044)。签名者用 KGC 派发的用户钥签名:输入 user\_private\_key\_in\_pem(SM9ExtractKey key\_kind=Sign 输出)、private\_key\_password(用户钥口令)、data\_in\_hex(消息原文 hex,签名前内部先算 SM3 摘要,流式处理,仅支持原文模式)。输出:signature\_in\_hex / signature\_in\_base64(DER 编码签名,固定 104 字节)。 - `sm9\_verify`: \[sm9\_ibc\] \[sm9\_ibc\] SM9 标识验签(GM/T 0044)。验签方只需主公钥与签名者标识:输入 master\_public\_key\_in\_pem(key\_kind=Sign 的主公钥)、identity(签名者标识)、data\_in\_hex(消息原文 hex)、signature\_in\_hex(DER 签名,恰 104 字节 = 208 hex 字符)。verified=false 是成功响应(签名或标识不匹配),仅输入格式非法才返回错误码 'SM9 verify failed'。 - `ml\_kem\_keygen`: \[pqc\_kem\] 生成 ML-KEM 密钥对(FIPS 203,后量子密钥封装标准)。 【算法选择】ML-KEM-512(NIST Level 1)/ ML-KEM-768(Level 3,推荐)/ ML-KEM-1024(Level 5)。 【参数】 - algorithm:算法名 - seed\_in\_hex:64 字节种子 hex(128 字符),确定性生成 - use\_random\_seed:True 时忽略 seed\_in\_hex,使用 CSPRNG 【输出】public\_key\_in\_hex、public\_key\_in\_base64、secret\_key\_in\_hex、secret - `ml\_kem\_encap`: \[pqc\_kem\] 使用 ML-KEM 公钥执行密钥封装(FIPS 203)。 【算法】ML-KEM-512 / ML-KEM-768 / ML-KEM-1024。 【参数】 - algorithm:必须与 keygen 时一致 - public\_key\_in\_hex:ml\_kem\_keygen 返回的公钥 hex 【输出】ciphertext\_in\_hex、ciphertext\_in\_base64、shared\_secret\_in\_hex、shared\_secret\_in\_base64、shared\_secret\_sha256、ciphertext\_bytes、shared\_secret\_b - `ml\_kem\_decap`: \[pqc\_kem\] 使用 ML-KEM 私钥执行密钥解封装(FIPS 203)。 【算法】ML-KEM-512 / ML-KEM-768 / ML-KEM-1024。 【参数】 - algorithm:必须与 keygen/encap 一致 - secret\_key\_in\_hex:ml\_kem\_keygen 返回的私钥 hex - ciphertext\_in\_hex:ml\_kem\_encap 返回的密文 hex 【输出】shared\_secret\_in\_hex、shared\_secret\_in\_base64、shared\_secret\_sha256、shared\_secret\_bytes、al - `ml\_dsa\_keygen`: \[pqc\_signature\] 生成 ML-DSA 密钥对(FIPS 204,后量子数字签名标准)。 【算法选择】algorithm 支持 ML-DSA-44(NIST Level 2)/ ML-DSA-65(Level 3,默认)/ ML-DSA-87(Level 5)。 【安全等级参考】ML-DSA-44 ≈ AES-128 / ML-DSA-65 ≈ AES-192 / ML-DSA-87 ≈ AES-256。 【输出】public\_key\_in\_hex(SPKI DER hex)、public\_key\_in\_base64、private\_key\_in\_hex(PKCS\#8 DER he - `ml\_dsa\_sign`: \[pqc\_signature\] 使用 ML-DSA 私钥对消息签名(FIPS 204)。 【双模式】sign\_mode 支持 RAW(默认)和 EXTERNAL\_MU 两种模式。 - RAW 模式:直接签名原始消息(liboqs,最大 256 字节) - EXTERNAL\_MU 模式:先计算 mu = SHAKE-256\(tr\|\|M', 64\),再通过 OpenSSL 3.5+ mu 模式签名(最大 2048 字节),与 AWS KMS ML-DSA EXTERNAL\_MU 语义等价 【消息长度策略】 - RAW:最大 256 字节,空消息合法 - EXTERNAL\_MU:最大 2048 字节 - `ml\_dsa\_verify`: \[pqc\_signature\] 使用 ML-DSA 公钥验证签名(FIPS 204)。 【双模式】sign\_mode 支持 RAW(默认)和 EXTERNAL\_MU 两种模式,必须与签名时使用的模式一致。 - RAW 模式:直接验证原始消息签名(liboqs,最大 256 字节,空消息合法) - EXTERNAL\_MU 模式:先计算 mu,再通过 OpenSSL 3.5+ mu 模式验签,可验证 AWS KMS EXTERNAL\_MU 签名(最大 2048 字节,空消息合法) 【算法】algorithm 支持 ML-DSA-44 / ML-DSA-65(默认)/ ML-DSA-87。 【参数】 - `ml\_dsa\_compute\_mu`: \[pqc\_signature\] 独立计算 ML-DSA 的 64 字节 mu 值(FIPS 204 Section 6.2)。 【用途】用于验证或调试 EXTERNAL\_MU 模式的中间值,或与 AWS KMS EXTERNAL\_MU 签名流程对接。 【计算公式】 - tr = SHAKE-256\(raw\_pk, 64\) - M' = 0x00 \|\| len\(ctx\) \|\| ctx \|\| message - mu = SHAKE-256\(tr \|\| M', 64\) 【参数】 - public\_key\_spki\_in\_hex:公钥 hex(SPKI DER 或裸公钥均可),并校验 OID/长度与 - `hybrid\_kex`: \[pqc\_kem\] 执行 X25519 + ML-KEM-768 混合密钥交换全流程演示。 【设计灵感】参考 IETF X-Wing 草案(draft-connolly-cfrg-xwing-kem)的思路,本工具实现的是通用拼接组合器(ecdh\_ss \|\| ml\_kem\_ss → HKDF-SHA256),并非 X-Wing 规范本身的组合器。 【参数】所有密钥参数均可选: - alice\_x25519\_private\_key\_pem / bob\_x25519\_private\_key\_pem:X25519 PEM 私钥 - alice\_ml\_kem\_public\_key\_base64 / b - `cbor\_encode`: \[structured\_message\] 把 JSON 载荷编码为 CBOR 字节流(RFC 8949)。 【算法】CBOR 规范编码(RFC 8949 §4.2.1)或不定长教学编码(§3.2.2)。 【参数】 - json\_payload:待编码的 JSON 文本(≤65536 字符),支持两类教学标记: \{"$bytes": "\"\} 渲染为 byte string(major type 2); \{"$tag": \, "value": …\} 渲染为 tagged value(major type 6) - canonical:True=规范形式(定长最短,map 键按长度+ - `cbor\_decode`: \[structured\_message\] 把 CBOR 字节流解码为 JSON,并给出逐字段结构拆解树(RFC 8949)。 【算法】CBOR 解码,定长(§3.2.1)与不定长(§3.2.2)均容忍; 要求单数据项且逐字节闭合(尾随字节即拒绝)。 【参数】 - cbor\_in\_hex:CBOR 字节的十六进制字符串(1B\~128KB) 【输出】decoded\_json(bytes→\{"hex":…\}、tag→\{"tag","value"\}、 语义 tag→date\_time/uuid 等标注形式)、decoded\_type、decoded\_length、 structure\_tree(off - `cose\_sign1\_sign`: \[cose\_sign1\] 构造并签名 COSE\_Sign1 消息(RFC 9052 §4.2,算法 RFC 9053)。 【算法】ES256\(-7, P-256+SHA-256\) / ES384\(-35, P-384+SHA-384\) / ES512\(-36, P-521+SHA-512\) / EdDSA\(-8, Ed25519\)。ES 系签名为裸 r\|\|s (坐标左补零到曲线宽度,ES512 坐标 66 字节、r\|\|s 共 132 字节)。 【参数】 - algorithm:ES256 / ES384 / ES512 / EdDSA - ecc\_private\_key\_in\_pem:EC 或 - `cose\_sign1\_verify`: \[cose\_sign1\] 验证 COSE\_Sign1 签名(RFC 9052 §4.4 Sig\_structure 重构验签)。 【算法】按 protected 头 alg 声明分派:-7/-35/-36(ES,裸 r\|\|s → DER) 与 -8(Ed25519)。 【参数】 - cose\_sign1\_in\_hex:COSE\_Sign1 消息(≤128KB,hex) - ecc\_public\_key\_in\_pem:验签公钥 PEM。留空时从 payload 的 certificate 字段提取公钥(复刻 KMS 验 Nitro attestation 文档方式) - external\_aad - `cose\_sign1\_parse`: \[cose\_sign1\] 纯拆解 COSE\_Sign1 消息,不验签(RFC 9052 §4.2)。 【算法】CBOR 四元素数组 \[protected, unprotected, payload, signature\] 逐字段拆解;protected 头解码出 alg;payload 尝试嵌套 CBOR 解码。 【参数】 - cose\_sign1\_in\_hex:COSE\_Sign1 消息(≤128KB,hex) 【输出】protected\_in\_hex、protected\_header、unprotected\_header、 payload\_in\_hex、payload\_json、paylo - `cms\_enveloped\_encrypt`: \[cms\_enveloped\] 构造 CMS EnvelopedData 信封(RFC 5652 §6,KeyTransRecipientInfo)。 【算法】密钥封装 RSAES-OAEP(RFC 8017 / RFC 3560 参数:hashFunc + MGF1 同哈希 + 空 pSource)或 RSAES-PKCS1-v1\_5;内容加密 AES-128/256-CBC (RFC 3565,PKCS\#7 填充)或 AES-128/256-GCM(RFC 5084 只为 authEnvelopedData 定义 GCM:RFC 5083 形态,version 恒 0、tag 独立 放 m - `cms\_enveloped\_decrypt`: \[cms\_enveloped\] 解密 CMS EnvelopedData(RFC 5652 §6)/ authEnvelopedData(RFC 5083), BER/DER 输入均容忍。 【算法】按消息声明还原算法:rsaesOaep 参数(hashFunc/MGF1/pSource, RFC 3560)重建 OAEP padding,内容算法按 OID 分派(CBC 去 PKCS\#7 填充 / GCM 取独立 mac 字段验 AEAD,长度必须等于声明的 aes-ICVlen, authAttrs 存在时以 universal SET OF DER 作 AAD——RFC 5083 §3; - `cms\_enveloped\_parse`: \[cms\_enveloped\] 纯拆解 CMS EnvelopedData(RFC 5652 §6)/ authEnvelopedData(RFC 5083), 不解密。 【算法】自写 ASN.1 TLV walker(X.690 BER 容忍)出结构树 + asn1crypto 出结构化字段,两层对照。 【参数】 - cms\_in\_hex:信封 DER/BER 的十六进制(≤16MB) 【输出】content\_type\_oid(envelopedData = 1.2.840.113549.1.7.3 / authEnvelopedData = 1.2.840.113549.1.9.16.1. - `cms\_signed\_sign`: \[cms\_signed\] 构造 CMS SignedData 签名消息(RFC 5652 §5)。 【算法】RSA PKCS\#1 v1.5 或 ECDSA × SHA224/256/384/512; authenticatedAttributes 自动携带 contentType + messageDigest + signingTime + SMIMECapabilities,签名按 §5.4 计算在 signedAttrs 的 EXPLICIT SET OF(0x31)DER 重编码上(untag 规则)。 【参数】 - signer\_certificate\_in\_pem:签名者证书 PE - `cms\_signed\_verify`: \[cms\_signed\] 验签 CMS SignedData(RFC 5652 §5),BER/DER 输入均容忍。 【算法】按消息声明还原 digestAlgorithm / signatureAlgorithm: RSA PKCS\#1 v1.5、ECDSA、Ed25519、SHA1 消息均可验;rsassa\_pss 按 RFC 8017 A.2.3 参数(hashFunc / MGF1 / saltLength)重建 padding;signedAttrs 验签体是 EXPLICIT SET OF DER 重编码(§5.4), BER 消息先规范形重编码再验。 【参数】 - cms\_in\_ - `asn1\_parse`: \[structured\_message\] 解剖任意 ASN.1/BER 字节的 TLV 结构,给出逐节点拆解树与 DER 判定(X.690)。 【算法】ASN.1 显微镜:定长(§8.1.3.3-5)/不定长 BER(§8.1.3.6,0x80+EOC)/ 分段八位串(§8.7)/高 tag 号(§8.1.2.4)均容忍;要求单根逐字节闭合。 【参数】 - asn1\_in\_hex:ASN.1/BER 字节的十六进制字符串(1B\~128KB) 【输出】der\_conformant、ber\_features(walker 检出的 BER 特征清单)、 node\_count、total\_length - `der\_encode`: \[structured\_message\] 把 JSON 节点 DSL 编码为 DER 字节(X.690)。 【算法】DER 规范编码(定长最短 + SET OF 排序);或教学 BER 不定长 (构造容器 0x80 + EOC,复刻 AWS KMS 回包形态)。 【参数】 - json\_payload:节点 DSL(≤65536 字符),一节点一主键: \{"integer": n\}/\{"enumerated": n\}/\{"boolean": true\}/\{"null": true\}; \{"oid": "1.2.840…"\}(首弧 0/1 时次弧≤39); \{"octet\_string": "\< Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html