Looking at the fips_canister.c I see that ia32 (32-bit and 64-bit) systems are not enabled with the cross compiling when using 'Linux'. But ia32 (32-bit) is enabled on Android systems.

This is preventing me from cross compiling and using the fipsld with the incore script to link my applications.

I modified fips_canister.c as shown in the attached patch. So far in my testing (building various applications and running them on the target system), the incore script is working correctly.

Would it be possible to add this change to the fips_canister in a future version, or would this require a full re-validation of the openssl-fips?

Until then, my only other option is to use something like qemu to run the linked application to get the necessary checksum, in order to recompile/relink the final binary. Is modifying the fipsld script in such a way acceptable for FIPS compliance?

Thanks for any insight.

--Mark
diff -ur openssl-fips-2.0.5.orig/fips/fips_canister.c 
openssl-fips-2.0.5/fips/fips_canister.c
--- openssl-fips-2.0.5.orig/fips/fips_canister.c        2013-04-10 
16:43:06.000000000 -0500
+++ openssl-fips-2.0.5/fips/fips_canister.c     2014-03-24 09:33:01.009630420 
-0500
@@ -34,6 +34,8 @@
                                  defined(__mips__)|| defined(__mips))) || \
         (defined(__NetBSD__)  && (defined(__powerpc__) || defined(__i386))) || 
\
        (defined(__linux)     && ((defined(__PPC__) && !defined(__PPC64__)) || \
+                                 defined(__i386__) || defined(__i386) || \
+                                 defined(__x86_64) || defined(__x86_64__) || \
                                  defined(__arm__) || defined(__arm)) || \
                                  defined(__mips__))    || \
        (defined(__APPLE__) /* verified on all MacOS X & iOS flavors */)|| \

Reply via email to