config.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #pragma once
  2. #include "../../types/plugin_state.h"
  3. #include "../../types/token_info.h"
  4. #include "config_file_context.h"
  5. #include "constants.h"
  6. #include "token_info_iterator.h"
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10. typedef uint8_t TotpConfigFileOpenResult;
  11. typedef uint8_t TotpConfigFileUpdateResult;
  12. /**
  13. * @brief Tries to take a config file backup
  14. * @param plugin_state application state
  15. * @return backup path if backup successfully taken; \c NULL otherwise
  16. */
  17. char* totp_config_file_backup(const PluginState* plugin_state);
  18. /**
  19. * @brief Loads basic information from an application config file into application state without loading all the tokens
  20. * @param plugin_state application state
  21. * @return Config file open result
  22. */
  23. bool totp_config_file_load(PluginState* const plugin_state);
  24. /**
  25. * @brief Updates timezone offset in an application config file
  26. * @param plugin_state application state
  27. * @return Config file update result
  28. */
  29. bool totp_config_file_update_timezone_offset(const PluginState* plugin_state);
  30. /**
  31. * @brief Updates notification method in an application config file
  32. * @param plugin_state application state
  33. * @return Config file update result
  34. */
  35. bool totp_config_file_update_notification_method(const PluginState* plugin_state);
  36. /**
  37. * @brief Updates automation method in an application config file
  38. * @param plugin_state application state
  39. * @return Config file update result
  40. */
  41. bool totp_config_file_update_automation_method(const PluginState* plugin_state);
  42. /**
  43. * @brief Updates application user settings
  44. * @param plugin_state application state
  45. * @return Config file update result
  46. */
  47. bool totp_config_file_update_user_settings(const PluginState* plugin_state);
  48. /**
  49. * @brief Updates crypto signatures information
  50. * @param plugin_state application state
  51. * @return Config file update result
  52. */
  53. bool totp_config_file_update_crypto_signatures(const PluginState* plugin_state);
  54. /**
  55. * @brief Reset all the settings to default
  56. * @param plugin_state application state
  57. */
  58. void totp_config_file_reset(PluginState* const plugin_state);
  59. /**
  60. * @brief Closes config file and releases all the resources
  61. * @param plugin_state application state
  62. */
  63. void totp_config_file_close(PluginState* const plugin_state);
  64. /**
  65. * @brief Updates config file encryption by re-encrypting it using new user's PIN and new randomly generated IV
  66. * @param plugin_state application state
  67. * @param new_crypto_key_slot new crypto key slot to be used
  68. * @param new_pin new user's PIN
  69. * @param new_pin_length new user's PIN length
  70. * @return \c true if config file encryption successfully updated; \c false otherwise
  71. */
  72. bool totp_config_file_update_encryption(
  73. PluginState* plugin_state,
  74. uint8_t new_crypto_key_slot,
  75. const uint8_t* new_pin,
  76. uint8_t new_pin_length);
  77. /**
  78. * @brief Ensures application config file uses latest encryption and upgrades encryption if needed
  79. * @param plugin_state application state
  80. * @param pin user's PIN
  81. * @param pin_length user's PIN length
  82. * @return \c true if operation succeeded; \c false otherwise
  83. */
  84. bool totp_config_file_ensure_latest_encryption(
  85. PluginState* plugin_state,
  86. const uint8_t* pin,
  87. uint8_t pin_length);
  88. /**
  89. * @brief Gets token info iterator context
  90. * @param plugin_state application state
  91. * @return token info iterator context
  92. */
  93. TokenInfoIteratorContext* totp_config_get_token_iterator_context(const PluginState* plugin_state);
  94. #ifdef __cplusplus
  95. }
  96. #endif