// Machine generated C++ stub file (.h) for remote object Service
// Created on : 05/22/2012 21:54:06


#ifndef _include_Service_h
#define _include_Service_h

#include <string>
#include <MarshallerCfg.h>
#include <Array.h>
#include <PCSC.h>
#include <Marshaller.h>

#ifdef Service_EXPORTS
#define Service_API __declspec(dllexport)
#else
#define Service_API
#endif

using namespace std;
using namespace Marshaller;

class Service_API Service : private SmartCardMarshaller {
public:
	// Constructors
	Service(string* uri);
	Service(string* uri, u4 index);
	Service(u2 portNumber, string* uri);
	Service(u2 portNumber, string* uri, u4 index);
	Service(string* readerName, string* uri);
	Service(string* readerName, u2 portNumber, string* uri);
	Service(SCARDHANDLE cardHandle, string* uri);
	Service(SCARDHANDLE cardHandle, u2 portNumber, string* uri);

	// Pre-defined methods
	string* GetReader(void);

	// Exposed methods
	string* Registration(string* Hash,string* Ri);
	u1Array* Login(string* PWD,string* timestamp);
	u1Array* Verification(string* timestamp);
	string* GetRi();
	string* Registration_Hsiang(string* V,string* R,string* hash);
	StringArray* Login_Hsiang(u1Array* pwdhash,string* timestamp);
	u1Array* Verification_Hsiang(u1Array* pwdhash);
	string* GetRi_Hsiang();
	string* Registration_Improved(string* ID,string* A,string* B,string* p,string* g);
	StringArray* Login_Improved();
	u1Array* Verification_Nonce(u1Array* pwdhash);
	string* Registration_nova(string* V,string* R,string* hash);
	u1Array* GetR_nova(string* timestamp);
	StringArray* Login_nova(u1Array* pwdhash,string* timestamp);
	u1Array* Verification_nova(u1Array* pwdhash);
	u1Array* ArrSubSimple(u1Array* a,u1Array* b,u1Array* modulus);
};


#endif
