log << "FINE: CERTIFICATE LOG: " << res->log << std::endl;
log << "FINE: CERTIFICATE:" << std::endl << res->certificate << std::endl;
std::string fn = writeBackFile( job->target.c_str(), res->certificate, keyDir );
+ if( fn.empty() ) {
+ log << "ERROR: Writeback of the certificate failed." << std::endl;
+ jp->failJob( job );
+ continue;
+ }
+
res->crt_name = fn;
- jp->writeBack( job, res );
+ jp->writeBack( job, res ); //! \FIXME: Check return value
log << "FINE: signing done." << std::endl;
if( DAEMON ) {
signlog << "FINE: Signed" << std::endl;
std::shared_ptr<SignedCertificate> output = c.sign( ca->caKey, cert->md );
signlog << "FINE: all went well" << std::endl;
- signlog << "FINE: crt went to: " << writeBackFile( num, output->certificate, ca->path ) << std::endl;
+ std::string fn = writeBackFile( num, output->certificate, ca->path );
+ if( fn.empty() ) {
+ signlog << "ERROR: failed to get filename for storage of signed certificate." << std::endl;
+ throw "Storage location could not be determined";
+ }
+
+ signlog << "FINE: crt went to: " << fn << std::endl;
output->ca_name = ca->name;
output->log = signlog.str();
return output;