You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Omemo消息投递失败:InvalidKeyException异常排查求助

异常原因分析
  • Bundle格式损坏:你提供的Bundle XML存在明显语法错误(如开头标签<items](http://jabber.org/protocol/pubsub&quot;&gt;&lt;items)格式混乱,包含多余字符和错误引号),导致解析出的Signed PreKey、签名或身份公钥数据不正确,触发签名验证失败。
  • PreKeyBundle构造参数不匹配:构造PreKeyBundle时,传入的signedPreKey、signedPreKeySignature、identityKey三者不匹配——签名必须是由对应身份私钥对Signed PreKey的序列化数据生成的,若任意一项对应错误,验证都会失败。
  • 数据传输/编码异常:Bundle的Base64编码内容在传输或存储时被截断、篡改,解码后的数据与原始Bundle数据不一致,导致签名验证无法通过。
解决方法
  • 修复Bundle XML格式:修正XML的语法错误,将开头错误标签替换为合法的<items node="eu.siacs.conversations.axolotl.bundles:2041762935" xmlns="http://jabber.org/protocol/pubsub">,确保XML结构合规后重新解析其中的Base64内容。
  • 校验PreKeyBundle构造参数:
    • 确认从Bundle中解析出的signedPreKey、signedPreKeySignature、identityKey是配对的:手动验证签名是由身份私钥对Signed PreKey序列化数据生成的。
    • 检查PreKeyBundle构造函数的参数顺序,避免混淆PreKey ID与Signed PreKey ID,确保每个参数对应正确的数据字段。
  • 验证Base64数据完整性:将Bundle中的Base64内容解码,检查是否符合OMEMO Bundle的标准结构(包含身份公钥、Signed PreKey、签名等必填字段),若数据损坏,重新获取正确的Bundle。
  • 手动调试签名验证:在本地调用Curve.verifySignature方法,传入解析出的身份公钥、Signed PreKey序列化数据、签名,定位具体哪部分数据导致验证失败。

内容的提问来源于stack exchange,提问作者AKG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 02:25:54