// inter-service communication message base class
struct MsgBase {
- explicit MsgBase(unsigned id) : id(id) {}
+ explicit MsgBase(int id) : id(id) {}
virtual ~MsgBase() {}
- unsigned id;
+ int id;
};
// key request
struct MsgKeyRequest : public MsgBase {
- MsgKeyRequest(unsigned id, const Credentials &cred, const Name &name,
+ MsgKeyRequest(int id, const Credentials &cred, const Name &name,
const ClientId &explicitOwner, const Password &password) :
MsgBase(id),
cred(cred),
// key response
struct MsgKeyResponse : public MsgBase {
- MsgKeyResponse(unsigned id, const Crypto::GObjShPtr &key,
+ MsgKeyResponse(int id, const Crypto::GObjShPtr &key,
int errorCode = CKM_API_SUCCESS) :
MsgBase(id), key(key), error(errorCode) {}
m_service.RespondToClient(request, CKM_API_ERROR_INPUT_PARAM);
return;
}
- m_counter++;
// store request in the map
- auto ret = m_requestsMap.insert(std::make_pair(m_counter, request));
+ auto ret = m_requestsMap.insert(std::make_pair(request.msgId, request));
if (!ret.second) {
- LogError("Request with id = " << m_counter << " already exists");
- m_service.RespondToClient(request, CKM_API_ERROR_SERVER_ERROR);
+ LogError("Request with id " << request.msgId << " already exists");
+ m_service.RespondToClient(request, CKM_API_ERROR_INPUT_PARAM);
return;
}
// request key
try {
- m_service.RequestKey(m_counter, request);
+ m_service.RequestKey(request);
} catch (...) {
LogError("Key request failed");
- m_requestsMap.erase(m_counter);
+ m_requestsMap.erase(request.msgId);
m_service.RespondToClient(request, CKM_API_ERROR_SERVER_ERROR);
}
}
#pragma once
-#include <unordered_map>
+#include <map>
#include <ckm/ckm-type.h>
#include <generic-socket-manager.h>
#include <protocols.h>
class EncryptionLogic {
public:
- explicit EncryptionLogic(IEncryptionService &service) : m_service(service), m_counter(0) {}
+ explicit EncryptionLogic(IEncryptionService &service) : m_service(service) {}
virtual ~EncryptionLogic() {}
void Crypt(const CryptoRequest &request);
private:
IEncryptionService &m_service;
- std::unordered_map<unsigned, CryptoRequest> m_requestsMap;
- unsigned m_counter;
+ std::map<int, CryptoRequest> m_requestsMap;
};
} /* namespace CKM */
}
}
-void EncryptionService::RequestKey(unsigned id, const CryptoRequest &request)
+void EncryptionService::RequestKey(const CryptoRequest &request)
{
- MsgKeyRequest kReq(id, request.cred, request.name,
+ MsgKeyRequest kReq(request.msgId, request.cred, request.name,
request.explicitOwner, request.password);
if (!m_commMgr->SendMessage(kReq))
virtual void RespondToClient(const CryptoRequest &request,
int retCode,
const RawBuffer &data = RawBuffer());
- virtual void RequestKey(unsigned id, const CryptoRequest &request);
+ virtual void RequestKey(const CryptoRequest &request);
EncryptionLogic m_logic;
};
virtual void RespondToClient(const CryptoRequest &request,
int retCode,
const RawBuffer &data = RawBuffer()) = 0;
- virtual void RequestKey(unsigned id, const CryptoRequest &request) = 0;
+ virtual void RequestKey(const CryptoRequest &request) = 0;
};
} // namespace CKM