npm i --save nativescript-libsignal-protocol
- 版本: 0.2.0
- GitHub:
- NPM: https://npmjs.net.cn/package/nativescript-libsignal-protocol
- 下载量
- 昨日: 0
- 上周: 0
- 上月: 0
NativeScript Libsignal-Protocol 
此插件是 NativeScript 的 Libsignal-Protocol 实现,基于 libsignal-protocol-java。此插件目前是一个包装器,实现了由 The Open Whisper Systems 组织开发的函数功能,该组织是加密消息应用 Signal 的活跃维护者。
此插件目前处于 ALPHA 阶段,需要进一步工作才能成熟。此代码尚未由经验丰富的密码学家审查,因此在此期间不能保证使用和支持。
要求
此插件无需额外权限即可正常工作。但是,实现此插件的程序可能需要 android.permission.INTERNET
,如果您正在使用中央服务器来管理数据。
安装
$ tns plugin add nativescript-libsignal-protocol
使用
从本插件导入 LibsignalProtocol
允许您使用目前可用的各种类和实现包装器。已为您 IDE 创建了大量的类型定义,以提供对迄今为止已提供各种片段的上下文。此插件提供的演示应用程序包含几个使用此插件的项目示例。
此插件遵循与源代码 Github 仓库中相同的实现和使用标准。以下是一个简单的代码片段,用于演示使用方法。
import { LibsignalProtocol } from 'nativescript-libsignal-protocol';
const SignalKeyHelper = LibsignalProtocol.KeyHelper;
const Base64Encode = LibsignalProtocol.Util.base64Encode;
/**
* Outputs a new session identity generated with the Libsignal Protocol.
*
* `identityKeyPair` is a raw reference to the JAVA object `IdentityKeyPair`
* as such, the exported values must be `serialized` before being usable.
*
* @returns The generated session identity as a JSON object.
*/
public demo_generateNewSessionIdentity(): any {
let identityKeyPair: LibsignalProtocol.Type.IdentityKeyPair;
let preKeys: any[];
let signedPreKey: LibsignalProtocol.Type.SignedPreKeyRecord;
let signedPreKeyPair: LibsignalProtocol.Type.ECKeyPair;
let registrationId: number;
registrationId = SignalKeyHelper.generateRegistrationId();
identityKeyPair = SignalKeyHelper.generateIdentityKeyPair();
preKeys = SignalKeyHelper.generatePreKeysFormatted(0, 1);
signedPreKey = SignalKeyHelper.generateSignedPreKeyFormatted(identityKeyPair, 1);
let sessionIdentity = {
registrationId: `${registrationId}`,
deviceId: 123,
identity: {
pubKey: Base64Encode(identityKeyPair.getPublicKey().serialize()),
privKey: Base64Encode(identityKeyPair.getPrivateKey().serialize()),
serialized: Base64Encode(identityKeyPair.serialize()),
},
signedPreKey: signedPreKey,
preKeys: preKeys
};
console.log(sessionIdentity);
return sessionIdentity;
}
限制
此插件目前不可用于 iOS 设备(欢迎和期望为 iOS 提供支持的贡献!)。此插件旨在作为一个简单的 Libsignal 协议包装器。虽然此插件包含一个用于存储会话/状态的 Client
类,但实际的使用和管理应在使用此插件的程序中进行。
许可
许可协议:GPLv3: https://gnu.ac.cn/licenses/gpl-3.0.html
- 版权所有 2015-2016 Open Whisper Systems
- 版权所有 2018-2019 @Pixxlated
致谢
此插件包含基于以下内容的源代码
libsignal-protocol-java | https://github.com/signalapp/libsignal-protocol-java |
---|---|
特别感谢上述作品的原始贡献者和作者!