diff --git a/.gitignore b/.gitignore index ad730ea..95d562e 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,7 @@ venv/ # Mac .DS_Store .idea/ + +# 黄金向量按钉版拉取生成(conftest),不落库 +tests/fixtures/crypto-vectors.json +tests/fixtures/interop-cases.json diff --git a/tests/conftest.py b/tests/conftest.py index 813e2e1..20bf075 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,12 +1,45 @@ # -*- coding: utf-8 -*- -"""共享 fixture:黄金向量(tests/fixtures/crypto-vectors.json,禁手改)。""" +"""共享 fixture:黄金向量按 ref+sha256 从 wop-specs 真源拉取(对齐 java-sdk 模式)。 + +副本不落库:collect 阶段拉取并校验,mismatch 即失败(fail-closed)。 +升级流程见 CONTRIBUTING:先合 wop-specs PR,再同步 WOP_SPECS_REF 与下方 sha256。 +""" +import hashlib import json import os +import urllib.request import pytest HERE = os.path.dirname(os.path.abspath(__file__)) +WOP_SPECS_REF = "a1f7feb5b4af5c9052149e2adfd2063caa102677" +WOP_SPECS_SHA256 = { + "crypto/crypto-vectors.json": "c7dd65740a1da9a5cfb804bca0c8b1bd7d4ab967adeb075297677a4bef148736", + "interop/v1/interop-cases.json": "c920ca1a93ccb3899a659f59fed6ec4652cf9e1b3b58bbdac23c45ac3ed2353e", +} + + +def _fetch_pinned_specs(): + fixtures_dir = os.path.join(HERE, "fixtures") + os.makedirs(fixtures_dir, exist_ok=True) # 副本出库后目录可能不存在 + + for src, expected in WOP_SPECS_SHA256.items(): + url = f"https://raw.githubusercontent.com/wop-platform/wop-specs/{WOP_SPECS_REF}/{src}" + with urllib.request.urlopen(url, timeout=30) as resp: + data = resp.read() + digest = hashlib.sha256(data).hexdigest() + if digest != expected: + raise RuntimeError( + f"wop-specs {src} sha256 mismatch:期望 {expected},实得 {digest};" + "向量升级须先合 wop-specs PR 再同步钉版" + ) + with open(os.path.join(HERE, "fixtures", os.path.basename(src)), "wb") as f: + f.write(data) + + +_fetch_pinned_specs() + _VECTORS_PATH = os.path.join(HERE, "fixtures", "crypto-vectors.json") with open(_VECTORS_PATH, "r", encoding="utf-8") as _f: VECTORS = json.load(_f) diff --git a/tests/fixtures/crypto-vectors.json b/tests/fixtures/crypto-vectors.json deleted file mode 100644 index 539216d..0000000 --- a/tests/fixtures/crypto-vectors.json +++ /dev/null @@ -1,258 +0,0 @@ -{ - "_meta": { - "spec": "crypto/crypto-strategy-spec.md v0.4-draft(附录 B.2 / D9)", - "generated": "2026-08-28", - "testOnly": true, - "note": "全部密钥/k/IV 为 TEST-ONLY;固定 IV 仅为字节级断言,生产违反不变式 I4", - "binaryEncoding": "base64url-nopadding(线上编码)/ base64-standard(密钥材料)", - "hexEncoding": "lowercase" - }, - "inputs": { - "message": "WOP 跨语言测试向量 2026-08-28 — The quick brown fox jumps over the lazy dog.", - "sm2UserId": "1234567812345678", - "dekPayloadRsa": "AES-256-GCM$AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8$EBESExQVFhcYGRob", - "dekPayloadSm2": "SM4-GCM$ICEiIyQlJicoKSorLC0uLw$MDEyMzQ1Njc4OTo7", - "aesKeyB64u": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8", - "aesIvB64u": "EBESExQVFhcYGRob", - "sm4KeyB64u": "ICEiIyQlJicoKSorLC0uLw", - "sm4IvB64u": "MDEyMzQ1Njc4OTo7", - "sm2FixedKB64u": "WSduJ9UGhhsfpb4hNL5rYrHI-4ybHVsffnwsDh4aKw" - }, - "keys": { - "rsa2048": { - "publicSpkiB64": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwE6teOkvLIsVXkcsZF9luU9bqB85gT+xhcTb2aT6FEKUbOhfVf68e97jXNlGzfkCyc6GYm8dd7jirPCaYHyMcYbvEcfMux+DWREDoZ6PpfJin219RjfQsjXKJfAybSG9pOIHUgYGUh5ZDv/SaI2ZR7/zIRcp7ouzwJUhhQbqIPjv2GNxIfQ0zb1baqgLOiV3mrSQa4e+3lIv1LmDCNOvnrPvoc7FqsCahQCwpXvcWR17hRgm0cVW5JhpKXDsCviesgG4f1Dq1moyQtdxAekUU1EnsZ0Lpj2WBwidM3jfNIdiYo+uYJ/RVPY0s75EguETzvda9PicDfFaWwcmlPhXKQIDAQAB", - "privatePkcs8B64": "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDATq146S8sixVeRyxkX2W5T1uoHzmBP7GFxNvZpPoUQpRs6F9V/rx73uNc2UbN+QLJzoZibx13uOKs8JpgfIxxhu8Rx8y7H4NZEQOhno+l8mKfbX1GN9CyNcol8DJtIb2k4gdSBgZSHlkO/9JojZlHv/MhFynui7PAlSGFBuog+O/YY3Eh9DTNvVtqqAs6JXeatJBrh77eUi/UuYMI06+es++hzsWqwJqFALCle9xZHXuFGCbRxVbkmGkpcOwK+J6yAbh/UOrWajJC13EB6RRTUSexnQumPZYHCJ0zeN80h2Jij65gn9FU9jSzvkSC4RPO91r0+JwN8VpbByaU+FcpAgMBAAECggEAAnX3Rw7v0zl35WgSf7nPSMzkyrzUjOx6WnB7kjhH2XLFKLQcBTMQaSLf5LAklW3obNnrUw7iMQYhA27EQPQTDYBZJpB4lJPph74dnmezpZ9Zhvn9EoUUEvW4f54IXShjf3zDdHeehNY91EDuibc3JQmGJFAiMZrgytf1sPi2zgNvy4JylHKEHj1jCYkW9ORqyHTMax3NfBf3q+NDbfuOmGYdUNDPQVypWwoa3NYbc6NeugxN4vPtYWxjFtBNDIt92rcM2Knmx1nwBcpxsdBYVJA1d5pQWEiKaQmBmdx0rl3YSFVjAG4FhvB/i84A/m4Oe6GMWR5J27rFUB+gmATFoQKBgQDfz7gAou21L9kIFSir1t6sYe4NL1kwHyB2rzuRLSFJo4mllZtH+jnq9Tjzp+vUnp4llnVQwMEYynAuXIko7c+OodxRZpRkJ51Xb96RYT44Y2amPri2mxDPqXOARwx0dS0o8JBc09vguaRmGDcs4GW5mCgdw8ncVDdHaFLBezbnIQKBgQDb9wsJC2qatPnM0EnW+sNTQSUultCyavTlL7z18TjN3B35oe6Odvi1/LHASjsKl3wiLVudoQrbR/qqY3iTC0pKa19E6xm5i9HkVPxP7Fw105dQBAjJ7d3YAkIndRZIOxcFdU205GgRvU9yGNxInHnGwO5ORipxucOGLa0xbb5XCQKBgE0g719AxrxvDdMMP6TgeoJbiUb/7zN3Np/QCa4hKFyRQClRIl8uq3D+Ky9Eyi/Ord90N1+p3aGmefxwJVB2i9WykBN5T2Aoir+MLN5a7a9PChv2d39udt+pnMUzNuaXTwXRyV5EIH0UXMRWSgVsG4JXHlQLmfAVEavJFuPYi3YhAoGAXQH9cYqZPecuBLNBtZv8gTR3g1aT0g01lb70uE2SBkF/jzEwTJ7zlQfPJQ5+HoFlJJJnPaR9kbDCxc8fiZVpiUQTWXHLQ9BiJJjmwuifKMdaIKREDxX8Cr0RudthW5NYrZ8nB0jY1D9m20i1xCIdv7OOUByND99LVG314IOVyvkCgYBK9LLwHe48BYv+z2bFlrBy1Mf6ouZ00tZLD9bW6gXwTavehD8YMecgRz6HQSOugn4S457kwxWkkBk5OK0Lx5rFy+m/s3UxUOy61+ZuBbq1B+okYGpYoleExC3MO3oYohRvTa4eC6oxTEw+42++/VZqeIBOMbAToQPq+genQakCMQ==" - }, - "rsa3072": { - "publicSpkiB64": "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAtXJuxrDjAOOFB7P2Mo0P9+Dp/gYZauIHNKxDazym3NDVe510+F+0XNK3jfL0JY5MqCCTpEybRl0hJrV1sPWNbReug9N8FSZ8N9qyMSC/FTlXA8X9yMDfwYMWsCudh6KkHVeFUaKj8uqeEVpuOLuV061jNzbOkPw3Os8xH1c5tnLTYTFyPY5teX+YkX+6cz7Bspmtv2eY1+6/SmoYLmwTxwuN07XKGlxMlQ8uDaLwHnoy0svHT+yYp7roa+nGZ0HxLjk2k/XNNc0ipWNDhjpxcpAK3YcyNViyCOSrgu3KEiGwpNx5UpkrARIo7V6fqbi2Qg+rX+AxtV6ccbfMXe2J2HBqn+8R0MfuNRvEulT0DZetL40huJQ0UGbDw+K1oK2BSAvz2gWe1Tkm0kfcYFYm9pjJV6MzUnTeRPxuZfHHzG/JZqO/5krkt3ZlQmPb3M8xu8peUMr9KFMIJ1fJEH8cp/+NkrZIDtdAv5DAofu2TAzekFxDQ3HcwIgkLWTQcGkjAgMBAAE=", - "privatePkcs8B64": "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" - }, - "rsa4096": { - "publicSpkiB64": "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEArKDBTJf3NwXgD3LCGsU65/zgfjT9fnZgpGlgXvON+hVJTPPdZiPuqchnkp1nZPvxa5BTVhHnsTwuTG/AAybGPklOZSmvjw6p2o6jqZe1DAB3zgTLBBCLpsZmnvEeuDBwgoR4ETbC7bDSpAPut8qJP6Vp4Os6bfe7yGzntYZmQypK4MM3NEJEgXMzZlCZ+Oj/XpDa6HZ2PqcOjC0DwWIV13+jUs9jsqVG9yVrSxZgodm+tqRB+7/R1U5z+yIQSyURUmAFYBx6L1ag8qQE96cD27tA9hDeI+Hw1XbXQTTgIBGi/L9h2bbMfVnvBUGSwfdLMf4DOEE6G2bSiSX16H8exkVqavX2A4SXdd29TYMbO4UMkcRPGy/kP6HpUhD//9+jC08yVhueg1SwSA8J2QN4GAD0J5S57eRglKFueoFxyRsvLLF+f917MqXUmbZNFrSdWINdHKgpI8ft3+Xb4knAIXi68mtfatAeGkG4GUwJaym4BCu4hlXY4r5ec5/2YZf0ddV4ms44qwakdZ637HmdshZG0E2GsU9rH868ssEjzqLEck7m6MlKgVdllwXr0VhRPtJFMGCFc5PvVSKpX2DVhPCTAgYIVqrjtewdzGMYEQz8e8gpE8THp/sAmFhm1gXQiyhD0MvPuIDaSys7yS3OOJ7mUVeMXzuQw88jQ8BcR7MCAwEAAQ==", - "privatePkcs8B64": "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" - }, - "sm2": { - "publicPointB64": "BKYcUacrp3w6tPeXpkEb2yktpbGgfCOsob/F5yo9wq9+LvzIx2Isu+CGnf6Z89tTJpZxm5GX7VUDr8KdsxHzYKg=", - "privateDB64": "RyJ/wB0tfgGGSgug0lKZoOwJlj2001kD5wbYmnmPFr0=", - "format": "公钥 = 未压缩点 04||X||Y(65B,D12);d = 32B 大端标量" - } - }, - "digest": [ - { - "id": "digest-sha256", - "algorithm": "SHA-256", - "input": "WOP 跨语言测试向量 2026-08-28 — The quick brown fox jumps over the lazy dog.", - "expectedHex": "4cf7ab3bcefc20c8d6116d4ce9a3fdfb0d60ba5391472d7bffcf159da9e033ca", - "expectedHeader": "sha-256 4cf7ab3bcefc20c8d6116d4ce9a3fdfb0d60ba5391472d7bffcf159da9e033ca" - }, - { - "id": "digest-sm3", - "algorithm": "SM3", - "input": "WOP 跨语言测试向量 2026-08-28 — The quick brown fox jumps over the lazy dog.", - "expectedHex": "23592263765cf506d07cc8614c09067e6de38e64c53e5b672c022532d01737cf", - "expectedHeader": "sm3 23592263765cf506d07cc8614c09067e6de38e64c53e5b672c022532d01737cf" - } - ], - "messageEncrypt": [ - { - "id": "aesgcm-encrypt", - "algorithm": "AES-256-GCM", - "keyB64u": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8", - "ivB64u": "EBESExQVFhcYGRob", - "plaintextB64u": "V09QIOi3qOivreiogOa1i-ivleWQkemHjyAyMDI2LTA4LTI4IOKAlCBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLg", - "cipherTagB64u": "KrHINqF-kltl2OC1j5_c2D__2-uLU742aNnQV2xieetoxGU71UTue15i-jSq6WZycNdnEZHkLpyceFVJ0_3RBnWLH0w_23kUGehQ3rSgkscd3f3KSCO_iP-Xh7vOUfauwj3kNu8", - "format": "ciphertext||tag 尾拼(F4),tag 128bit" - }, - { - "id": "sm4gcm-encrypt", - "algorithm": "SM4-GCM", - "keyB64u": "ICEiIyQlJicoKSorLC0uLw", - "ivB64u": "MDEyMzQ1Njc4OTo7", - "plaintextB64u": "V09QIOi3qOivreiogOa1i-ivleWQkemHjyAyMDI2LTA4LTI4IOKAlCBUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLg", - "cipherTagB64u": "wMoKc3V_CJQRGlUASCV4mBki5qb7OVExH7Bgu_j1E43I-Z_SWAKRTPq3q9yDna8wNeI3pPBn4Jt4vMVEuPyWfJBP-qsYObQw1LcbbQYggRXRvCN5vFdoY-NK3j8bF9MkO72Z4eo", - "format": "ciphertext||tag 尾拼(F4),tag 128bit" - } - ], - "signature": [ - { - "id": "rsa2048-sign", - "key": "rsa2048", - "message": "WOP 跨语言测试向量 2026-08-28 — The quick brown fox jumps over the lazy dog.", - "expectedSigB64u": "XvDm9xvadfHeuGOYFJjOx3-Cgen1wYZzWa9cOWIVvrSJdgTQ30w1P-yQzb3t2URU-tUaMHKx5W0Q_dWX2WK6KZxITEKw0quVrHyVT6VfcaXpZF03RKa7at8CWndy-ftOTvfY3KS79u4YNDoyJQ8nt6y-f9-uOVmQ0c4hy-yNI_mBPbBk3x06UOB4RNGKluFAxZiJyv1aIBNPXZL6Xe3YBtzpbVZrm3j1c-umtRxeIQ2lE6vPx3fRu-cjF2nwyrbmdLZmRfxvR7lNxcBCw2gf_RWi4YDyeLqMO1Y8k1yG8am39pjXkz3Ge9Q5WHPcD9KvEMOcl4heQR0JMgz3jd4mRw", - "sigLenBytes": 256, - "b64uLen": 342 - }, - { - "id": "rsa3072-sign", - "key": "rsa3072", - "message": "WOP 跨语言测试向量 2026-08-28 — The quick brown fox jumps over the lazy dog.", - "expectedSigB64u": "ESw5IVyqo3e2gyDJ5nPlBXuda0zm12x-estvnYC7noCcG4Xy4v-obI_U2h44NcDCN-LQBZDpWiSG_mZZfTrpLAkqwpoxuH3aLTPB8WqhgG-O3544ggMaEeSwQv-GOmJJ6mvnbY6_IOfyM85gRFdFo2cU3R1Nl-k-c8yzbBI39xRPJEzAwcEr7EVqMKuZWeaVXQEHSIKLOmRg21v2YT54K3VYpNOsKZtwLTKuBcM5HaJ8Q2k0kZez2cyGeKYW5CeRs2lXgZfjksQ6MmmjmbLwWhMeLD0dCek47BGNpfj2W2fIwFyROf-u66cW8GzroKYuTC6k3rAmfa1r3yHRet0iCzbwNhLn67BI1TLZmhTGYkUnE2UpMTKU5eLzkntC_sIDtmg0m9b90igvIMkB6ombA9HicqZJaqsV6vaj1JhISkc0lNPnwfgy4z16JzVyQjEEzT5sm0B1bCH_sp--XIVpy1JZ5FKMItSfRhxfkAzngO6vaO8b5gvYCkSaSj7yfaxg", - "sigLenBytes": 384, - "b64uLen": 512 - }, - { - "id": "rsa4096-sign", - "key": "rsa4096", - "message": "WOP 跨语言测试向量 2026-08-28 — The quick brown fox jumps over the lazy dog.", - "expectedSigB64u": "J4b0ZA0dEXUYFSNOrzJ9ECh3d6osSisku4mb2wqNKT6550be8xfyNFd3YT1mua9hc6fsIt1ShyRypzfog8Cl-It7hxDuY9pU7bZC_r3LLHzMl5G_K21HJK1acSCP-A_vDMIbalIc0PbQFNea_REFqEUsxFw4Oj05LHba57Q1xqe2kSkfkhD7RnNBMCo1X4tOKoPkiw_cDiBxBWQ7kW6BcCngQULWHqbcg7u34ednNluEO8FrstxrhroPWo65XAYdW-W8BDevdX0U8B4p0PxMegV4HRytHJhmJMr3LCbffhM-qZfQo6eh4nZ-bhQQSdq3AxzxBzVeb9UbAU9KSXodreGGuexW_3DOH2lZU3k2hX7Lpac9U_1jTnwzzBxVLyfFoUZBzH94EDdAKUCSJ3RgIRleg_XpJgziH2vFSNyNV9p1RRCAE_uDLvEL_z9o49xqTD86w0pzNsd0MuO6m8EeqqVjWd9r0A9tcPeqJdTmduKopdcEhlKdqJUILhvxISFcyjJXezLYh2ZcYCgqUDraL_bSfK6VuYXSaMDMkn7b5SBbw5Rvw08ElysqS6W9m-pgNgrPq9C4vlQi01KhmBl1IuAy8nzZh45OsDGGyU_ZN7XyaOT9ACbiaGPNyP19zwkbfqlZfZx7_8qv2hIUpRDBO2bVjTL3RkrutWoflx5nGg8", - "sigLenBytes": 512, - "b64uLen": 683 - }, - { - "id": "sm2-sign-fixedk", - "key": "sm2", - "message": "WOP 跨语言测试向量 2026-08-28 — The quick brown fox jumps over the lazy dog.", - "expectedSigB64u": "Si7Uw5eZm0Kii3BuIRLXwMGGOxkwFria8ypcVYXnReV376EVgV0TOkQfm21NUnJZNGM-fV0d0fMF23B0Bm3TFw", - "sigLenBytes": 64, - "b64uLen": 86, - "format": "裸 r||s 各 32B 大端,线上禁 DER(D9)" - } - ], - "keyEncrypt": [ - { - "id": "oaep2048-unwrap", - "key": "rsa2048", - "cipherB64u": "XZx1rVmmuxWpkRyg_bDEsWcQvHFGgxW1DyolC4KZM12cOAj6jLUSyUcofFcoLlV8qDm72AdiR2nqzIhdklw4K-eGH5jmqbSbZaHaFZgbm540ADt1kHP5FascR9_3TXZjVabxv6yAk5z7TcukjJIAJlwtGG1Vvf1M4tv1c3zJcGp0Gkuu4BpHgB7TBeao3c7y5bTEj-yD7V1XRUQwc_QF0Iyy-AAjB99UB_i00TbjuJQUT1qdiskL7NPylo4oRBfbsRJUOLBuZoQ8CBW-nVlyFPatqt_box9IX5wrPQsUHOm90Z-EPIGK-J3XG09Q8v5kaTGKpOqyvMD4wP5kwXo0rQ", - "expectedPlaintext": "AES-256-GCM$AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8$EBESExQVFhcYGRob", - "params": "OAEP(SHA-256, MGF1-SHA-256, empty label) — 显式参数化(F2)", - "expect": "unwrap-equals-plaintext" - }, - { - "id": "oaep3072-unwrap", - "key": "rsa3072", - "cipherB64u": "jc29n4KH_gmV_3FmM31SpxTXUXsh8Ryi1_7YPT8hm0urytrCnTaKBtcJqMU2KWnXIBkviFJC0F22IM0J8QveqiYsaUrfAo0cCVC13J5EBhxxoM26HYNedUl1Pl95IYirADAKurx5hNxCVWX7uaEj8ZEXo13n6y9NYN3IQi1Xy-iZM3fjHX9CjufeY8IFYPgqZ2MXnSPEN88UkRehGzMVfNYcbuXdBSSfVUadO0o41_ESduouQOzfgXhSQS8R1e3koB0SNvy0zhDOxeSo_Ld6F2FmePJQwquTUF_c0M5OMdZxb6KoH0RTtSX8iP8Auq_mHZ0MlPD1OomE97LHusA5XktGGouj7o20QHgPv8RnGwv1cpyztp6x8b8SnIBccvFcIaczZy6_qbdxjGbTEUPR31T4ucxRMicm0tp4Kp6rgq4YGzPT9p9l9fvFtLRhm9sHWZQUwH-eC1wdWjtrxi2JTmVaTIS5ubPhJ2ucBi7Jaa8BkgEPmbjl1-oPSBV46FHt", - "expectedPlaintext": "AES-256-GCM$AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8$EBESExQVFhcYGRob", - "params": "OAEP(SHA-256, MGF1-SHA-256, empty label) — 显式参数化(F2)", - "expect": "unwrap-equals-plaintext" - }, - { - "id": "oaep4096-unwrap", - "key": "rsa4096", - "cipherB64u": "bdF70bI0J6PWIYoFZMmUaqwU-hCXNP6cAhz8WsoTGFxnutdFOIbGeK_BWtOeQRP-GKgj0jCONU1nrH4qSbenq3OVx3aTlm96R89E8SEY-2iE4_UI1rKEcQmDRXVluCcRFxc2VLgkfN14f0jF8LmFv7m6lxCyGYE4lPQhTQV5cr-h_VBk8FCmDAg5VraTi4831w98SvH8A1_BF8NCugA3k_LS9PwlJlqfvpqC52KwkUigrnI3jD9jfqJz_5zhpbp2Gfg8mjuVT951nQ_3zv405P5UOKO6C5GQE-EWEpZkUQN4LT5eJXkkhjqpnXuFc0Nne6E9NtEMOR_hWhCO3956Avl5TeksdjIFRlUsyKHxS30GhHkhyeS3shTr6Q6CKDxlXaplVuoh32E7cyJB3BZ71ozYtfzKFnP2chb8OK_YfdD_A451dEdgD5wKjsV6OyLj1xjTQJI4FWrq3IbMVG_yEWA6kIGGUn2SnzQY0I8Lx_lgv3VkM5g559-v3y3tRBv16yr1ltvWVAqRM2gX6V7_V1dCsmFhMe3a_R0xCP1ftmpkcSe1RFfSKwXxtFfSFBlMDHrc-Vcar2VD5WrbQeudNYNrIlZKNLW7hT-3Cnq324vVb01kVE_nEWCaCyDv3BvAFyivX6qKHLYFk2-FJvpGYHiR6Dc7k9PMGkrUDTKRsoQ", - "expectedPlaintext": "AES-256-GCM$AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8$EBESExQVFhcYGRob", - "params": "OAEP(SHA-256, MGF1-SHA-256, empty label) — 显式参数化(F2)", - "expect": "unwrap-equals-plaintext" - }, - { - "id": "oaep3072-mgf1sha1-trap", - "key": "rsa3072", - "cipherB64u": "Y9WE9bvvUkCCcA7qREvKpyBEcpxO5fC78IR_YQyBJIu1wX-OaNPz6oxWBEh2-vQmp_csWIR5ZVBuOK4Jm4c7jmFTZY787EOIGwdn8iTvY2XvBrnz0yzWWhDvm1lvK1INSXa2HD3D2UsRcZyqniZ3fHAD8jv2127l85-fGZuk2a3QjsmTltKcNePDgwVGDTEVsH1jpSDrt6ApVISjVXjOlrJoc9740Jac44SMkFeMgDNADQvUNZSpYj6TLeDbwqwxjQ287aQZnYuuQ5hhjY-qiOWf1X8j7w99wwwp8_Luuv5A0sOxrzlL_hIu0yK6QqwSlee8oiMHTI0J-P7FgQ-VGyaHvd7Q8nygsiMokXkhmUf2a9n-vwWc_3qGL3ny3yCjK996AwkGLieMDZ9R1TkckdL8Cp9usGHeWFrzaECwsmDpqiBdNblPU7wKW9SZiwVEeJW_i7gPvdnPzOlWccETJPW0JW6mFWOz2rYYqK-EF-qa36qyAGGP4zvyasZRvqxD", - "paramsUsed": "OAEP(SHA-256, MGF1-SHA-1, empty label)", - "expect": "reject", - "note": "F2 钉子:以错误 MGF1 包装的密文,用规格参数(双 SHA-256)解包必须失败" - }, - { - "id": "oaep3072-wrap-roundtrip", - "key": "rsa3072", - "plaintext": "AES-256-GCM$AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8$EBESExQVFhcYGRob", - "expect": "roundtrip", - "note": "OAEP 加密随机化无法字节钉;产出密文经规格参数解包须等于明文" - }, - { - "id": "sm2-encrypt-fixedk", - "key": "sm2", - "plaintext": "SM4-GCM$ICEiIyQlJicoKSorLC0uLw$MDEyMzQ1Njc4OTo7", - "cipherB64u": "BHg6d-mtZjmeNpGrClMQUsW5CH_89nI-czPleXZbKuDxEbEauHrr7V8Xy4gvzfU7I48lYrL25lHyne9JrkMW5t4FrhxANJVd2vf9vp2nqTSnzUXqLf2Bz6dVfX3rtkOeLBubmIcoIsiwo3Fn7rrtSbWuN86uwvgCbn6Zm2647KdeZd2arZaClU6IURtm97hp", - "expect": "decrypt-equals-plaintext", - "format": "C1C3C2 裸拼接,C1 = 未压缩点 65B(D9)" - }, - { - "id": "sm2-encrypt-c1c2c3-mismatch", - "key": "sm2", - "cipherB64u": "BHg6d-mtZjmeNpGrClMQUsW5CH_89nI-czPleXZbKuDxEbEauHrr7V8Xy4gvzfU7I48lYrL25lHyne9JrkMW5t4bm5iHKCLIsKNxZ-667Um1rjfOrsL4Am5-mZtuuOynXmXdmq2WgpVOiFEbZve4aQWuHEA0lV3a9_2-naepNKfNReot_YHPp1V9feu2Q54s", - "expect": "reject", - "note": "旧国标 C1C2C3 顺序密文,按 C1C3C2 解密必须失败 — 钉死顺序" - } - ], - "dekPayload": [ - { - "id": "dek-rsa", - "alg": "AES-256-GCM", - "keyB64u": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8", - "ivB64u": "EBESExQVFhcYGRob", - "expected": "AES-256-GCM$AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8$EBESExQVFhcYGRob" - }, - { - "id": "dek-sm2", - "alg": "SM4-GCM", - "keyB64u": "ICEiIyQlJicoKSorLC0uLw", - "ivB64u": "MDEyMzQ1Njc4OTo7", - "expected": "SM4-GCM$ICEiIyQlJicoKSorLC0uLw$MDEyMzQ1Njc4OTo7" - } - ], - "formatRules": [ - { - "id": "header-rsa-ok", - "value": "sha-256 23592263765cf506d07cc8614c09067e6de38e64c53e5b672c022532d01737cf", - "expect": "accept", - "suite": "WOP-RSA3072-SHA256" - }, - { - "id": "header-sm2-ok", - "value": "sm3 23592263765cf506d07cc8614c09067e6de38e64c53e5b672c022532d01737cf", - "expect": "accept", - "suite": "WOP-SM2-SM3" - }, - { - "id": "header-crossfamily", - "value": "sm3 23592263765cf506d07cc8614c09067e6de38e64c53e5b672c022532d01737cf", - "expect": "reject", - "suite": "WOP-RSA3072-SHA256", - "note": "I5 跨族" - }, - { - "id": "header-double-space", - "value": "sha-256 23592263765cf506d07cc8614c09067e6de38e64c53e5b672c022532d01737cf", - "expect": "reject", - "note": "D2 恰一空格" - }, - { - "id": "header-uppercase-hex", - "value": "sha-256 23592263765CF506D07CC8614C09067E6DE38E64C53E5B672C022532D01737CF", - "expect": "reject", - "note": "F5 小写" - }, - { - "id": "header-wrong-hex-len", - "value": "sha-256 3592263765cf506d07cc8614c09067e6de38e64c53e5b672c022532d01737cf", - "expect": "reject", - "note": "64 字符" - }, - { - "id": "b64url-with-padding", - "value": "abc=", - "expect": "reject", - "note": "F6 严格无填充" - }, - { - "id": "b64url-illegal-char", - "value": "ab+c", - "expect": "reject", - "note": "F6 字母表" - }, - { - "id": "b64url-trailing-bits-noncanonical-2", - "value": "aE", - "expect": "reject", - "note": "F6/D10 严格性补钉:len%4==2 时尾字符低 4 位须为零(E=4)——.NET FromBase64String 宽容收下,须显式拒绝(与 Go RawURLEncoding.Strict() 对拍一致)" - }, - { - "id": "b64url-trailing-bits-canonical-2", - "value": "AA", - "expect": "accept", - "note": "len%4==2 canonical(A=0,低 4 位零)→ 1 字节 0x00" - }, - { - "id": "b64url-trailing-bits-noncanonical-3", - "value": "TWF", - "expect": "reject", - "note": "len%4==3 时尾字符低 2 位须为零(F=5)——TWF 是 'Ma' 的非规范 3 字符形式" - }, - { - "id": "b64url-trailing-bits-canonical-3", - "value": "TWE", - "expect": "accept", - "note": "len%4==3 canonical(E=4,低 2 位零)——TWE 是 'Ma' 的规范 3 字符形式 → 2 字节 0x4D 0x61" - } - ] -} \ No newline at end of file diff --git a/tests/fixtures/interop-cases.json b/tests/fixtures/interop-cases.json deleted file mode 100644 index 6cfbf95..0000000 --- a/tests/fixtures/interop-cases.json +++ /dev/null @@ -1,722 +0,0 @@ -{ - "_meta": { - "format": "wop-interop-1", - "specVersion": "crypto-strategy v0.3 / sdk-spec v1.0-ratified", - "generatedBy": "wop-go-sdk@0.1.0", - "caseCount": 30, - "note": "TEST-ONLY;verify 方向样本为冻结数据,各仓消费不得重新生成;build 方向按 input 复现" - }, - "cases": [ - { - "id": "build:WOP-RSA3072-SHA256:L0", - "kind": "build", - "suite": "WOP-RSA3072-SHA256", - "level": "L0", - "input": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "plaintextB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9", - "timestampMs": 1755900000000, - "nonce": "interop-nonce-0000000000000001", - "randomHex": "1250f10461ca3998dc7ed84a58ca4a94c01f36a8d3fe2a46e654a2c5cbe51bd008d1f4fab0360d616129546b80c17fe71e980d400e8f632c67de644508f7468e8f6d68beaa4a7b66a6fe80e4a7610aa5f840dfed7dc852134a61d9b53c6a9c5b1cc8d6d9ad71be000885154d1783ad733f04f2ce65d6a40dbf2fa227446173db63a18709a6eee59f87577dfc7f6e62d26920b3f975947ef884e52db39b6ce3dfd7c9bca7c295d861df1457154ca2770d874861866947ec3977546df1b5f7d963ef349559024241c3d775ed8735748e4f84ea2e3acde5d30b20fda3892604c8ea2f5ebdaa97991e4fc6ed77fa4cb20c642d828a2963e8b538f73ab2f5ed4abade33efb0df7da4e3a509d64a20ccf4a8229101fdd3357a43ddfd6a31d7de8c0c1449dbe4037cda796f8b7c0b3cf64d65d506a5c625f7fe080a8264e9f49760de4d5a5067382d9282c6ed3ab9342bf5776f724640f038e979ef59fe283f684d051b4db75b08bf5f52178d13ce7b661ba09306a48d6907533b1a6e6881d7fed97bfe423eca7ef16e0d1e1329f04d978b1538483d9d2f15f7722f76503e03221e1291568a2ed83cc68061dae5f4a2ab53d0ed1144c193387d1aef33f6c1b689d5af18123068552905e57fffacd305a3031ea7dfa2ec606fa972213e54e8f034cfb1b862181b636ade93e3a5213583a64b1c0f247d572b01e8661bdfa47e3320f5eb97" - }, - "expected": { - "reproduceMode": "byte-exact", - "wireBodyB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9", - "headers": { - "x-wop-appkey": "app_interop_001", - "x-wop-content-digest": "sha-256 b1ebae5d6b42af9dd56099e47d217270f6c86990531475c0c39765a5b358833b", - "x-wop-nonce": "interop-nonce-0000000000000001", - "x-wop-sign": "WOP-RSA3072-SHA256 v1/1800/x-wop-appkey;x-wop-content-digest;x-wop-nonce;x-wop-timestamp/SoHmCjNlVeCk4a9PMD-LboMSUp0oSMIBuqM7uNaFIf-t_RgTFSRZNugc_UJmNIQF9oV1zt98LPpjOtsdS9ZH6xfWex7GoLzvolD_FrQycESMyZn3Mjh6tsYocGpCByz39Fl2QpXfMU5G_uoK-ZCiMoUzu_Q7ymsKWhSvy_vYEDhVHbfmSqIC9lnJucEkWCrcWZ1IXIYXFx_KDtjB0PGzf27Wle88M3qCOuElr9GT_e404DcnG_JOpBkJcjHk8zgGZUkNQnXqNtBBc1n0vZ1FPDzR-tyLFst2yOLUHYtuqIaI6w_sRvpdH1KafC0jqX3ODiTJCxkF1g2UrA0eiUjMnqFLYTX3i4KNRgIqkbfaimjWYgoH40rFfZ_uDioMqJloW50QBmg-QY_i8v1H0pru5O2Lx_yDZGMjhzMIQKyxwiyPf6t44ZVcwBJ4AMISQCaesV5iza6HcmjjQAhzc4BZWPlSpc1xOH2u0J_lkGeVa0frueSunVXSTFI1AdtcbjO2", - "x-wop-timestamp": "1755900000000" - } - } - }, - { - "id": "build:WOP-RSA3072-SHA256:L2", - "kind": "build", - "suite": "WOP-RSA3072-SHA256", - "level": "L2", - "input": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "plaintextB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9", - "timestampMs": 1755900000000, - "nonce": "interop-nonce-0000000000000001", - "randomHex": "1250f10463ca3998dc7ed84a58ca4d0acfcdd21bd7c1e07116dcdb7bd392e54342e6308d32bc2fdf9bd1f534b08ba4c07f788aac71ea048c74d5947f9d50d8d654dba6bf1b2cbf4feb1a856322216d9a924fc2a847de6bb42968069b2b74cbd5ed90e5441c68a2a8c0a534ad3003aa37126a497cdf634284839e7a8b9f729809cfe5545e281c89c0a996a27c9a89aab8f96ac3a77df7ac668ce294f5f65b5b40ff4854b37bbc13c449c32969167b4c0f1e027618a311dbe76d214dd92ea9e3672e309a9882fa5672709dce2185c42a82b8fb9e9e9b36c0a644a1f7a49b999dce187f666cd1a4813912fa2f6a36f5d1c0ca8bdb9b7728bfb4f63f7388de028abc0b266ef8dc39f523a7dc290e99c32daed71429381b02130409e51606b5c7a16e576cb52930d55cbc33e7b2715bba8d5418b5665e38084e354f17bd5cab2f3160fc18e21f89fe4a9fa0af7ae7c1e50af3fac30d1ebb7f97fd0e7ca8894ddb9cf98bdd7223823cfdd4a573957a635431c55ca9094a770dec3d4d8bb57d90e144a390c60fbcc456a9f0e75adf2bdcee23a63392a737ddb1a196e605d15dbd639a93e6aad7b2e9d3b1478efdaf117619066714ccd6af137a6f64f5119e32211bf68b2227c44da0786eee39a5789c4ff305d1cb641d57a52eab33cc2185dfd6574eab643cb226c36fb1b14c5e94e81b145be4d6307710a6d287814376b21968497d13" - }, - "expected": { - "reproduceMode": "byte-exact", - "wireBodyB64": "eyJlbmNyeXB0ZWQiOiJrQ2NZOWpjTlE1VFMwWHZxZ3VLSzA4U19RV1dkdW44Vmd1ellFdW5pWC04b3VkVzhTUSJ9", - "headers": { - "x-wop-appkey": "app_interop_001", - "x-wop-content-digest": "sha-256 fdeaa549e1a56eb2032a80c775849433c9f2996b3c52b37727cb0e0e7f6a60c0", - "x-wop-encrypt": "L2;dek=SgRSFXjic013j8jKOi42tNSQuArWOUiZo2FSHoBurrxuZd0tc7VrjT8HB6lr_Q_k9hcLYFQqMVJ5OimdqcsFM4zDNVD2zqZ2fq6HjZnwTkDuhhI3FT6KUOSPYip6CwK1YN0j0WH-P7iN6HierD1257ASXboJo8Rsk3XzuxuONrRP_3E-EIMBFrbkIBW_oGJaZC_dcVrXhO7CV3GRmVoVJquWeZrnWQWISG6bjTKnM5mx3r3FU-REJCW1mXVtuDWWylb-Y6mHQQyA6dvsLq4DnB8HxWIjSYAo1uXrQjZjun4trJhcbyzC4o5xRsS7VhsAWLF69c7AQOHC4XFWgMX5o_txvJHt0SfWFJhXPE0H4zMTmhQOojhkgAflNhz9_Iyc9hdoSUhKnuAdF34ICdhSvMOzCs3IpTrRFVpfS3iWdUGOR6wzu30Tpe7C7BuHDcEmIPsAh5SFqoV9JwRHhAD9gIrJAbJLkc-4rx2MbRWv2zcsYnaatu4b25_RjCFGawdz", - "x-wop-nonce": "interop-nonce-0000000000000001", - "x-wop-sign": "WOP-RSA3072-SHA256 v1/1800/x-wop-appkey;x-wop-content-digest;x-wop-encrypt;x-wop-nonce;x-wop-timestamp/MBaz1BdaHtPF7QNKu2QcTeAf7ytFJfEPVxes2I8bcO2OkxwbqDfFm03i11m_GjoDSljQeepZ06pY1nMFLFXNZduxKUvAItl6c9KPt9nmwcX18jrSt8SZX2CdMg1L8LIQa4GYNfZMUo6OQCzwdtWE8Bkga27MRgrIXGgZVr8TmhwaYdgLIJgPu7MxiKTRghBZi5NOsyG6aKUngnAvcUzaldpG6I9F-oTIccZWPCVWfZzQnhq2RrTMAT8neUWpo0Bdvd8bqqP9ZVAlk77lssdOEFn12vQvsIZR7kNWwDfNE_Wc6rslkoiVB4SZ3c7-s3h6UipLo53py1VKfwc_EkXbTjHOvKTdna29V9T2X3Jx8Ajfs3rgHcJO3x_ZA2-hSJfKXkAw_9h92mkVJmSn-sElFZAbyir4APDFU3lOB7h3NobGBsu-Q4lnsDab2kzC83Wsh4j_43IgIuoY1JxPpyLaaeu2ouDohxtbGLL8U95uTm8KsbNe726fR8cRqRZsJK3L", - "x-wop-timestamp": "1755900000000" - } - } - }, - { - "id": "build:WOP-RSA4096-SHA256:L0", - "kind": "build", - "suite": "WOP-RSA4096-SHA256", - "level": "L0", - "input": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "plaintextB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9", - "timestampMs": 1755900000000, - "nonce": "interop-nonce-0000000000000001", - "randomHex": "babb9a39dfcf6845901a2b6a6f12e259e872b41a6d177c132f168f2fdc61e6b9a09225264e434c8c7fbb0c41cb00236d03a7c75924d067b6328b84c01ec3a6ed1ed9b6f5a7307647aed6b32235d0acb71bbc1c91f7f376b71e4f8dbbdd457b80ad1e74ae676d94c7b1c807c3b8ba657a308618b327f7994d955e9647f4279c179d60b41f7673b3dfcaa0ecb379c207526044381035be2dfbd96bdb19f1abb68d8469521ab6daf0c3ceeefaab9891afc32057a815f2c7f0516a6d6e07c56d50e1050887f485c5d02c49fe76e2ce54ac785d5f7a301a03b79b0e8c13f5675b227cd2911694ddafe1ee7246b48bb946532ce2a9fd68bbfef376ab8d47b14019d2b43f3510709546e2906178cf200bd113b41ffc01a6de36cd282bb1b09bb00686e9e3234aecf4e7e1c2487ae88b2c0916b2c1bc068faf9cbc18f6a934ea219c7057cab69c9257222b9d35362aca72ef9a3b304692d25e8f732d38154da7b25deb8d934516f46db7ba3f4d24eeaed5aa75ee5f1fa910fdf3625fa7684ec77fdd4aedc97ad1a43e25d0872d00d4c0bcc63710d36060595d31a8364d0661740ce90a9beb7d5ec3d33e56860315a07d78c0a50b503c720ffc5f51abb04587d38b36a95c0b062100b9cc72e54bca295c78718d6679a8c685620d67c0499a591958e545259c2b644f9b6fd30df9145f128566fcc3acda775d75811154391c3d6555ce96ed" - }, - "expected": { - "reproduceMode": "byte-exact", - "wireBodyB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9", - "headers": { - "x-wop-appkey": "app_interop_001", - "x-wop-content-digest": "sha-256 b1ebae5d6b42af9dd56099e47d217270f6c86990531475c0c39765a5b358833b", - "x-wop-nonce": "interop-nonce-0000000000000001", - "x-wop-sign": "WOP-RSA4096-SHA256 v1/1800/x-wop-appkey;x-wop-content-digest;x-wop-nonce;x-wop-timestamp/B_-UYUoPsM5NaMcYgHuIyN1W-WaQBOItts7SC8cicCXDHj7oAeZbbiAJY6NqTxTF9Hw9nLddOktGyKPlHP2GIOO61WUlKKkqRJQguO9szs-B5cWXmVrnXEmsDWw_dqPB65xC3kewGBK4wyvD3R2pyVeyB_fej4A1wGmMTyeKv1I5LPFa4d93yH04SobWKCRyisue6MtZtibsXqyWBMkUcf4cDw9b1upRGXlfT_UiPTj31Qx-qyduCqOgT7hX4qBgNgj8OycboIjq8uJpXCec_4CkmMjDEF0N0cDW32PlPhgPAWWpyzNdXXxCEuIRgEHzr5HbTCoG4nrWfCAhR3BHfnX1J5XJZ7rhkq9wI-d41qnwUwy2V41X86cfga1hR4OJqJLVb54shOaLF4w-njheDdVcoj5sYtaiuAKOESAc0iAaO1cz_y9wGHqqA8N2CmTY57syQgbJAhCy3rLTh_LVzdn_6H82l70p2ho2QgShWPC2_LFUGzfMZqezJ7CEDtrvFyHYthlJHTQyNuO5J8wceiFNvsmOrq82UIdD5hPYCOiPH3Fc6uQohkpidjNh4AFkUxlrRXMxva0JLVusyK0z2FQ3qXhJG_YImQ9Lix0Riy1tJQcHlquyadXoiyh3oGNMlrEtALQCZXyAp4OAIMuizW2_SwmTIRWKc936sE4-SWo", - "x-wop-timestamp": "1755900000000" - } - } - }, - { - "id": "build:WOP-RSA4096-SHA256:L2", - "kind": "build", - "suite": "WOP-RSA4096-SHA256", - "level": "L2", - "input": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "plaintextB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9", - "timestampMs": 1755900000000, - "nonce": "interop-nonce-0000000000000001", - "randomHex": "babb9a39ddcf6845901a2b6a6f12dfe3c8c16d39cbd542dd18897742bc17c8f8fa489f46932240cf5d1da8a3bd9218f630f74a8c8302cf95e58f4ba0cebbf0c804f27e5ca9c3faefd0564fbfdb7b2b132d4a69de3fb8ad7bbf8622afc36b4842b3252d74d7be27e691c54c5116bddc38948e7c8296c280bb603b2c1477bd03641be151e4ab34ab457900c51f3f5ed88e6689c86830b8730e747c04e6528ed12d21939d5a34105b45a496e650f86c5bf1be8ea62229a65781db92af22fdaa56aa4dc818e178baf77462f929a76cf7a7f9e35da9c29b505d102cf284c6e3721e5e2bba18b69e86538307d8b82aa4459911ebf7a3acd8287da6a7c4b3f52c0033744bb5e7fddcf43ba4782290880a9aa1cff92ff1d0e6db0746cddbe394dc444070eabf3e6e97d7cc7cd6f015c30532b909b02bfa86494d0e0088cd346f05cf2463b7f6f92b2deb0494a95fb5824de725bf13358babca54a27f94ad09e87c73054fd07d9e060be766ea3e6cc55233b31b7593f97d940a6ea707846e5d02fe972b0bd2524e64a7a40ec0d9c1d1f0e5ade23a59761517dd5235efc0f2d69e827cc123f67ebd4481ebcaa141a201926dd361b9902119b4f545db1552ed537c29f4095b4d067786d719c6c66db86580b546527203a4f53165caec079e23e9bfc5894ff4d62ddcbb1ecbb2bec7cfe746ad3bea70e5fe35e59bdc7e78451dd2b491dd26df" - }, - "expected": { - "reproduceMode": "byte-exact", - "wireBodyB64": "eyJlbmNyeXB0ZWQiOiJmZWloaEhXWmhKSGRiUWJ0T2w2M0JJSzNNOXFtVG9ISVFaVG16S244OUZjTE5fek9VUSJ9", - "headers": { - "x-wop-appkey": "app_interop_001", - "x-wop-content-digest": "sha-256 a14809ff3c9fbbba91da914f7ddee38cfb74299055616a12890ab9bb9be7ce4c", - "x-wop-encrypt": "L2;dek=S_8bAT9xUGUo3rra5Jy1PIr2gvOCEG8IsO8ec9u9BQH8arovm-rh0GyPD2Cnx-e8HvDcGosPZZz6vuEFLCgBDBF0K1FP79U8ntiGoo7l-hEzyWzPlZk032sGIbBCGV0BRH7X8TTZTIk3aOPy7809w-I17B2hD0TmAE_uvwT50DmZOPbCx104CjPKN89w0Hgk7B2I5GvqG57Ny1F1WloyQoHr1Bkj1BaUJKFo6_lKL5awYPd6HtVl2H7zdZMinvb558XLT7RsvHSAI-ZTrNhaSkk9vb4BBG1zUm3h-n8mFvpKqXjPW3BWF1oygDaYorJ9-Gh83wIIR__bIzPJD61pqNSF2kN1cYiPyVgdtXPgv56UGRQUXyjNBkq_hS7ERDL7E8plaXc8jQH18pYeLj6RBh5ropTVvEajumoQinDNHa0csfWFpUxHC_Sj2O5GgVcH76jBbuzgtD_XGI5QaLq5D-VkUBbdcfYmrU7fDRhHXkDx8iaVfhm5hUDjl05I1ixT5SObt1xj91_Xh8QABuPvwMbyuem4y8eu8T3wwZqY1kP9IWP9_NPYvYRdR8JxEjhwzxXPCTcisgW-dk0AkBlcyNH1P-JpDhg8m1EfqpVxMgACmgS_eZGkO_egJ40fZaMOsVEzWIlUOfr7RRQCBtzp_33cvN9swFbHTdG3Tna63M0", - "x-wop-nonce": "interop-nonce-0000000000000001", - "x-wop-sign": "WOP-RSA4096-SHA256 v1/1800/x-wop-appkey;x-wop-content-digest;x-wop-encrypt;x-wop-nonce;x-wop-timestamp/PnM6fLK6NB2PfxyGrHIHvoSXr-tWBQd98lzHQW7VaU5a3sPyPECgm371tPKbkNOaEjJs8Kf7TFbdnFvPxVofC2P57KD6T_gqtx7Ssr2qk_HwbEwqMCm2Iis946pS5LCD90iAXiTdWSV_9qCd4g6EGKE6Faf8oBiLzXngUMvr61_Se4N3iGwYAkGwrTbcuruZdvFugfGvEN6Ub60nyXBASmWv9BW9qspmbp0PMbFFS3PhcF3V45p1xbr-mahJiXFXwbDlqIcF00us2noD27J4o-HDxTupZSTJuHdAPNLg1gQsUmybAVQfVBvGgyl5X2lGKD1IWevSBsiVDA73tB7ikCkWecsmL14wA-CT3ovcsMsBbjWdlO_xFnCh9Wf0YHy-D0WY23oDMPPcQMQ-DsvUqdvMFTqvx8TMt08eIzKgJxYMd46d8RRW83ciBLa5w-1hIb3yymJYN5Sf7uiaxVmXoImHcshZ90LRupl6jBz3YMFmc5Zm2ieLhU7WdkG2_9v56pMibkxUHJ8g7rtlo7w_YhS2vAGljBtLKbtThbTZnZQGBCP7iHxI6B3V43W9E8RonmMP8YrfW2MWCf6lCE_VLiCDzfTT1BzOaCkrtzuIoOTmzUHL6LULyqB1mjoftpoLfVe-Riva7AJ7MdRC99IEGVJvCYdANFlDnn9gY7cUHP0", - "x-wop-timestamp": "1755900000000" - } - } - }, - { - "id": "build:WOP-SM2-SM3:L0", - "kind": "build", - "suite": "WOP-SM2-SM3", - "level": "L0", - "input": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "plaintextB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9", - "timestampMs": 1755900000000, - "nonce": "interop-nonce-0000000000000001", - "randomHex": "84ef90259c4238757a28152cc7341e4a06b0cc2535157cc94835ed6f9061f31e4a36fa00d01349ca26209f2d1209bb8cc1135eda8bae5ff41f8906bd87e92f21aca6c648344241ebdc5b586950d3f25a568f5321eebf55749149d4365aff12182e9a888554f2dc954f01a0bce8a3f94dfc3092e73b091a652a1edb1a983384d86d6fb3ea9a0bb212320ac8e0889334f3d7c9f0637fd26b5da819dc0281e7a52b10f3562236898b2a6949b774a6473b04834890f84634d8b7b67796fe90b7a46d821a27c172a2cd01330e49ba85b19398904b538a47527f9fa13e5717f1d2eb34673d0c63ad4f7703605a0a7745be98e3508a5ca4da8b178d57921e41837af925be82e4ea724647dbde8f194977253a4b542141c5ca01affd8e060f30601543a700e9e3c14f338bbbb0c2b58521f1cf2fccc314b986687f16adb7c1420c55bc4a0ad0ad4b815b5ca5e96863062b64e2e69c40ff29eca24f2ab44f9fb8e8409df3a445b34b614f66706f03515bf86c3f084393510822548fe7d1552daeaaa308df7849ae590c7efa35662ca86c395c9af14c0e0491419876a317f7571d2bf214f60f7eca3206bbba8cb445cced8562173bae50b05a7cc686a2f6d0e41f2a7f15cc3a37cbc27f24bb12fdfff09aa9acd122a8ad9d2a0616bf5090fe3e80f99b0c79071ae962b87bd9b98d3565b9b05dea0d1360650cf8e1e4c4b253c6d5088b5976" - }, - "expected": { - "reproduceMode": "deterministic-fields", - "wireBodyB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9", - "headers": { - "x-wop-appkey": "app_interop_001", - "x-wop-content-digest": "sm3 eb6e82ca5c687173ed2ef6863ced1b11777fdf9d5506b623f0016c65f9245eba", - "x-wop-nonce": "interop-nonce-0000000000000001", - "x-wop-sign": "WOP-SM2-SM3 v1/1800/x-wop-appkey;x-wop-content-digest;x-wop-nonce;x-wop-timestamp/KrBlUS4gcvC_-L81xANkl9WbpuWuwGJp7OnqbhYNgD6SLX4NKNQRTPfM3xtF6olQkRI1zi3hRxwM7m5CwJ1vmw", - "x-wop-timestamp": "1755900000000" - }, - "opaque": [ - "x-wop-sign.signatureSegment" - ] - } - }, - { - "id": "build:WOP-SM2-SM3:L2", - "kind": "build", - "suite": "WOP-SM2-SM3", - "level": "L2", - "input": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "plaintextB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9", - "timestampMs": 1755900000000, - "nonce": "interop-nonce-0000000000000001", - "randomHex": "84ef90259a4238757a28152cc7341bd4d85d9fe455fc26c253407e6bf1ad198315680a2384134c2aaa23ce32fcf4d5f689f1b60faed1c8d18af6de742c201080fde45c682a641ac1e117b4bf491e5ebc40cb300851b939924f79a311aedd84074a831f2f9df0ec96351548ec3a56684dfbbcb4d4052bf4d63567514d6368992284e80fc01d189c69fc8522aad4bc467ac8dbb328122a9dca638dc0926c2ba68b31a5ab8a4e75cf9a8ecc0ad814148130d35108c27ac2be96f3a18949236b6a675912c2dfe3d5a9131cf5ab7c5c9ed40433b809a9ba1ad69fc580d765ed7ba11714f1f37b729eca57d1679580cbfc6f5667c1517423117e96a3c339949159f6b05defb45845eccdac7e544a99bd3a010fd8c072b694f9a60b445dba5134573315e74110371b8a7b13a18cec82c0135a0e9873f9ea0bca97064f3ff705380b34a5e8b43847d239408f30ad153c05c7db27cb1751382231ecd7913a07d8a7b08778eb06979a9733080704208ea0718af2ee28eb88d7841f03e181ef270815724517753cd60526d6f55f3fb7e18c42fdc810f0f72c90731faf6544ddd8b5e4430c0fce25f22fd2aa8a989f9d1a48bd2f51eadc9c3af015b2384f673e994a25dd9aa0220b161bd20979dec92dc9e2c23ac6d381e5aa32c607fbdef6ed4f3d1e8a964d44caef059525b4cb5d685480800b8b314d0393cb8cd9c36153f8f601184dbf98" - }, - "expected": { - "reproduceMode": "deterministic-fields", - "wireBodyB64": "eyJlbmNyeXB0ZWQiOiJaaDFmLTZuZzdfTVJwS3RicE1YeWI5MVNrZGNxcFNaVnZDWC1IME5fd3kwRHpXbGl4USJ9", - "headers": { - "x-wop-appkey": "app_interop_001", - "x-wop-content-digest": "sm3 76fc43b75677a3bf17aec0a3540e05b343a9aa5bd7f6b8a4b9ef6d01caa082c2", - "x-wop-encrypt": "L2;dek=BBEa_sIFCIl7PAQoYU-aJFKxt2rM32okXmynLjG7D7qgkw2up958_eNzo7kRgwKq9hV4NlcXCNMDbDxgIPN7lLD8bkGNFCK2nwv11ML4oGQZzZvv2jA9symDuat92WY8y7TlbQWVNwDqkIVHCMpoxTH5JynDYOh9r8XeCHUEGxF0UeWd3vZJmYMg8-UOJ-ZP", - "x-wop-nonce": "interop-nonce-0000000000000001", - "x-wop-sign": "WOP-SM2-SM3 v1/1800/x-wop-appkey;x-wop-content-digest;x-wop-encrypt;x-wop-nonce;x-wop-timestamp/J1viyVsWPn3-IZy0Q_D-6UTUNrbmyBCfhzNWu9JucFn8mk5gfqnICgHTa9vunyjJ4HkO4OWOrk1X-POOQucV7A", - "x-wop-timestamp": "1755900000000" - }, - "opaque": [ - "x-wop-sign.signatureSegment", - "x-wop-encrypt.dekValue" - ] - } - }, - { - "id": "p07", - "kind": "verify-positive", - "suite": "WOP-RSA3072-SHA256", - "level": "L0", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sha-256 b1ebae5d6b42af9dd56099e47d217270f6c86990531475c0c39765a5b358833b", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-RSA3072-SHA256 v1/1800/x-wop-content-digest;x-wop-nonce;x-wop-timestamp/ZWuNlh03m0bzONzXV-5J5efUFzsl1gctQac-iZVnA6BBYFWYvFMiriPu3sk0aKO3H99PvMc8lDHJi3eq0wRgbEIjU5NyMs9ZVSyCO8lq6Yn9nhGP24jIfT7gerOgF2yE3Z64w5ioo1MxzvKyuznjQvvenMaAoNvQalqT0UTyH-cxkD_XbMBbGvgxpOR6m5aMaulugPXQSAsSySptvJEq15TmjJsNn2CEdeFFrGWwU1yxBzvnOjgPnefuGU63Wq_CgOue5wSP8bv9R3HotaPifjR7V4EoCIpH2sbPhHRTefrUPcNg_ZFhnv2YocGtl0CxN-M_Kqf2MJmJ9VG5BFPfZCGPBSApO02eSXRIbkJIE1xIbweIXTO89fhbd5wZ9t8ifHQE-Ot6lQvfpVAC2QTzbcgd2nFhChPYys-FUh03ex6pHCCSCnNAV8bmp7O-GPsrdItqNoeWr1wsOH1AEejUb02z3T-FNKwBTqmiX_BlfoR6Qa3eCh5lbWzpyInJFf5O", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9" - }, - "expect": { - "ok": true, - "plaintextB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9", - "description": "平台签名响应校验通过;混合大小写头名(P7)" - } - }, - { - "id": "p08", - "kind": "verify-positive", - "suite": "WOP-RSA3072-SHA256", - "level": "L0", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-WoP-CoNtEnT-DiGeSt": "sha-256 b1ebae5d6b42af9dd56099e47d217270f6c86990531475c0c39765a5b358833b", - "X-WoP-NoNcE": "interop-resp-nonce-0001", - "X-WoP-SiGn": "WOP-RSA3072-SHA256 v1/1800/x-wop-content-digest;x-wop-nonce;x-wop-timestamp/ZWuNlh03m0bzONzXV-5J5efUFzsl1gctQac-iZVnA6BBYFWYvFMiriPu3sk0aKO3H99PvMc8lDHJi3eq0wRgbEIjU5NyMs9ZVSyCO8lq6Yn9nhGP24jIfT7gerOgF2yE3Z64w5ioo1MxzvKyuznjQvvenMaAoNvQalqT0UTyH-cxkD_XbMBbGvgxpOR6m5aMaulugPXQSAsSySptvJEq15TmjJsNn2CEdeFFrGWwU1yxBzvnOjgPnefuGU63Wq_CgOue5wSP8bv9R3HotaPifjR7V4EoCIpH2sbPhHRTefrUPcNg_ZFhnv2YocGtl0CxN-M_Kqf2MJmJ9VG5BFPfZCGPBSApO02eSXRIbkJIE1xIbweIXTO89fhbd5wZ9t8ifHQE-Ot6lQvfpVAC2QTzbcgd2nFhChPYys-FUh03ex6pHCCSCnNAV8bmp7O-GPsrdItqNoeWr1wsOH1AEejUb02z3T-FNKwBTqmiX_BlfoR6Qa3eCh5lbWzpyInJFf5O", - "X-WoP-TiMeStAmP": "1755900000000" - }, - "wireBodyB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9" - }, - "expect": { - "ok": true, - "plaintextB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9", - "description": "平台签名响应校验通过;混合大小写头名(P7)" - } - }, - { - "id": "p09", - "kind": "verify-positive", - "suite": "WOP-RSA3072-SHA256", - "level": "L2", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sha-256 db8e8a1450ba1a7040b6a5be492889b5c81e9eacc8816d702a653878e358cc0e", - "X-Wop-Encrypt": "L2;dek=TdZJFxIUw14v8qOaGOYUa6_FnB92MM6qEnENc1KPXJmujE7OrXxHpXVj0JAExLTaBO6_gyjcHJSKgrbFviNT1jGoPnZ1BOZ09rnBkYW0VI36xurMhiQzmOVMRZM76xGYrdsfHgHf9d1YKAkVVPkyN6koxWNGx2P_xjxmFY_eMYfre6GATcVzuyLW7DwTfgp8wuUlo-HPrb6hirv2XE2qdhP8wFAYMxgIaw9gg3NqVSB_nE5-v0PY6Cg45CdiS16uQSKUjNGVdRkAqI379gsqQxcG5gtdYDXlUaLyP0IXBfl9ucZvZnAisg8LEQMaWAiz8c3FLzZ8XTzri3tEKmpsY9kCnECqChZP5PxPmYQOqg7uRF7hMqfdkBdduSR3LR58P2MH8iQxqZt-uRgaoSz1QpxFOiVm7uGGEF2G-K1qEFRsHwMOXsR0hbP4VbEPjT6afzCiQGQCODyaFzaoM08Sy8tVR6lSe8Ku-q7qqr-mGhqFmxihIM3PAYWM2YMEpaEL", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-RSA3072-SHA256 v1/1800/x-wop-content-digest;x-wop-encrypt;x-wop-nonce;x-wop-timestamp/OldntClLCIZySEhOeTFIQ8fH-xe4ino7_TzxyYEW5hQvJBNY8AZWeeMrso2El7RV4MQvZfGNbRiIg1WR89OJOCGGVQYRFlL7VysKU0kVhXTyowmK0HcO5oa2X0Hsprnvg0SalfefoueDsbD373h5FBpmRqr8gCtScMz-8_aie_jB5rtizofHV58YaJH-UED_0zdydC6jfLebANhW4LdNGxAe4b-3YvXxS1TO24kUMV89qK6OZNyuKZKkejSzi6dAjuh3Y-8zO-HL6jFVZ7MEgS6GHtpkOIh-WTdoLedpJ4zgGTaZmQE21PnSsvOK-s0Ez8c55HPKkk_I9hfNjGa77S2asU52mLf7VClRLK66bj1pNr-aqtc_C4lKbCc3r7iJGifd_dNF43a75-aRLt-kuQ8652AFmNJB6dNVeogGRyxEibfdSYRyCqKlLMsmPwJ-v01vynTyIj1M_l08ORvGmkVWG8EqYOyS9EYJ79aSzokI4EzruGIEVilGTbVdXeUN", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJlbmNyeXB0ZWQiOiI3TzVsR2JlZVQzUHpEYXJmUGJvaVBmVmRXVHRQZjFQUlBDNUFBdk9SZU5DSjVSSW9wQSJ9" - }, - "expect": { - "ok": true, - "plaintextB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9", - "description": "平台签名响应校验通过;混合大小写头名(P7)" - } - }, - { - "id": "p10", - "kind": "verify-positive", - "suite": "WOP-RSA4096-SHA256", - "level": "L0", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sha-256 b1ebae5d6b42af9dd56099e47d217270f6c86990531475c0c39765a5b358833b", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-RSA4096-SHA256 v1/1800/x-wop-content-digest;x-wop-nonce;x-wop-timestamp/XGFor1LBJAAZG_zqcJu5A_jkaHCIxlGfS_77ZDbxKuA-2AeCnu49k_sFwREXo2RqFE7ddpJ-Vb6K4WleRQi4RP3d9zQY31NRzb61B8NtMf0b0shCyINSi7d83EDrYH8YtA-_et4qg_zpMwLzOLcJScUD7iuejw9W7V6NRRjlM7dzuGgIkjHyS6DGptfNtmuseD-v9Z7lRiVZNIgulVpdYYNMlvhT2_arFU_R4pUVQ_QmSoRPkLBQf1P5NwjIa_zKRQgIiQbhto3dBdXkCEOFaTOLPfGUULmNlYumY6fjGZu9hTcnWUzT841CyewGS-LewMxYXzWks_cI8zUYFmPZOoSKf7ZwIRPOSH-cKyNt5IGD8D7b5IIae6qIRRqxOAePzHLHC9kjGiwxwddZn2_03Tc4ACl_iPbN0hn5luEbLVoW_FjsMoHZTxLnF-W9aBminXrzr935pVQcURr4b0IKiXdtwjFQlfCb3RoiZYk3qpSMYmfCLNGew217BFhrWjt4GsPi3loJcd7tNz2xXk8sa6NLs2Te_ux_1j8ID_a0trC45KSYsPrTuazWBY_LcmtE3kwiAuULghslgiJyJ_MyXHm1omujztuM2BLpFL3MP8Zn-EoDbLXio2rmjgJ6Rpvd7UpoLjMM6TAJNxW16b045sXxfco9E1fXaM6mJq98-24", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9" - }, - "expect": { - "ok": true, - "plaintextB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9", - "description": "平台签名响应校验通过;混合大小写头名(P7)" - } - }, - { - "id": "p11", - "kind": "verify-positive", - "suite": "WOP-RSA4096-SHA256", - "level": "L2", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sha-256 f3907ee403c0137d4a4903ea571d4118326a375bfd2b1ea57940d47a5d896ba9", - "X-Wop-Encrypt": "L2;dek=YmmfRCSwtSyk8HrAEqk-2Bf4kw2cYvysY2h2pJLL1FQ7G4TTeoUGGwCR4F5N-KsHQC-3NNdB8lkYSm6H_j-E69gh7unGjR-NQw_hHVDPBRWqiok9tCe2-NDX5riUqkp4ADrU2bsg7PF8vS-GVp-kyaH3ETiYPE_008-BKwKklHmV69GA1bB8dIKoqDD8dAHs8Tb79EFdC0vnwrwY2xnux6rlwWFWL1uEjueU3pn1nf7ZMAHsh9S5DGJd3-9f5hqd0ty2JphjMDDbMqm9VMeLe1Ijc47gi5rWwZwfW0eTsVdugShho7_skvVP7wR08clRMh8ddaQZP7cfERBBgU0gk_9dOP38keTk6XcFkY4ZplwAp_DcpR9YvX2Qd9NenG8UFRqvNf6M9pXtX7793ms9ey18fdiMJbIWE7C8Eel8zeeXiZXw7Cb3TOFz90fgABXrtj177JPjF2PCEexdxxAxm6yUnWoK2hu-N0LyFDAbWbNeEX9KKaF-JXF2Chyot1EZnHvDBQ9tNV5lO8xihG1_c3iSNF5DIeS9PabWFmVkVUtDBFQZgAntrzLpmYRWKvqmk1DF39gn6HboadCTYUiyydIPhvS416ORz05iXCeK4zAU8siKYagCHJvhcgUHHa9eoks3mupyphAo12dh8KsnSav2JEWVmO-Fd-CLOGuxglE", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-RSA4096-SHA256 v1/1800/x-wop-content-digest;x-wop-encrypt;x-wop-nonce;x-wop-timestamp/pDpotvP4J_GnjETg4qtRutntjIj4fRTUS9diZn8LBoypCE0bGqKvQFwIkGhjw7X5qdAu9li6BdVaS_-2wnxUwIoYwxa4eJRiPMDnXZRMH8m3-4xuhB3DSf-Gl0nThwok4kRlYKVa94wMKKVMo7K5gmYCAXwl1oRVXM-1HA71ySZe2ptbdF1L9jqrCEY1iqff8Gu7_5AfJilXX1InkVnojkp4-OznzEM4FGNq63CJfRDPGC1LcEAl6fjLU41KRXJicMAkdnnFSnE8BKFo9AVHu6hc0MZOn8Zyc-L13RdGU4ZZJl5FvLjna_mwyrc5vaWMH_Xayh8sPVRObg-QHiLqgNj3cl5BaWW0JrGRY3Z8jsWbk6PJynPXMKnqL3cDjEZlOhToNLpWwD9PpJtOulAgaUV2VleeV7DJconqW_y42FisTac4poteVQTrsp2mr1gf6W-HU5jKJyZMzbMZLPBYDGnO2YXCIKGrg4ALM47IRzijeTiCcLy00hsRADehcBvPoHVAtP2LtBBHd_E0vcHp_wHbDjsB8vVce2BI9aJ26yF4XmmnQEvprT-Sr2wEGr-suSdnAIgAyhkPvhknBETJ0Q3AM4uQFAOrAezDMZY4I_W2WOQxnH0FJafEOoxLRlZznk0SaoIQoUwqwS9KWFSEMA-Lors8C2otFqPycHesqvE", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJlbmNyeXB0ZWQiOiJzWVZuUkQ1aEpaWHpqV0NtSVdfTkhuc2FBelhVRW11dEtGSklVSldzeFhJT0NyVEpQdyJ9" - }, - "expect": { - "ok": true, - "plaintextB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9", - "description": "平台签名响应校验通过;混合大小写头名(P7)" - } - }, - { - "id": "p12", - "kind": "verify-positive", - "suite": "WOP-SM2-SM3", - "level": "L0", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sm3 eb6e82ca5c687173ed2ef6863ced1b11777fdf9d5506b623f0016c65f9245eba", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-SM2-SM3 v1/1800/x-wop-content-digest;x-wop-nonce;x-wop-timestamp/aHZilTeVDjPGplwTEI3WskQda3xAABMTysHxybaUxlR28vYaA0c0jmNyTi7JRm7CipQ2cInPx0rKo4BTOI53zw", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9" - }, - "expect": { - "ok": true, - "plaintextB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9", - "description": "平台签名响应校验通过;混合大小写头名(P7)" - } - }, - { - "id": "p13", - "kind": "verify-positive", - "suite": "WOP-SM2-SM3", - "level": "L2", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sm3 61e48c16312bbb86e1451a70df7118fb745db298254ddecfcf98044a72fa3c2d", - "X-Wop-Encrypt": "L2;dek=BGd3H7zzaRZqFRTQ3VqRn98oatZBvp2ceepvqU7lN9tbHf4Hs3x7vPfkT2-tEzxjO2-D_lX16i_BWalC6r2C12IglnwejZj7Jz1_s6VOHK-BxTxXlEeoKC8pUn9vpQi_0SnSn3K9ytPFxmH7kGYrNkQurZtZjjyEeJMFDENm6yuZyc3Ny8h5bhxpfo5Kfcw3", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-SM2-SM3 v1/1800/x-wop-content-digest;x-wop-encrypt;x-wop-nonce;x-wop-timestamp/yUd5dFMTc-_NeyJ7QsmPoL8yhCMAmDMTb3n7ea1UQ__IKR57CG_C6tR3SH6ZE56bULgfxOsv4azHUGcXu9zbLg", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJlbmNyeXB0ZWQiOiJRYkN4MUN3X0RDM3B5SEp1LXBnVW85Y25ZWjdSa1lscHd5eEZpRVg3TjZ4QzlwVVlKZyJ9" - }, - "expect": { - "ok": true, - "plaintextB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9", - "description": "平台签名响应校验通过;混合大小写头名(P7)" - } - }, - { - "id": "n01-encrypted-char-damage", - "kind": "verify-negative", - "suite": "WOP-RSA3072-SHA256", - "level": "L2", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sha-256 6e7e0141e5ee38eb8fb8cef2e0f8ddb1dc4ca100afa3ede360e2f55574f1d66c", - "X-Wop-Encrypt": "L2;dek=eZnCsZzoVn3UhQM1nb79E8_TJrpzYBf2wEy98N9COyAxQINyi6c1ffMjKuK0aqBvTqLHsdDjLUvQEl1RUbLnslBslNMidjw2eeGACGe68I2VHVudv4zOVuMTB-G2U8PMyCntu1gMUO7Bpt6md5bez4ereW-b32MT40eqMrBMN0DTcjOFsU37bhjSceEiPj0sP7jLLP6uyAUYO0CASQNAtMf4DkOk3lkFRpOgPrHOV7a31Gl7CF2Af52ahj7ndoJtNgEB7s0ZASFX5ZoribrkqG4ms83jS3eYWvAFMTvQ_af1d85GyKyj3R3S4Wb4dBTwVdykqTyrwKKrMa_DRETJaiqhZFltdUEFOM0IRkhoL3AgI_aDqGPEq15_AvRal9lMqqNyeU18R131tzYiCL1NbdfHU9zOuIMaBp4SKUhOt8yfFs2v_trEDTlf7O2Gtfm0ZXAlUrE-UdmDsm6OmbGMyKk8tQXXoScVEEj4yV6MMp6VYSfUx6oWH4eihwQWjrXz", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-RSA3072-SHA256 v1/1800/x-wop-content-digest;x-wop-encrypt;x-wop-nonce;x-wop-timestamp/p0I7n4MSVg3I1GFuyEuKJJwcNLlo7FjW1bL1JWzD46Ia6Ssr9gqfZTlQNhQu3ASJKpWXORNMjzOq_DsIjnciGzNP_Oqa-cy5ftV_1pqtQgAB6eMsPtQ4kGEGUSAUOkaHVTGHp7dCgkjJ_1_GDotsqmXkfP5BlXut5fqHTt_c5H-KWlwvFRJA3NY4EcaT91ghhey48UzrPM6FMy4vmOb3jecPMnmLFkEjok7tbRT4K21pGf5Ig8FBFPyft36GrUTfI3HGM3wyaFV5MlrBx83atEvl1Fhh5adC0F_I6stLP_l85x9o-PVECKlxMDOBulOGoF_qIw8uTPqfFDZfugxht_YH7CXtuR2-CSAUgWzHe5L0mLvhNe1QIrDqb4jTbjcBu4bDp-ZBAFzFSWZiywRdDQSy2PIYg7pvrp38h6nOUDsZVtWkZi55lfx6Deuvj3qy7j60jKaY2b9mtojrNn8kB0ujXok-JRWAYVM95S8QUU-lJnXMMfPBx7v4wV2FEmdS", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJlbmNyeXB0ZWQiOiJUcXpzbW9pUFo1MHk5MVRVeDM3QUpoVG9ZbnZJX3Z0czlieHZ4S2hsOXVDR01aTUhoQSJ9" - }, - "expect": { - "ok": false, - "errorClass": "decrypt-failed" - } - }, - { - "id": "n02-wire-tampered-after-signing", - "kind": "verify-negative", - "suite": "WOP-RSA3072-SHA256", - "level": "L2", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sha-256 72d7a75ef67ff79ac0ec244eabb73840a228372def74f0641d885c43f4cf02dc", - "X-Wop-Encrypt": "L2;dek=BoyqJZMYTjTWRIlcC2-lqxADvkDkyLlnS6Cr514XmGIakjzlWf8kg5tTZ4DzW51ER0xZ-g8obgNA55ai6qquyyJoz4MStoPwKD1FZhW7WHCr4Z9IoeFgg2vsWub898xreyiWitmzFFWeGVz2Khr7PYS4kMaTEv3W3F6B2sL1GU4WHzdIBElvSBHv6_60QhKB4EL-IFJjXlBsiEqvjS-r0zYzxRRFsSvrgLXdN_61npAt7dWEDLxJfmzUWPIdIKQSXHhjZSiTrlU2p6lMbiqUgvNPzcDRY0VTaR1UcU64CHFOq9wCX46tfFjuMHJzQQ8kHP18gSDuoswIo8JdOgSRaTREMi7OqUvmW45daSavDe6yDSr0f7q_N_bOqQ4fVFR7EodyTYcHDz_mxzBBQo2fC8-e54zPmWYObZI3HaWeNKx8YnPejwdxdmBPnNZHig_PaR4Qb1w0Sx8LAjowH9ogMuX1_gLiqqaWFUlG5pvpDChZaOCzhYtDZR7oWaWuA1fG", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-RSA3072-SHA256 v1/1800/x-wop-content-digest;x-wop-encrypt;x-wop-nonce;x-wop-timestamp/Mms-wi7C4F4pJ109RKB6xZmIpc5yD4PwLPcSamW_-XuwPflb3_AxLsvUuruXcpxz4Q31Zy7omkQiFmtyNIgmhOayG8DvvnUl0JWkeDJR3HB255uJoBX4OltUfnfgveN-PBsmFuwoaVt2iSY26K4hW6XGBDjjxD1txXGfY1dI82obzTpUqFHyYJBhe-Gd1BSStAcybTS2EIdSj5C85Tf0C_yHuJb2rNThYVqHkYNlfCPXtss0cKq0lVrMjXnBb-E9WYn4VgUWMOiBCwSTckAH96AMwhAI2VLdoTfhvNfl8WsPgVe9_Ro7SuOIbL1U5xS0JFTRQl8qKsS-GG7KF2AkhwIHRQfXj5NQvx1HjRWbKx0OZYeID09R3l7515-j5R5gjVP_ejobSsrUAZh5WQVdFp4m6zsDCX0c_NlKyf81aMq1-Ti87DfDhM7QPbVOOZzC8UAvnRVxqUmIErfA2XUz7wTtICvzaHuCjjKiJYrPZrcTNZQcALDwB30TLNrHnvEZ", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJlbmNyeXB0ZWQiOiJjWkN3clpUNUpkZWZ4bzYtQUwySGxybzJlSDdpbzA2S3k1dDFjQno2WXJmU25sVmVsdyJ9eA" - }, - "expect": { - "ok": false, - "errorClass": "digest-mismatch" - } - }, - { - "id": "n03-digest-tag-cross-family", - "kind": "verify-negative", - "suite": "WOP-RSA3072-SHA256", - "level": "L0", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sm3 eb6e82ca5c687173ed2ef6863ced1b11777fdf9d5506b623f0016c65f9245eba", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-RSA3072-SHA256 v1/1800/x-wop-content-digest;x-wop-nonce;x-wop-timestamp/HfJwzkmki_O1GNI4lrVhHbCcZycatfInfXHQKXMzfY43aGNZo0kpAH7Q2JHskU7VdbzDQMGBz4dA6KptLmETyT1wzEmbMb-0ubV8YGHV_zmPzzncNGXebmwYToIPe544bwN40HtYx8JnURQTFZc4uphjr8_8Rv5fAL23mhDJEan36lHzWDt8NSzjJctpOOeXM7Gb4Vdlu_lkALtcJYl2ifn4cyFjzB2VzKSw1J_BGKxwETuCk77VkkkCpYs3aGRX4s3zKPpIGVenMpNZCsEkeIUig2XfS60hE6ovdqcJ4xuuMkpMkxvTPp5ea9VzYcSD8dl6xYQv1jLI-izJjLVySXWfkQvHdUPWWWg64DCLBUUSFqg6pUZqqXEhENUERNtfrM4QQb_hJhwwSEaZj9REZDvVx59qGWBmoD_TYUpC308WRvWTmIu9fyT1gYqvnIN5at2Mtg4hq65CiF4BG41rLfucD63JooISUVwISk7E-s6j3o9Yj4TlaxdDGCOzTxXJ", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9" - }, - "expect": { - "ok": false, - "errorClass": "protocol" - } - }, - { - "id": "n04-dek-alg-cross-family", - "kind": "verify-negative", - "suite": "WOP-SM2-SM3", - "level": "L2", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sm3 6a761ca4f3375c6771de6848bda1054c37221d500c8bd36da2595746cd0c29a1", - "X-Wop-Encrypt": "L2;dek=BGadndnHrMKTsy0tkR3Sqk7B4a7UtsJjVnGBTgzWewIzYIJwT_fFwHa9PeCzMA4FCa7TcOh-2bvKjoxvKCgnVFpGjCiaClnCZjZHcW_bgGzWBJiwwgOhPTFUQdwNqXTt0V1RCT-H9HXzQdnF_YS6zMW5jA6IfKdPAqhVXwhYE_lsE5KuIa2PEcL7fY_hutRUVaWK9v6y5onaaOZvB68H9A7pZRCVHHPOQw", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-SM2-SM3 v1/1800/x-wop-content-digest;x-wop-encrypt;x-wop-nonce;x-wop-timestamp/VB1fbqeD_zfa1K99f2RcbYfSfaG_3A4L8Qe7uh0LVLMD9wCwzGxiHeFwQuVLeNdjcMhTKNok8CjYGjl96aAEvA", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJlbmNyeXB0ZWQiOiJaMkZ5WW1GblpTMWphWEJvWlhKMFpYaDBMVEUyWWcifQ" - }, - "expect": { - "ok": false, - "errorClass": "alg-mismatch" - } - }, - { - "id": "n05-dek-c1c2c3-order", - "kind": "verify-negative", - "suite": "WOP-SM2-SM3", - "level": "L2", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sm3 52df7fd8f138bd883c6175652d35ad1e8c4f7468eda533490f6fe69372e6080f", - "X-Wop-Encrypt": "L2;dek=BLgWR6gt6qRgQ-hSW7QPzr3Sbs6ELy9AsYP8CMz2ld4O9qOupZunzVj27BDigG-5M8qjoB4l7cHSuZlpmsxGtRdZE4TPhG_cgL44zzwgpivk_4CkWY0x30I0etNw5Df2GvrmxjzhWztBtikkenoPOZFOCITZ1nVH6Z4GLnyztlNOTZAFmEzng_TEuJPfNdXw", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-SM2-SM3 v1/1800/x-wop-content-digest;x-wop-encrypt;x-wop-nonce;x-wop-timestamp/YhX1KkV1MdIYrvbLH5iNCy99-i8FyCi8x3TICFSWB4-e6WqBbNJL4CncYIWCEvnOgkBH8iULiGMDSZi3LJpQ-g", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJlbmNyeXB0ZWQiOiJ5V041dGx3MzRqdENKYVA4N2xBMURrd0pvWkRYUVNCeGJtUmVZZFRaZVlsY2UzdWhzQSJ9" - }, - "expect": { - "ok": false, - "errorClass": "decrypt-failed" - } - }, - { - "id": "n06-signature-b64-padding", - "kind": "verify-negative", - "suite": "WOP-RSA3072-SHA256", - "level": "L0", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sha-256 b1ebae5d6b42af9dd56099e47d217270f6c86990531475c0c39765a5b358833b", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-RSA3072-SHA256 v1/1800/x-wop-content-digest;x-wop-nonce;x-wop-timestamp/ZWuNlh03m0bzONzXV-5J5efUFzsl1gctQac-iZVnA6BBYFWYvFMiriPu3sk0aKO3H99PvMc8lDHJi3eq0wRgbEIjU5NyMs9ZVSyCO8lq6Yn9nhGP24jIfT7gerOgF2yE3Z64w5ioo1MxzvKyuznjQvvenMaAoNvQalqT0UTyH-cxkD_XbMBbGvgxpOR6m5aMaulugPXQSAsSySptvJEq15TmjJsNn2CEdeFFrGWwU1yxBzvnOjgPnefuGU63Wq_CgOue5wSP8bv9R3HotaPifjR7V4EoCIpH2sbPhHRTefrUPcNg_ZFhnv2YocGtl0CxN-M_Kqf2MJmJ9VG5BFPfZCGPBSApO02eSXRIbkJIE1xIbweIXTO89fhbd5wZ9t8ifHQE-Ot6lQvfpVAC2QTzbcgd2nFhChPYys-FUh03ex6pHCCSCnNAV8bmp7O-GPsrdItqNoeWr1wsOH1AEejUb02z3T-FNKwBTqmiX_BlfoR6Qa3eCh5lbWzpyInJFf5O=", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9" - }, - "expect": { - "ok": false, - "errorClass": "protocol" - } - }, - { - "id": "n07-signature-63b", - "kind": "verify-negative", - "suite": "WOP-SM2-SM3", - "level": "L0", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sm3 eb6e82ca5c687173ed2ef6863ced1b11777fdf9d5506b623f0016c65f9245eba", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-SM2-SM3 v1/1800/x-wop-content-digest;x-wop-nonce;x-wop-timestamp/K5PLf1gNCOIuBZjx2_AX1WSYfpjmXlhEF5JpKaosXeCGDgutBQQfYOO4Uv2Wz9Ki8pjzo1yMQPZuhlFym8lC", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9" - }, - "expect": { - "ok": false, - "errorClass": "protocol" - } - }, - { - "id": "n08-signature-65b", - "kind": "verify-negative", - "suite": "WOP-SM2-SM3", - "level": "L0", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sm3 eb6e82ca5c687173ed2ef6863ced1b11777fdf9d5506b623f0016c65f9245eba", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-SM2-SM3 v1/1800/x-wop-content-digest;x-wop-nonce;x-wop-timestamp/AAH4UWFuBv0PfMvMBJDaRfKd5oZ-xWD4lH7zz3b9VkD6-ffnF2Z2e6UbO3qUzWWwpQUdbsBPuZOHcsJJJNJT5otQ", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9" - }, - "expect": { - "ok": false, - "errorClass": "protocol" - } - }, - { - "id": "n09-digest-missing", - "kind": "verify-negative", - "suite": "WOP-RSA3072-SHA256", - "level": "L0", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-RSA3072-SHA256 v1/1800/x-wop-content-digest;x-wop-nonce;x-wop-timestamp/ZWuNlh03m0bzONzXV-5J5efUFzsl1gctQac-iZVnA6BBYFWYvFMiriPu3sk0aKO3H99PvMc8lDHJi3eq0wRgbEIjU5NyMs9ZVSyCO8lq6Yn9nhGP24jIfT7gerOgF2yE3Z64w5ioo1MxzvKyuznjQvvenMaAoNvQalqT0UTyH-cxkD_XbMBbGvgxpOR6m5aMaulugPXQSAsSySptvJEq15TmjJsNn2CEdeFFrGWwU1yxBzvnOjgPnefuGU63Wq_CgOue5wSP8bv9R3HotaPifjR7V4EoCIpH2sbPhHRTefrUPcNg_ZFhnv2YocGtl0CxN-M_Kqf2MJmJ9VG5BFPfZCGPBSApO02eSXRIbkJIE1xIbweIXTO89fhbd5wZ9t8ifHQE-Ot6lQvfpVAC2QTzbcgd2nFhChPYys-FUh03ex6pHCCSCnNAV8bmp7O-GPsrdItqNoeWr1wsOH1AEejUb02z3T-FNKwBTqmiX_BlfoR6Qa3eCh5lbWzpyInJFf5O", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9" - }, - "expect": { - "ok": false, - "errorClass": "digest-mismatch" - } - }, - { - "id": "n10-digest-not-signed", - "kind": "verify-negative", - "suite": "WOP-RSA3072-SHA256", - "level": "L0", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sha-256 b1ebae5d6b42af9dd56099e47d217270f6c86990531475c0c39765a5b358833b", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-RSA3072-SHA256 v1/1800/x-wop-nonce;x-wop-timestamp/ZWuNlh03m0bzONzXV-5J5efUFzsl1gctQac-iZVnA6BBYFWYvFMiriPu3sk0aKO3H99PvMc8lDHJi3eq0wRgbEIjU5NyMs9ZVSyCO8lq6Yn9nhGP24jIfT7gerOgF2yE3Z64w5ioo1MxzvKyuznjQvvenMaAoNvQalqT0UTyH-cxkD_XbMBbGvgxpOR6m5aMaulugPXQSAsSySptvJEq15TmjJsNn2CEdeFFrGWwU1yxBzvnOjgPnefuGU63Wq_CgOue5wSP8bv9R3HotaPifjR7V4EoCIpH2sbPhHRTefrUPcNg_ZFhnv2YocGtl0CxN-M_Kqf2MJmJ9VG5BFPfZCGPBSApO02eSXRIbkJIE1xIbweIXTO89fhbd5wZ9t8ifHQE-Ot6lQvfpVAC2QTzbcgd2nFhChPYys-FUh03ex6pHCCSCnNAV8bmp7O-GPsrdItqNoeWr1wsOH1AEejUb02z3T-FNKwBTqmiX_BlfoR6Qa3eCh5lbWzpyInJFf5O", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9" - }, - "expect": { - "ok": false, - "errorClass": "protocol" - } - }, - { - "id": "n11-suite-mismatch", - "kind": "verify-negative", - "suite": "WOP-RSA3072-SHA256", - "level": "L0", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sha-256 b1ebae5d6b42af9dd56099e47d217270f6c86990531475c0c39765a5b358833b", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-RSA4096-SHA256 v1/1800/x-wop-content-digest;x-wop-nonce;x-wop-timestamp/ZWuNlh03m0bzONzXV-5J5efUFzsl1gctQac-iZVnA6BBYFWYvFMiriPu3sk0aKO3H99PvMc8lDHJi3eq0wRgbEIjU5NyMs9ZVSyCO8lq6Yn9nhGP24jIfT7gerOgF2yE3Z64w5ioo1MxzvKyuznjQvvenMaAoNvQalqT0UTyH-cxkD_XbMBbGvgxpOR6m5aMaulugPXQSAsSySptvJEq15TmjJsNn2CEdeFFrGWwU1yxBzvnOjgPnefuGU63Wq_CgOue5wSP8bv9R3HotaPifjR7V4EoCIpH2sbPhHRTefrUPcNg_ZFhnv2YocGtl0CxN-M_Kqf2MJmJ9VG5BFPfZCGPBSApO02eSXRIbkJIE1xIbweIXTO89fhbd5wZ9t8ifHQE-Ot6lQvfpVAC2QTzbcgd2nFhChPYys-FUh03ex6pHCCSCnNAV8bmp7O-GPsrdItqNoeWr1wsOH1AEejUb02z3T-FNKwBTqmiX_BlfoR6Qa3eCh5lbWzpyInJFf5O", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9" - }, - "expect": { - "ok": false, - "errorClass": "protocol" - } - }, - { - "id": "n12-envelope-missing-field", - "kind": "verify-negative", - "suite": "WOP-RSA3072-SHA256", - "level": "L2", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sha-256 bc685e214c7e3823df87d3befbb6610132bf9ddb55f5d2c7ebabecf9687b643a", - "X-Wop-Encrypt": "L2;dek=gZkDABfJYqdgGzgQyQlKG637TDb_yVe_xLlolEcoSquHn_Ah1vlqkUvV0avpJCTwY4kulolTxCOe56GawVhIoxsPbssvgkGGA_7xe2T4Nilp88_s9y-4PEYalbQcGaejJowGoRLjOLduBVExIYCD-DJ1c4b9U6badh0evEP2ELfxAwS7hiGjnYnyN1Dx23FOXUaSOHF0eFmpOsjrh2cQ34BZZDUvt8sySFsYCar0YWDSX-MWim22M2HmR8XGbv-FVuf6BWbOrozBv8jj9Njzng4I0c5ykFL2_ge6OrY3BMjhwqRvAOJZExixhYutw8fI_JMxwhpOLKKBieaXW-gQ00YkSg1LAbWAsvXIoeZtkakcRkKmmcG7zB7GZTIWkz0cB8jfMKJ4vAdQd3edUFQcOEwTjgu61oaT_yi0cY7BN_xVXx1miVgpbE5rodXPV0k_pPB7YCdw_O_PFHqbZw-IMjmQC9Zq8oL8dVsHNd0fKNq7aWnpaRui3SAQGJPzN_0o", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-RSA3072-SHA256 v1/1800/x-wop-content-digest;x-wop-encrypt;x-wop-nonce;x-wop-timestamp/D-zHKBHajCNZMy7HgYpkWDpOsVVx4L0JyIZ7d03ZgAbqb13uIr_Y-isByTGtuUSHN6ihWZ9t0fBYisr_0kCxoXsyWO30JdnqXp_X7gJkGfrfh4gSVijtASMyHzkHZEHARFiyZeskMN9qyeiTR8-zNsNkia2DOvJK-wBabQkpodrRKmmbbShBfAn_XAstxcVGih5FTyLQA9__b-Sk5EnNnwff2kPOdba2pslj__GhQag6-4e7mb2My9v1gkn3RXZUZe0ZV5987K65nxjHZrz9fg3Oql6vO00yAJzBEcHKg5hfg8rxg6HE1qgRC_gfTbgMju4VSkgTb6Harrzbye475z9yP_H5p3SEGLqzZoFROJNZK3UoFhCxl4EST7kZbe202_GHuaipIAk4sU-OEOTh5Oqkd-XvYc5w22O0_6LLU-7Mm7seXfdPjBfLnAHR3I88YjEBANkfQ6KydOXiscTClgGik9kOMnP7cMCiKmNF3vJAXqdlJ-Q7KPo-Zm4kCBPB", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJkYXRhIjoibm8tZW5jcnlwdGVkLWZpZWxkIn0" - }, - "expect": { - "ok": false, - "errorClass": "protocol" - } - }, - { - "id": "n13-dek-key-length", - "kind": "verify-negative", - "suite": "WOP-RSA3072-SHA256", - "level": "L2", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sha-256 b970d7112a5da27b0dbe5a246ff4e4f504f11d032fc25862abe93752a8e5b393", - "X-Wop-Encrypt": "L2;dek=W85hWxo6phT_jEeklLfU8_pCLbPjddgQSjjnoZWXxwpcrkFczrHRzPvU2Qnzm55Lf_7PLjupw48moT0mJi6a2QugQYpDS6Cf0BwJlDTe1x8YTieaYqnJaqu64egzi2ePIZCbwXeJ7U52hYOQUQUDxL0waHXUcDmKWc_GqnkwYgmkfNkonkpAVVQqYmUhfrth0e22wOvG61dXwPa04YNZLwBDTzSTOtr5myRjDie_MHohQXs4UyiUUVgunbkeRhSyZwvC-9cL38YhO3EfiUPbe_Y_EQZSxQG1_R2iNn64fwOKax0dLfDVNLpav9i0LwMoO-reXnmt4s_BZL0iRzF4eSB4MgB5XucjU8kWlC-iPZA__jd8tLOy2tHkAuFu6HlRAUc0g624EhTj7GJCAUzg4wwzxq_DRD7uJSd-ruaYzWp2WPYUUbiqb5B1mvAnCoA5d7qHhZ9TmTtQPwi3D2awjRPiglZn5QgH4wZA4cEqSehlCYivfLp6dQNXDJ4K_OPb", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-RSA3072-SHA256 v1/1800/x-wop-content-digest;x-wop-encrypt;x-wop-nonce;x-wop-timestamp/hhi0C75x7lfy6ORvXhHQh01fcHtsL4ibTfJY-se68FH6G2aYqrkxBPR80dtsW1Xcim376U1gbJWODM34y2eZXIlVveLudVCeKs35U-I0FkwfiZbAw-f6YhhoOZnFZOnKcbvad_Td5J_2V9CKTzbGxJhAphM-30XDetNP6DHoDN5jiNKpMh8vlOB2ql1Ji-zGH7_SjHw6mQ-Rw2YBJL5jd9rRB2-OMgM1sTTeRTogh4pZtpD-EMWibanD0uqmeyRYrhNpNI7X-qxNN-fgprUwvOJuBKAZPAfTY7p_BbT_64TSCiGaTxVvEhpips6KV8PTKvcApCuB9L7i--SGDudtUtmgRR2hp48eTtIQX7Q4tsmS0Wu_6Bu9AxK2rMu-ZqWrVHRZzE6ica3eRXCNuFl5UmxRDkSSACyZmUqyezASDu3CbezsQgWBSXcoOmAanUAWQGJf0PAmv7IzUCBxSFCukDj0vwM395W9ZMv0cWoAgCHJzAL3OFv-DtfiXEh3_OFk", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJlbmNyeXB0ZWQiOiJjTUJRUDRfS0xCUzNtaGhOZi12UlRqVEdvUjc4YWZTMGt1T3VuWjdtUF9qN3lIMi11dyJ9" - }, - "expect": { - "ok": false, - "errorClass": "decrypt-failed" - } - }, - { - "id": "n14-missing-signed-header", - "kind": "verify-negative", - "suite": "WOP-RSA3072-SHA256", - "level": "L0", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sha-256 b1ebae5d6b42af9dd56099e47d217270f6c86990531475c0c39765a5b358833b", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-RSA3072-SHA256 v1/1800/x-wop-content-digest;x-wop-nonce;x-wop-timestamp;x-wop-extra/ZWuNlh03m0bzONzXV-5J5efUFzsl1gctQac-iZVnA6BBYFWYvFMiriPu3sk0aKO3H99PvMc8lDHJi3eq0wRgbEIjU5NyMs9ZVSyCO8lq6Yn9nhGP24jIfT7gerOgF2yE3Z64w5ioo1MxzvKyuznjQvvenMaAoNvQalqT0UTyH-cxkD_XbMBbGvgxpOR6m5aMaulugPXQSAsSySptvJEq15TmjJsNn2CEdeFFrGWwU1yxBzvnOjgPnefuGU63Wq_CgOue5wSP8bv9R3HotaPifjR7V4EoCIpH2sbPhHRTefrUPcNg_ZFhnv2YocGtl0CxN-M_Kqf2MJmJ9VG5BFPfZCGPBSApO02eSXRIbkJIE1xIbweIXTO89fhbd5wZ9t8ifHQE-Ot6lQvfpVAC2QTzbcgd2nFhChPYys-FUh03ex6pHCCSCnNAV8bmp7O-GPsrdItqNoeWr1wsOH1AEejUb02z3T-FNKwBTqmiX_BlfoR6Qa3eCh5lbWzpyInJFf5O", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9" - }, - "expect": { - "ok": false, - "errorClass": "protocol" - } - }, - { - "id": "n15-digest-without-body", - "kind": "verify-negative", - "suite": "WOP-RSA3072-SHA256", - "level": "L0", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sha-256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-RSA3072-SHA256 v1/1800/x-wop-nonce;x-wop-timestamp/VmwmW01Wt7bCBbhAr4mdVt1wY3hq-_KM_vQBRaG-ASg8KJApJrX10mF_JZYZ0kS9TDDfuqBAqvZepCO_68Bb4XmjulPeOu4vnDmviqq8gGg4rPkPBM16RmmT5g6AZESCYfhOUP_GIw5o95yBg9Ouwxn40d3VMNPzvfgGDflgQNlavROIKi0mnJkxpMLq3n60vQKDdj_4QmeZrB7dKcmgjnLhwNxF2U9lGnPSQnKfVgLUgUZsMQpENS9D3rdTOnKgH9H7xvd-PKPpQ182fGAk5CxZ0OHbR1ojxIgd8pgSNLUy8p_TEcYc1W5lQfQpCUem2RD55MiY79iO5LdaXQDDQluGvbOymNo3eUbyQDFlbnt32pZt6Q4Nq5ZHiKht5gnbIf4E2CQ0SbmSSCaOx_f2Ae_XFRjtTHPsFRAJlcXwkAdb0_TFrR_zd4JRJt1FgBeefGgka9uZ6vdbwUlTb_kRrUfkZu7bKq6_PIiG3g94vWT1vtEMLXUVr-7MZ2gaNr3_", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "" - }, - "expect": { - "ok": false, - "errorClass": "protocol" - } - }, - { - "id": "n17-encrypt-missing-dek", - "kind": "verify-negative", - "suite": "WOP-RSA3072-SHA256", - "level": "L2", - "response": { - "method": "POST", - "path": "/gateway/interop.echo", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sha-256 6ef28c57955ee7db10e90098046d9e8dcdbb1757e5eb7c4a9828f69397aeb37b", - "X-Wop-Encrypt": "L2", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-RSA3072-SHA256 v1/1800/x-wop-content-digest;x-wop-encrypt;x-wop-nonce;x-wop-timestamp/em8KvYeSvAdH4yfRfoIqbxnTj8AlvENZP_yMxWLsXN9ERHEXj7ryMls34fQiM15RRbxHy-UE8Uo1GKmfySMF1i8bAXso-GDEXN2OmK9Veq9RDPIYKp9PK0Bef36nDWhQ91znYdXtmIzieltnH7wj3xg2mFvOwqV0mvI0e45PfFxevCDGaLaY0OjT3mKNMS4C6D-fYnFicjEw1mSrCLnavEk9J_7rleW96wKwia-NdsZBm2PFBOL4h21W8_1hEfTJRtTO9-AD1xnbY2yEfpAlMcw00Xq1ADVwr2CiHHTG3ZUDz2g-VmmrK0yj0tujyBf3qfHK0A1q23lA6ZZh1H7bQW7a_r-4QIlruRkDf7u86vayqU8JvQKYSm1NlvBIFIe5MpfiC5bqJ-uaONEvpBqwPMtQWR5UAkPB17Hkn_6q04ublfvVVy85-lL2UTsbfvNvt_O8Q8RZFbVmPqXCukrv17If1HpKGT9REzrEk_1hys0CHfyN2WIvPH9-hUOWJy4O", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJlbmNyeXB0ZWQiOiJLd3lGTlg5ZmR0M3pPNDcwT3NnemYwSjBQQUoyWVp3ZGgtSldnVlRCalZ3M3BTS1hQZyJ9" - }, - "expect": { - "ok": false, - "errorClass": "protocol" - } - }, - { - "id": "n16-replay-cross-path", - "kind": "verify-negative", - "suite": "WOP-RSA3072-SHA256", - "level": "L0", - "response": { - "method": "POST", - "path": "/gateway/pay", - "appKey": "app_interop_001", - "headers": { - "X-Wop-Content-Digest": "sha-256 b1ebae5d6b42af9dd56099e47d217270f6c86990531475c0c39765a5b358833b", - "X-Wop-Nonce": "interop-resp-nonce-0001", - "X-Wop-Sign": "WOP-RSA3072-SHA256 v1/1800/x-wop-content-digest;x-wop-nonce;x-wop-timestamp/cRlQLWVe95ztade0cDBGi8FTfYQepDs3pP3KyGbGWpXSuzVKQDlqso5djZGsATAwRaX0eIfrooakh4GmKDluHKRj_Bi0QyQvyBeCDHQAGfznYdFQVZc9YUtk74cs_y5Hc11eJk_oOZaeMIHcG5wuvTfStrVbTGeVn1xjTIFBQA4U3lCfRyQe45PHo4gMt-H3jbEqcQ9w28LsOsgqvDxMVqA0WmxxNZtRSx-GYWDxPHj_CibKlz2oJBA9frXTU9N4zpD7Vu6lThqJc6VlvdDAxnLAiTYwuH61Ezl4wMDqe6kg292QXJ4l-cB3rpX5ehsxKYADn6PZQNbCl4m7nU4VQ9iMBhXam8hX1b5z9nfYtekINrlh-as969gH7EJZkxvlIoVXwkciAxFMlvfr6sc_vxgTgVvuKrAhJFLg3HjgCwdE8sEvtt5o6blQqYvTpKGceNIyNSYEEsOC2v64dyCaYVLoQZ76y2kowjhcUo8npLt_gFtpRapiMaB3H7RcKtuC", - "X-Wop-Timestamp": "1755900000000" - }, - "wireBodyB64": "eyJrIjoiaW50ZXJvcCIsIm4iOjF9" - }, - "verifyPath": "/gateway/refund", - "expect": { - "ok": false, - "errorClass": "verify-failed" - } - } - ] -}