# libsignal_protocol_dart
[![pub package](https://img.shields.io/pub/v/libsignal_protocol_dart.svg)](https://pub.dartlang.org/packages/libsignal_protocol_dart)
[![Dart CI](https://github.com/MixinNetwork/libsignal_protocol_dart/workflows/Dart/badge.svg)](https://github.com/MixinNetwork/libsignal_protocol_dart/actions)
libsignal_protocol_dart is a pure Dart/Flutter implementation of the Signal Protocol.
## Documentation
For more information on how the Signal Protocol works:
- [Double Ratchet](https://whispersystems.org/docs/specifications/doubleratchet/)
- [X3DH Key Agreement](https://whispersystems.org/docs/specifications/x3dh/)
- [XEdDSA Signature Schemes](https://whispersystems.org/docs/specifications/xeddsa/)
- [Signal Protocol Java](https://github.com/signalapp/libsignal-protocol-java/)
## Usage
## Install time
At install time, a signal client needs to generate its identity keys, registration id, and prekeys.
```dart
Future<void> install() async {
final identityKeyPair = generateIdentityKeyPair();
final registrationId = generateRegistrationId(false);
final preKeys = generatePreKeys(0, 110);
final signedPreKey = generateSignedPreKey(identityKeyPair, 0);
final sessionStore = InMemorySessionStore();
final preKeyStore = InMemoryPreKeyStore();
final signedPreKeyStore = InMemorySignedPreKeyStore();
final identityStore =
InMemoryIdentityKeyStore(identityKeyPair, registrationId);
for (var p in preKeys) {
await preKeyStore.storePreKey(p.id, p);
}
await signedPreKeyStore.storeSignedPreKey(signedPreKey.id, signedPreKey);
}
```
## Building a session
A signal client needs to implement four interfaces: IdentityKeyStore, PreKeyStore, SignedPreKeyStore, and SessionStore. These will manage loading and storing of identity, prekeys, signed prekeys, and session state.
Once those are implemented, you can build a session in this way:
```dart
final remoteAddress = SignalProtocolAddress("remote", 1);
final sessionBuilder = SessionBuilder(sessionStore, preKeyStore,
signedPreKeyStore, identityStore, remoteAddress);
sessionBuilder.processPreKeyBundle(retrievedPreKey);
final sessionCipher = SessionCipher(sessionStore, preKeyStore,
signedPreKeyStore, identityStore, remoteAddress);
final ciphertext = sessionCipher.encrypt(utf8.encode("Hello Mixin"));
deliver(ciphertext);
```
## Building a group session
If you wanna send message to a group, send a SenderKeyDistributionMessage to all members of the group.
```dart
const alice = SignalProtocolAddress('+00000000001', 1);
const groupSender = SenderKeyName('Private group', alice);
final aliceStore = InMemorySenderKeyStore();
final bobStore = InMemorySenderKeyStore();
final aliceSessionBuilder = GroupSessionBuilder(aliceStore);
final bobSessionBuilder = GroupSessionBuilder(bobStore);
final aliceGroupCipher = GroupCipher(aliceStore, groupSender);
final bobGroupCipher = GroupCipher(bobStore, groupSender);
final sentAliceDistributionMessage =
await aliceSessionBuilder.create(groupSender);
final receivedAliceDistributionMessage =
SenderKeyDistributionMessageWrapper.fromSerialized(
sentAliceDistributionMessage.serialize());
await bobSessionBuilder.process(
groupSender, receivedAliceDistributionMessage);
final ciphertextFromAlice = await aliceGroupCipher
.encrypt(Uint8List.fromList(utf8.encode('Hello Mixin')));
final plaintextFromAlice = await bobGroupCipher.decrypt(ciphertextFromAlice);
// ignore: avoid_print
print(utf8.decode(plaintextFromAlice));
```
没有合适的资源?快使用搜索试试~ 我知道了~
DartFlutter信号协议库_Dart_下载.zip
共125个文件
dart:115个
proto:3个
yaml:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 18 浏览量
2023-04-26
11:32:04
上传
评论
收藏 122KB ZIP 举报
温馨提示
DartFlutter信号协议库_Dart_下载.zip
资源推荐
资源详情
资源评论
收起资源包目录
DartFlutter信号协议库_Dart_下载.zip (125个子文件)
local_storage_protocol.pb.dart 70KB
whisper_text_protocol.pb.dart 27KB
session_builder_test.dart 14KB
local_storage_protocol.pbjson.dart 13KB
session_state.dart 13KB
group_cipher_test.dart 11KB
session_cipher.dart 10KB
session_cipher_test.dart 10KB
numeric_fingerprint_generator_test.dart 10KB
curve25519_test.dart 8KB
hkdf_test.dart 7KB
fingerprint_protocol.pb.dart 7KB
ratcheting_session_test.dart 7KB
session_builder.dart 6KB
ratcheting_session.dart 5KB
curve.dart 5KB
whisper_text_protocol.pbjson.dart 5KB
chain_key_test.dart 5KB
signal_message.dart 5KB
main.dart 4KB
sender_key_state.dart 4KB
byte_util_test.dart 4KB
provisioning_cipher.dart 4KB
root_key_test.dart 4KB
group_cipher.dart 4KB
in_memory_signal_protocol_store.dart 4KB
sender_key_message.dart 3KB
pre_key_signal_message.dart 3KB
device_consistency_test.dart 3KB
in_memory_signal_protocol_store_test.dart 3KB
sender_key_distribution_message_wrapper.dart 3KB
byte_util.dart 3KB
ed25519.dart 3KB
numeric_fingerprint_generator.dart 3KB
device_consistency_message.dart 2KB
hkdf.dart 2KB
libsignal_protocol_dart.dart 2KB
session_record.dart 2KB
sender_key_record.dart 2KB
key_helper.dart 2KB
provisioning_cipher_test.dart 2KB
in_memory_session_store_test.dart 2KB
in_memory_identity_key_store_test.dart 2KB
group_session_builder.dart 2KB
scannable_fingerprint.dart 2KB
fingerprint_protocol.pbjson.dart 2KB
in_memory_session_store.dart 2KB
in_memory_signed_pre_key_store_test.dart 1KB
in_memory_identity_key_store.dart 1KB
cbc.dart 1KB
device_consistency_code_generator.dart 1KB
chain_key.dart 1KB
signed_pre_key_record.dart 1KB
in_memory_signed_pre_key_store.dart 1KB
displayable_fingerprint.dart 1KB
device_consistency_commitment.dart 1KB
root_key.dart 1KB
pre_key_record.dart 1KB
bob_signal_protocol_parameters.dart 1KB
pre_key_bundle.dart 1004B
djb_ec_public_key.dart 1002B
identity_key_pair.dart 951B
sender_chain_key.dart 871B
test_in_memory_signal_protocol_store.dart 843B
test_in_memory_identity_key_store.dart 831B
in_memory_pre_key_store.dart 828B
in_memory_pre_key_store_test.dart 821B
in_memory_sender_key_store.dart 762B
identity_key.dart 740B
alice_signal_protocol_parameters.dart 706B
sender_key_name.dart 642B
symmetric_signal_protocol_parameters.dart 640B
derived_message_secrets.dart 631B
sender_message_key.dart 629B
identity_key_store.dart 568B
signal_protocol_address.dart 540B
fingerprint_generator.dart 537B
session_store.dart 494B
ciphertext_message.dart 463B
fingerprint.dart 436B
signed_pre_key_store.dart 436B
derived_root_secrets.dart 397B
local_storage_protocol.pbserver.dart 388B
whisper_text_protocol.pbserver.dart 386B
fingerprint_protocol.pbserver.dart 385B
message_keys.dart 353B
djb_ec_private_key.dart 338B
pre_key_store.dart 306B
local_storage_protocol.pbenum.dart 306B
whisper_text_protocol.pbenum.dart 305B
fingerprint_protocol.pbenum.dart 305B
ec_key_pair.dart 286B
device_consistency_signature.dart 273B
sender_key_store.dart 264B
fingerprint_version_mismatch_exception.dart 249B
signal_protocol_store.dart 246B
duplicate_message_exception.dart 218B
fingerprint_parsing_exception.dart 213B
invalid_message_exception.dart 212B
legacy_message_exception.dart 209B
共 125 条
- 1
- 2
资源评论
快撑死的鱼
- 粉丝: 1w+
- 资源: 9154
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功