// Common, group Crypto
// Copyright Alexander Liss

	// own certificates storage,
	// type and a public key are used as an index 

#ifndef __CERTSTORE_H__
#define __CERTSTORE_H__


#include "commbuf.h"


class CertificateStorage
{
CertificateStorage(const CertificateStorage&);
CertificateStorage& operator=(const CertificateStorage&);
public:
virtual	~CertificateStorage(){}

virtual int put(const CommBuffer& cert,ReadControl& c, const CommBuffer& pub_key,ReadControl& c1, int type)=0;
virtual int get(int& type,CommBuffer& cert,const CommBuffer& pub_key)=0;
virtual int drop(const CommBuffer& pub_key)=0;

virtual int put_own(int& index,const CommBuffer& s,ReadControl& c, const CommBuffer& pub_key,ReadControl& c1,int type)=0;
virtual int get_own(int& type, CommBuffer& pub_key, CommBuffer& cert, int index)=0;
virtual int drop_own(int index)=0;
virtual int number_own()=0;


static CertificateStorage* new_object(int type);
};

#endif