33 namespace PrivateRecommendations {
46 Client::Client (
const std::shared_ptr<ServiceProvider> &serviceProvider,
const std::shared_ptr<PrivacyServiceProvider> &privacyServiceProvider,
const PaillierPublicKey &publicKey) :
47 serviceProvider(serviceProvider),
48 privacyServiceProvider(privacyServiceProvider),
49 paillierCryptoProvider(publicKey),
50 blindingFactorCache(paillierCryptoProvider,
BlindingFactorCacheParameters(configurationPath +
".BlindingFactorCache", Utils::Config::GetInstance().GetParameter<size_t>(configurationPath +
".l"))),
51 userCount(Utils::Config::GetInstance().GetParameter<size_t>(configurationPath +
".userCount")) {
58 #ifdef FIRST_USER_ONLY
59 for (
size_t user = 0; user < 1; ++user) {
61 for (
size_t user = 0; user < this->
userCount; ++user) {
83 std::cout <<
"No similar users found." << std::endl;
87 std::vector<unsigned long> URSum;
88 for (ServiceProvider::EncryptedUserData::iterator encryptedURSumIterator = encryptedURSum.begin(); encryptedURSumIterator != encryptedURSum.end(); ++encryptedURSumIterator) {
92 URSum.push_back((this->
privacyServiceProvider->SecureDecryption(*encryptedURSumIterator + URSumblindingFactor.
encryptedR) - URSumblindingFactor.
r).ToUnsignedLong());
107 std::cout << std::endl;
109 std::cout <<
"Processed recommendations for user " << user <<
" in " << recommendationsProcessingTimer.
ToString() << std::endl;
PaillierCiphertext Ciphertext
Provide public access to the T_Ciphertext type.
Definition of class Client.
Client(const std::shared_ptr< ServiceProvider > &serviceProvider, const std::shared_ptr< PrivacyServiceProvider > &privacyServiceProvider, const PaillierPublicKey &publicKey)
Constructor.
std::deque< Paillier::Ciphertext > EncryptedUserData
Encrypted user data.
Stores precomputed random data.
Utilitary class providing algorithm timing functionality.
size_t userCount
Number of users who need recommendations.
std::string ToString() const
Returns the elapsed user process time as a formatted string (HH::MM::SS.mmm)
const std::shared_ptr< ServiceProvider > serviceProvider
A reference to the ServiceProvider.
static const std::string configurationPath
Service Provider configuration path.
T_CryptoProvider::Ciphertext encryptedR
RandomizerCache< BlindingFactorContainer > blindingFactorCache
Blinding factor cache instance.
void ComputeRecommendations()
Interact with the server(s) to extract the recommendations for every user.
const std::shared_ptr< PrivacyServiceProvider > privacyServiceProvider
A reference to the PrivacyServiceProvider.
Blinding factor cache parameter container struct.
The public key container structure for the Paillier cryptosystem.