#assembly #openssl #windows-msvc #build #tongsuo

tongsuo-src

Source of Tongsuo and logic to build it

10 stable releases

Uses old Rust 2015

840.2.0+8.4.0 Feb 4, 2024
840.1.1+8.4.0 Dec 25, 2023
840.0.4+8.4.0pre3 Oct 10, 2023
840.0.3+8.4.0pre2 Sep 4, 2023
832.0.1+8.3.2 Jan 20, 2023

#400 in Cryptography

Download history 72/week @ 2023-12-22 303/week @ 2023-12-29 31/week @ 2024-01-05 83/week @ 2024-01-12 81/week @ 2024-01-19 285/week @ 2024-01-26 372/week @ 2024-02-02 231/week @ 2024-02-09 473/week @ 2024-02-16 569/week @ 2024-02-23 469/week @ 2024-03-01 445/week @ 2024-03-08 300/week @ 2024-03-15 291/week @ 2024-03-22 258/week @ 2024-03-29 360/week @ 2024-04-05

1,347 downloads per month
Used in 4 crates (2 directly)

MIT/Apache

24MB
614K SLoC

C 446K SLoC // 0.1% comments Perl 154K SLoC // 0.1% comments Bitbake 7K SLoC // 0.1% comments GNU Style Assembly 3.5K SLoC // 0.1% comments M4 1.5K SLoC // 0.0% comments Shell 765 SLoC // 0.2% comments Prolog 636 SLoC Rust 495 SLoC // 0.2% comments Assembly 311 SLoC // 0.1% comments ASN.1 126 SLoC // 0.5% comments Python 29 SLoC // 0.3% comments

tongsuo-src

This crate contains the logic to build Tongsuo and is intended to be consumed by the openssl-sys crate. You likely in theory aren't interacting with this too much!

About this fork

This crate is based on openssl-src-rs.

Versioning

There are currently two maintained branches:

  • main which builds Tongsuo 8.4.0
  • stable-8.3 which builds Tongsuo 8.3.2

The crates versions follow the X.Y.Z+B pattern:

  • The major version X is the upstream OpenSSL version:
    • 832 for 8.3.2
    • 840 for 8.4.0 (to be higher than 832)
  • The minor Y and patch Z versions are incremented when making changes to the crate, either OpenSSL update or internal changes.
  • B contains the full upstream OpenSSL version, like 8.3.2 or 8.4.0-pre1. Note that this field is actually ignored in comparisons and only there for documentation.

Windows MSVC Assembly

Building OpenSSL for windows-msvc targets, users can choose whether to enable assembly language routines, which requires nasm.
The build process will automatically detect whether nasm.exe is installed in PATH. If found, the assembly language routines will be enabled (in other words, the no-asm option will NOT be configured).

You can manipulate this behavior by setting the OPENSSL_RUST_USE_NASM environment variable:

  • 1: Force enable the assembly language routines. (panic if nasm.exe is not available.)
  • 0: Force disable the assembly language routines even if the nasm.exe can be found in PATH.
  • not set: Let the build process automatically detect whether nasm.exe is installed. If found, enable. If not, disable.

However, this environment variable does NOT take effects on non-windows platforms.

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in openssl-src by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies