{"id":35711871,"url":"https://github.com/assaabloy-ppi/salt-channel","last_synced_at":"2026-01-06T04:51:53.138Z","repository":{"id":47555594,"uuid":"71692421","full_name":"assaabloy-ppi/salt-channel","owner":"assaabloy-ppi","description":"The specification and the reference implementation of Salt Channel - a simple, light-weight secure channel protocol based on TweetNaCl by Bernstein.","archived":false,"fork":false,"pushed_at":"2023-02-17T08:49:02.000Z","size":10492,"stargazers_count":13,"open_issues_count":0,"forks_count":9,"subscribers_count":17,"default_branch":"master","last_synced_at":"2023-02-27T18:37:07.408Z","etag":null,"topics":["java","protocol","salt-channel","tweetnacl"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/assaabloy-ppi.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}},"created_at":"2016-10-23T09:07:34.000Z","updated_at":"2023-02-17T08:50:22.000Z","dependencies_parsed_at":"2023-02-09T20:31:06.694Z","dependency_job_id":null,"html_url":"https://github.com/assaabloy-ppi/salt-channel","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/assaabloy-ppi/salt-channel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/assaabloy-ppi%2Fsalt-channel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/assaabloy-ppi%2Fsalt-channel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/assaabloy-ppi%2Fsalt-channel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/assaabloy-ppi%2Fsalt-channel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/assaabloy-ppi","download_url":"https://codeload.github.com/assaabloy-ppi/salt-channel/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/assaabloy-ppi%2Fsalt-channel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28221941,"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","status":"online","status_checked_at":"2026-01-06T02:00:07.049Z","response_time":56,"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":["java","protocol","salt-channel","tweetnacl"],"created_at":"2026-01-06T04:51:44.777Z","updated_at":"2026-01-06T04:51:53.132Z","avatar_url":"https://github.com/assaabloy-ppi.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"salt-channel\n============\n\nThis repo contains [the specification](files/spec/salt-channel-v2-final2.md) and the \nJava reference implementation of \n*Salt Channel* - a simple, light-weight secure channel protocol based on the \n[TweetNaCl](http://tweetnacl.cr.yp.to/) API / library by Bernstein et al.\nSalt Channel is \"Powered by Curve25519\".\n\nSalt Channel is simpler than TLS and works well on small embedded processors.\nIt has a lower handshake overhead. See [this comparison](files/salt-channel-vs-tls-2017-05.md).\nSalt Channel *always* uses mutual authentication and forward secrecy.\nThe protocol hides the identity of the client.\n\nThe development of the code in this repository and the protocol \nitself has been financed by [ASSA ABLOY AB](http://www.assaabloy.com/) -- the \nglobal leader in door opening solutions. Thank you for \nsupporting this work. We also thank Daniel Bernstein for developing the \nunderlying cryptographic algorithms. Our work is completely based on his work.\n\nThe protocol has been audited. [This statement](files/v2-review-statement-2018-02.pdf)\nis a summary of the result of the latest security audit. It was performed \nby Assured AB, thank you!\n\nAlso, the protocol has been analysed with formal methods using Proverif. \nIt proves, within a realistic mathematical model, that the main security goals\nhave been met. See the results in [the report](formal-verification/proverif/SaltChannelReport-2018.pdf).\n\n\n\nVersions\n========\n\nVersion v2 as defined in [salt-channel-v2-final2.md](files/spec/salt-channel-v2-final2.md) \nis the latest stable version of the protocol. New applications should use this version.\nWe recommend that existing applications using v1 should eventually be migrated\nto v2. As of today (February 2019) we have found no critical security concern \nwith v1, so from a security point of view, there is no rush to upgrade.\n\n\n\nContributors\n============\n\n## Protocol authors\n\n* Frans Lundberg, ASSA ABLOY AB, Stockholm, Sweden.\n* Simon Johansson, ASSA ABLOY AB, Stockholm, Sweden.\n\nFeel free to contact us.\n\n## Thanks!\n\nThank you, Shawn Nock (https://github.com/nocko), for your work on formal verification \nusing Verifpal.\n\n\n\nImplementations\n===============\n\n\nJava (this repo)\n----------------\n\nThis repository contains the Java implementation of Salt Channel. It is the reference \nimplementation of the protocol. It is open source and released under the MIT License.\n\n\nC\n---\n\nSee [github.com/assaabloy-ppi/salt-channel-c](https://github.com/assaabloy-ppi/salt-channel-c) for the C implementation. It is suitable for both\nembedded devices and larger computers.\n\n\nJavaScript\n----------\n\nImplementation by Håkan Olsson. Both server and client. \nSee [github.com/hakanols/salt-channel-js](https://github.com/hakanols/salt-channel-js).\n\nImplementation by ASSA ABLOY: [github.com/assaabloy-ppi/salt-channel-js](https://github.com/assaabloy-ppi/salt-channel-js), \nJavaScript implementation, MIT license.\n\n\nSwift\n-----\n\nAvailable here: [github.com/assaabloy-ppi/salt-channel-swift](https://github.com/assaabloy-ppi/salt-channel-swift),\nSwift for iPhone and more, MIT license.\n\n\nPython\n------\n\nSee [github.com/assaabloy-ppi/salt-channel-python](https://github.com/assaabloy-ppi/salt-channel-python), \nPython 3 implementation, MIT License.\n\n\n\nOptimized crypto\n================\n\nThe library depends on the repo:\n[github.com/assaabloy-ppi/salt-aa](https://github.com/assaabloy-ppi/salt-aa).\nNote that this dependency is *copied* into this repo.\n\nThe salt-aa repo allows seamless use of optimized binaries (Libsodium) \nwhen available. If no native implementation is available, a pure Java \nimplementation (github.com/InstantWebP2P/tweetnacl-java) is used. \nThis is handled dynamically.\n\n\n\nBuild and develop\n=================\n\nType \"ant\" to build using the build.xml script.\n\nIDE tips: \n\n* Add the src, src-in, src-test directories as source \ndirectories.\n\n* Set out/classes/ to the output for compiled class files.\n\n* Include the libraries in lib, lib-dev.\n\nShould work fine with any IDE. We have worked with Eclipse, IntelliJ, simple \ntext editors.\n\n\n\nCode conventions (Java)\n=======================\n\nThe following code conventions apply to the Java code in this repository.\n\nThe old Sun code conventions \n(http://www.oracle.com/technetwork/java/codeconvtoc-136057.html)\nare followed loosely together with the following rules (which take precedence):\n\n* Lines can be up to 100 characters long.\n* Use four spaces as indent.\n* Use '\\n' for end-of-line.\n* Use UTF-8 encoding.\n\n\nFiles\n=====\n\n* **files/** -- Non code files, specifications, docs.\n\n* **src/** -- Primary source code.\n\n* **src-in/** -- Source code copied from elsewhere. Do not edit, copy \n  from primary location instead.\n\n* **src-test/** -- JUnit tests.\n\n* **build.xml** -- ANT build script. Just type \"ant\" for the default build.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fassaabloy-ppi%2Fsalt-channel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fassaabloy-ppi%2Fsalt-channel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fassaabloy-ppi%2Fsalt-channel/lists"}