{"id":13983976,"url":"https://github.com/cloudflare/tls-tris","last_synced_at":"2025-04-09T05:11:00.505Z","repository":{"id":43751906,"uuid":"59218728","full_name":"cloudflare/tls-tris","owner":"cloudflare","description":"crypto/tls, now with 100% more 1.3. THE API IS NOT STABLE AND DOCUMENTATION IS NOT GUARANTEED.","archived":false,"fork":false,"pushed_at":"2024-09-25T04:28:48.000Z","size":138348,"stargazers_count":292,"open_issues_count":35,"forks_count":50,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-04-02T04:03:56.233Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudflare.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2016-05-19T15:23:09.000Z","updated_at":"2025-02-09T08:58:12.000Z","dependencies_parsed_at":"2024-10-29T19:01:04.317Z","dependency_job_id":null,"html_url":"https://github.com/cloudflare/tls-tris","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudflare%2Ftls-tris","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudflare%2Ftls-tris/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudflare%2Ftls-tris/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudflare%2Ftls-tris/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudflare","download_url":"https://codeload.github.com/cloudflare/tls-tris/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247980837,"owners_count":21027808,"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":[],"created_at":"2024-08-09T05:02:06.592Z","updated_at":"2025-04-09T05:11:00.484Z","avatar_url":"https://github.com/cloudflare.png","language":"Go","funding_links":[],"categories":["Go","Security \u0026 Privacy"],"sub_categories":["PKI \u0026 TLS"],"readme":"```\n _____ _     ____        _        _\n|_   _| |   / ___|      | |_ _ __(_)___\n  | | | |   \\___ \\ _____| __| '__| / __|\n  | | | |___ ___) |_____| |_| |  | \\__ \\\n  |_| |_____|____/       \\__|_|  |_|___/\n\n```\n\ncrypto/tls, now with 100% more 1.3.\n\nTHE API IS NOT STABLE AND DOCUMENTATION IS NOT GUARANTEED.\n\n[![Build Status](https://travis-ci.org/cloudflare/tls-tris.svg?branch=master)](https://travis-ci.org/cloudflare/tls-tris)\n\n## Usage\n\nSince `crypto/tls` is very deeply (and not that elegantly) coupled with the Go stdlib,\ntls-tris shouldn't be used as an external package.  It is also impossible to vendor it\nas `crypto/tls` because stdlib packages would import the standard one and mismatch.\n\nSo, to build with tls-tris, you need to use a custom GOROOT.\n\nA script is provided that will take care of it for you: `./_dev/go.sh`.\nJust use that instead of the `go` tool.\n\nThe script also transparently fetches the custom Cloudflare Go 1.10 compiler with the required backports.\n\n## Development\n\n### Dependencies\n\nCopy paste line bellow to install all required dependencies:\n\n* ArchLinux:\n```\npacman -S go docker gcc git make patch python2 python-docker rsync\n```\n\n* Debian:\n```\napt-get install build-essential docker go patch python python-pip rsync\npip install setuptools\npip install docker\n```\n\n* Ubuntu (18.04) :\n```\napt-get update\napt-get install build-essential docker docker.io golang patch python python-pip rsync sudo\npip install setuptools\npip install docker\nsudo usermod -a -G docker $USER\n```\n\nSimilar dependencies can be found on any UNIX based system/distribution.\n\n### Building\n\nThere are number of things that need to be setup before running tests. Most important step is to copy ``go env GOROOT`` directory to ``_dev`` and swap TLS implementation and recompile GO. Then for testing we use go implementation from ``_dev/GOROOT``.\n\n```\ngit clone https://github.com/cloudflare/tls-tris.git\ncd tls-tris; cp _dev/utils/pre-commit .git/hooks/ \nmake -f _dev/Makefile build-all\n```\n\n### Testing\n\nWe run 3 kinds of test:.\n\n* Unit testing: \u003cbr/\u003e``make -f _dev/Makefile test-unit``\n* Testing against BoringSSL test suite: \u003cbr/\u003e``make -f _dev/Makefile test-bogo``\n* Compatibility testing (see below):\u003cbr/\u003e``make -f _dev/Makefile test-interop``\n\nTo run all the tests in one go use:\n```\nmake -f _dev/Makefile test\n```\n\n### Testing interoperability with 3rd party libraries\n\nIn order to ensure compatibility we are testing our implementation against BoringSSL, NSS and PicoTLS.\n\nMakefile has a specific target for testing interoperability with external libraries. Following command can be used in order to run such test:\n\n```\nmake -f _dev/Makefile test-interop\n```\n\nThe makefile target is just a wrapper and it executes ``_dev/interop_test_runner`` script written in python. The script implements interoperability tests using ``python unittest`` framework. \n\nScript can be started from command line directly. For example:\n\n```\n\u003e ./interop_test_runner -v InteropServer_NSS.test_zero_rtt\ntest_zero_rtt (__main__.InteropServer_NSS) ... ok\n\n----------------------------------------------------------------------\nRan 1 test in 8.765s\n\nOK\n```\n\n### Debugging\n\nWhen the environment variable `TLSDEBUG` is set to `error`, Tris will print a hexdump of the Client Hello and a stack trace if an handshake error occurs. If the value is `short`, only the error and the first meaningful stack frame are printed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudflare%2Ftls-tris","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudflare%2Ftls-tris","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudflare%2Ftls-tris/lists"}