propagate from branch 'au.asn.ucc.matt.ltm.dropbear' (head...
propagate from branch 'au.asn.ucc.matt.ltm.dropbear' (head 2af95f00ebd5bb7a28b3817db1218442c935388e) to branch 'au.asn.ucc.matt.dropbear' (head ecd779509ef23a8cdf64888904fc9b31d78aa933) --HG-- extra : convert_revision : d26d5eb2837f46b56a33fb0e7573aa0201abd4d5
CHANGES
0 → 100644
This diff is collapsed.
INSTALL
0 → 100644
LibTomMath is hereby released into the Public Domain. | ||
Dropbear contains a number of components from different sources, hence there | ||
are a few licenses and authors involved. All licenses are fairly | ||
non-restrictive. | ||
-- Tom St Denis | ||
The majority of code is written by Matt Johnston, under the license below. | ||
Portions of the client-mode work are (c) 2004 Mihnea Stoenescu, under the | ||
same license: | ||
Copyright (c) 2002-2006 Matt Johnston | ||
Portions copyright (c) 2004 Mihnea Stoenescu | ||
All rights reserved. | ||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. | ||
===== | ||
LibTomCrypt and LibTomMath are written by Tom St Denis, and are Public Domain. | ||
===== | ||
sshpty.c is taken from OpenSSH 3.5p1, | ||
Copyright (c) 1995 Tatu Ylonen <[email protected]>, Espoo, Finland | ||
All rights reserved | ||
"As far as I am concerned, the code I have written for this software | ||
can be used freely for any purpose. Any derived versions of this | ||
software must be clearly marked as such, and if the derived work is | ||
incompatible with the protocol description in the RFC file, it must be | ||
called by a name other than "ssh" or "Secure Shell". " | ||
===== | ||
loginrec.c | ||
loginrec.h | ||
atomicio.h | ||
atomicio.c | ||
and strlcat() (included in util.c) are from OpenSSH 3.6.1p2, and are licensed | ||
under the 2 point BSD license. | ||
loginrec is written primarily by Andre Lucas, atomicio.c by Theo de Raadt. | ||
strlcat() is (c) Todd C. Miller | ||
===== | ||
Import code in keyimport.c is modified from PuTTY's import.c, licensed as | ||
follows: | ||
PuTTY is copyright 1997-2003 Simon Tatham. | ||
Portions copyright Robert de Bath, Joris van Rantwijk, Delian | ||
Delchev, Andreas Schultz, Jeroen Massar, Wez Furlong, Nicolas Barry, | ||
Justin Bradford, and CORE SDI S.A. | ||
Permission is hereby granted, free of charge, to any person | ||
obtaining a copy of this software and associated documentation files | ||
(the "Software"), to deal in the Software without restriction, | ||
including without limitation the rights to use, copy, modify, merge, | ||
publish, distribute, sublicense, and/or sell copies of the Software, | ||
and to permit persons to whom the Software is furnished to do so, | ||
subject to the following conditions: | ||
The above copyright notice and this permission notice shall be | ||
included in all copies or substantial portions of the Software. | ||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
NONINFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE | ||
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF | ||
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
MULTI
0 → 100644
#Makefile for GCC | ||
# This Makefile is for Dropbear SSH Server and Client | ||
# @[email protected] | ||
# invocation: | ||
# make PROGRAMS="dropbear dbclient scp" MULTI=1 STATIC=1 SCPPROGRESS=1 | ||
# | ||
#Tom St Denis | ||
# to make a multiple-program statically linked binary "staticdropbearmulti". | ||
# This example will include dropbear, scp, dropbearkey, dropbearconvert, and | ||
# dbclient functionality, and includes the progress-bar functionality in scp. | ||
# Hopefully that seems intuitive. | ||
#version of library | ||
VERSION=0.40 | ||
ifndef PROGRAMS | ||
PROGRAMS=dropbear dbclient dropbearkey dropbearconvert | ||
endif | ||
VPATH=@[email protected] | ||
srcdir=@[email protected] | ||
LTC=libtomcrypt/libtomcrypt.a | ||
LTM=libtommath/libtommath.a | ||
# Dropbear takes flags from the toplevel makefile | ||
CFLAGS += -I$(srcdir) | ||
COMMONOBJS=dbutil.o buffer.o \ | ||
dss.o bignum.o \ | ||
signkey.o rsa.o random.o \ | ||
queue.o \ | ||
atomicio.o compat.o fake-rfc2553.o | ||
#CFLAGS += -I./ -Wall -W -Wshadow -Wsign-compare | ||
SVROBJS=svr-kex.o svr-algo.o svr-auth.o sshpty.o \ | ||
svr-authpasswd.o svr-authpubkey.o svr-session.o svr-service.o \ | ||
svr-chansession.o svr-runopts.o svr-agentfwd.o svr-main.o svr-x11fwd.o\ | ||
svr-tcpfwd.o svr-authpam.o | ||
ifndef IGNORE_SPEED | ||
CLIOBJS=cli-algo.o cli-main.o cli-auth.o cli-authpasswd.o cli-kex.o \ | ||
cli-session.o cli-service.o cli-runopts.o cli-chansession.o \ | ||
cli-authpubkey.o cli-tcpfwd.o cli-channel.o cli-authinteract.o | ||
#for speed | ||
#CFLAGS += -O3 -funroll-all-loops | ||
CLISVROBJS=common-session.o packet.o common-algo.o common-kex.o \ | ||
common-channel.o common-chansession.o termcodes.o loginrec.o \ | ||
tcp-accept.o listener.o process-packet.o \ | ||
common-runopts.o circbuffer.o | ||
#for size | ||
#CFLAGS += -Os | ||
KEYOBJS=dropbearkey.o gendss.o genrsa.o | ||
#x86 optimizations [should be valid for any GCC install though] | ||
#CFLAGS += -fomit-frame-pointer | ||
CONVERTOBJS=dropbearconvert.o keyimport.o | ||
#debug | ||
#CFLAGS += -g3 | ||
SCPOBJS=scp.o progressmeter.o atomicio.o scpmisc.o | ||
#install as this user | ||
ifndef INSTALL_GROUP | ||
GROUP=wheel | ||
else | ||
GROUP=$(INSTALL_GROUP) | ||
HEADERS=options.h dbutil.h session.h packet.h algo.h ssh.h buffer.h kex.h \ | ||
dss.h bignum.h signkey.h rsa.h random.h service.h auth.h \ | ||
debug.h channel.h chansession.h config.h queue.h sshpty.h \ | ||
termcodes.h gendss.h genrsa.h runopts.h includes.h \ | ||
loginrec.h atomicio.h x11fwd.h agentfwd.h tcpfwd.h compat.h \ | ||
listener.h fake-rfc2553.h | ||
dropbearobjs=$(COMMONOBJS) $(CLISVROBJS) $(SVROBJS) | ||
dbclientobjs=$(COMMONOBJS) $(CLISVROBJS) $(CLIOBJS) | ||
dropbearkeyobjs=$(COMMONOBJS) $(KEYOBJS) | ||
dropbearconvertobjs=$(COMMONOBJS) $(CONVERTOBJS) | ||
scpobjs=$(SCPOBJS) | ||
VPATH=@[email protected] | ||
srcdir=@[email protected] | ||
prefix=@[email protected] | ||
exec_prefix=${prefix} | ||
bindir=${exec_prefix}/bin | ||
sbindir=${exec_prefix}/sbin | ||
CC=@[email protected] | ||
AR=@[email protected] | ||
RANLIB=@[email protected] | ||
STRIP=@[email protected] | ||
INSTALL=@[email protected] | ||
CPPFLAGS=@[email protected] | ||
CFLAGS=-I. -I$(srcdir) -I$(srcdir)/libtomcrypt/src/headers/ $(CPPFLAGS) @[email protected] | ||
LIBS=$(LTC) $(LTM) @[email protected] | ||
LDFLAGS=@[email protected] | ||
EXEEXT=@[email protected] | ||
# whether we're building client, server, or both for the common objects. | ||
# evilness so we detect 'dropbear' by itself as a word | ||
space:= $(empty) $(empty) | ||
ifneq (,$(strip $(foreach prog, $(PROGRAMS), $(findstring ZdropbearZ, Z$(prog)Z)))) | ||
CFLAGS+= -DDROPBEAR_SERVER | ||
endif | ||
ifneq (,$(strip $(foreach prog, $(PROGRAMS), $(findstring ZdbclientZ, Z$(prog)Z)))) | ||
CFLAGS+= -DDROPBEAR_CLIENT | ||
endif | ||
ifndef INSTALL_USER | ||
USER=root | ||
# these are exported so that libtomcrypt's makefile will use them | ||
export CC | ||
export CFLAGS | ||
export RANLIB AR STRIP | ||
ifeq ($(STATIC), 1) | ||
LDFLAGS+=-static | ||
endif | ||
ifeq ($(MULTI), 1) | ||
TARGETS=dropbearmulti | ||
else | ||
USER=$(INSTALL_USER) | ||
TARGETS=$(PROGRAMS) | ||
endif | ||
#default files to install | ||
ifndef LIBNAME | ||
LIBNAME=libtommath.a | ||
# for the scp progress meter. The -D doesn't affect anything else. | ||
ifeq ($(SCPPROGRESS), 1) | ||
CFLAGS+=-DPROGRESS_METER | ||
endif | ||
default: ${LIBNAME} | ||
HEADERS=tommath.h tommath_class.h tommath_superclass.h | ||
#LIBPATH-The directory for libtommath to be installed to. | ||
#INCPATH-The directory to install the header files for libtommath. | ||
#DATAPATH-The directory to install the pdf docs. | ||
DESTDIR= | ||
LIBPATH=/usr/lib | ||
INCPATH=/usr/include | ||
DATAPATH=/usr/share/doc/libtommath/pdf | ||
OBJECTS=bncore.o bn_mp_init.o bn_mp_clear.o bn_mp_exch.o bn_mp_grow.o bn_mp_shrink.o \ | ||
bn_mp_clamp.o bn_mp_zero.o bn_mp_set.o bn_mp_set_int.o bn_mp_init_size.o bn_mp_copy.o \ | ||
bn_mp_init_copy.o bn_mp_abs.o bn_mp_neg.o bn_mp_cmp_mag.o bn_mp_cmp.o bn_mp_cmp_d.o \ | ||
bn_mp_rshd.o bn_mp_lshd.o bn_mp_mod_2d.o bn_mp_div_2d.o bn_mp_mul_2d.o bn_mp_div_2.o \ | ||
bn_mp_mul_2.o bn_s_mp_add.o bn_s_mp_sub.o bn_fast_s_mp_mul_digs.o bn_s_mp_mul_digs.o \ | ||
bn_fast_s_mp_mul_high_digs.o bn_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_s_mp_sqr.o \ | ||
bn_mp_add.o bn_mp_sub.o bn_mp_karatsuba_mul.o bn_mp_mul.o bn_mp_karatsuba_sqr.o \ | ||
bn_mp_sqr.o bn_mp_div.o bn_mp_mod.o bn_mp_add_d.o bn_mp_sub_d.o bn_mp_mul_d.o \ | ||
bn_mp_div_d.o bn_mp_mod_d.o bn_mp_expt_d.o bn_mp_addmod.o bn_mp_submod.o \ | ||
bn_mp_mulmod.o bn_mp_sqrmod.o bn_mp_gcd.o bn_mp_lcm.o bn_fast_mp_invmod.o bn_mp_invmod.o \ | ||
bn_mp_reduce.o bn_mp_montgomery_setup.o bn_fast_mp_montgomery_reduce.o bn_mp_montgomery_reduce.o \ | ||
bn_mp_exptmod_fast.o bn_mp_exptmod.o bn_mp_2expt.o bn_mp_n_root.o bn_mp_jacobi.o bn_reverse.o \ | ||
bn_mp_count_bits.o bn_mp_read_unsigned_bin.o bn_mp_read_signed_bin.o bn_mp_to_unsigned_bin.o \ | ||
bn_mp_to_signed_bin.o bn_mp_unsigned_bin_size.o bn_mp_signed_bin_size.o \ | ||
bn_mp_xor.o bn_mp_and.o bn_mp_or.o bn_mp_rand.o bn_mp_montgomery_calc_normalization.o \ | ||
bn_mp_prime_is_divisible.o bn_prime_tab.o bn_mp_prime_fermat.o bn_mp_prime_miller_rabin.o \ | ||
bn_mp_prime_is_prime.o bn_mp_prime_next_prime.o bn_mp_dr_reduce.o \ | ||
bn_mp_dr_is_modulus.o bn_mp_dr_setup.o bn_mp_reduce_setup.o \ | ||
bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_div_3.o bn_s_mp_exptmod.o \ | ||
bn_mp_reduce_2k.o bn_mp_reduce_is_2k.o bn_mp_reduce_2k_setup.o \ | ||
bn_mp_reduce_2k_l.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_2k_setup_l.o \ | ||
bn_mp_radix_smap.o bn_mp_read_radix.o bn_mp_toradix.o bn_mp_radix_size.o \ | ||
bn_mp_fread.o bn_mp_fwrite.o bn_mp_cnt_lsb.o bn_error.o \ | ||
bn_mp_init_multi.o bn_mp_clear_multi.o bn_mp_exteuclid.o bn_mp_toradix_n.o \ | ||
bn_mp_prime_random_ex.o bn_mp_get_int.o bn_mp_sqrt.o bn_mp_is_square.o bn_mp_init_set.o \ | ||
bn_mp_init_set_int.o bn_mp_invmod_slow.o bn_mp_prime_rabin_miller_trials.o \ | ||
bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin_n.o | ||
$(LIBNAME): $(OBJECTS) | ||
$(AR) $(ARFLAGS) [email protected] $(OBJECTS) | ||
$(RANLIB) [email protected] | ||
#make a profiled library (takes a while!!!) | ||
# | ||
# This will build the library with profile generation | ||
# then run the test demo and rebuild the library. | ||
# | ||
# So far I've seen improvements in the MP math | ||
profiled: | ||
make CFLAGS="$(CFLAGS) -fprofile-arcs -DTESTING" timing | ||
./ltmtest | ||
rm -f *.a *.o ltmtest | ||
make CFLAGS="$(CFLAGS) -fbranch-probabilities" | ||
#make a single object profiled library | ||
profiled_single: | ||
perl gen.pl | ||
$(CC) $(CFLAGS) -fprofile-arcs -DTESTING -c mpi.c -o mpi.o | ||
$(CC) $(CFLAGS) -DTESTING -DTIMER demo/timing.c mpi.o -o ltmtest | ||
./ltmtest | ||
rm -f *.o ltmtest | ||
$(CC) $(CFLAGS) -fbranch-probabilities -DTESTING -c mpi.c -o mpi.o | ||
$(AR) $(ARFLAGS) $(LIBNAME) mpi.o | ||
$(RANLIB) $(LIBNAME) | ||
install: $(LIBNAME) | ||
install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(LIBPATH) | ||
install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(INCPATH) | ||
install -g $(GROUP) -o $(USER) $(LIBNAME) $(DESTDIR)$(LIBPATH) | ||
install -g $(GROUP) -o $(USER) $(HEADERS) $(DESTDIR)$(INCPATH) | ||
test: $(LIBNAME) demo/demo.o | ||
$(CC) $(CFLAGS) demo/demo.o $(LIBNAME) -o test | ||
mtest: test | ||
cd mtest ; $(CC) $(CFLAGS) mtest.c -o mtest | ||
timing: $(LIBNAME) | ||
$(CC) $(CFLAGS) -DTIMER demo/timing.c $(LIBNAME) -o ltmtest | ||
# makes the LTM book DVI file, requires tetex, perl and makeindex [part of tetex I think] | ||
docdvi: tommath.src | ||
cd pics ; MAKE=${MAKE} ${MAKE} | ||
echo "hello" > tommath.ind | ||
perl booker.pl | ||
latex tommath > /dev/null | ||
latex tommath > /dev/null | ||
makeindex tommath | ||
latex tommath > /dev/null | ||
# poster, makes the single page PDF poster | ||
poster: poster.tex | ||
pdflatex poster | ||
rm -f poster.aux poster.log | ||
# makes the LTM book PDF file, requires tetex, cleans up the LaTeX temp files | ||
docs: docdvi | ||
dvipdf tommath | ||
rm -f tommath.log tommath.aux tommath.dvi tommath.idx tommath.toc tommath.lof tommath.ind tommath.ilg | ||
cd pics ; MAKE=${MAKE} ${MAKE} clean | ||
#LTM user manual | ||
mandvi: bn.tex | ||
echo "hello" > bn.ind | ||
latex bn > /dev/null | ||
latex bn > /dev/null | ||
makeindex bn | ||
latex bn > /dev/null | ||
#LTM user manual [pdf] | ||
manual: mandvi | ||
pdflatex bn >/dev/null | ||
rm -f bn.aux bn.dvi bn.log bn.idx bn.lof bn.out bn.toc | ||
pretty: | ||
perl pretty.build | ||
clean: | ||
rm -f *.bat *.pdf *.o *.a *.obj *.lib *.exe *.dll etclib/*.o demo/demo.o test ltmtest mpitest mtest/mtest mtest/mtest.exe \ | ||
*.idx *.toc *.log *.aux *.dvi *.lof *.ind *.ilg *.ps *.log *.s mpi.c *.da *.dyn *.dpi tommath.tex `find . -type f | grep [~] | xargs` *.lo *.la | ||
rm -rf .libs | ||
cd etc ; MAKE=${MAKE} ${MAKE} clean | ||
cd pics ; MAKE=${MAKE} ${MAKE} clean | ||
#zipup the project (take that!) | ||
no_oops: clean | ||
cd .. ; cvs commit | ||
echo Scanning for scratch/dirty files | ||
find . -type f | grep -v CVS | xargs -n 1 bash mess.sh | ||
zipup: clean manual poster docs | ||
perl gen.pl ; mv mpi.c pre_gen/ ; \ | ||
cd .. ; rm -rf ltm* libtommath-$(VERSION) ; mkdir libtommath-$(VERSION) ; \ | ||
cp -R ./libtommath/* ./libtommath-$(VERSION)/ ; \ | ||
tar -c libtommath-$(VERSION)/* | bzip2 -9vvc > ltm-$(VERSION).tar.bz2 ; \ | ||
zip -9 -r ltm-$(VERSION).zip libtommath-$(VERSION)/* ; \ | ||
mv -f ltm* ~ ; rm -rf libtommath-$(VERSION) | ||
#%: $(HEADERS) | ||
#%: $(HEADERS) Makefile | ||
# TODO | ||
all: $(TARGETS) | ||
strip: $(TARGETS) | ||
$(STRIP) $(addsuffix $(EXEEXT), $(TARGETS)) | ||
install: $(addprefix inst_, $(TARGETS)) | ||
installdropbearmulti: insdbmulti $(addprefix insmulti, $(PROGRAMS)) | ||
insdbmulti: dropbearmulti | ||
$(INSTALL) -d -m 755 $(DESTDIR)$(bindir) | ||
$(INSTALL) -m 755 dropbearmulti$(EXEEXT) $(DESTDIR)$(bindir) | ||
-chown root $(DESTDIR)$(bindir)/dropbearmulti$(EXEEXT) | ||
-chgrp 0 $(DESTDIR)$(bindir)/dropbearmulti$(EXEEXT) | ||
insmultidropbear: dropbearmulti | ||
-rm -f $(DESTDIR)$(sbindir)/dropbear$(EXEEXT) | ||
-ln -s $(DESTDIR)$(bindir)/dropbearmulti$(EXEEXT) $(DESTDIR)$(sbindir)/dropbear$(EXEEXT) | ||
insmulti%: dropbearmulti | ||
-rm -f $(DESTDIR)$(bindir)/$*$(EXEEXT) | ||
-ln -s $(DESTDIR)$(bindir)/dropbearmulti$(EXEEXT) $(DESTDIR)$(bindir)/$*$(EXEEXT) | ||
# dropbear should go in sbin, so it needs a seperate rule | ||
inst_dropbear: dropbear | ||
$(INSTALL) -d -m 755 $(DESTDIR)$(sbindir) | ||
$(INSTALL) -m 755 dropbear$(EXEEXT) $(DESTDIR)$(sbindir) | ||
-chown root $(DESTDIR)$(sbindir)/dropbear$(EXEEXT) | ||
-chgrp 0 $(DESTDIR)$(sbindir)/dropbear$(EXEEXT) | ||
inst_%: $* | ||
$(INSTALL) -d -m 755 $(DESTDIR)$(bindir) | ||
$(INSTALL) -m 755 $*$(EXEEXT) $(DESTDIR)$(bindir) | ||
-chown root $(DESTDIR)$(bindir)/$*$(EXEEXT) | ||
-chgrp 0 $(DESTDIR)$(bindir)/$*$(EXEEXT) | ||
# for some reason the rule further down doesn't like $([email protected]) as a prereq. | ||
dropbear: $(dropbearobjs) | ||
dbclient: $(dbclientobjs) | ||
dropbearkey: $(dropbearkeyobjs) | ||
dropbearconvert: $(dropbearconvertobjs) | ||
dropbear dbclient dropbearkey dropbearconvert: $(HEADERS) $(LTC) $(LTM) \ | ||
Makefile | ||
$(CC) $(LDFLAGS) -o [email protected]$(EXEEXT) $([email protected]objs) $(LIBS) | ||
# scp doesn't use the libs so is special. | ||
scp: $(SCPOBJS) $(HEADERS) Makefile | ||
$(CC) $(LDFLAGS) -o [email protected]$(EXEEXT) $(SCPOBJS) | ||
# multi-binary compilation. | ||
MULTIOBJS= | ||
ifeq ($(MULTI),1) | ||
MULTIOBJS=dbmulti.o $(sort $(foreach prog, $(PROGRAMS), $($(prog)objs))) | ||
CFLAGS+=$(addprefix -DDBMULTI_, $(PROGRAMS)) -DDROPBEAR_MULTI | ||
endif | ||
dropbearmulti: multilink | ||
multibinary: $(HEADERS) $(MULTIOBJS) $(LTC) $(LTM) Makefile | ||
$(CC) $(LDFLAGS) -o dropbearmulti$(EXEEXT) $(MULTIOBJS) $(LIBS) | ||
multilink: multibinary $(addprefix link, $(PROGRAMS)) | ||
link%: | ||
-rm -f $*$(EXEEXT) | ||
-ln -s dropbearmulti$(EXEEXT) $*$(EXEEXT) | ||
$(LTC): options.h | ||
cd libtomcrypt && $(MAKE) clean && $(MAKE) | ||
$(LTM): options.h | ||
cd libtommath && $(MAKE) | ||
.PHONY : clean sizes thisclean distclean tidy ltc-clean ltm-clean | ||
ltc-clean: | ||
cd libtomcrypt && $(MAKE) clean | ||
ltm-clean: | ||
cd libtommath && $(MAKE) clean | ||
sizes: dropbear | ||
objdump -t dropbear|grep ".text"|cut -d "." -f 2|sort -rn | ||
clean: ltc-clean ltm-clean thisclean | ||
thisclean: | ||
-rm -f dropbear dbclient dropbearkey dropbearconvert scp scp-progress \ | ||
dropbearmulti *.o *.da *.bb *.bbg *.prof | ||
distclean: clean tidy | ||
-rm -f config.h | ||
-rm -f Makefile | ||
tidy: | ||
-rm -f *~ *.gcov */*~ |
README
0 → 100644
This is Dropbear, a smallish SSH 2 server and client. | ||
INSTALL has compilation instructions. | ||
MULTI has instructions on making a multi-purpose binary (ie a single binary | ||
which performs multiple tasks, to save disk space) | ||
SMALL has some tips on creating small binaries. | ||
See TODO for a few of the things I know need looking at, and please contact | ||
me if you have any questions/bugs found/features/ideas/comments etc :) | ||
Matt Johnston | ||
[email protected] | ||
In the absence of detailed documentation, some notes follow: | ||
============================================================================ | ||
Server public key auth: | ||
You can use ~/.ssh/authorized_keys in the same way as with OpenSSH, just put | ||
the key entries in that file. They should be of the form: | ||
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwVa6M6cGVmUcLl2cFzkxEoJd06Ub4bVDsYrWvXhvUV+ZAM9uGuewZBDoAqNKJxoIn0Hyd0Nk/yU99UVv6NWV/5YSHtnf35LKds56j7cuzoQpFIdjNwdxAN0PCET/MG8qyskG/2IE2DPNIaJ3Wy+Ws4IZEgdJgPlTYUBWWtCWOGc= [email protected] | ||
You must make sure that ~/.ssh, and the key file, are only writable by the | ||
user. Beware of editors that split the key into multiple lines. | ||
NOTE: Dropbear ignores authorized_keys options such as those described in the | ||
OpenSSH sshd manpage, and will not allow a login for these keys. | ||
============================================================================ | ||
Client public key auth: | ||
Dropbear can do public key auth as a client, but you will have to convert | ||
OpenSSH style keys to Dropbear format, or use dropbearkey to create them. | ||
If you have an OpenSSH-style private key ~/.ssh/id_rsa, you need to do: | ||
dropbearconvert openssh dropbear ~/.ssh/id_rsa ~/.ssh/id_rsa.db | ||
dbclient -i ~/.ssh/id_rsa.db <hostname> | ||
Currently encrypted keys aren't supported, neither is agent forwarding. At some | ||
stage both hopefully will be. | ||
============================================================================ | ||
If you want to get the public-key portion of a Dropbear private key, look at | ||
dropbearkey's '-y' option. | ||
============================================================================ | ||
To run the server, you need to generate server keys, this is one-off: | ||
./dropbearkey -t rsa -f dropbear_rsa_host_key | ||
./dropbearkey -t dss -f dropbear_dss_host_key | ||
or alternatively convert OpenSSH keys to Dropbear: | ||
./dropbearconvert openssh dropbear /etc/ssh/ssh_host_dsa_key dropbear_dss_host_key | ||
============================================================================ | ||
If the server is run as non-root, you most likely won't be able to allocate a | ||
pty, and you cannot login as any user other than that running the daemon | ||
(obviously). Shadow passwords will also be unusable as non-root. | ||