// Common, group Crypto
// Copyright Alexander Liss
#ifndef __CERTCHECK_H__
#define __CERTCHECK_H__
#include "certificate.h"
// RevocationCheck - interface
class RevocationCheck
{
public:
virtual ~RevocationCheck(){}
virtual int check(OpenCertificateUnit& unit, int cert_type)=0;
static RevocationCheck* new_object(int type);
};
// CertificateCache - interface
class CertificateCache
{
public:
virtual ~CertificateCache(){}
int set(RevocationCheck& z,unsigned long interval)
{revocation_check=&z; housekeeping_interval=interval; return 0;}
int put(int& index,const OpenCertificateUnit& s, const CommBuffer& pub_key);
int get(OpenCertificateUnit& d,const CommBuffer& pub_key);
static CertificateCache* new_object(int type);
protected:
RevocationCheck* revocation_check;
unsigned long housekeeping_interval; // milliseconds
virtual bool housekeeping_time()=0;
virtual int lock()=0;
virtual int unlock()=0;
virtual int put0(int& index,const OpenCertificateUnit& s, const CommBuffer& pub_key)=0;
virtual int get0(OpenCertificateUnit& d,const CommBuffer& pub_key)=0;
virtual int housekeeping()=0;
};
#endif