Skip to Content
硬件接入概念PIN 码

PIN(核心指南)

处理 OneKey 设备 PIN 码的基本规则。

关键要点

  • 设备锁定机制:当设备锁定时,受保护的调用会触发 UI_REQUEST.REQUEST_PIN 事件。
  • Pro/Touch:PIN 码只能在硬件设备上输入(不支持软件输入)。
  • 其他型号:支持软件端 PIN 输入(位置加密方式),但出于安全考虑建议在设备上输入。

支持矩阵(软件 PIN 输入)

使用此表格快速确定某个型号是否支持软件端 PIN 输入。为了最佳安全性,建议所有型号都在设备上输入 PIN;仅在确实必要且仅在支持的型号上启用软件端 PIN 输入。

设备软件端 PIN 输入仅设备端输入
OneKey Classic支持
OneKey Classic 1s支持
OneKey Classic 1s Pure支持
OneKey Mini支持
OneKey Touch不支持
OneKey Pro不支持

UI 预期

  • 显示单个 PIN 输入提示,包含两个选项:
    • 在设备上输入(推荐;Pro/Touch 设备必须使用此方式)
    • 在此屏幕上输入(软件端 PIN 输入)— 使用固定的 3x3 键盘(1-9),掩码显示,不会显示真实数字
  • 收到 UI_REQUEST.CLOSE_UI_WINDOW 时关闭对话框。

PIN 位置映射(软件键盘)

固定键盘布局(软件 UI):

7 8 9 4 5 6 1 2 3

映射数组(索引 0..8 将软件标签 1..9 映射到转换后的数字):

const BLIND_KEYBOARD_MAP = ['7','8','9','4','5','6','1','2','3']; function onSoftwareKey(label: number) { // label 是来自固定键盘的 1..9 transformedPin += BLIND_KEYBOARD_MAP[label - 1]; }

示例:如果用户点击软件键 “1, 9”,转换后变为 7(来自索引 0)然后 3(来自索引 8)= 73。通过 uiResponse 发送此转换后的字符串。

事件到响应

import { UI_EVENT, UI_REQUEST, UI_RESPONSE } from '@onekeyfe/hd-core'; HardwareSDK.on(UI_EVENT, (msg) => { if (msg.type === UI_REQUEST.REQUEST_PIN) { // 选项 A:在设备上输入 HardwareSDK.uiResponse({ type: UI_RESPONSE.RECEIVE_PIN, payload: '@@ONEKEY_INPUT_PIN_IN_DEVICE', }); // 选项 B:软件端 PIN 输入(Pro/Touch 设备不支持) // const transformed = '73'; // 从键盘位置派生 // HardwareSDK.uiResponse({ type: UI_RESPONSE.RECEIVE_PIN, payload: transformed }); } });
Last updated on