46 lines
898 B
C++
46 lines
898 B
C++
#ifndef STAR_AUTHENTICATION_HPP
|
|
#define STAR_AUTHENTICATION_HPP
|
|
|
|
#include "StarVariant.hpp"
|
|
#include "StarThread.hpp"
|
|
|
|
namespace Star {
|
|
|
|
STAR_CLASS(AuthenticationImpl);
|
|
STAR_CLASS(SharedClaim);
|
|
STAR_CLASS(Authentication);
|
|
|
|
class SharedClaim {
|
|
public:
|
|
virtual ~SharedClaim() {};
|
|
virtual bool validateClaim() = 0;
|
|
|
|
virtual Variant claim() = 0;
|
|
virtual String encrypt(String const& message) = 0;
|
|
virtual bool verify(String const& message, String const& signature) = 0;
|
|
|
|
virtual String username() = 0;
|
|
};
|
|
|
|
class Authentication {
|
|
public:
|
|
void load();
|
|
|
|
bool validateClaim(bool remoteValidate);
|
|
bool logon(String const& username, String const& passwordHash);
|
|
|
|
Variant claim();
|
|
|
|
String decrypt(String const& message);
|
|
String sign(String const& message);
|
|
|
|
SharedClaimPtr sharedClaim(Variant const& data);
|
|
|
|
private:
|
|
AuthenticationImplPtr m_impl;
|
|
Mutex m_mutex;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|