token_info_iterator.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #pragma once
  2. #include "../../types/token_info.h"
  3. #include <flipper_format/flipper_format.h>
  4. #include "constants.h"
  5. typedef int TotpIteratorUpdateTokenResult;
  6. enum TotpIteratorUpdateTokenResults {
  7. TotpIteratorUpdateTokenResultSuccess = 0,
  8. TotpIteratorUpdateTokenResultFileUpdateFailed = -1
  9. };
  10. typedef TotpIteratorUpdateTokenResult (*TOTP_ITERATOR_UPDATE_TOKEN_ACTION)(
  11. TokenInfo* const token_info,
  12. const void* context);
  13. typedef struct TokenInfoIteratorContext TokenInfoIteratorContext;
  14. TokenInfoIteratorContext* totp_token_info_iterator_alloc(Storage* storage, FlipperFormat* config_file, uint8_t* iv);
  15. bool totp_token_info_iterator_go_to(TokenInfoIteratorContext* context, size_t token_index);
  16. bool totp_token_info_iterator_move_current_token_info(
  17. TokenInfoIteratorContext* context,
  18. size_t new_index);
  19. TotpIteratorUpdateTokenResult totp_token_info_iterator_update_current_token(TokenInfoIteratorContext* context, TOTP_ITERATOR_UPDATE_TOKEN_ACTION update, const void* update_context);
  20. TotpIteratorUpdateTokenResult totp_token_info_iterator_add_new_token(TokenInfoIteratorContext* context, TOTP_ITERATOR_UPDATE_TOKEN_ACTION update, const void* update_context);
  21. bool totp_token_info_iterator_remove_current_token_info(TokenInfoIteratorContext* context);
  22. void totp_token_info_iterator_free(TokenInfoIteratorContext* context);
  23. const TokenInfo* totp_token_info_iterator_get_current_token(const TokenInfoIteratorContext* context);
  24. size_t totp_token_info_iterator_get_current_token_index(const TokenInfoIteratorContext* context);
  25. size_t totp_token_info_iterator_get_total_count(const TokenInfoIteratorContext* context);
  26. void totp_token_info_iterator_attach_to_config_file(TokenInfoIteratorContext* context, FlipperFormat* config_file);