Protocol Launcher 系列:iPGMail 邮件加密与签名的深度集成
在介绍了 Instapaper 的协议支持后,今天我们将聚焦于邮件安全领域,介绍如何通过 Protocol Launcher 与 iPGMail 联动,实现 OpenPGP 加密邮件的无缝处理。
作为注重隐私安全的开发者或企业用户,你可能经常遇到这些场景:
- 在 Web 应用中提供一个"加密发送"按钮,让用户安全地传输敏感信息。
- 在内部系统中集成 PGP 加解密功能,无需用户手动切换到加密工具。
- 引导用户快速撰写加密邮件或验证签名消息。
现在,通过 Protocol Launcher,你可以以类型安全的方式调用 iPGMail 的加密能力,让邮件安全变得更加简单。
iPGMail 与深度链接
iPGMail 是一款适用于 iOS 和 macOS 的专业 OpenPGP 加密工具,为邮件通信提供端到端加密保护。
iPGMail 支持通过 x-ipgmail:// 协议 URL 从外部应用触发加密、解密、签名和撰写邮件等操作。然而,手动拼接这些链接需要处理复杂的参数编码规则,且缺乏类型提示,容易出错。
核心能力:四大加密操作
Protocol Launcher 为 iPGMail 专门提供了 protocol-launcher/ipgmail 模块,支持以下核心功能:
- 撰写加密邮件 (
compose):直接在 iPGMail 中打开撰写界面,预填充邮件内容。 - 解密 PGP 消息 (
decrypt):解密剪贴板或指定的 PGP 加密消息。 - 加密文本 (
encrypt):使用公钥或对称加密方式加密纯文本。 - 数字签名 (
sign):对文本进行数字签名,确保消息的真实性和完整性。
快速上手
首先,确保你的项目中已安装:
npm install protocol-launcher
在代码中你可以根据场景选择两种导入方式:
- 按需加载(通过子路径导入),支持 Tree Shaking,体积更小;
- 全量导入(从根包导入),写法更简单,但会引入所有已支持应用的逻辑。
// ✅ 推荐:按需加载 iPGMail 模块
import { compose, decrypt, encrypt, sign } from 'protocol-launcher/ipgmail'
// 也可以从根包导入,但会包含所有应用模块
// import { ipgmail } from 'protocol-launcher'
场景一:撰写加密邮件 (compose)
这是最直接的功能。你可以引导用户直接在 iPGMail 中撰写新的加密邮件:
import { compose } from 'protocol-launcher/ipgmail'
const url = compose({
text: '这是一封测试邮件...',
})
提示:
text参数会被自动进行 URL 编码,确保特殊字符正确传递。
场景二:解密 PGP 消息 (decrypt)
如果你想让用户快速解密剪贴板中的 PGP 加密消息:
import { decrypt } from 'protocol-launcher/ipgmail'
const url = decrypt({
pgpmsg: 'clipboard', // 从剪贴板读取加密消息
result: 'clipboard', // 解密结果复制回剪贴板
})
你也可以直接传入完整的 PGP 消息:
const url = decrypt({
pgpmsg: '-----BEGIN PGP MESSAGE-----\n...\n-----END PGP MESSAGE-----',
})
场景三:加密文本 (encrypt)
加密功能支持多种配置选项,包括公钥加密和对称加密:
import { encrypt } from 'protocol-launcher/ipgmail'
// 使用公钥加密剪贴板内容
const url = encrypt({
datasource: 'clipboard',
keyid: '47E3234C', // 8 位公钥 ID
result: 'clipboard', // 加密结果复制到剪贴板
})
// 直接加密指定文本
const url = encrypt({
text: '这是需要加密的敏感信息...',
})
// 使用对称加密(密码加密)
const url = encrypt({
text: '这是需要加密的内容...',
symmetric: true,
passwd: 'your-password',
result: 'clipboard',
})
// 加密结果保存到文件
const url = encrypt({
datasource: 'clipboard',
keyid: '47E3234C',
result: 'encrypted.pgp', // 保存为文件
})
场景四:数字签名 (sign)
对文本进行数字签名,确保消息来源的可信性:
import { sign } from 'protocol-launcher/ipgmail'
// 使用私钥签名剪贴板内容
const url = sign({
datasource: 'clipboard',
signkey: '47E3234C', // 8 位私钥 ID
result: 'clipboard', // 签名结果复制到剪贴板
})
// 直接签名指定文本
const url = sign({
text: '这是需要签名的内容...',
})
// 签名结果保存到文件
const url = sign({
datasource: 'clipboard',
signkey: '47E3234C',
result: 'signature.sig',
})
参数详解
compose 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
text |
string |
✅ | 要写入撰写界面的文本内容,会自动进行 URL 编码 |
decrypt 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
pgpmsg |
string |
✅ | PGP 加密消息,可使用 clipboard 关键字从剪贴板读取 |
result |
'clipboard' |
❌ | 解密结果是否复制回剪贴板 |
encrypt 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
datasource |
'clipboard' |
❌ | 数据源,目前仅支持 clipboard |
text |
string |
❌ | 要加密的明文文本 |
keyid |
string |
❌ | 8 位公钥 ID,用于加密数据 |
signkey |
string |
❌ | 8 位私钥 ID,用于签名数据 |
result |
'clipboard' | string |
❌ | 结果输出位置:剪贴板或文件名 |
symmetric |
boolean |
❌ | 是否使用对称加密(密码加密) |
passwd |
string |
❌ | 对称加密时使用的密码 |
sign 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
datasource |
'clipboard' |
❌ | 数据源,目前仅支持 clipboard |
text |
string |
❌ | 要签名的明文文本 |
signkey |
string |
❌ | 8 位私钥 ID,用于签名 |
result |
'clipboard' | string |
❌ | 结果输出位置:剪贴板或文件名 |
为什么选择 Protocol Launcher?
-
自动编码与参数处理:iPGMail 的协议对参数编码有严格要求。库内部会自动处理所有的 URL 转义逻辑,确保生成的 URL 在唤起应用时绝不乱码。
-
类型安全与智能提示:TypeScript 类型定义确保你提供了正确的参数组合,IDE 智能补全会提醒你每个参数的含义和格式要求。
-
一致的用户体验:通过封装复杂的协议逻辑,你可以专注于业务功能的实现,而不用担心不同操作系统下协议触发的细微差异。
-
极致的按需加载 (Tree Shaking):采用模块化设计,支持按需加载以最小化包体积:
- 推荐方式:使用子路径导入(如
import { encrypt } from 'protocol-launcher/ipgmail'),这样构建工具只会打包相关的代码。 - 全量方式:也可以从根包导入(如
import { ipgmail } from 'protocol-launcher'),建议生产环境始终使用按需加载。
- 推荐方式:使用子路径导入(如
-
完整的 OpenPGP 工作流支持:覆盖撰写、加密、解密、签名四大核心场景,满足邮件安全通信的全部需求。
结语
通过 Protocol Launcher,你可以将专业的 OpenPGP 加密能力无缝集成到你的应用中。无论是在企业内部的敏感信息传输系统,还是面向隐私保护的个人工具,它都是连接 Web 应用与本地加密客户端最优雅的桥梁。
🔗 相关链接
- Protocol Launcher 官网:https://protocol-launcher.huayi-data.com/
- iPGMail 模块文档:iPGMail | Protocol Launcher
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)