#ifndef PA_SIGNER_SRC_UTILS_H_
#define PA_SIGNER_SRC_UTILS_H_

#include <stdint.h>
#include <string>
#include <vector>

/**
 * @brief Read contents of file to vector
 * @param [in] filename input filename
 * @return vector<uint8_t> of data from file
 */
std::vector<uint8_t> ReadFile(const std::string& filename);

/**
 * @brief Convect string to vector<uint8_t>
 * @param string [in] string to convert
 * @return vector<uint8_t> containing bytes from input string
 */
std::vector<uint8_t> StringToVector(const std::string& string);

/**
 * @brief Encode data in vector using SHA256
 * @param data [in] input data as vector
 * @return SHA256 encoded data as vector
 */
std::vector<uint8_t> Sha256(const std::vector<uint8_t>& data);

/**
 * @brief Decode base64 encded data
 * @param input [in] base64 encoded data
 * @return Decoded binary data sa vector
 */
std::vector<uint8_t> Base64Decode(const std::string& input);

/**
 * @brief Encode data using base64
 * @param input [in] binary data sa vector
 * @return base64 encoded data as string
 */
std::string Base64Encode(const std::vector<uint8_t>& input);

#endif /* PA_SIGNER_SRC_UTILS_H_ */
