README.chromium 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. Name: C++ port of zxcvbn, an advanced password strength estimation library.
  2. Short Name: zxcvbn-cpp
  3. URL: https://github.com/rianhunter/zxcvbn-cpp
  4. Version: 0
  5. Date: Dec 4, 2016
  6. Revision: cf092c952cd2325ce390b2691231a8f1cb195d59
  7. License: MIT
  8. License File: LICENSE.txt
  9. Security Critical: yes
  10. Description:
  11. A realistic password strength estimator. https://tech.dropbox.com/2012/04/zxcvbn-realistic-password-strength-estimation/
  12. Used in the Password Manager to inform users about weak passwords.
  13. Local Modifications:
  14. Applied the following patches:
  15. - patches/compilation.diff: To fix compilation under clang with -Werror and
  16. -DUNICODE.
  17. - patches/adjacency_graphs.diff: Removes static initializers in
  18. adjacency_graphs.hpp and adjacency_graphs.cpp and greatly reduces binary size
  19. impact by replacing optional std::strings with base::StringPiece.
  20. - patches/no_static_initializers.diff: Removes static initializers elsewhere by
  21. either inlining the expression, or making use of static base::NoDestructors.
  22. - patches/dictionary_component.diff: Adds a ParseRankedDictionary API to
  23. frequency_lists.hpp to support providing the dictionaries via component
  24. updater and adds an option to build_frequency_lists.py to output the processed
  25. text files. Furthermore, removes the need to auto generate
  26. _frequency_lists.hpp and _frequency_lists.cpp
  27. - patches/base_utf8.diff: Replaced string utilities from utils.cpp with //base's
  28. UTF8 API.
  29. - patches/fix_overflow.diff: Fixes a bug inside scoring.cpp triggered when the
  30. number of computed guesses exceeds DBL_MAX.
  31. - patches/flat_map_ranked.diff: Use base::flat_map instead of std::unordered_map
  32. for ranked dictionaries to reduce memory foot print.
  33. - patches/utf8_support.diff: Switched the regex engine in matching.cpp from
  34. std::regex to ICU's regex, so that repeat matches work with multi-byte code
  35. points. Also guarded an assert in scoring.cpp that was hit for non-ASCII
  36. passwords.
  37. - Dropped the data dictionary from the check-out, as the data will now be
  38. provided via component updater. The used dictionaries can be found at
  39. https://github.com/rianhunter/zxcvbn-cpp/tree/cf092c952cd2325ce390b2691231a8f1cb195d59/data
  40. - Removed the demo/ folder and zxcvbnn_post.js from the checkout. They only
  41. contained JavaScript that is irrevelant for the intended usage in Chromium.
  42. - Removed Python sources, unneeded config files, JavaScript bindings, C wrapper
  43. and incomplete C++ entrypoints from native-src, since they are unused / not
  44. necessary for Chromium, includes applying patches/no-c-api.diff.
  45. - patches/reduce_memory_usage.diff: Reduce browser memory usage by ~2.0 MiB on
  46. 64bit, ~0.65 MiB on 32bit (https://crrev.com/c/2842124).
  47. Ran the following commands to generate adjacency graphs:
  48. $ python ./data-scripts/build_keyboard_adjacency_graphs.py ./native-src/zxcvbn/adjacency_graphs.hpp
  49. $ python ./data-scripts/build_keyboard_adjacency_graphs.py ./native-src/zxcvbn/adjacency_graphs.cpp
  50. Ported test/test-matching.coffee and test/test-scoring.coffee to C++ unitests
  51. (test/matching_unittest.cc and test/scoring_unittest.cc).
  52. Added fuzzers for matching and scoring (test/matching_fuzzer.cc and
  53. test/scoring_fuzzer.cc).