18 个版本 (11 个稳定版)

使用旧的 Rust 2015

1.3.2 2022年6月11日
1.3.1 2022年2月17日
1.3.0 2021年12月8日
1.2.0 2021年9月26日
0.1.0 2018年3月31日

#510 in 密码学

Download history 172/week @ 2024-04-04 292/week @ 2024-04-11 256/week @ 2024-04-18 264/week @ 2024-04-25 515/week @ 2024-05-02 358/week @ 2024-05-09 365/week @ 2024-05-16 535/week @ 2024-05-23 444/week @ 2024-05-30 438/week @ 2024-06-06 504/week @ 2024-06-13 499/week @ 2024-06-20 481/week @ 2024-06-27 473/week @ 2024-07-04 548/week @ 2024-07-11 499/week @ 2024-07-18

每月下载量 2,120
4 个包中使用 (通过 olm-rs)

Apache-2.0

1.5MB
28K SLoC

C++ 10K SLoC // 0.1% comments C 7.5K SLoC // 0.2% comments Java 3K SLoC // 0.3% comments Objective-C 2K SLoC // 0.1% comments Python 2K SLoC // 0.4% comments JavaScript 2K SLoC // 0.1% comments Rust 2K SLoC // 0.0% comments GDB Script 120 SLoC Shell 106 SLoC // 0.2% comments TypeScript 103 SLoC // 0.1% comments Batch 93 SLoC Swift 48 SLoC INI 30 SLoC Forge Config 7 SLoC GNU Style Assembly 7 SLoC

包含 (Windows DLL, 130KB) olm/lib/ed25519/ed25519_32.dll, (Windows DLL, 115KB) olm/lib/ed25519/ed25519_64.dll, (JAR 文件, 54KB) gradle-wrapper.jar

olm-sys: 为 Olm 提供底层绑定

这是一个中间包,它将 libolm 的 C API 暴露给 Rust。如果您想从 Rust 开始使用 libolm,请查看 olm-rs

支持的平台

  • Android
  • Linux
  • macOS
  • Windows
  • FreeBSD
  • WebAssembly

构建

此库可以静态或动态链接到 libolm

静态

这是默认选项,无需额外操作。将 libolm 本地构建后,将其静态链接。

构建依赖

  • libstdc++/libc++
  • cmake (需要 v3.12)
  • GNU make 或兼容变体 (仅限 WebAssembly)
  • Emscripten (仅限 WebAssembly)

动态

要动态链接到 libolm,请确保您已经在链接路径中有了库。然后使用将 OLM_LINK_VARIANT 环境变量设置为 dylib 来构建此库。

例如,使用 olm-sys 作为依赖构建项目将如下所示

$ OLM_LINK_VARIANT=dylib cargo build

为 Android 进行交叉编译

要启用 Android 的交叉编译,请将环境变量 ANDROID_NDK 设置为您 NDK 安装的位置,例如

$ ANRDOID_NDK=/home/user/Android/Sdk/ndk/22.0.7026061/

链接器也需要设置为特定于目标的一个,例如对于 aarch64-linux-android,将此设置到您的 cargo 配置中

[target.aarch64-linux-android]
ar = "/home/user/Android/Sdk/ndk/22.0.7026061/toolchains/llvm/prebuilt/linux-x86_64/bin/ar"
linker = "/home/user/Android/Sdk/ndk/22.0.7026061/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30-clang"

设置这两者之后,使用 cargo 进行编译应该像平常一样正常工作

$ ANDROID_NDK=~/Android/Sdk/ndk/22.0.7026061 cargo build --target aarch64-linux-android

为 iOS 进行交叉编译

要启用 iOS 的交叉编译,请运行以下命令将环境变量 IOS_SDK_PATH 设置为 iOS SDK 的位置

$ export IOS_SDK_PATH=`xcrun --show-sdk-path --sdk iphoneos`

依赖项