{"id":27106071,"url":"https://github.com/expressvpn/wolfssl-rs","last_synced_at":"2026-04-09T05:03:02.944Z","repository":{"id":157137173,"uuid":"617806223","full_name":"expressvpn/wolfssl-rs","owner":"expressvpn","description":"A high level Rust interface for WolfSSL","archived":false,"fork":false,"pushed_at":"2026-02-23T06:22:49.000Z","size":1332,"stargazers_count":20,"open_issues_count":4,"forks_count":12,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-02-23T11:55:38.125Z","etag":null,"topics":["rust","wolfssl"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/expressvpn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.adoc","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.adoc","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.adoc","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-03-23T06:32:41.000Z","updated_at":"2026-02-23T06:22:50.000Z","dependencies_parsed_at":"2026-02-23T06:04:25.314Z","dependency_job_id":null,"html_url":"https://github.com/expressvpn/wolfssl-rs","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/expressvpn/wolfssl-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expressvpn%2Fwolfssl-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expressvpn%2Fwolfssl-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expressvpn%2Fwolfssl-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expressvpn%2Fwolfssl-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/expressvpn","download_url":"https://codeload.github.com/expressvpn/wolfssl-rs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/expressvpn%2Fwolfssl-rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29994121,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-02T01:47:34.672Z","status":"online","status_checked_at":"2026-03-02T02:00:07.342Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rust","wolfssl"],"created_at":"2025-04-06T19:23:03.536Z","updated_at":"2026-04-09T05:03:02.937Z","avatar_url":"https://github.com/expressvpn.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WolfSSL (Rust)\n\nThis repository attempts to build safe and idiomatic abstractions for the [WolfSSL Embedded SSL/TLS Library (C)][wolfssl-home].\n\nThere are two parts to this:\n\n- The [`wolfssl-sys`][] crate auto-generates unsafe Rust bindings through [bindgen], to C functions provided by the WolfSSL library.\n- The [`wolfssl`][] crate then build safe and idiomatic abstractions on top of the unsafe layer.\n\n[wolfssl-home]: https://www.wolfssl.com/\n[`wolfssl-sys`]: ./wolfssl-sys\n[`wolfssl`]: ./wolfssl\n[bindgen]: https://github.com/rust-lang/rust-bindgen/\n\n## Why WolfSSL?\n\nAt [ExpressVPN](https://www.expressvpn.com) we love [WolfSSL](https://www.wolfssl.com). It's fast, secure, easy to use and of course it's Open Source. That's why when we were looking at TLS libraries to use as the core of [Lightway](https://www.lightway.com), WolfSSL was a clear winner. Now that we're doing more research with Rust, it's only natural that we'd want to keep using WolfSSL, but alas, there weren't any Rust bindings available.\n\nSo we built one :)\n\n# Building and Running\n\nAfter cloning this repo, you'll also need to clone the submodules for the WolfSSL source code via:\n```\ngit submodule update --init\n```\n\nThe project requires `cmake`, `automake` and `autoconf` to build. Use the following command to install the dependencies on macOS:\n```\nbrew install cmake autoconf automake\n```\n\nCurrently, the usual commands from `cargo` works perfectly fine. Common commands\ninclude the following:\n\n```\ncargo build\n```\n\n```\ncargo test\n```\n\n```\ncargo clippy\n```\n\n## Building with Earthly\nThere is also an `Earthfile` provided.  For example, here's how you can build the crate in [Earthly](https://earthly.dev):\n\n```\nearthly +build-crate\n```\n\nFor more information about the different Earthly targets available, run:\n```\nearthly doc\n```\n\n## Semantic Versioning Guidelines\n\nWe follow [Semantic Versioning 2.0.0](https://semver.org/) for version management. Version numbers follow the format `MAJOR.MINOR.PATCH`:\n\n- **PATCH (x.y.Z)**: Dependency updates\n- **MINOR (x.Y.0)**: Backwards-compatible API changes\n- **MAJOR (X.0.0)**: Backwards-incompatible changes and/or WolfSSL library version upgrades\n\n## Releasing crate(s)\n\nThis repository is a monorepo for two crates: `wolfssl-sys` and `wolfssl`. Both crates can be released from a single PR — the release workflow publishes them sequentially (`wolfssl-sys` first, then `wolfssl`), waiting for each to appear on crates.io before proceeding.\n\nA GitHub Workflow automates publishing to crates.io and creating GitHub releases/tags.\n\nTo release, follow these steps:\n\n1. If `wolfssl-sys` has changes, bump the version in `wolfssl-sys/Cargo.toml`\n1. If you bumped `wolfssl-sys`, update the `wolfssl-sys = { ..., version = \"...\" }` dependency in `wolfssl/Cargo.toml` to match\n1. Bump the version in `wolfssl/Cargo.toml`\n1. Open a PR — the workflow runs in dry-run mode and posts a comment showing the release plan\n1. Merge the PR — the workflow publishes `wolfssl-sys` first (if needed), polls crates.io until it’s live, then publishes `wolfssl`\n\nThe workflow is idempotent: if a run fails partway through, re-running it will skip already-published crates and pick up where it left off.\n\nUse the `ignore-release` label only on chore/CI-only PRs with no code changes. For any functional change, we expect a release unless there’s a strong reason not to. If no version bump is present and no `ignore-release` label is set, CI will block the release workflow.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpressvpn%2Fwolfssl-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexpressvpn%2Fwolfssl-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexpressvpn%2Fwolfssl-rs/lists"}