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