{"id":13642295,"url":"https://github.com/libressl/portable","last_synced_at":"2025-04-11T03:28:33.784Z","repository":{"id":18534357,"uuid":"21735012","full_name":"libressl/portable","owner":"libressl","description":"LibreSSL Portable itself. This includes the build scaffold and compatibility layer that builds portable LibreSSL from the OpenBSD source code. Pull requests or patches sent to tech@openbsd.org are welcome.","archived":false,"fork":false,"pushed_at":"2024-10-29T15:09:42.000Z","size":2472,"stargazers_count":1365,"open_issues_count":82,"forks_count":267,"subscribers_count":81,"default_branch":"master","last_synced_at":"2024-10-29T15:25:52.411Z","etag":null,"topics":["c","cryptography","libressl","openbsd","openssl","security","ssl","tls"],"latest_commit_sha":null,"homepage":"https://www.libressl.org","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/libressl.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-07-11T12:14:29.000Z","updated_at":"2024-10-29T15:09:46.000Z","dependencies_parsed_at":"2023-11-19T12:24:57.871Z","dependency_job_id":"cefe9082-7a77-42ab-8f0b-6f241ce0db2a","html_url":"https://github.com/libressl/portable","commit_stats":{"total_commits":1964,"total_committers":99,"mean_commits":"19.838383838383837","dds":0.7408350305498982,"last_synced_commit":"663f6cf6111fa74564182b895e154874af1c7649"},"previous_names":["libressl-portable/portable"],"tags_count":112,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libressl%2Fportable","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libressl%2Fportable/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libressl%2Fportable/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libressl%2Fportable/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/libressl","download_url":"https://codeload.github.com/libressl/portable/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248335123,"owners_count":21086520,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["c","cryptography","libressl","openbsd","openssl","security","ssl","tls"],"created_at":"2024-08-02T01:01:29.555Z","updated_at":"2025-04-11T03:28:33.768Z","avatar_url":"https://github.com/libressl.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"![LibreSSL image](https://www.libressl.org/images/libressl.jpg)\n\n## Official portable version of [LibreSSL](https://www.libressl.org)\n\n[![Linux Build Status](https://github.com/libressl/portable/actions/workflows/linux.yml/badge.svg)](https://github.com/libressl/portable/actions/workflows/linux.yml)\n[![macOS Build Status](https://github.com/libressl/portable/actions/workflows/macos.yml/badge.svg)](https://github.com/libressl/portable/actions/workflows/macos.yml)\n[![Windows Build Status](https://github.com/libressl/portable/actions/workflows/windows.yml/badge.svg)](https://github.com/libressl/portable/actions/workflows/windows.yml)\n[![Android Build Status](https://github.com/libressl/portable/actions/workflows/android.yml/badge.svg)](https://github.com/libressl/portable/actions/workflows/android.yml)\n[![Solaris Build Status](https://github.com/libressl/portable/actions/workflows/solaris.yml/badge.svg)](https://github.com/libressl/portable/actions/workflows/solaris.yml)\n[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/libressl.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened\u0026can=1\u0026q=proj:libressl)\n\nLibreSSL is a fork of [OpenSSL](https://www.openssl.org) 1.0.1g developed by the\n[OpenBSD](https://www.openbsd.org) project.  Our goal is to modernize the codebase,\nimprove security, and apply best practice development processes from OpenBSD.\n\n## Compatibility with OpenSSL\n\nLibreSSL provides much of the OpenSSL 1.1 API. The OpenSSL 3 API is not currently\nsupported. Incompatibilities between the projects exist and are unavoidable since\nboth evolve with different goals and priorities. Important incompatibilities will\nbe addressed if possible and as long as they are not too detrimental to LibreSSL's\ngoals of simplicity, security and sanity. We do not add new features, ciphers and\nAPI without a solid reason and require that new code be clean and of high quality.\n\nLibreSSL is not ABI compatible with any release of OpenSSL, or necessarily\nearlier releases of LibreSSL. You will need to relink your programs to\nLibreSSL in order to use it, just as in moving between major versions of OpenSSL.\nLibreSSL's installed library version numbers are incremented to account for\nABI and API changes.\n\n## Compatibility with other operating systems\n\nWhile primarily developed on and taking advantage of APIs available on OpenBSD,\nthe LibreSSL portable project attempts to provide working alternatives for\nother operating systems, and assists with improving OS-native implementations\nwhere possible.\n\nAt the time of this writing, LibreSSL is known to build and work on:\n\n* Linux (kernel 3.17 or later recommended)\n* FreeBSD (tested with 9.2 and later)\n* NetBSD (7.0 or later recommended)\n* HP-UX (11i)\n* Solaris 11 and later\n* Mac OS X (tested with 10.8 and later)\n* AIX (5.3 and later)\n* Emscripten (3.1.44 and later)\n\nLibreSSL also supports the following Windows environments:\n\n* Microsoft Windows (Windows 7 / Windows Server 2008r2 or later, x86 and x64)\n* Wine (32-bit and 64-bit)\n* MinGW-w64, Cygwin, and Visual Studio\n\nOfficial release tarballs are available at your friendly neighborhood\nOpenBSD mirror in directory\n[LibreSSL](https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/),\nalthough we suggest that you use a [mirror](https://www.openbsd.org/ftp.html).\n\nThe LibreSSL portable build framework is also\n[mirrored](https://github.com/libressl/portable) on GitHub.\n\nPlease report bugs either to the public libressl@openbsd.org mailing list,\nor to the GitHub\n[issue tracker](https://github.com/libressl/portable/issues)\n\nSevere vulnerabilities or bugs requiring coordination with OpenSSL can be\nsent to the core team at libressl-security@openbsd.org.\n\n# Building LibreSSL\n\n## Building from a Git checkout\n\nIf you have checked out this source using Git, or have downloaded a source \ntarball from GitHub, follow these initial steps to prepare the source tree for\nbuilding. _Note: Your build will fail if you do not follow these instructions!\nIf you cannot follow these instructions or cannot meet these prerequisites, \nplease download an official release distribution from \nhttps://ftp.openbsd.org/pub/OpenBSD/LibreSSL/ instead. Using official\nreleases is strongly advised if you are not a developer._\n\n1. Ensure that you have a bash shell. This is also required on Windows.\n2. Ensure that you have the following packages installed:\n   automake, autoconf, git, libtool, perl.\n3. Run `./autogen.sh` to prepare the source tree for building.\n\n## Build steps using configure\n\nOnce you have the source tree prepared, run these commands to build and install:\n\n```sh\n./configure   # see ./configure --help for configuration options\nmake check    # runs builtin unit tests\nmake install  # set DESTDIR= to install to an alternate location\n```\n\nAlternatively, it is possible to run `./dist.sh` to prepare a tarball.\n\n## Build steps using CMake\n\nOnce you have the source tree prepared, run these commands to build and install:\n\n```sh\nmkdir build\ncd build\ncmake ..\nmake\nmake test\n```\n\nFor faster builds, you can use Ninja:\n\n```sh\nmkdir build-ninja\ncd build-ninja\ncmake -G\"Ninja\" ..\nninja\nninja test\n```\n\nOr another supported build system like Visual Studio:\n\n```sh\nmkdir build-vs2022\ncd build-vs2022\ncmake -G\"Visual Studio 17 2022\" ..\n```\n\n#### Additional CMake Options\n\n| Option Name             | Default | Description                                                                                                     |\n|-------------------------|--------:|-----------------------------------------------------------------------------------------------------------------|\n| `LIBRESSL_SKIP_INSTALL` |   `OFF` | allows skipping install() rules.  Can be specified from command line using \u003cbr\u003e```-DLIBRESSL_SKIP_INSTALL=ON``` |\n| `LIBRESSL_APPS`         |    `ON` | allows skipping application builds. Apps are required to run tests                                              |\n| `LIBRESSL_TESTS`        |    `ON` | allows skipping of tests. Tests are only available in static builds                                             |\n| `BUILD_SHARED_LIBS`     |   `OFF` | CMake option for building shared libraries.                                                                     |\n| `ENABLE_ASM`            |    `ON` | builds assembly optimized rules.                                                                                |\n| `ENABLE_EXTRATESTS`     |   `OFF` | Enable extra tests that may be unreliable on some platforms                                                     |\n| `ENABLE_NC`             |   `OFF` | Enable installing TLS-enabled nc(1)                                                                             |\n| `OPENSSLDIR`            |   Blank | Set the default openssl directory.  Can be specified from command line using \u003cbr\u003e```-DOPENSSLDIR=\u003cdirname\u003e```   |\n\n## Build information for specific systems\n\n### HP-UX (11i)\n\nSet the UNIX_STD environment variable to `2003` before running `configure`\nin order to build with the HP C/aC++ compiler. See the \"standards(5)\" man\npage for more details.\n\n```sh\nexport UNIX_STD=2003\n./configure\nmake\n```\n\n### MinGW-w64 - Windows\n\nLibreSSL builds against relatively recent versions of [MinGW-w64](https://www.mingw-w64.org/), not to be\nconfused with the original mingw.org project. MinGW-w64 3.2 or later\nshould work. See [README.mingw.md](README.mingw.md) for more information.\n\n### Emscripten\n\nWhen configuring LibreSSL for use with Emscripten, make sure to prepend\n`emcmake` to your `cmake` configuration command. Once configured, you can\nproceed with your usual `cmake` commands. For example:\n\n```sh\nemcmake cmake . -Bbuild\ncmake --build build --config Release\nctest --test-dir build -C Release --output-on-failure\n```\n\n# Using LibreSSL\n\n## CMake\n\nMake a new folder in your project root (where your main `CMakeLists.txt` file is\nlocated) called CMake. Copy the `FindLibreSSL.cmake` file to that folder, and\nadd the following line to your main `CMakeLists.txt`:\n\n```cmake\nset(CMAKE_MODULE_PATH \"${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}\")\n```\n\nAfter your `add_executable` or `add_library` line in your `CMakeLists.txt` file\nadd the following:\n\n```cmake\nfind_package(LibreSSL REQUIRED)\n```\n\nIt will tell CMake to find LibreSSL and if found will let you use the following\n3 interfaces in your `CMakeLists.txt` file:\n\n* LibreSSL::Crypto\n* LibreSSL::SSL\n* LibreSSL::TLS\n\nIf you for example want to use the LibreSSL TLS library in your test program,\ninclude it like so (SSL and Crypto are required by TLS and included\nautomatically too):\n\n```cmake\ntarget_link_libraries(test LibreSSL::TLS)\n```\n\nFull example:\n\n```cmake\ncmake_minimum_required(VERSION 3.10.0)\n\nset(CMAKE_MODULE_PATH \"${CMAKE_CURRENT_SOURCE_DIR}/CMake;${CMAKE_MODULE_PATH}\")\n\nproject(test)\n\nadd_executable(test Main.cpp)\n\nfind_package(LibreSSL REQUIRED)\n\ntarget_link_libraries(test LibreSSL::TLS)\n```\n\n#### Linux\n\nFollowing the guide in the sections above to compile LibreSSL using make and\nrunning `sudo make install` will install LibreSSL to the `/usr/local/` folder,\nand will be found automatically by find_package. If your system installs it to\nanother location, or you have placed them yourself in a different location, you\ncan set the CMake variable `LIBRESSL_ROOT_DIR` to the correct path, to help\nCMake find the library.\n\n#### Windows\n\nPlacing the library files in `C:/Program Files/LibreSSL/lib` and the include\nfiles in `C:/Program Files/LibreSSL/include` should let CMake find them\nautomatically, but it is recommended that you use CMake-GUI to set the paths.\nIt is more convenient as you can have the files in any folder you choose.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibressl%2Fportable","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibressl%2Fportable","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibressl%2Fportable/lists"}