{"id":17962290,"url":"https://github.com/richtr/go-tls-srp","last_synced_at":"2025-03-25T04:31:47.867Z","repository":{"id":22940192,"uuid":"26289492","full_name":"richtr/go-tls-srp","owner":"richtr","description":"Snapshot of https://bitbucket.org/mjl/go-tls-srp @ 6th Nov 2014","archived":false,"fork":false,"pushed_at":"2014-11-06T20:52:44.000Z","size":168,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-19T08:54:00.889Z","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":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/richtr.png","metadata":{"files":{"readme":"README","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":"2014-11-06T20:51:07.000Z","updated_at":"2024-10-01T18:57:07.000Z","dependencies_parsed_at":"2022-08-21T17:30:39.114Z","dependency_job_id":null,"html_url":"https://github.com/richtr/go-tls-srp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richtr%2Fgo-tls-srp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richtr%2Fgo-tls-srp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richtr%2Fgo-tls-srp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richtr%2Fgo-tls-srp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richtr","download_url":"https://codeload.github.com/richtr/go-tls-srp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245401360,"owners_count":20609161,"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-10-29T11:18:29.931Z","updated_at":"2025-03-25T04:31:47.861Z","avatar_url":"https://github.com/richtr.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"go-tls-srp is an implementation of TLS-SRP, https://tools.ietf.org/html/rfc5054\n\nTLS-SRP lets a client make a secure, authenticated TLS (SSL)\nconnection to a server with only a username and password. No\ncertificates are needed. No certificate authorities have to be\ntrusted.\n\nThis implementation is based on a stripped down version of Go's\ncrypto/tls package.  It only implements the non-certificate ciphers\nfrom RFC5054 (because it was simpler, and not needing certificates\nis the whole point of TLS-SRP), in order of preference:\n- SRP-SHA1 with AES-256-CBC,SHA1\n- SRP-SHA1 with AES-128-CBC,SHA1\n- SRP-SHA1 with 3DES-CBC,SHA1\n\nSupported TLS extensions:\n- SNI, server name indication\n- Ticket sessions\n- SRP (obviously)\n\nOther extensions from crypto/tls are not relevant for SRP, or will\nbe deprecated.\n\ngo-tls-srp is based on crypto/tls from the 1.2.1 Go release branch.\nThe plan is to keep it updated with later release branches, and\nmaybe more.\n\nBoth the client and server implementation have been tested against\nthe client and server implementations of GnuTLS and OpenSSL.\n\nThis library should not yet be considered ready for use. Another\nsecurity review would be nice, and more experience using it.\n\n\n# Documentation\n\nSee http://godoc.org/bitbucket.org/mjl/go-tls-srp for documentation.\n\nSee ex/ for simple, working examples of clients and servers.\n\n\n# Contact\n\nFor feedback, questions, changes etc, contact me at mechiel@ueber.net.\n\n\n# Todo\n\n- test that username/passwords that are not valid utf-8 do work\n- redo current test cases and include the exact commands that were used to generate them\n- write test case for two authentication attempts to server with invalid username, ensure that we get the same salt twice (so attacker cannot probe for (in)valid accounts)\n- write test cases so all N,g groups are covered\n- figure out why disappearing servers do not cause read errors for clients (and probably vice versa).\n\nMaybe:\n\n- integrate srp support back into go's crypto/tls.  but perhaps not, the api/interface might become ugly, the use case for srp vs \"normal\" certificated-based tls is quite different. also, the code will be more complicated, because some messages take on an other form under srp.\n- implement srp's certificate-related ciphers.\n- different interface for clients to pass in username \u0026 password (though it's nice and simple like it is now, and since this library only has srp ciphers, you know you will need a password before starting the connection, to there is not much use delaying reading a password)\n- try to clear memory with sensitive data in it (like passwords).  not sure if this is possible in go.  how do you overwrite a string?\n- be more strict in handling usernames: always use []byte form, never string\n\n\n# License\n\nSince this code is based on Go's crypto/tls package, the same license\napplies (see LICENSE). My changes are released under the same\nconditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichtr%2Fgo-tls-srp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichtr%2Fgo-tls-srp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichtr%2Fgo-tls-srp/lists"}