diff options
author | Sarper Akdemir <sarper.akdemir.extern@allotropia.de> | 2023-10-02 15:56:04 +0300 |
---|---|---|
committer | Sarper Akdemir <sarper.akdemir.extern@allotropia.de> | 2023-10-30 08:17:05 +0100 |
commit | 3d5cafbe1727a95a54eb4a65d98d6d79ec46f0c8 (patch) | |
tree | 231df57c921bdd4ad124df266cbb7ee7ad49701f /external | |
parent | 9a4e4db710137b1a7cb8e62ffa16128c7cc72177 (diff) |
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>
Diffstat (limited to 'external')
-rw-r--r-- | external/Module_external.mk | 1 | ||||
-rw-r--r-- | external/zxcvbn-c/ExternalProject_zxcvbn-c.mk | 35 | ||||
-rw-r--r-- | external/zxcvbn-c/Makefile | 14 | ||||
-rw-r--r-- | external/zxcvbn-c/Module_zxcvbn-c.mk | 18 | ||||
-rw-r--r-- | external/zxcvbn-c/README.md | 3 | ||||
-rw-r--r-- | external/zxcvbn-c/StaticLibrary_zxcvbn-c.mk | 26 | ||||
-rw-r--r-- | external/zxcvbn-c/UnpackedTarball_zxcvbn-c.mk | 18 | ||||
-rw-r--r-- | external/zxcvbn-c/zxcvbn-c-2.5-do-not-use-stdafx.patch | 13 |
8 files changed, 128 insertions, 0 deletions
diff --git a/external/Module_external.mk b/external/Module_external.mk index 366509f8960e..2b2cd99ff399 100644 --- a/external/Module_external.mk +++ b/external/Module_external.mk @@ -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) \ diff --git a/external/zxcvbn-c/ExternalProject_zxcvbn-c.mk b/external/zxcvbn-c/ExternalProject_zxcvbn-c.mk new file mode 100644 index 000000000000..51b60a9c2ecb --- /dev/null +++ b/external/zxcvbn-c/ExternalProject_zxcvbn-c.mk @@ -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: diff --git a/external/zxcvbn-c/Makefile b/external/zxcvbn-c/Makefile new file mode 100644 index 000000000000..6427d44e3790 --- /dev/null +++ b/external/zxcvbn-c/Makefile @@ -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: diff --git a/external/zxcvbn-c/Module_zxcvbn-c.mk b/external/zxcvbn-c/Module_zxcvbn-c.mk new file mode 100644 index 000000000000..14d5dfbe6abc --- /dev/null +++ b/external/zxcvbn-c/Module_zxcvbn-c.mk @@ -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: diff --git a/external/zxcvbn-c/README.md b/external/zxcvbn-c/README.md new file mode 100644 index 000000000000..6193c7307e85 --- /dev/null +++ b/external/zxcvbn-c/README.md @@ -0,0 +1,3 @@ +C/C++ version of the zxcvbn password strength estimator. + +zxcvbn-c is available from [ https://github.com/tsyrogit/zxcvbn-c ]. diff --git a/external/zxcvbn-c/StaticLibrary_zxcvbn-c.mk b/external/zxcvbn-c/StaticLibrary_zxcvbn-c.mk new file mode 100644 index 000000000000..9748ef850c55 --- /dev/null +++ b/external/zxcvbn-c/StaticLibrary_zxcvbn-c.mk @@ -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: diff --git a/external/zxcvbn-c/UnpackedTarball_zxcvbn-c.mk b/external/zxcvbn-c/UnpackedTarball_zxcvbn-c.mk new file mode 100644 index 000000000000..b6eba6b8cb3a --- /dev/null +++ b/external/zxcvbn-c/UnpackedTarball_zxcvbn-c.mk @@ -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: diff --git a/external/zxcvbn-c/zxcvbn-c-2.5-do-not-use-stdafx.patch b/external/zxcvbn-c/zxcvbn-c-2.5-do-not-use-stdafx.patch new file mode 100644 index 000000000000..1b5151995067 --- /dev/null +++ b/external/zxcvbn-c/zxcvbn-c-2.5-do-not-use-stdafx.patch @@ -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 |