Skip to content

@keymaster/connect / ProtocolErrorCode

Type Alias: ProtocolErrorCode

ProtocolErrorCode = "invalid_request" | "invalid_origin" | "user_rejected" | "active_key_unavailable" | "decrypt_failed" | "storage_not_configured" | "storage_unavailable" | "storage_invalid_path" | "storage_not_found" | "storage_conflict" | "storage_forbidden" | "storage_limit_exceeded" | "storage_invalid_upload" | "storage_provider_error" | "storage_identity_required" | "internal_error"

协议错误码。error.message 走英文;UI 展示由调用方决定。 错误码集合是稳定可判定的:第三方接入方写 switch 时不会因为新加错误 类型而误把"未识别"分支当作"成功"。

触发语义(施工单 001 收口):

  • invalid_request 顶层 message 结构 / 字段类型 / aud-iat-exp 规则 / BinaryField 形状不合法; 第一条非法 request 直接被 popup 忽略, 不回 result("情况 B")。
  • invalid_origin identity.get / intent.sign 的 params.aud !== event.origin
  • user_rejected 用户在确认页或解锁页点"取消"。
  • active_key_unavailable vault 已 unlocked,但 keyspace 没有 ready active key("情况 D")。
  • decrypt_failed cipher.decrypt 失败;origin 不匹配 / nonce 错误 / 密文被篡改 / 内层结构不合法,V1 统一为这一种错误。
  • internal_error 兜底:用户可见但不属于以上分类的失败。

注意:V1 对外暴露 wallet_locked 错误码。locked 态在 popup 内 直接走解锁页("情况 C"),用户取消解锁统一回 user_rejected。任何 "locked 时直接拒绝"的中间态都不属于 V1 公开语义。

Capability access without key custody.