Skip to content

pts/tiny-ssh-keygen-ed25519

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
tiny-ssh-keygen-ed25519: tiny ssh-keygen for ed25519 keypairs in standard C
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tiny-ssh-keygen-ed25519 is a command-line tool implemented in standard C for
generating unencrypted ed25519 keypairs (public and private keys) to be used
with OpenSSH.

tiny-ssh-keygen-ed25519 is a self-contained implementation optimized for
executable file size. It contains ed25519 elliptic curve crypto code (taken
from TweetNaCl), an SHA-512 checksum computation (also taken from
TweetNaCl), a Base64 encoder and some glue code to generate in the proper
file format, to parse to command-line flags and to write the result to file.

Usage for keypair generation (as a replacement for ssh-keygen):

  ./ssh_keygen_ed25519 -t ed25519 -f <output-file> [-C <comment>]

Compile with any of:

* make
* gcc -s -Os -ansi -pedantic -W -Wall -Wextra -Werror -o ssh_keygen_ed25519.dynamic ssh_keygen_ed25519.c
* i686-w64-mingw32-gcc -mconsole -ansi -pedantic -W -Wall -Wextra -Werror -s -Os -o ssh_keygen_ed25519.exe ssh_keygen_ed25519.c
* xtiny gcc -ansi -pedantic -W -Wall -Wextra -Werror -s -Os -o ssh_keygen_ed25519 ssh_keygen_ed25519.c
* You can also use g++ instead of gcc, ssh_keygen_ed25519.c is also a valid
  C++ program.

For an alternative self-contained implementation in Python, see
https://github.com/pts/py_ssh_keygen_ed25519

Incompatibilities with the ssh-keygen command in OpenSSH:

* ssh-keygen supports many more command-line flags and other key types (such
  as `-t rsa').
* ssh-keygen doesn't overwrite the key file if it already exist.
* ssh-keygen uses a more sophisticated default comment containing the
  username and the password. The default comment in tiny-ssh-keygen-ed25519
  is "key" (without the quotes).

tiny-ssh-keygen-ed25519 is licensed under GNU GPL v2.

Operating system compatibility:

* tiny-ssh-keygen-ed25519 works on Unix systems (including Linux and macOS)
  and Windows. Probably it's easy to port it to other systems as well.
* tiny-ssh-keygen-ed25519 needs GCC to compile (probably it also works with
  Clang), the recommended version is GCC >= 4.8. The MinGW GCC also works
  both when run on Windows or as a cross-compiler.
* tiny-ssh-keygen-ed25519 compiles with uClibc and pts-xstatic
  (https://raw.githubusercontent.com/pts/pts-clang-xstatic/master/README.pts-xstatic.txt)
  as well.
* tiny-ssh-keygen-ed25519 compiles with pts-xtiny
  (https://github.com/pts/pts-xtiny) as well. In fact for Linux i386 or
  amd64 (x86_64) it's recommended to compile it with pts-xtiny.

How small is tiny-ssh-keygen-ed25519?

* If compiled with pts-xtiny (see the `xtiny gcc' command above) for Linux
  i386, the ELF executable size is 7568 bytes. It doesn't need any libc.
* If compiled for Linux amd64, linked dynamically to glibc, the ELF
  executable size is about 14504 bytes.
* If compiled for Win32 (see the i686-w64-mingw32-gcc command avove), the
  .exe file is 19968 bytes.
* tiny-ssh-keygen-ed25519 doesn't need any external libraries. If compiled
  with pts-xtiny, it doesn't need any libc either.

__END__

About

tiny ssh-keygen for ed25519 keypairs in standard C

Resources

Stars

Watchers

Forks

Packages

No packages published