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

#ifdef WIN32
#include <windows.h>
#endif
#include <winscard.h>
#include "Service.h"

using namespace std;
using namespace Marshaller;


// Constructors
Service::Service(string* uri) : SmartCardMarshaller(NULL, 0, uri, (u4)0xE38E8F, (u2)0xBAC2, 0) { return; }
Service::Service(string* uri, u4 index) : SmartCardMarshaller(NULL, 0, uri, (u4)0xE38E8F, (u2)0xBAC2, index) { return; }
Service::Service(u2 portNumber, string* uri) : SmartCardMarshaller(NULL, portNumber, uri, (u4)0xE38E8F, (u2)0xBAC2, 0) { return; }
Service::Service(u2 portNumber, string* uri, u4 index) : SmartCardMarshaller(NULL, portNumber, uri, (u4)0xE38E8F, (u2)0xBAC2, index) { return; }
Service::Service(string* readerName, string* uri) : SmartCardMarshaller(readerName, 0, uri, (u4)0xE38E8F, (u2)0xBAC2, 0) { return; }
Service::Service(string* readerName, u2 portNumber, string* uri) : SmartCardMarshaller(readerName, portNumber, uri, (u4)0xE38E8F, (u2)0xBAC2, 0) { return; }
Service::Service(SCARDHANDLE cardHandle, string* uri) : SmartCardMarshaller(cardHandle, 0, uri, (u4)0xE38E8F, (u2)0xBAC2) { return; }
Service::Service(SCARDHANDLE cardHandle, u2 portNumber, string* uri) : SmartCardMarshaller(cardHandle, portNumber, uri, (u4)0xE38E8F, (u2)0xBAC2) { return; }

// Pre-defined methods
std::string* Service::GetReader(void){return GetReaderName();}

// Exposed methods

string* Service::Registration(string* Hash,string* Ri){
	string* _string = NULL;
	Invoke(2, 0x0CAB, MARSHALLER_TYPE_IN_STRING, Hash, MARSHALLER_TYPE_IN_STRING, Ri, MARSHALLER_TYPE_RET_STRING, &_string);
	return _string;
}


u1Array* Service::Login(string* PWD,string* timestamp){
	u1Array* _u1Array = NULL;
	Invoke(2, 0x7374, MARSHALLER_TYPE_IN_STRING, PWD, MARSHALLER_TYPE_IN_STRING, timestamp, MARSHALLER_TYPE_RET_U1ARRAY, &_u1Array);
	return _u1Array;
}



u1Array* Service::Verification(string* timestamp){
	u1Array* _u1Array = NULL;
	Invoke(1, 0x9E37, MARSHALLER_TYPE_IN_STRING, timestamp, MARSHALLER_TYPE_RET_U1ARRAY, &_u1Array);
	return _u1Array;
}


string* Service::GetRi(){
	string* _string = NULL;
	Invoke(0, 0xBB6D, MARSHALLER_TYPE_RET_STRING, &_string);
	return _string;
}


string* Service::Registration_Hsiang(string* V,string* R,string* hash){
	string* _string = NULL;
	Invoke(3, 0x0E88, MARSHALLER_TYPE_IN_STRING, V, MARSHALLER_TYPE_IN_STRING, R, MARSHALLER_TYPE_IN_STRING, hash, MARSHALLER_TYPE_RET_STRING, &_string);
	return _string;
}


StringArray* Service::Login_Hsiang(u1Array* pwdhash,string* timestamp){
	StringArray* _StringArray = NULL;
	Invoke(2, 0xAA33, MARSHALLER_TYPE_IN_U1ARRAY, pwdhash, MARSHALLER_TYPE_IN_STRING, timestamp, MARSHALLER_TYPE_RET_STRINGARRAY, &_StringArray);
	return _StringArray;
}


u1Array* Service::Verification_Hsiang(u1Array* pwdhash){
	u1Array* _u1Array = NULL;
	Invoke(1, 0xCDE5, MARSHALLER_TYPE_IN_U1ARRAY, pwdhash, MARSHALLER_TYPE_RET_U1ARRAY, &_u1Array);
	return _u1Array;
}


string* Service::GetRi_Hsiang(){
	string* _string = NULL;
	Invoke(0, 0x18DD, MARSHALLER_TYPE_RET_STRING, &_string);
	return _string;
}


string* Service::Registration_Improved(string* ID,string* A,string* B,string* p,string* g){
	string* _string = NULL;
	Invoke(5, 0xB1BE, MARSHALLER_TYPE_IN_STRING, ID, MARSHALLER_TYPE_IN_STRING, A, MARSHALLER_TYPE_IN_STRING, B, MARSHALLER_TYPE_IN_STRING, p, MARSHALLER_TYPE_IN_STRING, g, MARSHALLER_TYPE_RET_STRING, &_string);
	return _string;
}


StringArray* Service::Login_Improved(){
	StringArray* _StringArray = NULL;
	Invoke(0, 0xA8EE, MARSHALLER_TYPE_RET_STRINGARRAY, &_StringArray);
	return _StringArray;
}


u1Array* Service::Verification_Nonce(u1Array* pwdhash){
	u1Array* _u1Array = NULL;
	Invoke(1, 0xF99E, MARSHALLER_TYPE_IN_U1ARRAY, pwdhash, MARSHALLER_TYPE_RET_U1ARRAY, &_u1Array);
	return _u1Array;
}


string* Service::Registration_nova(string* V,string* R,string* hash){
	string* _string = NULL;
	Invoke(3, 0xCE08, MARSHALLER_TYPE_IN_STRING, V, MARSHALLER_TYPE_IN_STRING, R, MARSHALLER_TYPE_IN_STRING, hash, MARSHALLER_TYPE_RET_STRING, &_string);
	return _string;
}


u1Array* Service::GetR_nova(string* timestamp){
	u1Array* _u1Array = NULL;
	Invoke(1, 0x5450, MARSHALLER_TYPE_IN_STRING, timestamp, MARSHALLER_TYPE_RET_U1ARRAY, &_u1Array);
	return _u1Array;
}


StringArray* Service::Login_nova(u1Array* pwdhash,string* timestamp){
	StringArray* _StringArray = NULL;
	Invoke(2, 0x6EA6, MARSHALLER_TYPE_IN_U1ARRAY, pwdhash, MARSHALLER_TYPE_IN_STRING, timestamp, MARSHALLER_TYPE_RET_STRINGARRAY, &_StringArray);
	return _StringArray;
}


u1Array* Service::Verification_nova(u1Array* pwdhash){
	u1Array* _u1Array = NULL;
	Invoke(1, 0xD005, MARSHALLER_TYPE_IN_U1ARRAY, pwdhash, MARSHALLER_TYPE_RET_U1ARRAY, &_u1Array);
	return _u1Array;
}




u1Array* Service::ArrSubSimple(u1Array* a,u1Array* b,u1Array* modulus){
	u1Array* _u1Array = NULL;
	Invoke(3, 0xDDCC, MARSHALLER_TYPE_IN_U1ARRAY, a, MARSHALLER_TYPE_IN_U1ARRAY, b, MARSHALLER_TYPE_IN_U1ARRAY, modulus, MARSHALLER_TYPE_RET_U1ARRAY, &_u1Array);
	return _u1Array;
}




