NIP-55 定义了 Android apps 如何向独立的 signer application 请求签名和加密操作。它为 Android 客户端提供了浏览器扩展和远程 bunker 之外的原生替代方案。

工作原理

NIP-55 使用两种 Android 机制:

  • Intents:用于需要明确用户批准的前台流程
  • Content resolvers:用于用户授予持久权限之后的后台流程

常见的连接流程从 get_public_key 开始。signer 会返回用户 pubkey 和 signer 的 package name,而客户端应缓存这两项信息。在后台循环中反复调用 get_public_key 是一种常见实现错误,规范明确对此提出了警告。

关键操作

  • get_public_key - 获取用户 pubkey 和 signer package name
  • sign_event - 为一个 Nostr event 签名
  • nip04_encrypt/decrypt - 加密或解密 NIP-04 消息
  • nip44_encrypt/decrypt - 加密或解密 NIP-44 消息
  • decrypt_zap_event - 解密与 zap 相关的 event payload

安全与 UX 说明

NIP-55 把 keys 保留在设备端,但它仍然依赖 Android 的 app 边界和 signer 的权限处理。与反复弹出 intent 提示相比,content resolver 支持能带来顺畅得多的 UX,但前提是用户已经向该客户端授予了持久授权。

对于 Android 上的 web apps,NIP-55 不如 NIP-46 顺手。浏览器环境无法像原生 Android apps 那样接收直接的后台响应,因此许多实现会回退到 callback URL、剪贴板传递或手动粘贴等方式。


主要来源:

提及于:

另请参阅: