namespace Core::Security::JOSE

namespace JOSE {

// enums

enum Algorithm;
enum Encryption;

// global variables

const CStringPtr kAlgorithm = "alg";
const CStringPtr kEncryption = "enc";
const CStringPtr kType = "typ";
const CStringPtr kJWT = "JWT";
const CStringPtr kKeyID = "kid";
const CStringPtr kKey = "key";
const CStringPtr kKeyType = "kty";
const CStringPtr kSubject = "sub";
const CStringPtr kAudience = "aud";
const CStringPtr kIssuedAt = "iat";
const CStringPtr kNotBefore = "nbf";
const CStringPtr kExpirationTime = "exp";

// global functions

Algorithm getAlgorithm(CStringPtr algorithmName);
CStringPtr getAlgorithmName(Algorithm algorithm);
Encryption getEncryption(CStringPtr encryptionName);
CStringPtr getEncryptionName(Encryption encryption);
bool isJWT(CStringPtr type);

} // namespace JOSE