python CFFI 绑定,用于olm加密旋转库
项目描述
python-olm
Python的Olm绑定。
该库使用的Olm加密旋转规范可以在这里找到:这里。
该库使用的Megolm加密旋转规范可以在这里找到:这里。
Olm和Megolm加密协议的实现示例可以在Matrix协议中找到,该协议的实现指南可以在这里找到:这里。
完整的API参考可以在这里找到:这里。
安装说明
要从源包安装,您需要
- cmake(推荐)或GNU make
- C/C++编译器
然后您可以运行pip install python-olm
。
这应该在UNIX-like环境中工作,包括macOS,也可能在其他环境中工作,但在Windows中尚未知。
账户
账户创建了Olm协议的中心身份,它们由指纹和身份密钥对组成。它们还生成一次性密钥,用于启动端到端加密通信通道。
账户创建
使用Account类创建新的账户,它创建一个新的Olm密钥对。密钥对的公钥部分可以通过类的identity_keys属性访问。
>>> alice = Account()
>>> alice.identity_keys
{'curve25519': '2PytGagXercwHjzQETLcMa3JOsaU2qkPIESaqoi59zE',
'ed25519': 'HHpOuFYdHwoa54GxSttz9YmaTmbuVU3js92UTUjYJgM'}
一次性密钥
在人们可以开始与账户建立加密端到端通道之前,需要生成一次性密钥。
>>> alice.generate_one_time_keys(1)
>>> alice.one_time_keys
{'curve25519': {'AAAAAQ': 'KiHoW6CIy905UC4V1Frmwr3VW8bTWkBL4uWtWFFllxM'}}
一次性密钥发布后,应将其标记为已使用,以免重复使用。
>>> alice.mark_keys_as_published()
>>> alice.one_time_keys
{'curve25519': {}}
序列化
账户应存储以供以后重用,存储账户使用pickle方法,而恢复步骤使用from_pickle类方法完成。
>>> pickle = alice.pickle()
>>> restored = Account.from_pickle(pickle)
会话
会话用于在两个账户之间创建加密的端到端通信通道。
会话创建
>>> alice = Account()
>>> bob = Account()
>>> bob.generate_one_time_keys(1)
>>> id_key = bob.identity_keys["curve25519"]
>>> one_time = list(bob.one_time_keys["curve25519"].values())[0]
>>> alice_session = OutboundSession(alice, id_key, one_time)
加密
创建出站会话后,可以交换加密消息。
>>> message = alice_session.encrypt("It's a secret to everybody")
>>> message.ciphertext
'AwogkL7RoakT9gnjcZMra+y39WXKRmnxBPEaEp6OSueIA0cSIJxGpBoP8YZ+CGweXQ10LujbXMgK88
xG/JZMQJ5ulK9ZGiC8TYrezNYr3qyIBLlecXr/9wnegvJaSFDmWDVOcf4XfyI/AwogqIZfAklRXGC5b
ZJcZxVxQGgJ8Dz4OQII8k0Dp8msUXwQACIQvagY1dO55Qvnk5PZ2GF+wdKnvj6Zxl2g'
>>> message.message_type
0
消息传输后,Bob可以创建一个InboundSession来解密消息。
>>> bob_session = InboundSession(bob, message)
>>> bob_session.decrypt(message)
"It's a secret to everybody"
序列化
会话,像账户一样,可以存储以供以后使用,API与账户相同。
>>> pickle = session.pickle()
>>> restored = Session.from_pickle(pickle)
群组会话
群组会话用于创建一对一的多对一加密通信通道。群组会话密钥需要与所有应能解密群发消息的参与者共享。另一件事要注意的是,由于每次加密消息时群组会话密钥都会更新,因此在加密任何消息之前应共享会话密钥。
群组会话创建
群组会话不像端到端会话那样绑定到账户,因此其创建过程很简单。
>>> alice_group = OutboundGroupSession()
>>> bob_inbound_group = InboundGroupSession(alice_group.session_key)
群组加密
群组加密相当简单。重要的是要在安全通道(例如,端到端Olm会话)上与所有参与者共享会话密钥。
>>> message = alice_group.encrypt("It's a secret to everybody")
>>> bob_inbound_group.decrypt(message)
("It's a secret to everybody", 0)
序列化
序列化与端到端Olm会话相同。
>>> pickle = session.pickle()
>>> restored = InboundGroupSession.from_pickle(pickle)
项目详情
python-olm-3.2.16.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a1c47fce2505b7a16841e17694cbed4ed484519646ede96ee9e89545a49643c9 |
|
MD5 | 07380893f6111ddd14c3fa08de80d248 |
|
BLAKE2b-256 | b8eb23ca73cbdc8c7466a774e515dfd917d9fbe747c1257059246fdc63093f04 |
python_olm-3.2.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 45e76b3f5060a5cf8451140d6c7e3b438f972ff432b6f39d0ca2c7f2296509bb |
|
MD5 | dd97da430ff2b8d7ab04d6f89b987b5d |
|
BLAKE2b-256 | 39ee1e15304ac67d3a7ebecbcac417d6479abb7186aad73c6a035647938eaa8e |
python_olm-3.2.16-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 16bbb209d43d62135450696526ed0a811150e9de9df32ed91542bf9434e79030 |
|
MD5 | d041987ba1af1a3f0fd82081580defd5 |
|
BLAKE2b-256 | 6b56652349f97dc2ce6d1aed43481d179c775f565e68796517836406fb7794c7 |
哈希值 用于 python_olm-3.2.16-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 10a5e68a2f4b5a2bfa5fdb5dbfa22396a551730df6c4a572235acaa96e997d3f |
|
MD5 | 79dff936649fe63edd9b4667d0c05e67 |
|
BLAKE2b-256 | 7993f6729f10149305262194774d6c8b438c0b084740cf239f48ab97b4df02fa |
哈希值 用于 python_olm-3.2.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d41ce8cf04bfe0986c802986d04d2808fbb0f8ddd7a5a53c1f2eef7a9db76ae1 |
|
MD5 | 6d8af697424d3b3bc548ee1e292925f0 |
|
BLAKE2b-256 | a850da98e66dee3f0384fa0d350aa3e60865f8febf86e14dae391f89b626c4b7 |
哈希值 用于 python_olm-3.2.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7c528a71df69db23ede6651d149c691c569cf852ddd16a28d1d1bdf923ccbfa6 |
|
MD5 | 777c0e76d199d72c18e38160c22f62d0 |
|
BLAKE2b-256 | 6a5c34af434e8397503ded1d5e88d9bfef791cfa650e51aee5bbc74f9fe9595b |
哈希值 用于 python_olm-3.2.16-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6862318d4970de508db8b84ad432e2f6b29286f91bfc136020cbb2aa2cf726fc |
|
MD5 | b281fc79e47268c32dc3abadc016f059 |
|
BLAKE2b-256 | 6ed9a0294653a8b34470c8a5c5316397bbbbd39f6406aea031eec60c638d3169 |
哈希值 用于 python_olm-3.2.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2fd199908833349551931686ebdd983fdd9cf01bd2f98fd1991ccf99ed2a7049 |
|
MD5 | a7ddc83a5e33b13008d2a136b318e223 |
|
BLAKE2b-256 | f927bbdfa8f2c146604888ee64bcd945f5c772217d1ab63bdd0ac5aa11908bd8 |
哈希值 用于 python_olm-3.2.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c10e94f1369f6ffa3dae2cc8f74757a6c050cefeb4f59ba10f95da0195e88329 |
|
MD5 | 881031b2e01a55b2b6ebfca045ba6989 |
|
BLAKE2b-256 | 9538ac79c3d5b7d1a3c09807b467692b26c61527e4733b6de4db908525b16465 |
哈希值 用于 python_olm-3.2.16-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 989af27a123ac0cb5c56269097e8ce879185ecc46d0c18b849ded43c8944f423 |
|
MD5 | 8ac4868e5ae5a87dbc77bdf8ec5b5677 |
|
BLAKE2b-256 | cc5797c2b0c8df19136e7ae0ebc3647866cf9b704d54a3d96d65949e250d1204 |
哈希值 用于 python_olm-3.2.16-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d697b93b1aae4f425dd3b651f288d1209f2f88d991eed0432a96ba229a50e978 |
|
MD5 | 0a9524565c1c69689c6f235e41e84032 |
|
BLAKE2b-256 | 94a689a17f24b5e41132e8831a827a137b7353ebd4c0a021d5d7b94842765d29 |
哈希值 用于 python_olm-3.2.16-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1488b9d7f08754a9da927f582dbe426542225c9796b3b71a3be241622226d6f4 |
|
MD5 | 733794dd6de9c3381f7176d2a483ac35 |
|
BLAKE2b-256 | 89bbf6648c1f4086dce3a6f1d97a1b14e68cba798151de04f4e6c2a416cc4786 |
哈希值 用于 python_olm-3.2.16-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6f2215ff1635b6b70dbd0bd8549424cf7bb0179aba72afd23205aae3707a686e |
|
MD5 | b1200d076f6dda933c2d17d51d7e4249 |
|
BLAKE2b-256 | f04fb2ef94cff6c2cb6c1add7758214abe4385915e968eaa535ab3087ab6951f |
哈希值 用于 python_olm-3.2.16-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 39ddf368f30979a0bf8bc1a1b6a944d991b759b948c94e9d738e0181cbe22767 |
|
MD5 | 6dd04b4a87b30342d604b920aee92c51 |
|
BLAKE2b-256 | b40e24a20061e68f8c2352125c617bf15d74fb2bac98448229688e8f737985e8 |
哈希值 用于 python_olm-3.2.16-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 04a4da47b90c5b01fba89fffa1710d10fd3a33b6f47e4fe33402325858556b38 |
|
MD5 | 2e7cf462e073a492c55aaa02bfacd9b2 |
|
BLAKE2b-256 | ef071dacebeccac4c3c3081ba1674e3efefb7934f9e03e1127f1810cfa6fe43f |
哈希值 for python_olm-3.2.16-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0558b1cad408eb473a90c0f64f892a8f59797408f3ad256f2ca8ae440ff2002c |
|
MD5 | b6a8317dcef4e996dd6324c765a0089f |
|
BLAKE2b-256 | 54013cfdb8169271a29ef803daf9be0fccb6968e3392c61635725ed6bef3ec3a |
哈希值 for python_olm-3.2.16-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 51b7f9f655c1812f7e3a859ca6048ed6870962c913d74ce956feffe49b0d04e2 |
|
MD5 | 44201fbb2d05d05bd47d845dabdfd0c6 |
|
BLAKE2b-256 | cacdedc2cba45655ed34d45c7eed271fa3ed9d9c52f48e8620e43c6d249dac8f |
哈希值 for python_olm-3.2.16-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f42c048b9fc420d638a11f2f08e67745307a576914a4e68ed0ca4554a10487bf |
|
MD5 | 0917b080416638a2d95c09b235e97be9 |
|
BLAKE2b-256 | 44836ea4f148ffd56aeb01c3634541ab0ab6d8652958d45b937a7b8d1ceac6e4 |
哈希值 for python_olm-3.2.16-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a0a449c16c5f3756b8e1a89763c22391b43ed6da17046df08bb4be7dab609b35 |
|
MD5 | aca9ff8ed470db90e0613a345a0cb6e7 |
|
BLAKE2b-256 | 7f3b7cbb64e3a7936057b9e8ff6822adaaa948c088932a10a7e8c7dc948a29ae |