// Common, group Crypto
// Copyright Alexander Liss
#ifndef __VERIFY_H__
#define __VERIFY_H__
#include "certificate.h"
// Verifier - interface
// crtificate type zero - autounit (find from a certificate itself)
// opend certificate has signatures stripped
class RevocationCheck;
class CertificateCache;
class CryptoLayer;
class Verifier
{
public:
Verifier():revocation_check(0),cache(0),crypto_layer(0){}
virtual ~Verifier(){}
int set(RevocationCheck& z){revocation_check=&z;return 0;}
int set(CertificateCache& z){cache=&z;return 0;}
int set(CryptoLayer& z){crypto_layer=&z;return 0;}
virtual int verify(OpenCertificate& open,const Certificate& cert)=0;
virtual int get_key(CommBuffer& pub_key,OpenCertificate& open,int unit)=0;
static Verifier* new_object(int cert_type);
protected:
RevocationCheck* revocation_check;
CertificateCache* cache;
CryptoLayer* crypto_layer;
};
#endif