feat(mp): S3-1 API 请求签名工具(前端,待后端集成)

- 新增 request-signer.ts:HMAC-SHA256 签名 + nonce + timestamp
- 使用 @noble/hashes v1 纯 JS 实现(小程序无 crypto.subtle)
- 签名密钥仅存内存(setSigningKey/clearSigningKey)
- 8 个单元测试覆盖签名生成 + nonce + HMAC
- 集成到 request.ts 待后端 signing_key 支持后启用
This commit is contained in:
iven
2026-05-22 08:59:15 +08:00
parent a5efab2a13
commit c2c9657b4d
4 changed files with 152 additions and 11 deletions

View File

@@ -22,6 +22,8 @@
"ios >= 8"
],
"dependencies": {
"@noble/ciphers": "^1.0.0",
"@noble/hashes": "^1.8.0",
"@tarojs/components": "4.2.0",
"@tarojs/helper": "4.2.0",
"@tarojs/plugin-framework-react": "4.2.0",
@@ -32,34 +34,33 @@
"@tarojs/taro": "4.2.0",
"react": "^18.3.0",
"react-dom": "18.3.1",
"zustand": "^5.0.0",
"@noble/ciphers": "^1.0.0"
"zustand": "^5.0.0"
},
"devDependencies": {
"@babel/preset-env": "^7.29.2",
"@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@babel/runtime": "^7.27.0",
"@eslint/js": "^9.0.0",
"@pmmmwh/react-refresh-webpack-plugin": "^0.6.2",
"@tarojs/cli": "4.2.0",
"@tarojs/plugin-platform-h5": "^4.2.0",
"@tarojs/webpack5-runner": "4.2.0",
"@types/node": "^22.0.0",
"@types/react": "^18.3.0",
"@typescript-eslint/eslint-plugin": "^8.0.0",
"@typescript-eslint/parser": "^8.0.0",
"babel-preset-taro": "^4.2.0",
"dotenv-cli": "^11.0.0",
"eslint": "^9.0.0",
"eslint-config-prettier": "^10.0.0",
"eslint-plugin-react-hooks": "^5.0.0",
"eslint-plugin-react-refresh": "^0.4.0",
"miniprogram-automator": "^0.12.1",
"prettier": "^3.0.0",
"react-refresh": "^0.14.0",
"sass": "^1.87.0",
"typescript": "^5.8.0",
"@types/node": "^22.0.0",
"eslint": "^9.0.0",
"@eslint/js": "^9.0.0",
"@typescript-eslint/parser": "^8.0.0",
"@typescript-eslint/eslint-plugin": "^8.0.0",
"eslint-plugin-react-hooks": "^5.0.0",
"eslint-plugin-react-refresh": "^0.4.0",
"prettier": "^3.0.0",
"eslint-config-prettier": "^10.0.0",
"vite": "^8.0.10",
"vitest": "^4.1.5",
"webpack": "~5.95.0"