tdf#157518: external: bundle zxcvbn-c
Integrates zxcvbn-c as a static library. zxcvbn-c is C/C++ implementation of https://dropbox.tech/security/zxcvbn-realistic-password-strength-estimation. This is the first step for introducing a password strength meter. Some example projects that utilize zxcvbn-c are KeepassXC, monero-gui. ExternalProject_zxcvbn-c takes care of the dictionary node generation bits resulting in the dict-src.h Then StaticLibrary_zxcvbn-c depends on ExternalProject_zxcvbn-c and uses the generated bits and the zxcvbn-c source to compile the library. It should be possible to get rid of dictionary node generation bit with a patch that includes a constant dict-src.h that's what monero-gui does for example. But this might also obfuscate what dict-src.h is. Right now the dictionary that is included with zxcvbn-c only targets English, so that might be something to improve upon. Change-Id: Ic2b0a558cff341114d69fbdc257979a28bf5c865 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157565 Reviewed-by: Michael Stahl <michael.stahl@allotropia.de> Tested-by: Jenkins Reviewed-by: Sarper Akdemir <sarper.akdemir.extern@allotropia.de>
This commit is contained in:
@@ -171,6 +171,7 @@ $(WORKDIR)/download: $(BUILDDIR)/config_$(gb_Side).mk $(SRCDIR)/download.lst $(S
|
||||
$(call fetch_Optional,LXML,LXML_TARBALL) \
|
||||
$(call fetch_Optional,MARIADB_CONNECTOR_C,MARIADB_CONNECTOR_C_TARBALL) \
|
||||
$(call fetch_Optional,MDDS,MDDS_TARBALL) \
|
||||
ZXCVBN_C_TARBALL \
|
||||
$(call fetch_Optional,ZXING,ZXING_TARBALL) \
|
||||
$(call fetch_Optional,MDNSRESPONDER,MDNSRESPONDER_TARBALL) \
|
||||
$(call fetch_Optional,MORE_FONTS,FONT_CALADEA_TARBALL) \
|
||||
|
@@ -4287,6 +4287,17 @@ endef
|
||||
|
||||
endif # SYSTEM_BOX2D
|
||||
|
||||
define gb_LinkTarget__use_zxcvbn-c
|
||||
$(call gb_LinkTarget_use_unpacked,$(1),zxcvbn-c)
|
||||
$(call gb_LinkTarget_set_include,$(1),\
|
||||
-I$(call gb_UnpackedTarball_get_dir,zxcvbn-c)\
|
||||
$$(INCLUDE) \
|
||||
)
|
||||
$(call gb_LinkTarget_use_static_libraries,$(1),\
|
||||
zxcvbn-c \
|
||||
)
|
||||
endef
|
||||
|
||||
ifneq ($(SYSTEM_ZXING),)
|
||||
|
||||
define gb_LinkTarget__use_zxing
|
||||
|
@@ -640,6 +640,11 @@ ZMF_TARBALL := libzmf-0.0.2.tar.xz
|
||||
# three static lines
|
||||
# so that git cherry-pick
|
||||
# will not run into conflicts
|
||||
ZXCVBN_C_SHA256SUM := 77d6c6ecb35952a8d8ce7f736b7a2bf466275c48210e309b73782d6b7e84dffd
|
||||
ZXCVBN_C_TARBALL := zxcvbn-c-2.5.tar.gz
|
||||
# three static lines
|
||||
# so that git cherry-pick
|
||||
# will not run into conflicts
|
||||
ZXING_SHA256SUM := 6d54e403592ec7a143791c6526c1baafddf4c0897bb49b1af72b70a0f0c4a3fe
|
||||
ZXING_TARBALL := zxing-cpp-2.1.0.tar.gz
|
||||
# three static lines
|
||||
|
1
external/Module_external.mk
vendored
1
external/Module_external.mk
vendored
@@ -90,6 +90,7 @@ $(eval $(call gb_Module_add_moduledirs,external,\
|
||||
$(call gb_Helper_optional,POSTGRESQL,postgresql) \
|
||||
$(call gb_Helper_optional,PYTHON,python3) \
|
||||
$(call gb_Helper_optional,QXP,libqxp) \
|
||||
zxcvbn-c \
|
||||
$(call gb_Helper_optional,ZXING,zxing) \
|
||||
$(call gb_Helper_optional,REDLAND,redland) \
|
||||
$(call gb_Helper_optional,REVENGE,librevenge) \
|
||||
|
35
external/zxcvbn-c/ExternalProject_zxcvbn-c.mk
vendored
Normal file
35
external/zxcvbn-c/ExternalProject_zxcvbn-c.mk
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t; fill-column: 100 -*-
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
|
||||
$(eval $(call gb_ExternalProject_ExternalProject,zxcvbn-c))
|
||||
|
||||
$(eval $(call gb_ExternalProject_register_targets,zxcvbn-c,\
|
||||
generate-dictionary-nodes \
|
||||
))
|
||||
|
||||
$(call gb_ExternalProject_get_state_target,zxcvbn-c,generate-dictionary-nodes): \
|
||||
$(call gb_Executable_get_runtime_dependencies,gcc-wrapper) \
|
||||
$(call gb_Executable_get_runtime_dependencies,g++-wrapper) \
|
||||
$(if $(CROSS_COMPILING),$(call gb_ExternalProject_get_target_for_build,zxcvbn-c))
|
||||
$(call gb_Trace_StartRange,zxcvbn-c,EXTERNAL)
|
||||
$(call gb_ExternalProject_run,generate-dictionary-nodes,\
|
||||
$(if $(CROSS_COMPILING),\
|
||||
cp $(WORKDIR_FOR_BUILD)/UnpackedTarball/zxcvbn-c/dict-src.h \
|
||||
$(WORKDIR)/UnpackedTarball/zxcvbn-c/dict-src.h \
|
||||
,\
|
||||
$(MAKE) dict-src.h \
|
||||
AR="$(gb_AR)" \
|
||||
CFLAGS="$(gb_CFLAGS)" \
|
||||
CXXFLAGS="$(gb_CXXFLAGS)" \
|
||||
$(if $(filter MSC,$(COM)),$(gb_AUTOCONF_WRAPPERS) )\
|
||||
)\
|
||||
)
|
||||
$(call gb_Trace_EndRange,zxcvbn-c,EXTERNAL)
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
14
external/zxcvbn-c/Makefile
vendored
Normal file
14
external/zxcvbn-c/Makefile
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t; fill-column: 100 -*-
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
|
||||
module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
|
||||
|
||||
include $(module_directory)/../../solenv/gbuild/partial_build.mk
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
18
external/zxcvbn-c/Module_zxcvbn-c.mk
vendored
Normal file
18
external/zxcvbn-c/Module_zxcvbn-c.mk
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t; fill-column: 100 -*-
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
|
||||
$(eval $(call gb_Module_Module,zxcvbn-c))
|
||||
|
||||
$(eval $(call gb_Module_add_targets,zxcvbn-c,\
|
||||
UnpackedTarball_zxcvbn-c \
|
||||
ExternalProject_zxcvbn-c \
|
||||
StaticLibrary_zxcvbn-c \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
3
external/zxcvbn-c/README.md
vendored
Normal file
3
external/zxcvbn-c/README.md
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
C/C++ version of the zxcvbn password strength estimator.
|
||||
|
||||
zxcvbn-c is available from [ https://github.com/tsyrogit/zxcvbn-c ].
|
26
external/zxcvbn-c/StaticLibrary_zxcvbn-c.mk
vendored
Normal file
26
external/zxcvbn-c/StaticLibrary_zxcvbn-c.mk
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t; fill-column: 100 -*-
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
|
||||
$(eval $(call gb_StaticLibrary_StaticLibrary,zxcvbn-c))
|
||||
|
||||
$(eval $(call gb_StaticLibrary_use_unpacked,zxcvbn-c,zxcvbn-c))
|
||||
|
||||
# zxcvbn-c static library depends on generation of dictionary nodes resulting in dict-src.h
|
||||
$(eval $(call gb_StaticLibrary_use_external_project,zxcvbn-c,zxcvbn-c,full))
|
||||
|
||||
$(eval $(call gb_StaticLibrary_set_include,zxcvbn-c,\
|
||||
-I$(call gb_UnpackedTarball_get_dir,zxcvbn-c)\
|
||||
$$(INCLUDE)\
|
||||
))
|
||||
|
||||
$(eval $(call gb_StaticLibrary_add_generated_cobjects,zxcvbn-c,\
|
||||
UnpackedTarball/zxcvbn-c/zxcvbn \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
18
external/zxcvbn-c/UnpackedTarball_zxcvbn-c.mk
vendored
Normal file
18
external/zxcvbn-c/UnpackedTarball_zxcvbn-c.mk
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t; fill-column: 100 -*-
|
||||
#
|
||||
# This file is part of the LibreOffice project.
|
||||
#
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
#
|
||||
|
||||
$(eval $(call gb_UnpackedTarball_UnpackedTarball,zxcvbn-c))
|
||||
|
||||
$(eval $(call gb_UnpackedTarball_set_tarball,zxcvbn-c,$(ZXCVBN_C_TARBALL)))
|
||||
|
||||
$(eval $(call gb_UnpackedTarball_add_patches,zxcvbn-c,\
|
||||
external/zxcvbn-c/zxcvbn-c-2.5-do-not-use-stdafx.patch \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
13
external/zxcvbn-c/zxcvbn-c-2.5-do-not-use-stdafx.patch
vendored
Normal file
13
external/zxcvbn-c/zxcvbn-c-2.5-do-not-use-stdafx.patch
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
--- a/zxcvbn-c/zxcvbn.c
|
||||
+++ b/zxcvbn-c/zxcvbn.c
|
||||
@@ -44,11 +44,6 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
-/* For pre-compiled headers under windows */
|
||||
-#ifdef _WIN32
|
||||
-#include "stdafx.h"
|
||||
-#endif
|
||||
-
|
||||
/* Minimum number of characters in a incrementing/decrementing sequence match */
|
||||
#define MIN_SEQUENCE_LEN 3
|
@@ -1815,6 +1815,30 @@
|
||||
PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
|
||||
WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.</p>
|
||||
</div>
|
||||
<h2>zxcvbn-c</h2>
|
||||
<p>The following software may be included in this product: zxcvbn-c.</p>
|
||||
<p>zxcvbn-c code is covered by the MIT license:</p>
|
||||
<blockquote>
|
||||
<p>Copyright (c) 2015-2017 Tony Evans </p>
|
||||
|
||||
<p>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:</p>
|
||||
|
||||
<p>The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.</p>
|
||||
|
||||
<p>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.</p>
|
||||
</blockquote>
|
||||
<h2>Dragonbox</h2>
|
||||
<p>The following software may be included in this product: Dragonbox.</p>
|
||||
<p>Dragonbox code is covered by the following license:</p>
|
||||
|
@@ -48,6 +48,7 @@ gb_BUILD_TOOLS = \
|
||||
$(foreach executable,$(gb_BUILD_TOOLS_executables),$(call gb_Executable_get_runtime_dependencies,$(executable))) \
|
||||
$(foreach executable,$(gb_BUILD_TOOLS_executables_extern),$(call gb_ExternalExecutable_get_dependencies,$(executable))) \
|
||||
$(INSTROOT)/$(LIBO_URE_ETC_FOLDER)/$(call gb_Helper_get_rcfile,uno) \
|
||||
$(call gb_ExternalProject_get_target_for_build,zxcvbn-c) \
|
||||
|
||||
endif
|
||||
|
||||
|
Reference in New Issue
Block a user