{"id":37196778,"url":"https://github.com/arachsys/ssh-x25519","last_synced_at":"2026-01-14T22:53:23.419Z","repository":{"id":146677835,"uuid":"422368979","full_name":"arachsys/ssh-x25519","owner":"arachsys","description":"Map ssh-ed25519 keys into x25519 keys","archived":false,"fork":false,"pushed_at":"2021-10-30T07:22:04.000Z","size":3,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-06-21T18:53:26.480Z","etag":null,"topics":["crypto","cryptography","ed25519","golang","ssh","x25519"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":false,"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/arachsys.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"COPYING","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":"2021-10-28T22:09:23.000Z","updated_at":"2023-01-04T16:43:27.000Z","dependencies_parsed_at":"2023-07-07T08:15:54.116Z","dependency_job_id":null,"html_url":"https://github.com/arachsys/ssh-x25519","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/arachsys/ssh-x25519","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arachsys%2Fssh-x25519","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arachsys%2Fssh-x25519/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arachsys%2Fssh-x25519/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arachsys%2Fssh-x25519/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arachsys","download_url":"https://codeload.github.com/arachsys/ssh-x25519/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arachsys%2Fssh-x25519/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28437122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T22:37:52.437Z","status":"ssl_error","status_checked_at":"2026-01-14T22:37:31.496Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["crypto","cryptography","ed25519","golang","ssh","x25519"],"created_at":"2026-01-14T22:53:22.921Z","updated_at":"2026-01-14T22:53:23.395Z","avatar_url":"https://github.com/arachsys.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"ssh-x22519\n==========\n\nThe twisted Edwards curve used for Ed25519 signatures is birationally\nequivalent to the Montgomery curve used for X25519. In Ed25519, the secret\nscalar is half of the private key's SHA512 hash, whereas X25519 uses the\nprivate key directly as a scalar. It is therefore straightforward to map\nssh-ed25519 keys into X25519 keys preserving keypair correspondence.\n\nThis tool is a simple command-line wrapper around the high-quality Go crypto\nlibraries to perform this conversion.\n\nIf ~/.ssh/id_ed25519 and ~/.ssh/id_ed25519.pub are matching ssh-ed25519\nprivate and public keyfiles, the outputs of\n\n  ssh-x25519 ~/.ssh/id_ed25519\n\nand\n\n  ssh-x25519 ~/.ssh/id_ed25519.pub\n\nare matching 32-byte X25519 private and public keys respectively. Private\nkeys are cofactor multiples and invariant under RFC 7748 scalar clamping,\nso are interoperable with both clamped and non-clamped key exchange.\n\nWhen the supplied keyfile is encrypted, ssh-x25519 will prompt for the\npassphrase in the usual way before attempting to extract the private key.\n\n\nRationale\n---------\n\nOpenSSH keys are ubiquitous for login authentication and use sensible modern\ncryptography in their ssh-ed25519 incarnation. Recent OpenSSH also supports\ndata signatures with 'ssh-keygen -Y sign' and 'ssh-keygen -Y verify'. These\nhave now been adopted by git to sign commits as an alternative to OpenPGP,\nwhich is showing its age in complexity and cryptographic eccentricity.\n\nAs their role expands to more general-purpose identification, it will become\nincreasingly convenient to use OpenSSH identities in contexts such as file\nencryption or triple-DH exchange to establish a forward-secure session,\nwith simple, easy-to-audit X25519 libraries.\n\nThe ssh-x25519 tool was written in Go rather than C to take advantage of its\nunusually comprehensive and well-maintained crypto libraries. These already\nsupport parsing, extracting and transforming ssh-ed25519 keys, so only\nminimal wrapper code is needed to provide a complete command-line interface.\n\n\nBuilding and installing\n-----------------------\n\nTo build the ssh-x25519 binary, run 'go build' in the source tree. To\ninstall, copy it into a directory on your path. ssh-x25519 should compile\nand run on any platform with Go 1.17 or later.\n\nPlease report any problems or bugs to Chris Webb \u003cchris@arachsys.com\u003e.\n\n\nCopying\n-------\n\nssh-x25519 was written by Chris Webb \u003cchris@arachsys.com\u003e and is distributed\nas Free Software under the terms of the MIT license in COPYING.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farachsys%2Fssh-x25519","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farachsys%2Fssh-x25519","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farachsys%2Fssh-x25519/lists"}