@quantabit/security-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +126 -0
- package/dist/index.cjs +1474 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.esm.js +1444 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/styles.css +1 -0
- package/package.json +90 -0
- package/types/index.d.ts +97 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/services/securityApi.js","../src/i18n/index.js","../src/utils/fingerprint.js","../src/context/SecurityContext.jsx","../src/components/RiskBadge.jsx","../src/components/VerificationModal.jsx","../src/utils/crypto.js","../src/utils/signer.js","../src/types/index.js","../src/index.js"],"sourcesContent":["/**\n * Security SDK - API 客户端\n * 安全系统后端接口封装\n * \n * 使用 BaseApiClient 基类简化代码\n */\n\nimport { BaseApiClient } from '@quantabit/sdk-config';\n\n/**\n * 安全 API 客户端\n */\nexport class SecurityApiClient extends BaseApiClient {\n constructor(config = {}) {\n super('/security', config);\n }\n\n // ============ 密码管理 ============\n\n /**\n * 修改密码\n * @param {string} oldPassword - 旧密码\n * @param {string} newPassword - 新密码\n */\n async changePassword(oldPassword, newPassword) {\n return this.post('/password/change', {\n old_password: oldPassword,\n new_password: newPassword,\n });\n }\n\n /**\n * 重置密码\n * @param {string} token - 重置 Token\n * @param {string} newPassword - 新密码\n */\n async resetPassword(token, newPassword) {\n return this.post('/password/reset', { token, new_password: newPassword });\n }\n\n /**\n * 发送重置密码邮件\n * @param {string} email - 邮箱\n */\n async sendPasswordResetEmail(email) {\n return this.post('/password/forgot', { email });\n }\n\n /**\n * 验证密码强度\n * @param {string} password - 密码\n */\n async checkPasswordStrength(password) {\n return this.post('/password/strength', { password });\n }\n\n // ============ 双因素认证 ============\n\n /**\n * 获取 2FA 状态\n */\n async get2FAStatus() {\n return this.get('/2fa/status');\n }\n\n /**\n * 启用 2FA\n * @param {string} type - 类型(totp, sms, email)\n */\n async enable2FA(type) {\n return this.post('/2fa/enable', { type });\n }\n\n /**\n * 验证并激活 2FA\n * @param {string} code - 验证码\n */\n async verify2FA(code) {\n return this.post('/2fa/verify', { code });\n }\n\n /**\n * 禁用 2FA\n * @param {string} code - 验证码\n */\n async disable2FA(code) {\n return this.post('/2fa/disable', { code });\n }\n\n /**\n * 获取备份码\n */\n async getBackupCodes() {\n return this.get('/2fa/backup-codes');\n }\n\n /**\n * 重新生成备份码\n */\n async regenerateBackupCodes() {\n return this.post('/2fa/backup-codes/regenerate');\n }\n\n // ============ 登录安全 ============\n\n /**\n * 获取登录历史\n * @param {Object} params - 查询参数\n */\n async getLoginHistory(params = {}) {\n return this.get('/login/history', params);\n }\n\n /**\n * 获取活动设备\n */\n async getActiveDevices() {\n return this.get('/devices');\n }\n\n /**\n * 登出设备\n * @param {string} deviceId - 设备 ID\n */\n async logoutDevice(deviceId) {\n return this.post(`/devices/${deviceId}/logout`);\n }\n\n /**\n * 登出所有设备\n */\n async logoutAllDevices() {\n return this.post('/devices/logout-all');\n }\n\n /**\n * 信任设备\n * @param {string} deviceId - 设备 ID\n */\n async trustDevice(deviceId) {\n return this.post(`/devices/${deviceId}/trust`);\n }\n\n // ============ 安全设置 ============\n\n /**\n * 获取安全设置\n */\n async getSecuritySettings() {\n return this.get('/settings');\n }\n\n /**\n * 更新安全设置\n * @param {Object} settings - 设置数据\n */\n async updateSecuritySettings(settings) {\n return this.put('/settings', settings);\n }\n\n /**\n * 获取登录通知设置\n */\n async getLoginNotificationSettings() {\n return this.get('/settings/login-notification');\n }\n\n /**\n * 更新登录通知设置\n * @param {Object} settings - 设置数据\n */\n async updateLoginNotificationSettings(settings) {\n return this.put('/settings/login-notification', settings);\n }\n\n // ============ 安全检查 ============\n\n /**\n * 安全状态检查\n */\n async getSecurityStatus() {\n return this.get('/status');\n }\n\n /**\n * 获取安全建议\n */\n async getSecurityRecommendations() {\n return this.get('/recommendations');\n }\n\n /**\n * 获取安全事件\n * @param {Object} params - 查询参数\n */\n async getSecurityEvents(params = {}) {\n return this.get('/events', params);\n }\n\n // ============ 恢复选项 ============\n\n /**\n * 获取恢复选项\n */\n async getRecoveryOptions() {\n return this.get('/recovery/options');\n }\n\n /**\n * 设置恢复邮箱\n * @param {string} email - 恢复邮箱\n */\n async setRecoveryEmail(email) {\n return this.post('/recovery/email', { email });\n }\n\n /**\n * 设置恢复手机\n * @param {string} phone - 恢复手机\n */\n async setRecoveryPhone(phone) {\n return this.post('/recovery/phone', { phone });\n }\n\n /**\n * 设置安全问题\n * @param {Object[]} questions - 安全问题列表\n */\n async setSecurityQuestions(questions) {\n return this.post('/recovery/questions', { questions });\n }\n}\n\n// 创建默认实例\nexport const securityApi = new SecurityApiClient();\n\n\n\nexport default securityApi;\n","/**\n * Security SDK - 国际化 i18n\n */\n\nexport const SUPPORTED_LANGUAGES = ['en', 'zh', 'ja', 'ko'];\n\nexport const messages = {\n zh: {\n loading: '加载中...',\n security: '安全中心',\n riskControl: '风控中心',\n \n // 风险等级\n riskLow: '低风险',\n riskMedium: '中风险',\n riskHigh: '高风险',\n riskCritical: '极高风险',\n \n // 风险类型\n riskLogin: '登录异常',\n riskTransaction: '交易风险',\n riskAccount: '账户安全',\n riskDevice: '设备异常',\n riskBehavior: '行为异常',\n riskContent: '内容违规',\n \n // 状态\n statusNormal: '正常',\n statusWarning: '警告',\n statusBlocked: '已拦截',\n statusReview: '人工审核',\n \n // 设备指纹\n deviceFingerprint: '设备指纹',\n deviceInfo: '设备信息',\n trustedDevices: '信任设备',\n currentDevice: '当前设备',\n newDevice: '新设备',\n \n // 操作\n verify: '验证',\n block: '拦截',\n allow: '放行',\n review: '审核',\n appeal: '申诉',\n \n // 安全设置\n securitySettings: '安全设置',\n loginProtection: '登录保护',\n paymentProtection: '支付保护',\n antiTheft: '防盗保护',\n \n // 验证\n captcha: '验证码',\n smsCode: 'SMS验证',\n emailCode: '邮箱验证',\n twoFactor: '两步验证',\n \n // 提示\n riskDetected: '检测到风险',\n pleaseVerify: '请完成验证',\n verifySuccess: '验证成功',\n blocked: '操作已拦截',\n },\n \n en: {\n loading: 'Loading...',\n security: 'Security Center',\n riskControl: 'Risk Control',\n \n riskLow: 'Low Risk',\n riskMedium: 'Medium Risk',\n riskHigh: 'High Risk',\n riskCritical: 'Critical',\n \n riskLogin: 'Login Anomaly',\n riskTransaction: 'Transaction Risk',\n riskAccount: 'Account Security',\n riskDevice: 'Device Anomaly',\n riskBehavior: 'Behavior Anomaly',\n riskContent: 'Content Violation',\n \n statusNormal: 'Normal',\n statusWarning: 'Warning',\n statusBlocked: 'Blocked',\n statusReview: 'Under Review',\n \n deviceFingerprint: 'Device Fingerprint',\n deviceInfo: 'Device Info',\n trustedDevices: 'Trusted Devices',\n currentDevice: 'Current Device',\n newDevice: 'New Device',\n \n verify: 'Verify',\n block: 'Block',\n allow: 'Allow',\n review: 'Review',\n appeal: 'Appeal',\n \n securitySettings: 'Security Settings',\n loginProtection: 'Login Protection',\n paymentProtection: 'Payment Protection',\n antiTheft: 'Anti-Theft',\n \n captcha: 'CAPTCHA',\n smsCode: 'SMS Code',\n emailCode: 'Email Code',\n twoFactor: '2FA',\n \n riskDetected: 'Risk Detected',\n pleaseVerify: 'Please verify',\n verifySuccess: 'Verified',\n blocked: 'Action blocked',\n },\n ja: {\n loading: '読み込み中...',\n security: 'セキュリティセンター',\n riskControl: 'リスクコントロール',\n \n riskLow: '低リスク',\n riskMedium: '中リスク',\n riskHigh: '高リスク',\n riskCritical: '重大',\n \n riskLogin: 'ログイン異常',\n riskTransaction: '取引リスク',\n riskAccount: 'アカウントセキュリティ',\n riskDevice: 'デバイス異常',\n riskBehavior: '動作異常',\n riskContent: 'コンテンツ違反',\n \n statusNormal: '正常',\n statusWarning: '警告',\n statusBlocked: 'ブロック済み',\n statusReview: '審査中',\n \n deviceFingerprint: 'デバイス指紋',\n deviceInfo: 'デバイス情報',\n trustedDevices: '信頼済みデバイス',\n currentDevice: '現在のデバイス',\n newDevice: '新しいデバイス',\n \n verify: '確認',\n block: 'ブロック',\n allow: '許可',\n review: '審査',\n appeal: '異議申し立て',\n \n securitySettings: 'セキュリティ設定',\n loginProtection: 'ログイン保護',\n paymentProtection: '支払い保護',\n antiTheft: '盗難防止',\n \n captcha: 'キャプチャ',\n smsCode: 'SMSコード',\n emailCode: 'メールコード',\n twoFactor: '2段階認証',\n \n riskDetected: 'リスクが検出されました',\n pleaseVerify: '確認してください',\n verifySuccess: '確認成功',\n blocked: 'アクションがブロックされました',\n },\n ko: {\n loading: '로딩 중...',\n security: '보안 센터',\n riskControl: '위험 관리',\n \n riskLow: '낮은 위험',\n riskMedium: '중간 위험',\n riskHigh: '높은 위험',\n riskCritical: '치명적',\n \n riskLogin: '로그인 이상',\n riskTransaction: '거래 위험',\n riskAccount: '계정 보안',\n riskDevice: '기기 이상',\n riskBehavior: '동작 이상',\n riskContent: '콘텐츠 위반',\n \n statusNormal: '정상',\n statusWarning: '경고',\n statusBlocked: '차단됨',\n statusReview: '검토 중',\n \n deviceFingerprint: '기기 지문',\n deviceInfo: '기기 정보',\n trustedDevices: '신뢰할 수 있는 기기',\n currentDevice: '현재 기기',\n newDevice: '새 기기',\n \n verify: '확인',\n block: '차단',\n allow: '허용',\n review: '검토',\n appeal: '이의 제기',\n \n securitySettings: '보안 설정',\n loginProtection: '로그인 보호',\n paymentProtection: '결제 보호',\n antiTheft: '도난 방지',\n \n captcha: '보안 문자',\n smsCode: 'SMS 코드',\n emailCode: '이메일 코드',\n twoFactor: '2단계 인증',\n \n riskDetected: '위험 감지됨',\n pleaseVerify: '확인해주세요',\n verifySuccess: '확인 성공',\n blocked: '작업이 차단되었습니다',\n },\n};\n\nlet currentLanguage = 'zh';\n\nexport function setLanguage(lang) {\n if (SUPPORTED_LANGUAGES.includes(lang)) currentLanguage = lang;\n}\n\nexport function getLanguage() {\n return currentLanguage;\n}\n\nexport function t(key, params) {\n const msgs = messages[getLanguage()] || messages.zh;\n let text = msgs[key] || key;\n if (params) {\n Object.keys(params).forEach(k => {\n text = text.replace(new RegExp(`\\\\{${k}\\\\}`, 'g'), params[k]);\n });\n }\n return text;\n}\n\nexport default { messages, SUPPORTED_LANGUAGES, setLanguage, getLanguage, t };\n","/**\n * Security SDK - 设备指纹 (隐私合规增强版)\n * \n * ⚠️ 设备指纹属于 essential 级别(安全必需),但收集深度据 consent 策略分级:\n * - essential: 仅收集基础安全信息(UA, 屏幕, 时区)\n * - functional: 收集增强信息(Canvas, WebGL, 插件等)\n * - analytics: 完整指纹信息\n * \n * 遵循 DNT (Do Not Track) 信号\n */\n\nimport { consentManager, logger } from '@quantabit/sdk-config';\n\nconst SDK_NAME = 'security-sdk';\n\n/**\n * 设备指纹生成器\n */\nclass DeviceFingerprintClass {\n constructor() {\n this.cachedFingerprint = null;\n this.components = {};\n }\n\n /**\n * 获取设备指纹\n * @param {object} options - 选项\n * @param {boolean} options.respectDNT - 是否尊重 DNT 信号 (默认 true)\n * @param {boolean} options.minimal - 是否仅收集最小信息集 (默认 false)\n */\n async getFingerprint(options = {}) {\n const { respectDNT = true, minimal = false } = options;\n\n if (this.cachedFingerprint) {\n return this.cachedFingerprint;\n }\n\n // 检查 DNT (Do Not Track) 信号\n if (respectDNT && typeof navigator !== 'undefined' && navigator.doNotTrack === '1') {\n logger.debug(`[${SDK_NAME}] DNT 信号已检测,使用最小化指纹`);\n await this.collectMinimalComponents();\n } else if (minimal) {\n await this.collectMinimalComponents();\n } else {\n await this.collectComponents();\n }\n \n const fingerprintData = JSON.stringify(this.components);\n const hash = await this.hash(fingerprintData);\n \n this.cachedFingerprint = hash;\n return hash;\n }\n\n /**\n * 获取指纹组件\n */\n getComponents() {\n return this.components;\n }\n\n /**\n * 收集最小化组件 — essential 级别\n * 仅包含安全验证所必需的基础信息,不含高侵入性指纹\n */\n async collectMinimalComponents() {\n if (typeof window === 'undefined') {\n this.components = { server: true };\n return;\n }\n\n this.components = {\n // 基础安全信息\n screenWidth: screen.width,\n screenHeight: screen.height,\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n timezoneOffset: new Date().getTimezoneOffset(),\n language: navigator.language,\n platform: navigator.platform,\n // 不收集 Canvas、WebGL、插件等高侵入性指纹\n };\n }\n\n /**\n * 收集完整设备信息组件\n * 据 ConsentManager 状态分级收集\n */\n async collectComponents() {\n if (typeof window === 'undefined') {\n this.components = { server: true };\n return;\n }\n\n consentManager.init();\n const hasFunctional = consentManager.hasConsent('functional');\n const hasAnalytics = consentManager.hasConsent('analytics');\n\n // === essential 层 — 始终收集 ===\n this.components = {\n language: navigator.language,\n platform: navigator.platform,\n screenWidth: screen.width,\n screenHeight: screen.height,\n screenDepth: screen.colorDepth,\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n timezoneOffset: new Date().getTimezoneOffset(),\n doNotTrack: navigator.doNotTrack,\n };\n\n // === functional 层 — 需要 functional 同意 ===\n if (hasFunctional) {\n Object.assign(this.components, {\n userAgent: navigator.userAgent,\n languages: navigator.languages?.join(','),\n screenPixelRatio: window.devicePixelRatio,\n hardwareConcurrency: navigator.hardwareConcurrency,\n deviceMemory: navigator.deviceMemory,\n touchSupport: this.getTouchSupport(),\n localStorage: this.hasLocalStorage(),\n sessionStorage: this.hasSessionStorage(),\n indexedDB: this.hasIndexedDB(),\n });\n }\n\n // === analytics 层 — 需要 analytics 同意 ===\n if (hasAnalytics) {\n const canvas = await this.getCanvasFingerprint();\n const webgl = this.getWebGLInfo();\n const plugins = this.getPlugins();\n\n Object.assign(this.components, {\n canvas,\n webgl,\n plugins,\n });\n }\n }\n\n /**\n * Canvas指纹\n */\n async getCanvasFingerprint() {\n try {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n \n if (!ctx) return null;\n\n canvas.width = 200;\n canvas.height = 50;\n\n ctx.textBaseline = 'alphabetic';\n ctx.fillStyle = '#f60';\n ctx.fillRect(125, 1, 62, 20);\n ctx.fillStyle = '#069';\n ctx.font = '11pt Arial';\n ctx.fillText('QuantaBit <canvas> 1.0', 2, 15);\n ctx.fillStyle = 'rgba(102, 204, 0, 0.7)';\n ctx.font = '18pt Arial';\n ctx.fillText('QuantaBit <canvas> 1.0', 4, 45);\n\n const dataUrl = canvas.toDataURL();\n return await this.hash(dataUrl);\n } catch (e) {\n return null;\n }\n }\n\n /**\n * WebGL信息\n */\n getWebGLInfo() {\n try {\n const canvas = document.createElement('canvas');\n const gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\n \n if (!gl) return null;\n\n const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');\n \n return {\n vendor: gl.getParameter(gl.VENDOR),\n renderer: debugInfo ? gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL) : null,\n version: gl.getParameter(gl.VERSION),\n };\n } catch (e) {\n return null;\n }\n }\n\n /**\n * 触摸支持\n */\n getTouchSupport() {\n return {\n maxTouchPoints: navigator.maxTouchPoints || 0,\n touchEvent: 'ontouchstart' in window,\n touchPoints: navigator.msMaxTouchPoints || 0,\n };\n }\n\n /**\n * 插件列表\n */\n getPlugins() {\n const plugins = [];\n for (let i = 0; i < navigator.plugins.length; i++) {\n plugins.push({\n name: navigator.plugins[i].name,\n filename: navigator.plugins[i].filename,\n });\n }\n return plugins.slice(0, 10);\n }\n\n /**\n * 存储检测\n */\n hasLocalStorage() {\n try {\n localStorage.setItem('test', 'test');\n localStorage.removeItem('test');\n return true;\n } catch (e) {\n return false;\n }\n }\n\n hasSessionStorage() {\n try {\n sessionStorage.setItem('test', 'test');\n sessionStorage.removeItem('test');\n return true;\n } catch (e) {\n return false;\n }\n }\n\n hasIndexedDB() {\n return !!window.indexedDB;\n }\n\n /**\n * 哈希函数\n */\n async hash(str) {\n const encoder = new TextEncoder();\n const data = encoder.encode(str);\n const hashBuffer = await crypto.subtle.digest('SHA-256', data);\n return Array.from(new Uint8Array(hashBuffer))\n .map(b => b.toString(16).padStart(2, '0'))\n .join('');\n }\n\n /**\n * 清除缓存的指纹\n */\n clearCache() {\n this.cachedFingerprint = null;\n this.components = {};\n }\n\n /**\n * 获取隐私说明 — 当前指纹收集的数据项说明\n * 可用于向用户展示透明度信息\n */\n getPrivacyDisclosure() {\n consentManager.init();\n const levels = [];\n \n levels.push({\n level: 'essential',\n items: ['Screen resolution', 'Timezone', 'Language', 'Platform'],\n description: 'Basic device information for security verification.',\n descriptionZh: '用于安全验证的基础设备信息。',\n });\n\n if (consentManager.hasConsent('functional')) {\n levels.push({\n level: 'functional',\n items: ['User agent', 'Hardware specs', 'Touch support', 'Storage availability'],\n description: 'Enhanced device information for better experience.',\n descriptionZh: '增强型设备信息,用于改善使用体验。',\n });\n }\n\n if (consentManager.hasConsent('analytics')) {\n levels.push({\n level: 'analytics',\n items: ['Canvas fingerprint', 'WebGL renderer', 'Browser plugins'],\n description: 'Advanced fingerprinting for fraud prevention.',\n descriptionZh: '高级指纹信息,用于反欺诈保护。',\n });\n }\n\n return levels;\n }\n}\n\nexport const deviceFingerprint = new DeviceFingerprintClass();\n\nexport { DeviceFingerprintClass };\n\nexport default deviceFingerprint;\n\n/**\n * 便捷函数 — 获取设备指纹(遵循隐私设置)\n */\nexport async function getDeviceFingerprint(options = {}) {\n return deviceFingerprint.getFingerprint(options);\n}\n","/**\n * Security SDK - Context Provider\n */\n\nimport React, { createContext, useContext, useState, useCallback, useEffect } from 'react';\nimport { securityApi } from '../services/securityApi';\nimport { setLanguage } from '../i18n';\nimport { getDeviceFingerprint } from '../utils/fingerprint';\n\nconst SecurityContext = createContext(null);\n\nexport function SecurityProvider({ \n children, \n apiUrl, \n token, \n language = 'zh',\n onRiskDetected,\n onBlocked,\n onError,\n}) {\n const [riskLevel, setRiskLevel] = useState('low');\n const [deviceId, setDeviceId] = useState(null);\n const [trustedDevices, setTrustedDevices] = useState([]);\n const [riskEvents, setRiskEvents] = useState([]);\n const [verificationRequired, setVerificationRequired] = useState(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState(null);\n\n useEffect(() => {\n if (apiUrl) securityApi.setBaseUrl(apiUrl);\n if (token) securityApi.setToken(token);\n if (language) setLanguage(language);\n\n // 初始化设备指纹\n initDeviceFingerprint();\n }, [apiUrl, token, language]);\n\n const initDeviceFingerprint = async () => {\n const fp = await getDeviceFingerprint();\n setDeviceId(fp);\n };\n\n const handleError = useCallback((err) => {\n setError(err.message);\n onError?.(err);\n }, [onError]);\n\n // 风险检测\n const checkRisk = useCallback(async (action, data = {}) => {\n setLoading(true);\n try {\n const result = await securityApi.checkRisk({\n action,\n device_id: deviceId,\n ...data,\n });\n\n setRiskLevel(result.risk_level || 'low');\n\n if (result.blocked) {\n onBlocked?.(result);\n return { allowed: false, reason: result.reason };\n }\n\n if (result.verification_required) {\n setVerificationRequired(result.verification_type);\n onRiskDetected?.(result);\n return { allowed: false, verification: result.verification_type };\n }\n\n return { allowed: true };\n } catch (err) {\n handleError(err);\n return { allowed: true }; // 风控服务异常时默认放行\n } finally {\n setLoading(false);\n }\n }, [deviceId, handleError, onBlocked, onRiskDetected]);\n\n // 完成验证\n const completeVerification = useCallback(async (type, code) => {\n setLoading(true);\n try {\n const result = await securityApi.verify({\n type,\n code,\n device_id: deviceId,\n });\n\n if (result.success) {\n setVerificationRequired(null);\n }\n\n return result;\n } catch (err) {\n handleError(err);\n throw err;\n } finally {\n setLoading(false);\n }\n }, [deviceId, handleError]);\n\n // 加载信任设备\n const loadTrustedDevices = useCallback(async () => {\n try {\n const result = await securityApi.getTrustedDevices();\n const devices = result.devices || result.data || result || [];\n setTrustedDevices(devices);\n return devices;\n } catch (err) {\n handleError(err);\n }\n }, [handleError]);\n\n // 移除信任设备\n const removeDevice = useCallback(async (deviceIdToRemove) => {\n try {\n await securityApi.removeDevice(deviceIdToRemove);\n await loadTrustedDevices();\n } catch (err) {\n handleError(err);\n }\n }, [handleError, loadTrustedDevices]);\n\n // 加载风险事件\n const loadRiskEvents = useCallback(async (params = {}) => {\n try {\n const result = await securityApi.getRiskEvents(params);\n const events = result.items || result.data || result || [];\n setRiskEvents(events);\n return events;\n } catch (err) {\n handleError(err);\n }\n }, [handleError]);\n\n const value = {\n riskLevel,\n deviceId,\n trustedDevices,\n riskEvents,\n verificationRequired,\n loading,\n error,\n checkRisk,\n completeVerification,\n loadTrustedDevices,\n removeDevice,\n loadRiskEvents,\n api: securityApi,\n };\n\n return (\n <SecurityContext.Provider value={value}>\n {children}\n </SecurityContext.Provider>\n );\n}\n\nexport function useSecurity() {\n const context = useContext(SecurityContext);\n if (!context) {\n throw new Error('useSecurity must be used within a SecurityProvider');\n }\n return context;\n}\n\nexport default SecurityContext;\n","/**\n * Security SDK - RiskBadge 组件\n * 风险等级徽章\n */\n\nimport React from 'react';\nimport { t } from '../i18n';\n\nconst RISK_CONFIG = {\n low: { color: '#52c41a', bg: '#f6ffed', label: 'riskLow', icon: '✓' },\n medium: { color: '#faad14', bg: '#fffbe6', label: 'riskMedium', icon: '⚠' },\n high: { color: '#ff4d4f', bg: '#fff2f0', label: 'riskHigh', icon: '⚠' },\n critical: { color: '#cf1322', bg: '#ffccc7', label: 'riskCritical', icon: '✕' },\n};\n\nexport function RiskBadge({\n level = 'low',\n showIcon = true,\n size = 'normal', // 'small' | 'normal' | 'large'\n className = '',\n}) {\n const config = RISK_CONFIG[level] || RISK_CONFIG.low;\n\n return (\n <span\n className={`risk-badge risk-${level} size-${size} ${className}`}\n style={{\n color: config.color,\n background: config.bg,\n borderColor: config.color,\n }}\n >\n {showIcon && <span className=\"risk-icon\">{config.icon}</span>}\n <span className=\"risk-label\">{t(config.label)}</span>\n </span>\n );\n}\n\nexport default RiskBadge;\n","/**\n * Security SDK - VerificationModal 组件\n * 验证弹窗\n */\n\nimport React, { useState } from 'react';\nimport { t } from '../i18n';\nimport { useSecurity } from '../context/SecurityContext';\n\nexport function VerificationModal({\n type = 'captcha', // 'captcha' | 'sms' | 'email' | 'twoFactor'\n onSuccess,\n onCancel,\n className = '',\n}) {\n const { completeVerification, loading } = useSecurity();\n const [code, setCode] = useState('');\n const [error, setError] = useState(null);\n\n const handleSubmit = async (e) => {\n e.preventDefault();\n setError(null);\n\n if (!code.trim()) {\n setError('请输入验证码');\n return;\n }\n\n try {\n const result = await completeVerification(type, code);\n if (result.success) {\n onSuccess?.(result);\n } else {\n setError(result.message || '验证失败');\n }\n } catch (err) {\n setError(err.message);\n }\n };\n\n const getTitle = () => {\n switch (type) {\n case 'sms': return t('smsCode');\n case 'email': return t('emailCode');\n case 'twoFactor': return t('twoFactor');\n default: return t('captcha');\n }\n };\n\n return (\n <div className={`verification-modal-overlay ${className}`}>\n <div className=\"verification-modal\">\n <button className=\"modal-close\" onClick={onCancel}>✕</button>\n \n <div className=\"modal-icon\">🔐</div>\n <h3>{t('riskDetected')}</h3>\n <p>{t('pleaseVerify')}</p>\n\n <form onSubmit={handleSubmit}>\n <div className=\"form-group\">\n <label>{getTitle()}</label>\n <input\n type=\"text\"\n value={code}\n onChange={(e) => setCode(e.target.value)}\n placeholder=\"请输入验证码\"\n autoFocus\n maxLength={6}\n />\n </div>\n\n {error && <div className=\"form-error\">{error}</div>}\n\n <div className=\"form-actions\">\n <button type=\"button\" className=\"btn-cancel\" onClick={onCancel}>\n 取消\n </button>\n <button type=\"submit\" className=\"btn-primary\" disabled={loading}>\n {loading ? t('loading') : t('verify')}\n </button>\n </div>\n </form>\n </div>\n </div>\n );\n}\n\nexport default VerificationModal;\n","/**\n * Security SDK - 加密工具\n */\n\nclass Utf8EncoderFallback {\n encode(value) {\n const utf8 = unescape(encodeURIComponent(String(value)));\n const bytes = new Uint8Array(utf8.length);\n for (let index = 0; index < utf8.length; index += 1) {\n bytes[index] = utf8.charCodeAt(index);\n }\n return bytes;\n }\n}\n\nclass Utf8DecoderFallback {\n decode(value) {\n const bytes = value instanceof Uint8Array ? value : new Uint8Array(value);\n let binary = '';\n for (const byte of bytes) {\n binary += String.fromCharCode(byte);\n }\n return decodeURIComponent(escape(binary));\n }\n}\n\nfunction createTextEncoder() {\n return typeof globalThis.TextEncoder === 'function'\n ? new globalThis.TextEncoder()\n : new Utf8EncoderFallback();\n}\n\nfunction createTextDecoder() {\n return typeof globalThis.TextDecoder === 'function'\n ? new globalThis.TextDecoder()\n : new Utf8DecoderFallback();\n}\n\n/**\n * 加密工具类\n */\nclass CryptoUtilsClass {\n constructor() {\n this.encoder = createTextEncoder();\n this.decoder = createTextDecoder();\n }\n\n /**\n * 生成随机字节\n */\n getRandomBytes(length) {\n return crypto.getRandomValues(new Uint8Array(length));\n }\n\n /**\n * 生成随机16进制字符串\n */\n getRandomHex(length) {\n return Array.from(this.getRandomBytes(length))\n .map(b => b.toString(16).padStart(2, '0'))\n .join('');\n }\n\n /**\n * 生成UUID\n */\n generateUUID() {\n return crypto.randomUUID?.() || \n 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0;\n return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\n });\n }\n\n /**\n * 计算SHA-256哈希\n */\n async sha256(data) {\n const buffer = typeof data === 'string' ? this.encoder.encode(data) : data;\n const hashBuffer = await crypto.subtle.digest('SHA-256', buffer);\n return Array.from(new Uint8Array(hashBuffer))\n .map(b => b.toString(16).padStart(2, '0'))\n .join('');\n }\n\n /**\n * 计算HMAC-SHA256\n */\n async hmacSha256(key, message) {\n const keyBuffer = typeof key === 'string' ? this.encoder.encode(key) : key;\n const messageBuffer = typeof message === 'string' ? this.encoder.encode(message) : message;\n\n const cryptoKey = await crypto.subtle.importKey(\n 'raw',\n keyBuffer,\n { name: 'HMAC', hash: 'SHA-256' },\n false,\n ['sign']\n );\n\n const signature = await crypto.subtle.sign('HMAC', cryptoKey, messageBuffer);\n return Array.from(new Uint8Array(signature))\n .map(b => b.toString(16).padStart(2, '0'))\n .join('');\n }\n\n /**\n * AES-GCM 加密\n */\n async encryptAES(plaintext, keyHex) {\n const keyBuffer = this.hexToBytes(keyHex);\n const iv = this.getRandomBytes(12);\n const plaintextBuffer = this.encoder.encode(plaintext);\n\n const cryptoKey = await crypto.subtle.importKey(\n 'raw',\n keyBuffer,\n 'AES-GCM',\n false,\n ['encrypt']\n );\n\n const ciphertext = await crypto.subtle.encrypt(\n { name: 'AES-GCM', iv },\n cryptoKey,\n plaintextBuffer\n );\n\n // 返回 iv + ciphertext 的 base64\n const combined = new Uint8Array(iv.length + ciphertext.byteLength);\n combined.set(iv);\n combined.set(new Uint8Array(ciphertext), iv.length);\n\n return this.bytesToBase64(combined);\n }\n\n /**\n * AES-GCM 解密\n */\n async decryptAES(cipherBase64, keyHex) {\n const keyBuffer = this.hexToBytes(keyHex);\n const combined = this.base64ToBytes(cipherBase64);\n const iv = combined.slice(0, 12);\n const ciphertext = combined.slice(12);\n\n const cryptoKey = await crypto.subtle.importKey(\n 'raw',\n keyBuffer,\n 'AES-GCM',\n false,\n ['decrypt']\n );\n\n const plaintext = await crypto.subtle.decrypt(\n { name: 'AES-GCM', iv },\n cryptoKey,\n ciphertext\n );\n\n return this.decoder.decode(plaintext);\n }\n\n /**\n * 生成AES密钥\n */\n generateAESKey() {\n return this.getRandomHex(32); // 256位\n }\n\n /**\n * 生成RSA密钥对\n */\n async generateRSAKeyPair() {\n const keyPair = await crypto.subtle.generateKey(\n {\n name: 'RSA-OAEP',\n modulusLength: 2048,\n publicExponent: new Uint8Array([1, 0, 1]),\n hash: 'SHA-256',\n },\n true,\n ['encrypt', 'decrypt']\n );\n\n const publicKey = await crypto.subtle.exportKey('spki', keyPair.publicKey);\n const privateKey = await crypto.subtle.exportKey('pkcs8', keyPair.privateKey);\n\n return {\n publicKey: this.bytesToBase64(new Uint8Array(publicKey)),\n privateKey: this.bytesToBase64(new Uint8Array(privateKey)),\n };\n }\n\n /**\n * 生成ECDSA密钥对(用于签名)\n */\n async generateECDSAKeyPair() {\n const keyPair = await crypto.subtle.generateKey(\n {\n name: 'ECDSA',\n namedCurve: 'P-256',\n },\n true,\n ['sign', 'verify']\n );\n\n const publicKey = await crypto.subtle.exportKey('spki', keyPair.publicKey);\n const privateKey = await crypto.subtle.exportKey('pkcs8', keyPair.privateKey);\n\n return {\n publicKey: this.bytesToBase64(new Uint8Array(publicKey)),\n privateKey: this.bytesToBase64(new Uint8Array(privateKey)),\n };\n }\n\n /**\n * ECDSA签名\n */\n async signECDSA(message, privateKeyBase64) {\n const privateKeyBuffer = this.base64ToBytes(privateKeyBase64);\n const messageBuffer = this.encoder.encode(message);\n\n const privateKey = await crypto.subtle.importKey(\n 'pkcs8',\n privateKeyBuffer,\n { name: 'ECDSA', namedCurve: 'P-256' },\n false,\n ['sign']\n );\n\n const signature = await crypto.subtle.sign(\n { name: 'ECDSA', hash: 'SHA-256' },\n privateKey,\n messageBuffer\n );\n\n return this.bytesToBase64(new Uint8Array(signature));\n }\n\n /**\n * ECDSA验签\n */\n async verifyECDSA(message, signatureBase64, publicKeyBase64) {\n const publicKeyBuffer = this.base64ToBytes(publicKeyBase64);\n const messageBuffer = this.encoder.encode(message);\n const signatureBuffer = this.base64ToBytes(signatureBase64);\n\n const publicKey = await crypto.subtle.importKey(\n 'spki',\n publicKeyBuffer,\n { name: 'ECDSA', namedCurve: 'P-256' },\n false,\n ['verify']\n );\n\n return crypto.subtle.verify(\n { name: 'ECDSA', hash: 'SHA-256' },\n publicKey,\n signatureBuffer,\n messageBuffer\n );\n }\n\n // ============ 工具方法 ============\n\n hexToBytes(hex) {\n const bytes = new Uint8Array(hex.length / 2);\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = parseInt(hex.substr(i * 2, 2), 16);\n }\n return bytes;\n }\n\n bytesToHex(bytes) {\n return Array.from(bytes)\n .map(b => b.toString(16).padStart(2, '0'))\n .join('');\n }\n\n bytesToBase64(bytes) {\n return btoa(String.fromCharCode(...bytes));\n }\n\n base64ToBytes(base64) {\n const binary = atob(base64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return bytes;\n }\n}\n\nexport const cryptoUtils = new CryptoUtilsClass();\n\nexport { CryptoUtilsClass };\n\nexport default cryptoUtils;\n","/**\n * Security SDK - API签名\n */\n\nimport { cryptoUtils } from './crypto';\n\n/**\n * API签名器\n * 用于API请求的签名验证\n */\nclass ApiSignerClass {\n constructor(config = {}) {\n this.secretKey = config.secretKey || '';\n this.algorithm = config.algorithm || 'hmac-sha256';\n this.timestampTolerance = config.timestampTolerance || 300; // 5分钟\n this.nonceStore = new Set();\n this.nonceMaxAge = 600000; // 10分钟\n }\n\n configure(config) {\n Object.assign(this, config);\n }\n\n /**\n * 生成签名\n * @param {Object} params - 请求参数\n * @param {string} method - HTTP方法\n * @param {string} path - 请求路径\n * @returns {Object} 签名信息\n */\n async sign(params = {}, method = 'GET', path = '/') {\n const timestamp = Math.floor(Date.now() / 1000).toString();\n const nonce = cryptoUtils.getRandomHex(16);\n\n // 构建待签名字符串\n const stringToSign = this.buildStringToSign(params, method, path, timestamp, nonce);\n\n // 计算签名\n const signature = await cryptoUtils.hmacSha256(this.secretKey, stringToSign);\n\n return {\n timestamp,\n nonce,\n signature,\n };\n }\n\n /**\n * 验证签名\n * @param {Object} params - 请求参数\n * @param {string} method - HTTP方法\n * @param {string} path - 请求路径\n * @param {string} timestamp - 时间戳\n * @param {string} nonce - 随机数\n * @param {string} signature - 签名\n * @returns {boolean} 是否有效\n */\n async verify(params, method, path, timestamp, nonce, signature) {\n // 检查时间戳\n const now = Math.floor(Date.now() / 1000);\n if (Math.abs(now - parseInt(timestamp)) > this.timestampTolerance) {\n return false;\n }\n\n // 检查nonce是否已使用(防重放)\n if (this.nonceStore.has(nonce)) {\n return false;\n }\n\n // 重新计算签名\n const stringToSign = this.buildStringToSign(params, method, path, timestamp, nonce);\n const expectedSignature = await cryptoUtils.hmacSha256(this.secretKey, stringToSign);\n\n // 时间安全的比较\n if (signature !== expectedSignature) {\n return false;\n }\n\n // 记录nonce\n this.nonceStore.add(nonce);\n setTimeout(() => this.nonceStore.delete(nonce), this.nonceMaxAge);\n\n return true;\n }\n\n /**\n * 构建待签名字符串\n */\n buildStringToSign(params, method, path, timestamp, nonce) {\n // 参数排序\n const sortedParams = Object.keys(params)\n .sort()\n .map(key => `${key}=${params[key]}`)\n .join('&');\n\n // 拼接\n return [\n method.toUpperCase(),\n path,\n timestamp,\n nonce,\n sortedParams,\n ].join('\\n');\n }\n\n /**\n * 创建签名请求头\n */\n async createAuthHeaders(params, method, path) {\n const { timestamp, nonce, signature } = await this.sign(params, method, path);\n\n return {\n 'X-Timestamp': timestamp,\n 'X-Nonce': nonce,\n 'X-Signature': signature,\n };\n }\n}\n\nexport const apiSigner = new ApiSignerClass();\n\nexport { ApiSignerClass };\n\nexport default apiSigner;\n","/**\n * Security SDK - 类型定义\n */\n\n// 风险等级\nexport const RiskLevel = {\n NONE: 'none',\n LOW: 'low',\n MEDIUM: 'medium',\n HIGH: 'high',\n CRITICAL: 'critical',\n};\n\n// 安全事件类型\nexport const SecurityEventType = {\n LOGIN: 'login',\n LOGOUT: 'logout',\n PASSWORD_CHANGE: 'password_change',\n MFA_ENABLED: 'mfa_enabled',\n MFA_DISABLED: 'mfa_disabled',\n PERMISSION_CHANGE: 'permission_change',\n SUSPICIOUS_ACTIVITY: 'suspicious_activity',\n BRUTE_FORCE: 'brute_force',\n DATA_EXPORT: 'data_export',\n API_ACCESS: 'api_access',\n};\n\n// 加密算法\nexport const EncryptionAlgorithm = {\n AES_256_GCM: 'aes-256-gcm',\n AES_256_CBC: 'aes-256-cbc',\n RSA_OAEP: 'rsa-oaep',\n ECDH: 'ecdh',\n};\n\n// 签名算法\nexport const SignatureAlgorithm = {\n HMAC_SHA256: 'hmac-sha256',\n RSA_SHA256: 'rsa-sha256',\n ECDSA_P256: 'ecdsa-p256',\n ED25519: 'ed25519',\n};\n\n// 设备信任状态\nexport const DeviceTrustStatus = {\n TRUSTED: 'trusted',\n UNKNOWN: 'unknown',\n BLOCKED: 'blocked',\n};\n\nexport default {\n RiskLevel,\n SecurityEventType,\n EncryptionAlgorithm,\n SignatureAlgorithm,\n DeviceTrustStatus,\n};\n","/**\n * @quantabit/security-sdk\n * \n * QuantaBit Security Module SDK\n * \n * Features:\n * - Encryption/Decryption (AES, RSA, ECDSA)\n * - API signature verification\n * - Device fingerprinting\n * - Anti-fraud risk control\n * - Security audit logs\n */\n\n// ============ Context & Hooks ============\nexport { SecurityProvider, useSecurity } from './context/SecurityContext';\n\n// ============ Components ============\nexport { RiskBadge } from './components/RiskBadge';\nexport { VerificationModal } from './components/VerificationModal';\n\n// ============ Crypto Utils ============\nexport { cryptoUtils, CryptoUtilsClass } from './utils/crypto';\n\n// ============ API Signer ============\nexport { apiSigner, ApiSignerClass } from './utils/signer';\n\n// ============ Device Fingerprint ============\nexport { deviceFingerprint, DeviceFingerprintClass, getDeviceFingerprint } from './utils/fingerprint';\n\n// ============ API ============\nexport { securityApi, SecurityApiClient } from './services/securityApi';\n\n// ============ i18n ============\nexport {\n messages,\n SUPPORTED_LANGUAGES,\n setLanguage,\n getLanguage,\n t,\n} from './i18n';\n\n// ============ Types ============\nexport {\n RiskLevel,\n SecurityEventType,\n EncryptionAlgorithm,\n SignatureAlgorithm,\n DeviceTrustStatus,\n} from './types';\n\n// ============ 便捷方法 ============\nimport { cryptoUtils } from './utils/crypto';\nimport { deviceFingerprint } from './utils/fingerprint';\n\nexport const sha256 = (...args) => cryptoUtils.sha256(...args);\nexport const hmacSha256 = (...args) => cryptoUtils.hmacSha256(...args);\nexport const encryptAES = (...args) => cryptoUtils.encryptAES(...args);\nexport const decryptAES = (...args) => cryptoUtils.decryptAES(...args);\nexport const generateAESKey = (...args) => cryptoUtils.generateAESKey(...args);\nexport const getFingerprint = (...args) => deviceFingerprint.getFingerprint(...args);\n\n// ============ Styles ============\nimport './styles/main.css';\n"],"names":["SecurityApiClient","BaseApiClient","constructor","config","changePassword","oldPassword","newPassword","post","old_password","new_password","resetPassword","token","sendPasswordResetEmail","email","checkPasswordStrength","password","get2FAStatus","get","enable2FA","type","verify2FA","code","disable2FA","getBackupCodes","regenerateBackupCodes","getLoginHistory","params","getActiveDevices","logoutDevice","deviceId","logoutAllDevices","trustDevice","getSecuritySettings","updateSecuritySettings","settings","put","getLoginNotificationSettings","updateLoginNotificationSettings","getSecurityStatus","getSecurityRecommendations","getSecurityEvents","getRecoveryOptions","setRecoveryEmail","setRecoveryPhone","phone","setSecurityQuestions","questions","securityApi","SUPPORTED_LANGUAGES","messages","zh","loading","security","riskControl","riskLow","riskMedium","riskHigh","riskCritical","riskLogin","riskTransaction","riskAccount","riskDevice","riskBehavior","riskContent","statusNormal","statusWarning","statusBlocked","statusReview","deviceFingerprint","deviceInfo","trustedDevices","currentDevice","newDevice","verify","block","allow","review","appeal","securitySettings","loginProtection","paymentProtection","antiTheft","captcha","smsCode","emailCode","twoFactor","riskDetected","pleaseVerify","verifySuccess","blocked","en","ja","ko","currentLanguage","setLanguage","lang","includes","getLanguage","t","key","msgs","text","Object","keys","forEach","k","replace","RegExp","SDK_NAME","DeviceFingerprintClass","cachedFingerprint","components","getFingerprint","options","respectDNT","minimal","navigator","doNotTrack","logger","debug","collectMinimalComponents","collectComponents","fingerprintData","JSON","stringify","hash","getComponents","window","server","screenWidth","screen","width","screenHeight","height","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","timezoneOffset","Date","getTimezoneOffset","language","platform","consentManager","init","hasFunctional","hasConsent","hasAnalytics","screenDepth","colorDepth","assign","userAgent","languages","join","screenPixelRatio","devicePixelRatio","hardwareConcurrency","deviceMemory","touchSupport","getTouchSupport","localStorage","hasLocalStorage","sessionStorage","hasSessionStorage","indexedDB","hasIndexedDB","canvas","getCanvasFingerprint","webgl","getWebGLInfo","plugins","getPlugins","document","createElement","ctx","getContext","textBaseline","fillStyle","fillRect","font","fillText","dataUrl","toDataURL","e","gl","debugInfo","getExtension","vendor","getParameter","VENDOR","renderer","UNMASKED_RENDERER_WEBGL","version","VERSION","maxTouchPoints","touchEvent","touchPoints","msMaxTouchPoints","i","length","push","name","filename","slice","setItem","removeItem","str","encoder","TextEncoder","data","encode","hashBuffer","crypto","subtle","digest","Array","from","Uint8Array","map","b","toString","padStart","clearCache","getPrivacyDisclosure","levels","level","items","description","descriptionZh","getDeviceFingerprint","SecurityContext","createContext","SecurityProvider","children","apiUrl","onRiskDetected","onBlocked","onError","riskLevel","setRiskLevel","useState","setDeviceId","setTrustedDevices","riskEvents","setRiskEvents","verificationRequired","setVerificationRequired","setLoading","error","setError","useEffect","setBaseUrl","setToken","initDeviceFingerprint","fp","handleError","useCallback","err","message","checkRisk","action","result","device_id","risk_level","allowed","reason","verification_required","verification_type","verification","completeVerification","success","loadTrustedDevices","getTrustedDevices","devices","removeDevice","deviceIdToRemove","loadRiskEvents","getRiskEvents","events","value","api","React","Provider","useSecurity","context","useContext","Error","RISK_CONFIG","low","color","bg","label","icon","medium","high","critical","RiskBadge","showIcon","size","className","style","background","borderColor","VerificationModal","onSuccess","onCancel","setCode","handleSubmit","preventDefault","trim","getTitle","onClick","onSubmit","onChange","target","placeholder","autoFocus","maxLength","disabled","Utf8EncoderFallback","utf8","unescape","encodeURIComponent","String","bytes","index","charCodeAt","Utf8DecoderFallback","decode","binary","byte","fromCharCode","decodeURIComponent","escape","createTextEncoder","globalThis","createTextDecoder","TextDecoder","CryptoUtilsClass","decoder","getRandomBytes","getRandomValues","getRandomHex","generateUUID","randomUUID","c","r","Math","random","sha256","buffer","hmacSha256","keyBuffer","messageBuffer","cryptoKey","importKey","signature","sign","encryptAES","plaintext","keyHex","hexToBytes","iv","plaintextBuffer","ciphertext","encrypt","combined","byteLength","set","bytesToBase64","decryptAES","cipherBase64","base64ToBytes","decrypt","generateAESKey","generateRSAKeyPair","keyPair","generateKey","modulusLength","publicExponent","publicKey","exportKey","privateKey","generateECDSAKeyPair","namedCurve","signECDSA","privateKeyBase64","privateKeyBuffer","verifyECDSA","signatureBase64","publicKeyBase64","publicKeyBuffer","signatureBuffer","hex","parseInt","substr","bytesToHex","btoa","base64","atob","cryptoUtils","ApiSignerClass","secretKey","algorithm","timestampTolerance","nonceStore","Set","nonceMaxAge","configure","method","path","timestamp","floor","now","nonce","stringToSign","buildStringToSign","abs","has","expectedSignature","add","setTimeout","delete","sortedParams","sort","toUpperCase","createAuthHeaders","apiSigner","RiskLevel","NONE","LOW","MEDIUM","HIGH","CRITICAL","SecurityEventType","LOGIN","LOGOUT","PASSWORD_CHANGE","MFA_ENABLED","MFA_DISABLED","PERMISSION_CHANGE","SUSPICIOUS_ACTIVITY","BRUTE_FORCE","DATA_EXPORT","API_ACCESS","EncryptionAlgorithm","AES_256_GCM","AES_256_CBC","RSA_OAEP","ECDH","SignatureAlgorithm","HMAC_SHA256","RSA_SHA256","ECDSA_P256","ED25519","DeviceTrustStatus","TRUSTED","UNKNOWN","BLOCKED","args"],"mappings":"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"}
|