Add check in ca storage and fix name in certificate request hpp
Change-Id: If82dce11c5897fd1df86367233b57a998183b5a7
diff --git a/src/ca-detail/ca-memory.cpp b/src/ca-detail/ca-memory.cpp
index bde895d..14a6f87 100644
--- a/src/ca-detail/ca-memory.cpp
+++ b/src/ca-detail/ca-memory.cpp
@@ -41,6 +41,21 @@
void
CaMemory::addRequest(const CertificateRequest& request)
{
+ for (auto& entry : m_requests) {
+ const auto& existingRequest = entry.second;
+ if (existingRequest.getCert().getKeyName() == request.getCert().getKeyName()) {
+ BOOST_THROW_EXCEPTION(Error("Request for " + request.getCert().getKeyName().toUri() + " already exists"));
+ return;
+ }
+ }
+ for (auto& entry : m_issuedCerts) {
+ const auto& cert = entry.second;
+ if (cert.getKeyName() == request.getCert().getKeyName()) {
+ BOOST_THROW_EXCEPTION(Error("Cert for " + request.getCert().getKeyName().toUri() + " already exists"));
+ return;
+ }
+ }
+
auto search = m_requests.find(request.getRequestId());
if (search == m_requests.end()) {
m_requests[request.getRequestId()] = request;
@@ -73,8 +88,11 @@
auto search = m_issuedCerts.find(certId);
if (search != m_issuedCerts.end()) {
cert = search->second;
+ return cert;
}
- return cert;
+ else {
+ BOOST_THROW_EXCEPTION(Error("Certificate with ID " + certId + " does not exists"));
+ }
}
void
@@ -85,20 +103,14 @@
m_issuedCerts[certId] = cert;
}
else {
- BOOST_THROW_EXCEPTION(Error("Certificate " + cert.getName().toUri() + " does not exists"));
+ BOOST_THROW_EXCEPTION(Error("Certificate " + cert.getName().toUri() + " already exists"));
}
}
void
CaMemory::updateCertificate(const std::string& certId, const security::v2::Certificate& cert)
{
- auto search = m_issuedCerts.find(certId);
- if (search == m_issuedCerts.end()) {
- m_issuedCerts[certId] = cert;
- }
- else {
- BOOST_THROW_EXCEPTION(Error("Certificate " + cert.getName().toUri() + " does not exists"));
- }
+ m_issuedCerts[certId] = cert;
}
void