跳转到主要内容

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 (2.7 MB 查看哈希值)

上传时间

构建分布

python_olm-3.2.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (301.0 kB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ x86-64

python_olm-3.2.16-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (293.7 kB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ ARM64

python_olm-3.2.16-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (297.0 kB 查看哈希值)

上传于 CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

python_olm-3.2.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (300.8 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ x86-64

python_olm-3.2.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (293.0 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ ARM64

python_olm-3.2.16-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (296.4 kB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

python_olm-3.2.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (300.8 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

python_olm-3.2.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (293.1 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ ARM64

python_olm-3.2.16-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (296.4 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

python_olm-3.2.16-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (300.8 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

python_olm-3.2.16-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (293.1 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

python_olm-3.2.16-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (296.3 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

python_olm-3.2.16-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (300.9 kB 查看哈希)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

python_olm-3.2.16-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (293.2 kB 查看哈希)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

python_olm-3.2.16-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (296.5 kB 查看哈希)

上传于 CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

python_olm-3.2.16-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (300.6 kB 查看哈希)

上传于 CPython 3.7m manylinux: glibc 2.17+ x86-64

python_olm-3.2.16-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (292.8 kB 查看哈希)

上传于 CPython 3.7m manylinux: glibc 2.17+ ARM64

python_olm-3.2.16-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (296.1 kB 查看哈希)

上传于 CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

支持者

AWSAWS 云计算和安全赞助商DatadogDatadog 监控FastlyFastly CDNGoogleGoogle 下载分析MicrosoftMicrosoft PSF赞助商PingdomPingdom 监控SentrySentry 错误日志StatusPageStatusPage 状态页面