[login_manager] Ensure that nssdb can be used by 'chronos'

We're seeing intermittent LOG(FATAL) in keygen caused by an inability
to generate a device owner key successfully.  The logs seem to indicate
that the nssdb is present, but can't be opened for some reason.

This code adds extra checks that should allow us to better diagnose
these failures.

BUG=chromium-os:30932
TEST=unit
TEST=bvt

CQ-DEPEND=I48d04919de22374b0cb82e25920898d1219fd69d

Change-Id: I97a6a327fbfcb81e9f54002cbfcdb42e3e48feb5
Reviewed-on: https://gerrit.chromium.org/gerrit/23585
Tested-by: Chris Masone <cmasone@chromium.org>
Reviewed-by: Mattias Nissler <mnissler@chromium.org>
Commit-Ready: Chris Masone <cmasone@chromium.org>
5 files changed
tree: 56927c3a16516173c2d31a778dd379250dc416f3
  1. child_job.cc
  2. child_job.h
  3. child_job_unittest.cc
  4. common.mk
  5. default_proxy
  6. device_policy_service.cc
  7. device_policy_service.h
  8. device_policy_service_unittest.cc
  9. file_checker.cc
  10. file_checker.h
  11. inherit-review-settings-ok
  12. interface.cc
  13. interface.h
  14. key_generator.cc
  15. key_generator.h
  16. key_generator_unittest.cc
  17. keygen.cc
  18. keygen_worker.cc
  19. keygen_worker.h
  20. LICENSE
  21. login_metrics.cc
  22. login_metrics.h
  23. login_metrics_unittest.cc
  24. Makefile
  25. mock_child_job.h
  26. mock_child_process.cc
  27. mock_child_process.h
  28. mock_constructors.cc
  29. mock_device_policy_service.h
  30. mock_file_checker.h
  31. mock_key_generator.h
  32. mock_metrics.h
  33. mock_mitigator.h
  34. mock_nss_util.cc
  35. mock_nss_util.h
  36. mock_owner_key.h
  37. mock_policy_service.h
  38. mock_policy_store.h
  39. mock_server.key
  40. mock_server.pem
  41. mock_system_utils.h
  42. mock_upstart_signal_emitter.h
  43. mock_user_policy_service_factory.h
  44. nss_util.cc
  45. nss_util.h
  46. nss_util_unittest.cc
  47. org.chromium.SessionManager.service
  48. owner_key.cc
  49. owner_key.h
  50. owner_key_loss_mitigator.cc
  51. owner_key_loss_mitigator.h
  52. owner_key_unittest.cc
  53. policy_service.cc
  54. policy_service.h
  55. policy_service_unittest.cc
  56. policy_store.cc
  57. policy_store.h
  58. policy_store_unittest.cc
  59. recovery_ui.html
  60. regen_mitigator.cc
  61. regen_mitigator.h
  62. regen_mitigator_unittest.cc
  63. session_manager.xml
  64. session_manager_dbus_unittest.cc
  65. session_manager_main.cc
  66. session_manager_process_unittest.cc
  67. session_manager_service.cc
  68. session_manager_service.h
  69. session_manager_setup.sh
  70. session_manager_static_unittest.cc
  71. session_manager_testrunner.cc
  72. session_manager_unittest.cc
  73. session_manager_unittest.h
  74. SessionManager.conf
  75. system_utils.cc
  76. system_utils.h
  77. system_utils_unittest.cc
  78. upstart_signal_emitter.cc
  79. upstart_signal_emitter.h
  80. user_policy_service.cc
  81. user_policy_service.h
  82. user_policy_service_factory.cc
  83. user_policy_service_factory.h
  84. user_policy_service_unittest.cc
  85. WATCHLISTS
  86. xstart.sh