summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGautam Prajapati <gautamprajapati06@gmail.com>2017-08-18 23:17:15 +0530
committerMiklos Vajna <vmiklos@collabora.co.uk>2017-08-23 17:50:55 +0200
commit511ae02c6457e69cb6daab871acd9c3e7d64e2e3 (patch)
treeb55634866b626b9c8258a902fa78f5ee901eb900
parentf8fa4631f35799f1afeec2ecba7eec5bbdba95e5 (diff)
Android: Enable HAVE_FEATURE_NSS and package the NSS libraries with apk
This commit enables HAVE_FEATURE_NSS for Android and fixes the svl/ vcl/ and xmlsecurity/ module to use NSS. xmlsecurity/ wasn't built for Android previously, this commit enables building xmlsecurity/ for Android and disables the support of gpgme in the same module(Only for Android). It also enables the linking of NSS shared libraries with liblo-native-code.so and adds a rule to package them along with the apk. Change-Id: I7d0341688ac979ae92e9145c37dd107670417fe1 Reviewed-on: https://gerrit.libreoffice.org/41308 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
-rw-r--r--RepositoryExternal.mk8
-rw-r--r--android/Bootstrap/Makefile.shared20
-rwxr-xr-xbin/lo-all-static-libs2
-rw-r--r--configure.ac2
-rw-r--r--svl/Library_svl.mk4
-rw-r--r--svl/source/crypto/cryptosign.cxx3
-rw-r--r--vcl/Library_vcl.mk2
-rw-r--r--xmlsecurity/Library_xmlsecurity.mk2
-rw-r--r--xmlsecurity/Library_xsec_xmlsec.mk9
-rw-r--r--xmlsecurity/Module_xmlsecurity.mk2
-rw-r--r--xmlsecurity/source/helper/documentsignaturemanager.cxx4
-rw-r--r--xmlsecurity/source/helper/xsecctl.cxx4
-rw-r--r--xmlsecurity/source/helper/xsecverify.cxx2
-rw-r--r--xmlsecurity/source/xmlsec/xsec_xmlsec.cxx4
14 files changed, 36 insertions, 32 deletions
diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index 44a89738fb74..d511d51cebcc 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -3268,12 +3268,6 @@ endif # USING_X11
gb_ExternalProject__use_nss3:=
-ifeq ($(OS),ANDROID)
-
-gb_LinkTarget__use_nss3:=
-gb_LinkTarget__use_plc4:=
-
-else
ifneq ($(SYSTEM_NSS),)
@@ -3369,8 +3363,6 @@ endef
endif # SYSTEM_NSS
-endif # DESKTOP
-
ifeq ($(ENABLE_BREAKPAD),TRUE)
define gb_LinkTarget__use_breakpad
diff --git a/android/Bootstrap/Makefile.shared b/android/Bootstrap/Makefile.shared
index e26530595cad..e06e36cdac54 100644
--- a/android/Bootstrap/Makefile.shared
+++ b/android/Bootstrap/Makefile.shared
@@ -35,10 +35,24 @@ LIBS = \
$(ALL_STATIC_LIBS) \
-Wl,--end-group
+NSSLIBS = freebl3 \
+ nspr4 \
+ nss3 \
+ nssckbi \
+ nssdbm3 \
+ nssutil3 \
+ plc4 \
+ plds4 \
+ smime3 \
+ softokn3 \
+ sqlite3 \
+ ssl3 \
+
WHOLELIBS = \
-Wl,--whole-archive \
$(addprefix -l,$(strip \
juh \
+ $(NSSLIBS) \
)) \
-Wl,--no-whole-archive
@@ -53,7 +67,11 @@ $(SODEST)/liblo-native-code.so : $(OBJLOCAL)/liblo-native-code.so
$(STRIP) -o $(SODEST)/liblo-native-code.so $(OBJLOCAL)/liblo-native-code.so
#to keep some symbols, eg.: $(STRIP) -o $(SODEST)/liblo-native-code.so $(OBJLOCAL)/liblo-native-code.so -w -K 'Java*'
-link-so: $(SODEST)/liblo-native-code.so
+$(SODEST)/nss-libraries :
+ mkdir -p $(SODEST)
+ $(foreach lib,$(NSSLIBS),$(STRIP) -o $(SODEST)/lib$(lib).so $(INSTDIR)/$(LIBO_LIB_FOLDER)/lib$(lib).so;)
+
+link-so: $(SODEST)/liblo-native-code.so $(SODEST)/nss-libraries
# If you reinstall an app several times *on the emulator*, even if you
# uninstall it between, disk space seems to leak that won't get recycled until
diff --git a/bin/lo-all-static-libs b/bin/lo-all-static-libs
index 555ad67674a7..6c1908628183 100755
--- a/bin/lo-all-static-libs
+++ b/bin/lo-all-static-libs
@@ -41,6 +41,8 @@ ANDROID)
oslibs="$oslibs $WORKDIR/UnpackedTarball/freetype/objs/.libs/libfreetype.a"
oslibs="$oslibs $WORKDIR/UnpackedTarball/pixman/pixman/.libs/libpixman-1.a"
oslibs="$oslibs $WORKDIR/UnpackedTarball/cairo/src/.libs/libcairo.a"
+ oslibs="$oslibs $WORKDIR/UnpackedTarball/xmlsec/src/.libs/libxmlsec1.a"
+ oslibs="$oslibs $WORKDIR/UnpackedTarball/xmlsec/src/nss/.libs/libxmlsec1-nss.a"
# Only liblo-bootstrap.a ends up here:
oslibs="$oslibs $WORKDIR/LinkTarget/Library/lib*.a"
oslibs="$oslibs $WORKDIR/UnpackedTarball/openssl/*.a"
diff --git a/configure.ac b/configure.ac
index 132fb398cb8d..1a8f2f9c9f84 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8816,7 +8816,7 @@ AC_SUBST(SYSTEM_OPENLDAP)
dnl ===================================================================
dnl Check for system NSS
dnl ===================================================================
-if test $_os != iOS -a $_os != Android -a "$enable_fuzzers" != "yes"; then
+if test $_os != iOS -a "$enable_fuzzers" != "yes"; then
libo_CHECK_SYSTEM_MODULE([nss],[NSS],[nss >= 3.9.3 nspr >= 4.8])
AC_DEFINE(HAVE_FEATURE_NSS)
ENABLE_NSS="TRUE"
diff --git a/svl/Library_svl.mk b/svl/Library_svl.mk
index c61b0e789f40..de981cdc9315 100644
--- a/svl/Library_svl.mk
+++ b/svl/Library_svl.mk
@@ -21,7 +21,7 @@ $(eval $(call gb_Library_Library,svl))
$(eval $(call gb_Library_use_externals,svl,\
boost_headers \
- $(if $(filter LINUX MACOSX %BSD SOLARIS,$(OS)), \
+ $(if $(filter LINUX MACOSX ANDROID %BSD SOLARIS,$(OS)), \
curl) \
icu_headers \
icuuc \
@@ -103,7 +103,7 @@ $(eval $(call gb_Library_use_system_win32_libs,svl,\
crypt32 \
))
else
-ifneq (,$(filter DESKTOP,$(BUILD_TYPE)))
+ifneq (,$(filter DESKTOP,$(BUILD_TYPE))$(filter ANDROID,$(OS)))
$(eval $(call gb_Library_add_defs,svl,\
-DSVL_CRYPTO_NSS \
))
diff --git a/svl/source/crypto/cryptosign.cxx b/svl/source/crypto/cryptosign.cxx
index 1e0712fd8850..dab47be4e5cc 100644
--- a/svl/source/crypto/cryptosign.cxx
+++ b/svl/source/crypto/cryptosign.cxx
@@ -252,6 +252,9 @@ const SEC_ASN1Template IssuerSerialTemplate[] =
* issuerSerial IssuerSerial OPTIONAL
* }
*/
+
+SEC_ASN1_MKSUB(SECOID_AlgorithmIDTemplate)
+
const SEC_ASN1Template ESSCertIDv2Template[] =
{
{SEC_ASN1_SEQUENCE, 0, nullptr, sizeof(ESSCertIDv2)},
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index 6b40a48d8783..00cbf3b6a23e 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -56,7 +56,7 @@ $(eval $(call gb_Library_use_custom_headers,vcl,\
))
$(eval $(call gb_Library_use_externals,vcl,\
- $(if $(filter LINUX MACOSX %BSD SOLARIS,$(OS)), \
+ $(if $(filter LINUX MACOSX ANDROID %BSD SOLARIS,$(OS)), \
curl) \
jpeg \
libeot \
diff --git a/xmlsecurity/Library_xmlsecurity.mk b/xmlsecurity/Library_xmlsecurity.mk
index 77d3bd81dc3b..22d27c717155 100644
--- a/xmlsecurity/Library_xmlsecurity.mk
+++ b/xmlsecurity/Library_xmlsecurity.mk
@@ -79,7 +79,7 @@ $(eval $(call gb_Library_use_system_win32_libs,xmlsecurity,\
crypt32 \
))
else
-ifneq (,$(filter DESKTOP,$(BUILD_TYPE)))
+ifneq (,$(filter DESKTOP,$(BUILD_TYPE))$(filter ANDROID,$(OS)))
$(eval $(call gb_Library_add_defs,xmlsecurity,\
-DXMLSEC_CRYPTO_NSS \
))
diff --git a/xmlsecurity/Library_xsec_xmlsec.mk b/xmlsecurity/Library_xsec_xmlsec.mk
index d7526d6af269..51f0f2a0834f 100644
--- a/xmlsecurity/Library_xsec_xmlsec.mk
+++ b/xmlsecurity/Library_xsec_xmlsec.mk
@@ -126,13 +126,6 @@ $(eval $(call gb_Library_add_defs,xsec_xmlsec,\
-DXMLSEC_CRYPTO_NSS \
))
-ifeq ($(OS),ANDROID)
-$(eval $(call gb_Library_add_libs,xsec_xmlsec,\
- $(call gb_UnpackedTarball_get_dir,xmlsec)/src/openssl/.libs/libxmlsec1-openssl.a \
- $(call gb_UnpackedTarball_get_dir,xmlsec)/src/.libs/libxmlsec1.a \
-))
-else
-
ifeq ($(SYSTEM_XMLSEC),)
$(eval $(call gb_Library_add_libs,xsec_xmlsec,\
$(call gb_UnpackedTarball_get_dir,xmlsec)/src/nss/.libs/libxmlsec1-nss.a \
@@ -140,8 +133,6 @@ $(eval $(call gb_Library_add_libs,xsec_xmlsec,\
))
endif
-endif
-
$(eval $(call gb_Library_use_externals,xsec_xmlsec,\
plc4 \
))
diff --git a/xmlsecurity/Module_xmlsecurity.mk b/xmlsecurity/Module_xmlsecurity.mk
index 23435b0512a9..693abbb80a0f 100644
--- a/xmlsecurity/Module_xmlsecurity.mk
+++ b/xmlsecurity/Module_xmlsecurity.mk
@@ -10,8 +10,6 @@
$(eval $(call gb_Module_Module,xmlsecurity))
ifeq ($(ENABLE_NSS),TRUE)
-#FIXME: ^^^, get nss&libxmlsec building on ios and android
-#chromium has patches to build statically FWIW
$(eval $(call gb_Module_add_targets,xmlsecurity,\
Library_xmlsecurity \
diff --git a/xmlsecurity/source/helper/documentsignaturemanager.cxx b/xmlsecurity/source/helper/documentsignaturemanager.cxx
index f39fe39a68b2..f886b4654dd7 100644
--- a/xmlsecurity/source/helper/documentsignaturemanager.cxx
+++ b/xmlsecurity/source/helper/documentsignaturemanager.cxx
@@ -64,14 +64,14 @@ bool DocumentSignatureManager::init()
initXmlSec();
mxSEInitializer = xml::crypto::SEInitializer::create(mxContext);
-#if !defined(MACOSX) && !defined(WNT)
+#if !defined(MACOSX) && !defined(WNT) && !defined(ANDROID)
mxGpgSEInitializer.set(new SEInitializerGpg());
#endif
if (mxSEInitializer.is())
mxSecurityContext = mxSEInitializer->createSecurityContext(OUString());
-#if !defined(MACOSX) && !defined(WNT)
+#if !defined(MACOSX) && !defined(WNT) && !defined(ANDROID)
if (mxGpgSEInitializer.is())
mxGpgSecurityContext = mxGpgSEInitializer->createSecurityContext(OUString());
diff --git a/xmlsecurity/source/helper/xsecctl.cxx b/xmlsecurity/source/helper/xsecctl.cxx
index e583ff72dab1..37fbb225c1f9 100644
--- a/xmlsecurity/source/helper/xsecctl.cxx
+++ b/xmlsecurity/source/helper/xsecctl.cxx
@@ -22,7 +22,7 @@
#include "documentsignaturehelper.hxx"
#include "framework/saxeventkeeperimpl.hxx"
#include "xmlsec/xmldocumentwrapper_xmlsecimpl.hxx"
-#if !defined(MACOSX) && !defined(WNT)
+#if !defined(MACOSX) && !defined(WNT) && !defined(ANDROID)
# include "gpg/xmlsignature_gpgimpl.hxx"
#endif
@@ -127,7 +127,7 @@ void XSecController::createXSecComponent( )
cssu::Reference< cssl::XMultiComponentFactory > xMCF( mxCtx->getServiceManager() );
-#if !defined(MACOSX) && !defined(WNT)
+#if !defined(MACOSX) && !defined(WNT) && !defined(ANDROID)
uno::Reference< lang::XServiceInfo > xServiceInfo( m_xSecurityContext, cssu::UNO_QUERY );
if (xServiceInfo->getImplementationName() == "com.sun.star.xml.security.gpg.XMLSecurityContext_GpgImpl")
m_xXMLSignature.set(new XMLSignature_GpgImpl());
diff --git a/xmlsecurity/source/helper/xsecverify.cxx b/xmlsecurity/source/helper/xsecverify.cxx
index c60bbde22894..3ec123bc4029 100644
--- a/xmlsecurity/source/helper/xsecverify.cxx
+++ b/xmlsecurity/source/helper/xsecverify.cxx
@@ -110,7 +110,7 @@ void XSecController::addSignature()
void XSecController::switchGpgSignature()
{
-#if !defined(MACOSX) && !defined(WNT)
+#if !defined(MACOSX) && !defined(WNT) && !defined(ANDROID)
// swap signature verifier for the Gpg one
m_xXMLSignature.set(new XMLSignature_GpgImpl());
if (!m_vInternalSignatureInformations.empty())
diff --git a/xmlsecurity/source/xmlsec/xsec_xmlsec.cxx b/xmlsecurity/source/xmlsec/xsec_xmlsec.cxx
index b480b90a9235..2a700cc59d62 100644
--- a/xmlsecurity/source/xmlsec/xsec_xmlsec.cxx
+++ b/xmlsecurity/source/xmlsec/xsec_xmlsec.cxx
@@ -27,7 +27,7 @@
#include "xmlsec/xmldocumentwrapper_xmlsecimpl.hxx"
#include "xsec_xmlsec.hxx"
-#if !defined(MACOSX) && !defined(WNT)
+#if !defined(MACOSX) && !defined(WNT) && !defined(ANDROID)
# include "gpg/xmlsignature_gpgimpl.hxx"
#endif
@@ -44,7 +44,7 @@ SAL_DLLPUBLIC_EXPORT void* SAL_CALL xsec_xmlsec_component_getFactory( const sal_
Reference< XInterface > xFactory ;
if( pImplName != nullptr ) {
-#if !defined(MACOSX) && !defined(WNT)
+#if !defined(MACOSX) && !defined(WNT) && !defined(ANDROID)
if( XMLSignature_GpgImpl::impl_getImplementationName().equalsAscii( pImplName ) )
{
xFactory = XMLSignature_GpgImpl::impl_createFactory( static_cast< XMultiServiceFactory* >( pServiceManager ) ) ;