#pragma once
#include "key.h"
#include "uid2/types.h"
#include <string>
namespace uid2 {
struct EncryptTokenParams {
EncryptTokenParams() = default;
EncryptTokenParams& WithTokenExpiry(uid2::Timestamp expiry)
{
tokenExpiry_ = expiry;
return *this;
}
uid2::Timestamp tokenExpiry_ = uid2::Timestamp::Now().AddSeconds(60);
uid2::IdentityScope identityScope_ = uid2::IdentityScope::UID2;
};
std::string GenerateUid2TokenV2(
const std::string& identity,
const uid2::Key& masterKey,
int siteId,
const uid2::Key& siteKey,
EncryptTokenParams params = EncryptTokenParams());
std::string GenerateUid2TokenV3(
const std::string& identity,
const uid2::Key& masterKey,
int siteId,
const uid2::Key& siteKey,
EncryptTokenParams params = EncryptTokenParams());
std::string GenerateUid2TokenV4(
const std::string& identity,
const uid2::Key& masterKey,
int siteId,
const uid2::Key& siteKey,
EncryptTokenParams params = EncryptTokenParams());
std::string GenerateUID2TokenWithDebugInfo(
const std::string& uid,
const uid2::Key& masterKey,
int siteId,
const uid2::Key& siteKey,
EncryptTokenParams params,
uid2::AdvertisingTokenVersion adTokenVersion);
std::string EncryptDataV2(const std::vector<std::uint8_t>& data, const uid2::Key& key, int siteId, uid2::Timestamp now);
} // namespace uid2