Yubico Forum https://forum.yubico.com/ |
|
libykneomgr + windows source build https://forum.yubico.com/viewtopic.php?f=26&t=1378 |
Page 1 of 1 |
Author: | dprophet [ Mon May 05, 2014 2:19 am ] |
Post subject: | libykneomgr + windows source build |
Tom, I am starting to work with your libykneomgr so I can embed the capability for Windows 3rd party software to communicate and use the Neo. The Yubikey Neo is a great end use product but the developer "products" has a lot to be desired. No documented build processes, no SDK, limited internet postings to solve problems, max of 1 developer response per day, etc. Any plans to make an actual developer SDK? Expecting developers to all spend countless hours studying your open source code, wasting time with MinGW/cross compiling, figuring out your build process, etc. Its painful, very painful. I would prefer a prebuilt installer that gives us static/dynamic libraries (.a, .lib, .dll, .so) and the header files/API to communicate with your Neo. That said, I have spend all day building a MinGW+MSYS environment on Windows 7. I have the libzip compiling, I am up to the final linking steps for libykneomgr.a and ykneomgr.exe. I am getting a lot of custom linking message spews, in particular about your undocumented usage of libzip. Hopefully you can help me get this final link working. ************************************ make[3]: Entering directory `/home/erik/projects/yubikey/libykneomgr/lib' CC global.lo CC version.lo CC error.lo CC devs.lo CC backend_pcsc.lo CCLD libykneomgr.la *** Warning: This system can not link to static lib archive /usr/local/lib/libzip.la. *** I have the capability to make that library automatically link in when *** you link to this library. But I can only do this if you have a *** shared version of the library, which you do not appear to have. *** Warning: linker path does not have real file for library -lz. *** I have the capability to make that library automatically link in when *** you link to this library. But I can only do this if you have a *** shared version of the library, which you do not appear to have *** because I did check the linker path looking for a file starting *** with libz and none of the candidates passed a file format test *** using a file magic. Last file checked: d:/mingw_latest/i686-w64-mingw32/lib/libz.a *** The inter-library dependencies that have been dropped here will be *** automatically added whenever a program is linked with this library *** or is declared to -dlopen it. *** Since this library must not contain undefined symbols, *** because either the platform does not support them or *** it was explicitly requested with -no-undefined, *** libtool will only create a static version of it. make[3]: Leaving directory `/home/erik/projects/yubikey/libykneomgr/lib' make[2]: Leaving directory `/home/erik/projects/yubikey/libykneomgr/lib' Making all in src make[2]: Entering directory `/home/erik/projects/yubikey/libykneomgr/src' make all-am make[3]: Entering directory `/home/erik/projects/yubikey/libykneomgr/src' CC ykneomgr.o CC cmdline.o CCLD ykneomgr.exe ../lib/.libs/libykneomgr.a(backend_pcsc.o): In function `backend_applet_install': D:\mingw_latest\msys\1.0\home\erik\projects\yubikey\libykneomgr\lib/backend_pcsc.c:389: undefined reference to `_imp__zip_open' D:\mingw_latest\msys\1.0\home\erik\projects\yubikey\libykneomgr\lib/backend_pcsc.c:399: undefined reference to `_imp__zip_stat' D:\mingw_latest\msys\1.0\home\erik\projects\yubikey\libykneomgr\lib/backend_pcsc.c:477: undefined reference to `_imp__zip_fclose' D:\mingw_latest\msys\1.0\home\erik\projects\yubikey\libykneomgr\lib/backend_pcsc.c:458: undefined reference to `_imp__zip_fopen' D:\mingw_latest\msys\1.0\home\erik\projects\yubikey\libykneomgr\lib/backend_pcsc.c:459: undefined reference to `_imp__zip_fread' D:\mingw_latest\msys\1.0\home\erik\projects\yubikey\libykneomgr\lib/backend_pcsc.c:580: undefined reference to `_imp__zip_close' D:\mingw_latest\msys\1.0\home\erik\projects\yubikey\libykneomgr\lib/backend_pcsc.c:470: undefined reference to `_imp__zip_fclose' collect2.exe: error: ld returned 1 exit status make[3]: *** [ykneomgr.exe] Error 1 *********************************** What are the exact Windows commandline arguments and steps to build/install the libzip so its compatible with your ykneomgr? Also, what are the ./configure arguments you use? When I have all of your key software packages working I will zip up my MinGW directory and post on a file share for someone to dup a working build environment for others to use. Also, what would be helpful is to document all the steps to create a clean/new OS/VMware and build a working compiling environment for your yubico C/C++ code. Thx, Erik P.S. Your forums wont allow upload of the build or config text files. |
Author: | Klas [ Fri May 09, 2014 10:29 pm ] |
Post subject: | Re: libykneomgr + windows source build |
Hello, For windows we typically cross-compile for linux, but it should work fine to build on windows as well. Take a look at the windows.mk file for the details, typically you'd invoke it by first running make dist, then: $ make -f windows.mk 64bit VERSION=0.1.3 /klas |
Author: | dprophet [ Mon May 12, 2014 2:10 am ] |
Post subject: | Re: libykneomgr + windows source build |
Klas wrote: Hello, $ make -f windows.mk 64bit VERSION=0.1.3 /klas Thanks Klas. That script/makefile was exactly what I was looking for. That windows.mk didnt obviously didnt work "out of the box" when running on Windows but it showed the steps and and arguments of the build process. I rewrote the script to completely fetch libz, libzip, and libykneomgr, unpack it, autoreconf, autoconf, configure, and make the dependencies, .a, .dll, and test executable on Windows 7. You only need the script, not the source. It downloads and builds everything. I had to customized the i686-w64-mingw32 package to include gengetopt.exe + MSYS. I also removed the gtk document generation code. The whole mingw compiler environment runs fine on Windows. I have communications with the Neo via my Omnikey NFC reader on Windows. You want me to donate the script back or clone my directory tree so people can duplicate the compiler environment for your yubikey C code? I have debugged your code flow, I understand the smartcard apdu commands, and it will be easier than I thought to build a Microsoft Visual Studio .dll to use the Windows SCard API's. Only problem I will face is the documentation for your apdu payloads. Do you have documentation for the apdu payloads? Are all of the Neo Applet payloads completely different? In particular I need apdu payload documentation for the Bitcoin, OTP, and OpenPGP applets. I have no problem open sourcing my work since easy to use hardware security is, well, non existent. So many companies are trying to build custom security hardware when the Neo is so generic, customizable, and powerful. They are reinventing Yubico's hard work. Security is the #1 reason Cryptocurrencies have a bad name. Erik |
Author: | Klas [ Mon May 12, 2014 8:22 am ] |
Post subject: | Re: libykneomgr + windows source build |
Hello, Good that it helped =) We're happy to include build instructions/scripts, please make a pull request on github. For the APDU's: the openpgp cardedge is documented in http://www.g10code.com/docs/openpgp-card-2.0.pdf with sourcecode for our applet available at https://github.com/Yubico/ykneo-openpgp the Yubico OTP applet is not documented anywhere as such, but I've written a little bit about it at viewtopic.php?t=1299#p4873 and if you have specific things you want to do it we can help you figure it out for bitcoin applet I'm not sure what you're interested in, we have an internal applet implementing bip32 but have held on to it since it's not useable in any practical sense of the word (since the Neo chip doesn't implement sha512) /klas |
Page 1 of 1 | All times are UTC + 1 hour |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |