I found LSH a little while ago, and have been trying to compile it in an effort to test it against my own server/client. However, LSH fails to compileI've tried 1.4.2, 1.5.0, and CVS, all to no avail. The first error seems to be from src/nettle/md5.h, with inttypes.h not found. configure detects that the file does not exist, but LSH seems to ignore it.
Has anyone else tried this successfully, or am I going to have to wade through the errors?
Thanks, Paul
"Paul Swartz" z3p@twistedmatrix.com writes:
The first error seems to be from src/nettle/md5.h, with inttypes.h not found. configure detects that the file does not exist, but LSH seems to ignore it.
Do you have <stdint.h> instead? I would expect both files to be included with cygwin's gcc package, but I don't know.
Has anyone else tried this successfully, or am I going to have to wade through the errors?
As far as I know, no-one has compiled lsh on cygwin before. So you have to bug report the problems you find, and try to fix them. I don't think there should be any fundamental problem to get the client to work. The server may be harder, I don't know how login is handled on win32 or cygwin. And I guess a win32 "native" server would be more useful.
The particular problem with inttypes.h and nettle's include files is that those files are supposed to be installed, so they can't include config.h. I think the right way to solve the problem is to let configure create a file nettle-types.h, which includes either stdint.h, inttypes.h, or or defines uint32_t and friends itself, and then have all other nettle include files include that.
Regards, /Niels
On 3 Jan 2003 at 21:40, Niels Möller wrote:
"Paul Swartz" z3p@twistedmatrix.com writes:
The first error seems to be from src/nettle/md5.h, with inttypes.h not found. configure detects that the file does not exist, but LSH seems to ignore it.
Do you have <stdint.h> instead? I would expect both files to be included with cygwin's gcc package, but I don't know.
I don't have either. I hacked one together that's based off <sys/types.h> however, and it seems to work pretty well, except...
Has anyone else tried this successfully, or am I going to have to wade through the errors?
As far as I know, no-one has compiled lsh on cygwin before. So you have to bug report the problems you find, and try to fix them. I don't think there should be any fundamental problem to get the client to work. The server may be harder, I don't know how login is handled on win32 or cygwin. And I guess a win32 "native" server would be more useful.
Adding the inttypes.h to /usr/include solved most of the problems, until I got to the test suite. At this point, all hell breaks loose. I get undefined reference errors to _nettle_aes[128|192|256] in aes-test.c, to _cbc_encrypt and _cbc_decrypt, _md5_init, _md5_update, _rsa_md5_sign, _rsa_md5_verify, _sha1_init, _sha1_update, _rsa_sha1_sign, _rsa_sha1_verify, _dsa_signature_init, _knuth_lfib_init, _knith_lfib_random, _dsa_sign, _dsa_verify, and _dsa_signature_clear in testutils.c.
Trying with a CVS checkout version of nettle, the linking fails on aes- text.exe, with _aes_encrypt_ and _aes_decrypt undefined.
Another bug is that nettle/desdata.c compiled twice, first without the -D flags, the second time with them. I worked around this by removing the #if HAVE_CONFIG_H around the #include.
-p
"Paul Swartz" z3p@twistedmatrix.com writes:
On 3 Jan 2003 at 21:40, Niels Möller wrote:
Do you have <stdint.h> instead? I would expect both files to be included with cygwin's gcc package, but I don't know.
I don't have either. I hacked one together that's based off <sys/types.h> however, and it seems to work pretty well, except...
Odd. stdint.h is required by C99, but I'm not sure if it's gcc or some other package that is responsible for it. Which version of gcc are you using?
Trying with a CVS checkout version of nettle, the linking fails on aes- text.exe, with _aes_encrypt_ and _aes_decrypt undefined.
Try disabling the assembler files (./configure --disable-assembler). To use the assembler files, it seems we need a configure test to try if there should be a leading underscore on external symbols. The current assembler build system assumes there are no leading underscores, like on ELF systems.
Another bug is that nettle/desdata.c compiled twice, first without the -D flags, the second time with them. I worked around this by removing the #if HAVE_CONFIG_H around the #include.
I don't understand this. Can you quote the commands executed by make, any errors, and tell me in exactly which file you removed #if HAVE_CONFIG_H?
My best guess is that it's the name "desdata.exe" (instead of "desdata", on unix systems) that confuses the makefile. You could try the following patch.
*** Makefile.am.~1.54.~ Thu Nov 21 21:38:54 2002 --- Makefile.am Sat Jan 4 13:32:50 2003 *************** *** 135,142 ****
# Generate DES headers. $(des_headers): desdata.c ! $(MAKE) desdata ! ./desdata $(@F) > $@T test -s $@T && mv -f $@T $@
des.o: des.c des.h $(des_headers) --- 135,142 ----
# Generate DES headers. $(des_headers): desdata.c ! $(MAKE) desdata$(EXEEXT) ! ./desdata$(EXEEXT) $(@F) > $@T test -s $@T && mv -f $@T $@
des.o: des.c des.h $(des_headers)
Also, in general, it is helpful if you include full error messages, versions of related tools (in particular gcc), and configure output.
Regards, /Niels